patchwork-os 0.2.0-beta.9.canary.93 → 1.1.0-beta.1
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/README.bridge.md +15 -16
- package/README.md +46 -458
- package/dist/activationMetrics.js +2 -3
- package/dist/activationMetrics.js.map +1 -1
- package/dist/activityLog.d.ts +1 -0
- package/dist/activityLog.js +8 -3
- package/dist/activityLog.js.map +1 -1
- package/dist/adapters/gemini.js +2 -2
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/grok.js +6 -1
- package/dist/adapters/grok.js.map +1 -1
- package/dist/adapters/openai.js +4 -0
- package/dist/adapters/openai.js.map +1 -1
- package/dist/approvalHttp.d.ts +9 -0
- package/dist/approvalHttp.js +210 -171
- package/dist/approvalHttp.js.map +1 -1
- package/dist/approvalKpi.d.ts +102 -0
- package/dist/approvalKpi.js +282 -0
- package/dist/approvalKpi.js.map +1 -0
- package/dist/approvalQueue.d.ts +1 -1
- package/dist/approvalQueue.js.map +1 -1
- package/dist/automation.d.ts +45 -4
- package/dist/automation.js +123 -15
- package/dist/automation.js.map +1 -1
- package/dist/bridge.d.ts +10 -0
- package/dist/bridge.js +225 -46
- package/dist/bridge.js.map +1 -1
- package/dist/bridgeLockDiscovery.d.ts +16 -1
- package/dist/bridgeLockDiscovery.js +38 -4
- package/dist/bridgeLockDiscovery.js.map +1 -1
- package/dist/bridgeToolsRules.js +3 -18
- package/dist/bridgeToolsRules.js.map +1 -1
- package/dist/claudeAuthHttp.d.ts +25 -0
- package/dist/claudeAuthHttp.js +219 -0
- package/dist/claudeAuthHttp.js.map +1 -0
- package/dist/claudeDriver.js +4 -1
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +15 -0
- package/dist/claudeOrchestrator.js +44 -0
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/connect.d.ts +47 -0
- package/dist/commands/connect.js +419 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/install.js +3 -10
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/launchd.d.ts +7 -0
- package/dist/commands/launchd.js +20 -2
- package/dist/commands/launchd.js.map +1 -1
- package/dist/commands/patchworkInit.d.ts +7 -0
- package/dist/commands/patchworkInit.js +26 -0
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/recipe.d.ts +59 -4
- package/dist/commands/recipe.js +206 -5
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.d.ts +9 -0
- package/dist/commands/recipeInstall.js +56 -3
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/commands/task.d.ts +25 -0
- package/dist/commands/task.js +61 -41
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/tokenEfficiency.d.ts +4 -0
- package/dist/commands/tokenEfficiency.js +23 -26
- package/dist/commands/tokenEfficiency.js.map +1 -1
- package/dist/commands/tracesExport.d.ts +15 -1
- package/dist/commands/tracesExport.js +39 -5
- package/dist/commands/tracesExport.js.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/connectorRoutes.js +613 -62
- package/dist/connectorRoutes.js.map +1 -1
- package/dist/connectors/asana.js +9 -3
- package/dist/connectors/asana.js.map +1 -1
- package/dist/connectors/baseConnector.d.ts +16 -0
- package/dist/connectors/baseConnector.js +2 -0
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/caldiy.js +34 -0
- package/dist/connectors/caldiy.js.map +1 -1
- package/dist/connectors/confluence.js +9 -2
- package/dist/connectors/confluence.js.map +1 -1
- package/dist/connectors/connectorActivity.d.ts +24 -0
- package/dist/connectors/connectorActivity.js +32 -0
- package/dist/connectors/connectorActivity.js.map +1 -0
- package/dist/connectors/connectorRedirectUri.js +22 -2
- package/dist/connectors/connectorRedirectUri.js.map +1 -1
- package/dist/connectors/connectorRegistry.d.ts +0 -3
- package/dist/connectors/connectorRegistry.js +8 -8
- package/dist/connectors/connectorRegistry.js.map +1 -1
- package/dist/connectors/datadog.js +8 -1
- package/dist/connectors/datadog.js.map +1 -1
- package/dist/connectors/discord.js +4 -3
- package/dist/connectors/discord.js.map +1 -1
- package/dist/connectors/elasticsearch.js +22 -0
- package/dist/connectors/elasticsearch.js.map +1 -1
- package/dist/connectors/github.d.ts +38 -0
- package/dist/connectors/github.js +91 -5
- package/dist/connectors/github.js.map +1 -1
- package/dist/connectors/gitlab.js +19 -16
- package/dist/connectors/gitlab.js.map +1 -1
- package/dist/connectors/gmail.d.ts +5 -0
- package/dist/connectors/gmail.js +53 -11
- package/dist/connectors/gmail.js.map +1 -1
- package/dist/connectors/googleCalendar.js +5 -4
- package/dist/connectors/googleCalendar.js.map +1 -1
- package/dist/connectors/googleDocs.js +7 -6
- package/dist/connectors/googleDocs.js.map +1 -1
- package/dist/connectors/googleDrive.js +15 -8
- package/dist/connectors/googleDrive.js.map +1 -1
- package/dist/connectors/grafana.js +39 -3
- package/dist/connectors/grafana.js.map +1 -1
- package/dist/connectors/jira.d.ts +1 -1
- package/dist/connectors/jira.js +19 -4
- package/dist/connectors/jira.js.map +1 -1
- package/dist/connectors/linear.js +2 -2
- package/dist/connectors/linear.js.map +1 -1
- package/dist/connectors/mcpClient.d.ts +29 -1
- package/dist/connectors/mcpClient.js +114 -44
- package/dist/connectors/mcpClient.js.map +1 -1
- package/dist/connectors/mcpOAuth.d.ts +1 -0
- package/dist/connectors/mcpOAuth.js +49 -4
- package/dist/connectors/mcpOAuth.js.map +1 -1
- package/dist/connectors/monday.js +5 -4
- package/dist/connectors/monday.js.map +1 -1
- package/dist/connectors/mongodb.js +32 -5
- package/dist/connectors/mongodb.js.map +1 -1
- package/dist/connectors/notion.d.ts +1 -1
- package/dist/connectors/notion.js +22 -6
- package/dist/connectors/notion.js.map +1 -1
- package/dist/connectors/oauthError.d.ts +17 -0
- package/dist/connectors/oauthError.js +50 -0
- package/dist/connectors/oauthError.js.map +1 -0
- package/dist/connectors/postgres.d.ts +7 -0
- package/dist/connectors/postgres.js +32 -2
- package/dist/connectors/postgres.js.map +1 -1
- package/dist/connectors/posthog.js +26 -0
- package/dist/connectors/posthog.js.map +1 -1
- package/dist/connectors/redis.d.ts +1 -0
- package/dist/connectors/redis.js +47 -20
- package/dist/connectors/redis.js.map +1 -1
- package/dist/connectors/salesforce.js +66 -5
- package/dist/connectors/salesforce.js.map +1 -1
- package/dist/connectors/sentry.js +2 -2
- package/dist/connectors/sentry.js.map +1 -1
- package/dist/connectors/slack.js +37 -14
- package/dist/connectors/slack.js.map +1 -1
- package/dist/connectors/snowflake.js +24 -0
- package/dist/connectors/snowflake.js.map +1 -1
- package/dist/connectors/stripe.js +9 -2
- package/dist/connectors/stripe.js.map +1 -1
- package/dist/connectors/supabase.js +34 -0
- package/dist/connectors/supabase.js.map +1 -1
- package/dist/connectors/tokenStorage.d.ts +20 -0
- package/dist/connectors/tokenStorage.js +196 -64
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/connectors/woocommerce.js +34 -0
- package/dist/connectors/woocommerce.js.map +1 -1
- package/dist/copilot/parseIntent.d.ts +58 -0
- package/dist/copilot/parseIntent.js +149 -0
- package/dist/copilot/parseIntent.js.map +1 -0
- package/dist/decisionReplay.d.ts +8 -6
- package/dist/decisionReplay.js +35 -11
- package/dist/decisionReplay.js.map +1 -1
- package/dist/decisionTraceLog.d.ts +9 -0
- package/dist/decisionTraceLog.js +6 -0
- package/dist/decisionTraceLog.js.map +1 -1
- package/dist/drivers/claude/api.js +49 -7
- package/dist/drivers/claude/api.js.map +1 -1
- package/dist/drivers/claude/envSanitizer.d.ts +9 -1
- package/dist/drivers/claude/envSanitizer.js +41 -3
- package/dist/drivers/claude/envSanitizer.js.map +1 -1
- package/dist/drivers/claude/streamParser.d.ts +13 -0
- package/dist/drivers/claude/streamParser.js.map +1 -1
- package/dist/drivers/claude/subprocess.js +131 -16
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/claude/subprocessSettings.d.ts +1 -1
- package/dist/drivers/claude/subprocessSettings.js +18 -4
- package/dist/drivers/claude/subprocessSettings.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +13 -0
- package/dist/drivers/gemini/index.js +211 -67
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/local/index.d.ts +2 -17
- package/dist/drivers/local/index.js +5 -92
- package/dist/drivers/local/index.js.map +1 -1
- package/dist/drivers/openai/index.js +69 -9
- package/dist/drivers/openai/index.js.map +1 -1
- package/dist/drivers/outputCap.d.ts +27 -0
- package/dist/drivers/outputCap.js +50 -0
- package/dist/drivers/outputCap.js.map +1 -0
- package/dist/embeddings/cosine.d.ts +23 -0
- package/dist/embeddings/cosine.js +59 -0
- package/dist/embeddings/cosine.js.map +1 -0
- package/dist/embeddings/index.d.ts +19 -0
- package/dist/embeddings/index.js +35 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/localEmbeddings.d.ts +29 -0
- package/dist/embeddings/localEmbeddings.js +103 -0
- package/dist/embeddings/localEmbeddings.js.map +1 -0
- package/dist/embeddings/localEndpoints.d.ts +24 -0
- package/dist/embeddings/localEndpoints.js +37 -0
- package/dist/embeddings/localEndpoints.js.map +1 -0
- package/dist/embeddings/types.d.ts +32 -0
- package/dist/embeddings/types.js +12 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/featureFlags.d.ts +18 -0
- package/dist/featureFlags.js +32 -0
- package/dist/featureFlags.js.map +1 -1
- package/dist/fp/automationInterpreter.js +118 -39
- package/dist/fp/automationInterpreter.js.map +1 -1
- package/dist/fp/automationProgram.d.ts +10 -0
- package/dist/fp/automationProgram.js.map +1 -1
- package/dist/fp/automationState.d.ts +6 -0
- package/dist/fp/automationState.js +38 -0
- package/dist/fp/automationState.js.map +1 -1
- package/dist/fp/commandDescription.d.ts +6 -0
- package/dist/fp/commandDescription.js +18 -5
- package/dist/fp/commandDescription.js.map +1 -1
- package/dist/fp/interpreterContext.d.ts +16 -5
- package/dist/fp/interpreterContext.js +59 -3
- package/dist/fp/interpreterContext.js.map +1 -1
- package/dist/fp/policyParser.js +18 -8
- package/dist/fp/policyParser.js.map +1 -1
- package/dist/haltPushDispatch.d.ts +4 -0
- package/dist/haltPushDispatch.js +7 -22
- package/dist/haltPushDispatch.js.map +1 -1
- package/dist/inboxRoutes.js +2 -2
- package/dist/inboxRoutes.js.map +1 -1
- package/dist/index.js +672 -135
- package/dist/index.js.map +1 -1
- package/dist/installGuard.js +6 -0
- package/dist/installGuard.js.map +1 -1
- package/dist/localEndpointGuard.d.ts +25 -0
- package/dist/localEndpointGuard.js +101 -0
- package/dist/localEndpointGuard.js.map +1 -0
- package/dist/mcpRoutes.js +1 -1
- package/dist/mcpRoutes.js.map +1 -1
- package/dist/oauth.d.ts +13 -0
- package/dist/oauth.js +53 -9
- package/dist/oauth.js.map +1 -1
- package/dist/orchestrator/childBridgeClient.d.ts +7 -0
- package/dist/orchestrator/childBridgeClient.js +42 -1
- package/dist/orchestrator/childBridgeClient.js.map +1 -1
- package/dist/orchestrator/orchestratorBridge.d.ts +33 -0
- package/dist/orchestrator/orchestratorBridge.js +75 -9
- package/dist/orchestrator/orchestratorBridge.js.map +1 -1
- package/dist/patchworkConfig.d.ts +4 -0
- package/dist/patchworkConfig.js +33 -4
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/probe.js +39 -5
- package/dist/probe.js.map +1 -1
- package/dist/recipeOrchestration.d.ts +59 -0
- package/dist/recipeOrchestration.js +314 -60
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.d.ts +93 -0
- package/dist/recipeRoutes.js +664 -27
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/RecipeOrchestrator.d.ts +14 -0
- package/dist/recipes/RecipeOrchestrator.js +42 -2
- package/dist/recipes/RecipeOrchestrator.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +51 -2
- package/dist/recipes/agentExecutor.js +86 -13
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/chainedRunner.d.ts +111 -3
- package/dist/recipes/chainedRunner.js +440 -45
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/compiler.js +42 -29
- package/dist/recipes/compiler.js.map +1 -1
- package/dist/recipes/connectorPreflight.js +31 -0
- package/dist/recipes/connectorPreflight.js.map +1 -1
- package/dist/recipes/dependencyGraph.d.ts +16 -0
- package/dist/recipes/dependencyGraph.js +37 -2
- package/dist/recipes/dependencyGraph.js.map +1 -1
- package/dist/recipes/eventTriggerPrograms.d.ts +36 -0
- package/dist/recipes/eventTriggerPrograms.js +158 -0
- package/dist/recipes/eventTriggerPrograms.js.map +1 -0
- package/dist/recipes/githubInstallSource.d.ts +9 -2
- package/dist/recipes/githubInstallSource.js +36 -6
- package/dist/recipes/githubInstallSource.js.map +1 -1
- package/dist/recipes/haltCategory.d.ts +10 -0
- package/dist/recipes/haltCategory.js +11 -1
- package/dist/recipes/haltCategory.js.map +1 -1
- package/dist/recipes/idempotencyKey.d.ts +30 -3
- package/dist/recipes/idempotencyKey.js +89 -5
- package/dist/recipes/idempotencyKey.js.map +1 -1
- package/dist/recipes/installer.js +12 -35
- package/dist/recipes/installer.js.map +1 -1
- package/dist/recipes/judgeVerdict.d.ts +11 -1
- package/dist/recipes/judgeVerdict.js +47 -7
- package/dist/recipes/judgeVerdict.js.map +1 -1
- package/dist/recipes/names.d.ts +5 -0
- package/dist/recipes/names.js +10 -5
- package/dist/recipes/names.js.map +1 -1
- package/dist/recipes/parser.js +74 -10
- package/dist/recipes/parser.js.map +1 -1
- package/dist/recipes/pricing/costRouter.d.ts +43 -0
- package/dist/recipes/pricing/costRouter.js +44 -0
- package/dist/recipes/pricing/costRouter.js.map +1 -0
- package/dist/recipes/pricing/priceTable.d.ts +76 -0
- package/dist/recipes/pricing/priceTable.js +144 -0
- package/dist/recipes/pricing/priceTable.js.map +1 -0
- package/dist/recipes/replayRun.js +5 -2
- package/dist/recipes/replayRun.js.map +1 -1
- package/dist/recipes/resolveRecipePath.js +15 -1
- package/dist/recipes/resolveRecipePath.js.map +1 -1
- package/dist/recipes/runBudget.d.ts +93 -32
- package/dist/recipes/runBudget.js +213 -49
- package/dist/recipes/runBudget.js.map +1 -1
- package/dist/recipes/runRegistry.d.ts +32 -0
- package/dist/recipes/runRegistry.js +54 -0
- package/dist/recipes/runRegistry.js.map +1 -0
- package/dist/recipes/scheduler.js +6 -2
- package/dist/recipes/scheduler.js.map +1 -1
- package/dist/recipes/schema.d.ts +59 -6
- package/dist/recipes/schemaGenerator.d.ts +9 -0
- package/dist/recipes/schemaGenerator.js +446 -77
- package/dist/recipes/schemaGenerator.js.map +1 -1
- package/dist/recipes/simulation/aggregateRunRisk.d.ts +46 -0
- package/dist/recipes/simulation/aggregateRunRisk.js +120 -0
- package/dist/recipes/simulation/aggregateRunRisk.js.map +1 -0
- package/dist/recipes/simulation/costProjector.d.ts +32 -0
- package/dist/recipes/simulation/costProjector.js +194 -0
- package/dist/recipes/simulation/costProjector.js.map +1 -0
- package/dist/recipes/simulation/sideEffects.d.ts +32 -0
- package/dist/recipes/simulation/sideEffects.js +62 -0
- package/dist/recipes/simulation/sideEffects.js.map +1 -0
- package/dist/recipes/simulation/simulate.d.ts +36 -0
- package/dist/recipes/simulation/simulate.js +264 -0
- package/dist/recipes/simulation/simulate.js.map +1 -0
- package/dist/recipes/simulation/simulateMockedRun.d.ts +52 -0
- package/dist/recipes/simulation/simulateMockedRun.js +84 -0
- package/dist/recipes/simulation/simulateMockedRun.js.map +1 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.d.ts +31 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.js +50 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.js.map +1 -0
- package/dist/recipes/simulation/types.d.ts +198 -0
- package/dist/recipes/simulation/types.js +30 -0
- package/dist/recipes/simulation/types.js.map +1 -0
- package/dist/recipes/stepObservation.d.ts +12 -0
- package/dist/recipes/stepObservation.js +21 -1
- package/dist/recipes/stepObservation.js.map +1 -1
- package/dist/recipes/toolRegistry.js +61 -24
- package/dist/recipes/toolRegistry.js.map +1 -1
- package/dist/recipes/tools/airtable.d.ts +15 -0
- package/dist/recipes/tools/airtable.js +240 -0
- package/dist/recipes/tools/airtable.js.map +1 -0
- package/dist/recipes/tools/caldiy.d.ts +13 -0
- package/dist/recipes/tools/caldiy.js +215 -0
- package/dist/recipes/tools/caldiy.js.map +1 -0
- package/dist/recipes/tools/circleci.d.ts +10 -0
- package/dist/recipes/tools/circleci.js +204 -0
- package/dist/recipes/tools/circleci.js.map +1 -0
- package/dist/recipes/tools/cloudflare.d.ts +13 -0
- package/dist/recipes/tools/cloudflare.js +211 -0
- package/dist/recipes/tools/cloudflare.js.map +1 -0
- package/dist/recipes/tools/confluence.js +11 -10
- package/dist/recipes/tools/confluence.js.map +1 -1
- package/dist/recipes/tools/datadog.js +13 -12
- package/dist/recipes/tools/datadog.js.map +1 -1
- package/dist/recipes/tools/docs.d.ts +18 -0
- package/dist/recipes/tools/docs.js +95 -0
- package/dist/recipes/tools/docs.js.map +1 -0
- package/dist/recipes/tools/elasticsearch.d.ts +11 -0
- package/dist/recipes/tools/elasticsearch.js +157 -0
- package/dist/recipes/tools/elasticsearch.js.map +1 -0
- package/dist/recipes/tools/fanOut.js +4 -4
- package/dist/recipes/tools/fanOut.js.map +1 -1
- package/dist/recipes/tools/figma.d.ts +12 -0
- package/dist/recipes/tools/figma.js +195 -0
- package/dist/recipes/tools/figma.js.map +1 -0
- package/dist/recipes/tools/file.js +43 -22
- package/dist/recipes/tools/file.js.map +1 -1
- package/dist/recipes/tools/github.js +162 -5
- package/dist/recipes/tools/github.js.map +1 -1
- package/dist/recipes/tools/gmail.js +45 -33
- package/dist/recipes/tools/gmail.js.map +1 -1
- package/dist/recipes/tools/grafana.d.ts +11 -0
- package/dist/recipes/tools/grafana.js +216 -0
- package/dist/recipes/tools/grafana.js.map +1 -0
- package/dist/recipes/tools/http.d.ts +1 -1
- package/dist/recipes/tools/http.js +10 -28
- package/dist/recipes/tools/http.js.map +1 -1
- package/dist/recipes/tools/hubspot.js +13 -12
- package/dist/recipes/tools/hubspot.js.map +1 -1
- package/dist/recipes/tools/index.d.ts +28 -0
- package/dist/recipes/tools/index.js +28 -0
- package/dist/recipes/tools/index.js.map +1 -1
- package/dist/recipes/tools/intercom.js +11 -10
- package/dist/recipes/tools/intercom.js.map +1 -1
- package/dist/recipes/tools/jira.js +13 -0
- package/dist/recipes/tools/jira.js.map +1 -1
- package/dist/recipes/tools/meetingNotes.js +2 -2
- package/dist/recipes/tools/monday.d.ts +22 -0
- package/dist/recipes/tools/monday.js +242 -0
- package/dist/recipes/tools/monday.js.map +1 -0
- package/dist/recipes/tools/mongodb.d.ts +19 -0
- package/dist/recipes/tools/mongodb.js +194 -0
- package/dist/recipes/tools/mongodb.js.map +1 -0
- package/dist/recipes/tools/notion.js +11 -10
- package/dist/recipes/tools/notion.js.map +1 -1
- package/dist/recipes/tools/obsidian.d.ts +15 -0
- package/dist/recipes/tools/obsidian.js +173 -0
- package/dist/recipes/tools/obsidian.js.map +1 -0
- package/dist/recipes/tools/outcomes.d.ts +15 -0
- package/dist/recipes/tools/outcomes.js +111 -0
- package/dist/recipes/tools/outcomes.js.map +1 -0
- package/dist/recipes/tools/paystack.d.ts +11 -0
- package/dist/recipes/tools/paystack.js +212 -0
- package/dist/recipes/tools/paystack.js.map +1 -0
- package/dist/recipes/tools/pipedrive.d.ts +16 -0
- package/dist/recipes/tools/pipedrive.js +234 -0
- package/dist/recipes/tools/pipedrive.js.map +1 -0
- package/dist/recipes/tools/postgres.d.ts +15 -0
- package/dist/recipes/tools/postgres.js +186 -0
- package/dist/recipes/tools/postgres.js.map +1 -0
- package/dist/recipes/tools/posthog.d.ts +16 -0
- package/dist/recipes/tools/posthog.js +219 -0
- package/dist/recipes/tools/posthog.js.map +1 -0
- package/dist/recipes/tools/redis.d.ts +9 -0
- package/dist/recipes/tools/redis.js +141 -0
- package/dist/recipes/tools/redis.js.map +1 -0
- package/dist/recipes/tools/resend.d.ts +8 -0
- package/dist/recipes/tools/resend.js +153 -0
- package/dist/recipes/tools/resend.js.map +1 -0
- package/dist/recipes/tools/salesforce.d.ts +16 -0
- package/dist/recipes/tools/salesforce.js +184 -0
- package/dist/recipes/tools/salesforce.js.map +1 -0
- package/dist/recipes/tools/sendgrid.d.ts +9 -0
- package/dist/recipes/tools/sendgrid.js +175 -0
- package/dist/recipes/tools/sendgrid.js.map +1 -0
- package/dist/recipes/tools/shopify.d.ts +16 -0
- package/dist/recipes/tools/shopify.js +266 -0
- package/dist/recipes/tools/shopify.js.map +1 -0
- package/dist/recipes/tools/snowflake.d.ts +16 -0
- package/dist/recipes/tools/snowflake.js +173 -0
- package/dist/recipes/tools/snowflake.js.map +1 -0
- package/dist/recipes/tools/stripe.js +13 -12
- package/dist/recipes/tools/stripe.js.map +1 -1
- package/dist/recipes/tools/supabase.d.ts +9 -0
- package/dist/recipes/tools/supabase.js +133 -0
- package/dist/recipes/tools/supabase.js.map +1 -0
- package/dist/recipes/tools/todoist.d.ts +15 -0
- package/dist/recipes/tools/todoist.js +228 -0
- package/dist/recipes/tools/todoist.js.map +1 -0
- package/dist/recipes/tools/twilio.d.ts +11 -0
- package/dist/recipes/tools/twilio.js +180 -0
- package/dist/recipes/tools/twilio.js.map +1 -0
- package/dist/recipes/tools/vercel.d.ts +9 -0
- package/dist/recipes/tools/vercel.js +146 -0
- package/dist/recipes/tools/vercel.js.map +1 -0
- package/dist/recipes/tools/webflow.d.ts +11 -0
- package/dist/recipes/tools/webflow.js +244 -0
- package/dist/recipes/tools/webflow.js.map +1 -0
- package/dist/recipes/tools/woocommerce.d.ts +18 -0
- package/dist/recipes/tools/woocommerce.js +260 -0
- package/dist/recipes/tools/woocommerce.js.map +1 -0
- package/dist/recipes/tools/wrapConnectorExecute.d.ts +25 -0
- package/dist/recipes/tools/wrapConnectorExecute.js +37 -0
- package/dist/recipes/tools/wrapConnectorExecute.js.map +1 -0
- package/dist/recipes/tools/zendesk.js +11 -10
- package/dist/recipes/tools/zendesk.js.map +1 -1
- package/dist/recipes/triggerVars.d.ts +15 -0
- package/dist/recipes/triggerVars.js +57 -0
- package/dist/recipes/triggerVars.js.map +1 -0
- package/dist/recipes/validation.d.ts +1 -1
- package/dist/recipes/validation.js +536 -12
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/yamlPositions.d.ts +1 -1
- package/dist/recipes/yamlPositions.js +7 -2
- package/dist/recipes/yamlPositions.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +216 -4
- package/dist/recipes/yamlRunner.js +1030 -96
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/recipesHttp.d.ts +5 -0
- package/dist/recipesHttp.js +68 -6
- package/dist/recipesHttp.js.map +1 -1
- package/dist/resources.js +14 -1
- package/dist/resources.js.map +1 -1
- package/dist/riskSignals.d.ts +42 -0
- package/dist/riskSignals.js +197 -0
- package/dist/riskSignals.js.map +1 -0
- package/dist/riskTier.d.ts +9 -0
- package/dist/riskTier.js +48 -0
- package/dist/riskTier.js.map +1 -1
- package/dist/runLog.d.ts +53 -0
- package/dist/runLog.js +75 -16
- package/dist/runLog.js.map +1 -1
- package/dist/schemas/recipe.v1.json +360 -16
- package/dist/server.d.ts +60 -0
- package/dist/server.js +192 -31
- package/dist/server.js.map +1 -1
- package/dist/sessionCheckpoint.js +4 -1
- package/dist/sessionCheckpoint.js.map +1 -1
- package/dist/sessionDetail.d.ts +43 -0
- package/dist/sessionDetail.js +59 -0
- package/dist/sessionDetail.js.map +1 -0
- package/dist/settingsEnv.d.ts +47 -0
- package/dist/settingsEnv.js +88 -0
- package/dist/settingsEnv.js.map +1 -0
- package/dist/streamableHttp.js +44 -10
- package/dist/streamableHttp.js.map +1 -1
- package/dist/ta/backtest/abnday.d.ts +53 -0
- package/dist/ta/backtest/abnday.js +123 -0
- package/dist/ta/backtest/abnday.js.map +1 -0
- package/dist/ta/backtest/directional.d.ts +48 -0
- package/dist/ta/backtest/directional.js +103 -0
- package/dist/ta/backtest/directional.js.map +1 -0
- package/dist/ta/backtest/fundx.d.ts +67 -0
- package/dist/ta/backtest/fundx.js +264 -0
- package/dist/ta/backtest/fundx.js.map +1 -0
- package/dist/ta/backtest/fvg.d.ts +62 -0
- package/dist/ta/backtest/fvg.js +236 -0
- package/dist/ta/backtest/fvg.js.map +1 -0
- package/dist/ta/backtest/ichimoku.d.ts +41 -0
- package/dist/ta/backtest/ichimoku.js +146 -0
- package/dist/ta/backtest/ichimoku.js.map +1 -0
- package/dist/ta/backtest/ingest.d.ts +20 -0
- package/dist/ta/backtest/ingest.js +104 -0
- package/dist/ta/backtest/ingest.js.map +1 -0
- package/dist/ta/backtest/msb.d.ts +49 -0
- package/dist/ta/backtest/msb.js +162 -0
- package/dist/ta/backtest/msb.js.map +1 -0
- package/dist/ta/backtest/scoring.d.ts +33 -0
- package/dist/ta/backtest/scoring.js +82 -0
- package/dist/ta/backtest/scoring.js.map +1 -0
- package/dist/ta/backtest/summary.d.ts +20 -0
- package/dist/ta/backtest/summary.js +42 -0
- package/dist/ta/backtest/summary.js.map +1 -0
- package/dist/ta/backtest/tsmom.d.ts +72 -0
- package/dist/ta/backtest/tsmom.js +202 -0
- package/dist/ta/backtest/tsmom.js.map +1 -0
- package/dist/ta/backtest/volsq.d.ts +34 -0
- package/dist/ta/backtest/volsq.js +154 -0
- package/dist/ta/backtest/volsq.js.map +1 -0
- package/dist/ta/backtest/walkForward.d.ts +45 -0
- package/dist/ta/backtest/walkForward.js +136 -0
- package/dist/ta/backtest/walkForward.js.map +1 -0
- package/dist/ta/cycles.d.ts +15 -0
- package/dist/ta/cycles.js +31 -0
- package/dist/ta/cycles.js.map +1 -0
- package/dist/ta/desk/accrualEmitter.d.ts +59 -0
- package/dist/ta/desk/accrualEmitter.js +136 -0
- package/dist/ta/desk/accrualEmitter.js.map +1 -0
- package/dist/ta/desk/cellBacktest.d.ts +179 -0
- package/dist/ta/desk/cellBacktest.js +514 -0
- package/dist/ta/desk/cellBacktest.js.map +1 -0
- package/dist/ta/desk/cells/wpMaRejection.d.ts +49 -0
- package/dist/ta/desk/cells/wpMaRejection.js +141 -0
- package/dist/ta/desk/cells/wpMaRejection.js.map +1 -0
- package/dist/ta/desk/cells/wpVolumeClimax.d.ts +57 -0
- package/dist/ta/desk/cells/wpVolumeClimax.js +193 -0
- package/dist/ta/desk/cells/wpVolumeClimax.js.map +1 -0
- package/dist/ta/desk/collectors.d.ts +18 -0
- package/dist/ta/desk/collectors.js +450 -0
- package/dist/ta/desk/collectors.js.map +1 -0
- package/dist/ta/desk/contract.d.ts +51 -0
- package/dist/ta/desk/contract.js +261 -0
- package/dist/ta/desk/contract.js.map +1 -0
- package/dist/ta/desk/deskLedger.d.ts +36 -0
- package/dist/ta/desk/deskLedger.js +239 -0
- package/dist/ta/desk/deskLedger.js.map +1 -0
- package/dist/ta/desk/liqTape.d.ts +37 -0
- package/dist/ta/desk/liqTape.js +99 -0
- package/dist/ta/desk/liqTape.js.map +1 -0
- package/dist/ta/desk/post.d.ts +20 -0
- package/dist/ta/desk/post.js +65 -0
- package/dist/ta/desk/post.js.map +1 -0
- package/dist/ta/desk/render.d.ts +25 -0
- package/dist/ta/desk/render.js +398 -0
- package/dist/ta/desk/render.js.map +1 -0
- package/dist/ta/desk/surfaces.d.ts +216 -0
- package/dist/ta/desk/surfaces.js +472 -0
- package/dist/ta/desk/surfaces.js.map +1 -0
- package/dist/ta/desk/types.d.ts +174 -0
- package/dist/ta/desk/types.js +104 -0
- package/dist/ta/desk/types.js.map +1 -0
- package/dist/ta/index.d.ts +23 -0
- package/dist/ta/index.js +54 -0
- package/dist/ta/index.js.map +1 -0
- package/dist/ta/ledger.d.ts +44 -0
- package/dist/ta/ledger.js +95 -0
- package/dist/ta/ledger.js.map +1 -0
- package/dist/ta/levels.d.ts +21 -0
- package/dist/ta/levels.js +41 -0
- package/dist/ta/levels.js.map +1 -0
- package/dist/ta/swings.d.ts +30 -0
- package/dist/ta/swings.js +83 -0
- package/dist/ta/swings.js.map +1 -0
- package/dist/ta/types.d.ts +81 -0
- package/dist/ta/types.js +20 -0
- package/dist/ta/types.js.map +1 -0
- package/dist/telemetry.js +20 -9
- package/dist/telemetry.js.map +1 -1
- package/dist/tokenUsageTracker.d.ts +2 -1
- package/dist/tokenUsageTracker.js +38 -20
- package/dist/tokenUsageTracker.js.map +1 -1
- package/dist/tools/contextBundle.js +13 -9
- package/dist/tools/contextBundle.js.map +1 -1
- package/dist/tools/ctxGetTaskContext.js +8 -3
- package/dist/tools/ctxGetTaskContext.js.map +1 -1
- package/dist/tools/ctxQueryTraces.d.ts +18 -1
- package/dist/tools/ctxQueryTraces.js +176 -27
- package/dist/tools/ctxQueryTraces.js.map +1 -1
- package/dist/tools/enrichCommit.js +5 -2
- package/dist/tools/enrichCommit.js.map +1 -1
- package/dist/tools/getDependencyTree.js +2 -2
- package/dist/tools/getDependencyTree.js.map +1 -1
- package/dist/tools/getDiagnostics.js +3 -0
- package/dist/tools/getDiagnostics.js.map +1 -1
- package/dist/tools/getDocumentSymbols.js +5 -1
- package/dist/tools/getDocumentSymbols.js.map +1 -1
- package/dist/tools/getGitHotspots.js +12 -1
- package/dist/tools/getGitHotspots.js.map +1 -1
- package/dist/tools/getGitLog.js +5 -2
- package/dist/tools/getGitLog.js.map +1 -1
- package/dist/tools/getGitStatus.js +6 -1
- package/dist/tools/getGitStatus.js.map +1 -1
- package/dist/tools/getProjectContext.js +3 -1
- package/dist/tools/getProjectContext.js.map +1 -1
- package/dist/tools/getToolCapabilities.js +39 -4
- package/dist/tools/getToolCapabilities.js.map +1 -1
- package/dist/tools/gitWrite.js +12 -3
- package/dist/tools/gitWrite.js.map +1 -1
- package/dist/tools/github/composite.d.ts +1 -1
- package/dist/tools/github/composite.js +7 -7
- package/dist/tools/github/composite.js.map +1 -1
- package/dist/tools/github/pr.d.ts +6 -6
- package/dist/tools/github/pr.js +18 -11
- package/dist/tools/github/pr.js.map +1 -1
- package/dist/tools/httpClient.js +55 -3
- package/dist/tools/httpClient.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.js +19 -12
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp.d.ts +6 -0
- package/dist/tools/lsp.js +81 -12
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/previewEdit.js +16 -1
- package/dist/tools/previewEdit.js.map +1 -1
- package/dist/tools/resumeClaudeTask.js +17 -0
- package/dist/tools/resumeClaudeTask.js.map +1 -1
- package/dist/tools/searchAndReplace.js +9 -5
- package/dist/tools/searchAndReplace.js.map +1 -1
- package/dist/tools/searchTools.d.ts +26 -0
- package/dist/tools/searchTools.js +42 -2
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/terminal.js +23 -51
- package/dist/tools/terminal.js.map +1 -1
- package/dist/tools/transaction.d.ts +9 -1
- package/dist/tools/transaction.js +59 -4
- package/dist/tools/transaction.js.map +1 -1
- package/dist/tools/utils.d.ts +16 -0
- package/dist/tools/utils.js +77 -7
- package/dist/tools/utils.js.map +1 -1
- package/dist/transport.d.ts +31 -0
- package/dist/transport.js +117 -14
- package/dist/transport.js.map +1 -1
- package/dist/wireHaltPushDispatch.js +12 -0
- package/dist/wireHaltPushDispatch.js.map +1 -1
- package/dist/workerGateDecisionLog.d.ts +141 -0
- package/dist/workerGateDecisionLog.js +361 -0
- package/dist/workerGateDecisionLog.js.map +1 -0
- package/dist/workers/actionClass.d.ts +38 -0
- package/dist/workers/actionClass.js +155 -0
- package/dist/workers/actionClass.js.map +1 -0
- package/dist/workers/backtest.d.ts +68 -0
- package/dist/workers/backtest.js +113 -0
- package/dist/workers/backtest.js.map +1 -0
- package/dist/workers/contextRisk.d.ts +35 -0
- package/dist/workers/contextRisk.js +20 -0
- package/dist/workers/contextRisk.js.map +1 -0
- package/dist/workers/contextRiskScorer.d.ts +48 -0
- package/dist/workers/contextRiskScorer.js +94 -0
- package/dist/workers/contextRiskScorer.js.map +1 -0
- package/dist/workers/graduation.d.ts +61 -0
- package/dist/workers/graduation.js +112 -0
- package/dist/workers/graduation.js.map +1 -0
- package/dist/workers/outcomeStore.d.ts +98 -0
- package/dist/workers/outcomeStore.js +146 -0
- package/dist/workers/outcomeStore.js.map +1 -0
- package/dist/workers/outcomesCli.d.ts +34 -0
- package/dist/workers/outcomesCli.js +91 -0
- package/dist/workers/outcomesCli.js.map +1 -0
- package/dist/workers/runWorkerShadow.d.ts +90 -0
- package/dist/workers/runWorkerShadow.js +323 -0
- package/dist/workers/runWorkerShadow.js.map +1 -0
- package/dist/workers/shadowGate.d.ts +30 -0
- package/dist/workers/shadowGate.js +58 -0
- package/dist/workers/shadowGate.js.map +1 -0
- package/dist/workers/shadowObserver.d.ts +165 -0
- package/dist/workers/shadowObserver.js +203 -0
- package/dist/workers/shadowObserver.js.map +1 -0
- package/dist/workers/shadowReport.d.ts +16 -0
- package/dist/workers/shadowReport.js +61 -0
- package/dist/workers/shadowReport.js.map +1 -0
- package/dist/workers/shadowRun.d.ts +38 -0
- package/dist/workers/shadowRun.js +44 -0
- package/dist/workers/shadowRun.js.map +1 -0
- package/dist/workers/trustLevel.d.ts +82 -0
- package/dist/workers/trustLevel.js +100 -0
- package/dist/workers/trustLevel.js.map +1 -0
- package/dist/workers/worker.d.ts +49 -0
- package/dist/workers/worker.js +88 -0
- package/dist/workers/worker.js.map +1 -0
- package/dist/workers/workerGate.d.ts +101 -0
- package/dist/workers/workerGate.js +210 -0
- package/dist/workers/workerGate.js.map +1 -0
- package/dist/workers/workerLevelStore.d.ts +33 -0
- package/dist/workers/workerLevelStore.js +87 -0
- package/dist/workers/workerLevelStore.js.map +1 -0
- package/dist/workers/workerLoader.d.ts +7 -0
- package/dist/workers/workerLoader.js +31 -0
- package/dist/workers/workerLoader.js.map +1 -0
- package/dist/writeFileAtomic.js +40 -13
- package/dist/writeFileAtomic.js.map +1 -1
- package/package.json +14 -6
- package/scripts/mcp-stdio-shim.cjs +247 -87
- package/templates/CLAUDE.bridge.md +1 -1
- package/templates/recipes/dependency-bump.yaml +33 -0
- package/templates/recipes/incident-to-pr.yaml +187 -0
- package/templates/recipes/outcome-ingester.yaml +53 -0
- package/templates/recipes/release-notes.yaml +30 -0
- package/templates/recipes/triage-failing-tests-autofile.yaml +152 -0
- package/templates/recipes/triage-failing-tests.yaml +38 -0
- package/templates/workers/dependency-upkeep.worker.yaml +26 -0
- package/templates/workers/release-notes.worker.yaml +17 -0
- package/templates/workers/test-guardian.worker.yaml +24 -0
- package/deploy/README.md +0 -172
- package/deploy/bootstrap-new-vps.sh +0 -364
- package/deploy/bootstrap-vps.sh +0 -192
- package/deploy/claude-ide-bridge.service.template +0 -67
- package/deploy/claude-ide-bridge@.service +0 -31
- package/deploy/deploy-dashboard.sh +0 -198
- package/deploy/deploy-landing.sh +0 -136
- package/deploy/ecosystem.config.js.example +0 -36
- package/deploy/install-vps-service.sh +0 -240
- package/deploy/macos/README.md +0 -153
- package/deploy/macos/com.patchwork.bridge.plist.template +0 -54
- package/deploy/macos/com.patchwork.tunnel.plist.template +0 -76
- package/deploy/macos/install-mac-bridge.sh +0 -244
- package/deploy/macos/uninstall-mac-bridge.sh +0 -22
- package/deploy/nginx-claude-bridge.conf.template +0 -129
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# install-mac-bridge.sh — make the bridge + reverse tunnel persistent on macOS
|
|
3
|
-
# via launchd LaunchAgents (auto-start at login, auto-restart on crash,
|
|
4
|
-
# auto-reconnect on network change via autossh).
|
|
5
|
-
#
|
|
6
|
-
# Usage (interactive):
|
|
7
|
-
# bash deploy/macos/install-mac-bridge.sh
|
|
8
|
-
#
|
|
9
|
-
# Usage (env-driven, idempotent re-install):
|
|
10
|
-
# VPS_HOST=185.167.97.141 VPS_USER=root BRIDGE_PORT=63906 \
|
|
11
|
-
# VPS_PORT=3285 BRIDGE_TOKEN="$(uuidgen | tr '[:upper:]' '[:lower:]')" \
|
|
12
|
-
# bash deploy/macos/install-mac-bridge.sh
|
|
13
|
-
#
|
|
14
|
-
# Tip: prefer the VPS IP (or a `~/.ssh/config` Host alias) over the
|
|
15
|
-
# public domain. The domain may resolve via DNS that drifts, putting
|
|
16
|
-
# you on a different machine after a redeploy and breaking host-key
|
|
17
|
-
# verification. The IP is whatever your deploy script targets — a
|
|
18
|
-
# stable identity across rebuilds.
|
|
19
|
-
#
|
|
20
|
-
# Using a ~/.ssh/config alias (cleanest):
|
|
21
|
-
# # in ~/.ssh/config:
|
|
22
|
-
# # Host pw-bridge
|
|
23
|
-
# # HostName 185.167.97.141
|
|
24
|
-
# # User wesh
|
|
25
|
-
# # IdentityFile ~/.ssh/id_ed25519
|
|
26
|
-
# VPS_HOST=pw-bridge VPS_USER=wesh \
|
|
27
|
-
# bash deploy/macos/install-mac-bridge.sh
|
|
28
|
-
# # → tunnel.plist uses `pw-bridge` as the SSH target (User from
|
|
29
|
-
# # ssh_config wins over the plist's user@host form when an alias
|
|
30
|
-
# # exists; we still set both so the resolution is explicit).
|
|
31
|
-
#
|
|
32
|
-
# After install:
|
|
33
|
-
# tail -f ~/Library/Logs/patchwork-bridge.log
|
|
34
|
-
# tail -f ~/Library/Logs/patchwork-tunnel.log
|
|
35
|
-
#
|
|
36
|
-
# Update VPS .env.local PATCHWORK_BRIDGE_TOKEN to match the printed token,
|
|
37
|
-
# then `pm2 restart patchwork-dashboard` on the VPS.
|
|
38
|
-
#
|
|
39
|
-
# Uninstall: bash deploy/macos/uninstall-mac-bridge.sh
|
|
40
|
-
|
|
41
|
-
set -euo pipefail
|
|
42
|
-
|
|
43
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
44
|
-
# Sanity checks
|
|
45
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
46
|
-
|
|
47
|
-
if [[ "$OSTYPE" != "darwin"* ]]; then
|
|
48
|
-
echo "This script is for macOS (launchd). Detected: $OSTYPE" >&2
|
|
49
|
-
exit 1
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
if ! command -v claude-ide-bridge >/dev/null 2>&1; then
|
|
53
|
-
echo "claude-ide-bridge not found on PATH." >&2
|
|
54
|
-
echo "Install with: npm install -g patchwork-os" >&2
|
|
55
|
-
exit 1
|
|
56
|
-
fi
|
|
57
|
-
|
|
58
|
-
# Real-path resolution: a symlinked global install (npm link) breaks the
|
|
59
|
-
# LaunchAgent because launchd's sandbox follows the symlink target into
|
|
60
|
-
# ~/Documents and EPERMs on file IO. Recommend a real install.
|
|
61
|
-
BRIDGE_REAL="$(readlink -f "$(command -v claude-ide-bridge)" 2>/dev/null || \
|
|
62
|
-
python3 -c "import os,sys; print(os.path.realpath('$(command -v claude-ide-bridge)'))")"
|
|
63
|
-
case "$BRIDGE_REAL" in
|
|
64
|
-
*Documents*|*Desktop*|*Downloads*)
|
|
65
|
-
echo "⚠️ claude-ide-bridge is symlinked into a sandboxed user-data folder:"
|
|
66
|
-
echo " $BRIDGE_REAL"
|
|
67
|
-
echo " LaunchAgent startup will fail with EPERM under the macOS sandbox."
|
|
68
|
-
echo " Fix: cd to the patchwork-os repo, run \`npm pack && npm install -g patchwork-os-*.tgz\`"
|
|
69
|
-
echo " Or: \`npm install -g patchwork-os\` from the public registry."
|
|
70
|
-
echo ""
|
|
71
|
-
read -p " Continue anyway? [y/N] " -r yn
|
|
72
|
-
[[ "$yn" =~ ^[Yy]$ ]] || exit 1
|
|
73
|
-
;;
|
|
74
|
-
esac
|
|
75
|
-
|
|
76
|
-
if ! command -v autossh >/dev/null 2>&1; then
|
|
77
|
-
echo "autossh not found. Installing via Homebrew…"
|
|
78
|
-
if ! command -v brew >/dev/null 2>&1; then
|
|
79
|
-
echo "Homebrew not found. Install from https://brew.sh and re-run." >&2
|
|
80
|
-
exit 1
|
|
81
|
-
fi
|
|
82
|
-
brew install autossh
|
|
83
|
-
fi
|
|
84
|
-
|
|
85
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
86
|
-
# Gather config (env-driven with interactive fallback)
|
|
87
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
88
|
-
|
|
89
|
-
VPS_HOST="${VPS_HOST:-}"
|
|
90
|
-
VPS_USER="${VPS_USER:-$USER}"
|
|
91
|
-
BRIDGE_PORT="${BRIDGE_PORT:-63906}"
|
|
92
|
-
VPS_PORT="${VPS_PORT:-3285}"
|
|
93
|
-
BRIDGE_TOKEN="${BRIDGE_TOKEN:-}"
|
|
94
|
-
WORKSPACE="${WORKSPACE:-$PWD}"
|
|
95
|
-
SSH_KEY="${SSH_KEY:-$HOME/.ssh/id_ed25519}"
|
|
96
|
-
[[ -f "$SSH_KEY" ]] || SSH_KEY="$HOME/.ssh/id_rsa"
|
|
97
|
-
|
|
98
|
-
if [[ -z "$VPS_HOST" ]]; then
|
|
99
|
-
cat <<'PROMPT'
|
|
100
|
-
|
|
101
|
-
VPS target — three choices, in increasing order of stability:
|
|
102
|
-
|
|
103
|
-
(1) Public domain e.g. bridge.your.tld
|
|
104
|
-
DNS-resolved each connection. Drifts during redeploys → host-key churn.
|
|
105
|
-
|
|
106
|
-
(2) VPS IP e.g. 185.167.97.141
|
|
107
|
-
Stable per VPS. Doesn't survive a VPS rebuild but doesn't drift between.
|
|
108
|
-
|
|
109
|
-
(3) ~/.ssh/config alias e.g. pw-bridge
|
|
110
|
-
Most stable. Pins IP + identity in one place; the rest of the
|
|
111
|
-
stack (this script, deploy.sh, manual ssh) all use the alias.
|
|
112
|
-
Update one ssh_config entry on a rebuild, everything follows.
|
|
113
|
-
|
|
114
|
-
PROMPT
|
|
115
|
-
read -p "VPS host (IP or ssh alias preferred): " VPS_HOST
|
|
116
|
-
fi
|
|
117
|
-
if [[ -z "$VPS_HOST" ]]; then
|
|
118
|
-
echo "VPS host is required." >&2
|
|
119
|
-
exit 1
|
|
120
|
-
fi
|
|
121
|
-
|
|
122
|
-
# When VPS_HOST is a ~/.ssh/config alias, ssh resolves both User and
|
|
123
|
-
# HostName from the config, so VPS_USER becomes redundant. The plist
|
|
124
|
-
# still passes user@host to be explicit (and to support the IP-direct
|
|
125
|
-
# case where ssh_config has nothing). If `ssh -G $VPS_HOST` reports a
|
|
126
|
-
# resolved hostname different from VPS_HOST, treat that as confirmation
|
|
127
|
-
# the value is an alias.
|
|
128
|
-
if ssh -G "$VPS_HOST" 2>/dev/null | awk '$1 == "hostname"' | grep -qv "^hostname $VPS_HOST$"; then
|
|
129
|
-
echo "Detected '$VPS_HOST' is a ~/.ssh/config alias — host + identity resolved from there."
|
|
130
|
-
IS_SSH_ALIAS=1
|
|
131
|
-
else
|
|
132
|
-
IS_SSH_ALIAS=0
|
|
133
|
-
fi
|
|
134
|
-
|
|
135
|
-
if [[ -z "$BRIDGE_TOKEN" ]]; then
|
|
136
|
-
if command -v uuidgen >/dev/null 2>&1; then
|
|
137
|
-
BRIDGE_TOKEN="$(uuidgen)"
|
|
138
|
-
else
|
|
139
|
-
BRIDGE_TOKEN="$(python3 -c 'import uuid; print(uuid.uuid4())')"
|
|
140
|
-
fi
|
|
141
|
-
echo "Generated bridge token: $BRIDGE_TOKEN"
|
|
142
|
-
fi
|
|
143
|
-
|
|
144
|
-
if [[ ! -f "$SSH_KEY" ]]; then
|
|
145
|
-
echo "SSH key not found: $SSH_KEY" >&2
|
|
146
|
-
echo "Either set SSH_KEY=... or generate one with \`ssh-keygen -t ed25519\`." >&2
|
|
147
|
-
exit 1
|
|
148
|
-
fi
|
|
149
|
-
|
|
150
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
151
|
-
# Render templates
|
|
152
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
153
|
-
|
|
154
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
155
|
-
LAUNCH_AGENTS="$HOME/Library/LaunchAgents"
|
|
156
|
-
LOGS="$HOME/Library/Logs"
|
|
157
|
-
BRIDGE_BIN="$(command -v claude-ide-bridge)"
|
|
158
|
-
AUTOSSH_BIN="$(command -v autossh)"
|
|
159
|
-
|
|
160
|
-
mkdir -p "$LAUNCH_AGENTS" "$LOGS"
|
|
161
|
-
|
|
162
|
-
# SSH target string: bare alias when VPS_HOST is a `~/.ssh/config` Host
|
|
163
|
-
# entry, "user@host" form otherwise. The alias case lets ssh_config own
|
|
164
|
-
# user + identity + hostname resolution, which is the most stable setup
|
|
165
|
-
# (one place to update on a VPS rebuild).
|
|
166
|
-
if [ "$IS_SSH_ALIAS" = "1" ]; then
|
|
167
|
-
SSH_TARGET="$VPS_HOST"
|
|
168
|
-
echo "SSH target: $SSH_TARGET (resolved via ~/.ssh/config)"
|
|
169
|
-
else
|
|
170
|
-
SSH_TARGET="$VPS_USER@$VPS_HOST"
|
|
171
|
-
echo "SSH target: $SSH_TARGET"
|
|
172
|
-
fi
|
|
173
|
-
|
|
174
|
-
render() {
|
|
175
|
-
local tmpl="$1" out="$2"
|
|
176
|
-
sed \
|
|
177
|
-
-e "s|{{BRIDGE_BIN}}|$BRIDGE_BIN|g" \
|
|
178
|
-
-e "s|{{AUTOSSH_BIN}}|$AUTOSSH_BIN|g" \
|
|
179
|
-
-e "s|{{BRIDGE_PORT}}|$BRIDGE_PORT|g" \
|
|
180
|
-
-e "s|{{VPS_PORT}}|$VPS_PORT|g" \
|
|
181
|
-
-e "s|{{BRIDGE_TOKEN}}|$BRIDGE_TOKEN|g" \
|
|
182
|
-
-e "s|{{VPS_HOST}}|$VPS_HOST|g" \
|
|
183
|
-
-e "s|{{SSH_USER}}|$VPS_USER|g" \
|
|
184
|
-
-e "s|{{SSH_TARGET}}|$SSH_TARGET|g" \
|
|
185
|
-
-e "s|{{SSH_KEY}}|$SSH_KEY|g" \
|
|
186
|
-
-e "s|{{WORKSPACE}}|$WORKSPACE|g" \
|
|
187
|
-
-e "s|{{HOME}}|$HOME|g" \
|
|
188
|
-
"$tmpl" >"$out"
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
BRIDGE_PLIST="$LAUNCH_AGENTS/com.patchwork.bridge.plist"
|
|
192
|
-
TUNNEL_PLIST="$LAUNCH_AGENTS/com.patchwork.tunnel.plist"
|
|
193
|
-
|
|
194
|
-
render "$SCRIPT_DIR/com.patchwork.bridge.plist.template" "$BRIDGE_PLIST"
|
|
195
|
-
render "$SCRIPT_DIR/com.patchwork.tunnel.plist.template" "$TUNNEL_PLIST"
|
|
196
|
-
|
|
197
|
-
# Tighten permissions — these contain the bridge token.
|
|
198
|
-
chmod 600 "$BRIDGE_PLIST" "$TUNNEL_PLIST"
|
|
199
|
-
|
|
200
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
201
|
-
# (Re)load
|
|
202
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
203
|
-
|
|
204
|
-
# bootout removes the old service if present (idempotent re-install).
|
|
205
|
-
# Errors are non-fatal — first run won't have anything to bootout.
|
|
206
|
-
launchctl bootout "gui/$UID" "$BRIDGE_PLIST" 2>/dev/null || true
|
|
207
|
-
launchctl bootout "gui/$UID" "$TUNNEL_PLIST" 2>/dev/null || true
|
|
208
|
-
|
|
209
|
-
launchctl bootstrap "gui/$UID" "$BRIDGE_PLIST"
|
|
210
|
-
launchctl bootstrap "gui/$UID" "$TUNNEL_PLIST"
|
|
211
|
-
|
|
212
|
-
launchctl enable "gui/$UID/com.patchwork.bridge"
|
|
213
|
-
launchctl enable "gui/$UID/com.patchwork.tunnel"
|
|
214
|
-
|
|
215
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
216
|
-
# Status
|
|
217
|
-
# ──────────────────────────────────────────────────────────────────────
|
|
218
|
-
|
|
219
|
-
cat <<INFO
|
|
220
|
-
|
|
221
|
-
────────────────────────────────────────────────────────────────────────
|
|
222
|
-
Installed.
|
|
223
|
-
|
|
224
|
-
Bridge: 127.0.0.1:$BRIDGE_PORT
|
|
225
|
-
Tunnel: -> $SSH_TARGET:$VPS_PORT
|
|
226
|
-
Token: $BRIDGE_TOKEN
|
|
227
|
-
|
|
228
|
-
Logs:
|
|
229
|
-
~/Library/Logs/patchwork-bridge.log
|
|
230
|
-
~/Library/Logs/patchwork-tunnel.log
|
|
231
|
-
|
|
232
|
-
Status:
|
|
233
|
-
launchctl print gui/$UID/com.patchwork.bridge
|
|
234
|
-
launchctl print gui/$UID/com.patchwork.tunnel
|
|
235
|
-
|
|
236
|
-
Update the VPS dashboard's PATCHWORK_BRIDGE_TOKEN to match the token
|
|
237
|
-
above, then \`pm2 restart patchwork-dashboard\` on the VPS so the new
|
|
238
|
-
token takes effect:
|
|
239
|
-
|
|
240
|
-
ssh $SSH_TARGET 'sed -i "s|^PATCHWORK_BRIDGE_TOKEN=.*|PATCHWORK_BRIDGE_TOKEN=$BRIDGE_TOKEN|" /opt/patchwork-dashboard/.env.local && pm2 restart patchwork-dashboard'
|
|
241
|
-
|
|
242
|
-
Uninstall: bash deploy/macos/uninstall-mac-bridge.sh
|
|
243
|
-
────────────────────────────────────────────────────────────────────────
|
|
244
|
-
INFO
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# uninstall-mac-bridge.sh — stop + remove the patchwork bridge and tunnel
|
|
3
|
-
# LaunchAgents installed by install-mac-bridge.sh.
|
|
4
|
-
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
if [[ "$OSTYPE" != "darwin"* ]]; then
|
|
8
|
-
echo "macOS only." >&2
|
|
9
|
-
exit 1
|
|
10
|
-
fi
|
|
11
|
-
|
|
12
|
-
BRIDGE_PLIST="$HOME/Library/LaunchAgents/com.patchwork.bridge.plist"
|
|
13
|
-
TUNNEL_PLIST="$HOME/Library/LaunchAgents/com.patchwork.tunnel.plist"
|
|
14
|
-
|
|
15
|
-
# bootout: stop + remove the service registration. `|| true` so the
|
|
16
|
-
# script doesn't fail when one of them isn't installed.
|
|
17
|
-
launchctl bootout "gui/$UID" "$BRIDGE_PLIST" 2>/dev/null || true
|
|
18
|
-
launchctl bootout "gui/$UID" "$TUNNEL_PLIST" 2>/dev/null || true
|
|
19
|
-
|
|
20
|
-
rm -f "$BRIDGE_PLIST" "$TUNNEL_PLIST"
|
|
21
|
-
|
|
22
|
-
echo "Uninstalled. Logs preserved at ~/Library/Logs/patchwork-{bridge,tunnel}.log"
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
# deploy/nginx-claude-bridge.conf.template
|
|
2
|
-
# Reference template — domain and port are injected by the install scripts.
|
|
3
|
-
# Do NOT use this file directly. Use bootstrap-new-vps.sh or install-vps-service.sh
|
|
4
|
-
# which write the final nginx config to /etc/nginx/sites-available/claude-bridge
|
|
5
|
-
# with $DOMAIN and $PORT substituted.
|
|
6
|
-
#
|
|
7
|
-
# To manually generate from this template:
|
|
8
|
-
# DOMAIN=bridge.example.com PORT=9000 \
|
|
9
|
-
# envsubst '$DOMAIN $PORT' < deploy/nginx-claude-bridge.conf.template \
|
|
10
|
-
# > /etc/nginx/sites-available/claude-bridge
|
|
11
|
-
|
|
12
|
-
server {
|
|
13
|
-
listen 80;
|
|
14
|
-
listen [::]:80;
|
|
15
|
-
server_name ${DOMAIN};
|
|
16
|
-
|
|
17
|
-
# Let Certbot complete ACME HTTP-01 challenges
|
|
18
|
-
location /.well-known/acme-challenge/ {
|
|
19
|
-
root /var/www/html;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
# Redirect all other HTTP to HTTPS
|
|
23
|
-
location / {
|
|
24
|
-
return 301 https://$host$request_uri;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
server {
|
|
29
|
-
listen 443 ssl http2;
|
|
30
|
-
listen [::]:443 ssl http2;
|
|
31
|
-
server_name ${DOMAIN};
|
|
32
|
-
|
|
33
|
-
# TLS — Certbot populates these after: certbot --nginx -d ${DOMAIN}
|
|
34
|
-
# ssl_certificate /etc/letsencrypt/live/${DOMAIN}/fullchain.pem;
|
|
35
|
-
# ssl_certificate_key /etc/letsencrypt/live/${DOMAIN}/privkey.pem;
|
|
36
|
-
# include /etc/letsencrypt/options-ssl-nginx.conf;
|
|
37
|
-
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
|
38
|
-
|
|
39
|
-
# Security headers
|
|
40
|
-
add_header X-Content-Type-Options nosniff always;
|
|
41
|
-
add_header X-Frame-Options DENY always;
|
|
42
|
-
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
43
|
-
add_header Content-Security-Policy "default-src 'none'" always;
|
|
44
|
-
|
|
45
|
-
# /mcp — Streamable HTTP MCP endpoint (SSE-safe, never buffer)
|
|
46
|
-
location /mcp {
|
|
47
|
-
# Rate limit: 30 req/min per IP, burst of 10 (requires limit_req_zone in http{} block)
|
|
48
|
-
limit_req zone=mcp_zone burst=10 nodelay;
|
|
49
|
-
limit_req_status 429;
|
|
50
|
-
|
|
51
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
52
|
-
proxy_http_version 1.1;
|
|
53
|
-
|
|
54
|
-
# SSE requires no buffering
|
|
55
|
-
proxy_buffering off;
|
|
56
|
-
proxy_cache off;
|
|
57
|
-
proxy_read_timeout 86400s;
|
|
58
|
-
proxy_send_timeout 86400s;
|
|
59
|
-
proxy_connect_timeout 10s;
|
|
60
|
-
|
|
61
|
-
# Forward auth and MCP session headers
|
|
62
|
-
proxy_set_header Authorization $http_authorization;
|
|
63
|
-
proxy_pass_header Authorization;
|
|
64
|
-
proxy_set_header Mcp-Session-Id $http_mcp_session_id;
|
|
65
|
-
proxy_pass_header Mcp-Session-Id;
|
|
66
|
-
|
|
67
|
-
# Standard proxy headers
|
|
68
|
-
proxy_set_header Host $host;
|
|
69
|
-
proxy_set_header X-Real-IP $remote_addr;
|
|
70
|
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
71
|
-
proxy_set_header X-Forwarded-Proto $scheme;
|
|
72
|
-
|
|
73
|
-
# WebSocket upgrade passthrough
|
|
74
|
-
proxy_set_header Upgrade $http_upgrade;
|
|
75
|
-
proxy_set_header Connection $connection_upgrade;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
# /health — unauthenticated health check
|
|
79
|
-
location /health {
|
|
80
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
81
|
-
proxy_http_version 1.1;
|
|
82
|
-
proxy_connect_timeout 5s;
|
|
83
|
-
proxy_read_timeout 10s;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
# /.well-known — MCP server card + OAuth discovery (RFC 8414, RFC 9396)
|
|
87
|
-
location /.well-known/ {
|
|
88
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
89
|
-
proxy_http_version 1.1;
|
|
90
|
-
proxy_connect_timeout 5s;
|
|
91
|
-
proxy_read_timeout 10s;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
# /oauth — OAuth 2.0 endpoints (authorize, token, register, revoke)
|
|
95
|
-
location /oauth/ {
|
|
96
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
97
|
-
proxy_http_version 1.1;
|
|
98
|
-
proxy_connect_timeout 5s;
|
|
99
|
-
proxy_read_timeout 30s;
|
|
100
|
-
proxy_set_header Host $host;
|
|
101
|
-
proxy_set_header X-Real-IP $remote_addr;
|
|
102
|
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
103
|
-
proxy_set_header X-Forwarded-Proto $scheme;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
# /ping — unauthenticated health probe
|
|
107
|
-
location /ping {
|
|
108
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
109
|
-
proxy_http_version 1.1;
|
|
110
|
-
proxy_connect_timeout 5s;
|
|
111
|
-
proxy_read_timeout 10s;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
# Block everything else
|
|
115
|
-
location / {
|
|
116
|
-
return 404;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
# Note: add this to the `http {}` block in /etc/nginx/nginx.conf if not present
|
|
121
|
-
# (bootstrap-new-vps.sh and install-vps-service.sh do this automatically):
|
|
122
|
-
#
|
|
123
|
-
# map $http_upgrade $connection_upgrade {
|
|
124
|
-
# default upgrade;
|
|
125
|
-
# '' close;
|
|
126
|
-
# }
|
|
127
|
-
#
|
|
128
|
-
# Rate limiting zone — add to http {} block:
|
|
129
|
-
# limit_req_zone $binary_remote_addr zone=mcp_zone:10m rate=30r/m;
|