patchwork-os 0.2.0-beta.9.canary.92 → 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,240 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# deploy/install-vps-service.sh
|
|
3
|
-
# Idempotent updater — re-installs the systemd service and nginx config
|
|
4
|
-
# on an already-bootstrapped server after a git pull.
|
|
5
|
-
#
|
|
6
|
-
# For FIRST-TIME setup on a new VPS, use bootstrap-new-vps.sh instead.
|
|
7
|
-
#
|
|
8
|
-
# Usage (run as root from repo root):
|
|
9
|
-
# bash deploy/install-vps-service.sh
|
|
10
|
-
#
|
|
11
|
-
# Optional environment overrides:
|
|
12
|
-
# DOMAIN Override domain (default: read from existing nginx config or prompt)
|
|
13
|
-
# PORT Override port (default: read from .env.vps)
|
|
14
|
-
# SERVICE_USER Override user (default: auto-detect from existing service)
|
|
15
|
-
|
|
16
|
-
set -euo pipefail
|
|
17
|
-
|
|
18
|
-
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
19
|
-
SERVICE_NAME="claude-ide-bridge"
|
|
20
|
-
ENV_FILE="$REPO_ROOT/.env.vps"
|
|
21
|
-
|
|
22
|
-
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
|
|
23
|
-
info() { echo -e "${GREEN}✓${NC} $*"; }
|
|
24
|
-
warn() { echo -e "${YELLOW}⚠${NC} $*"; }
|
|
25
|
-
err() { echo -e "${RED}✗${NC} $*" >&2; }
|
|
26
|
-
|
|
27
|
-
echo "=== Claude IDE Bridge — Service Updater ==="
|
|
28
|
-
echo ""
|
|
29
|
-
|
|
30
|
-
# ── Pre-flight ────────────────────────────────────────────────────────────────
|
|
31
|
-
[[ "$(id -u)" -eq 0 ]] || { err "Run as root: sudo bash deploy/install-vps-service.sh"; exit 1; }
|
|
32
|
-
[[ -f "$ENV_FILE" ]] || { err "$ENV_FILE not found. Run bootstrap-new-vps.sh first."; exit 1; }
|
|
33
|
-
|
|
34
|
-
source "$ENV_FILE"
|
|
35
|
-
[[ -n "${FIXED_TOKEN:-}" ]] || { err "FIXED_TOKEN not set in $ENV_FILE"; exit 1; }
|
|
36
|
-
[[ -n "${PORT:-}" ]] || { err "PORT not set in $ENV_FILE"; exit 1; }
|
|
37
|
-
[[ -n "${WORKSPACE:-}" ]] || { err "WORKSPACE not set in $ENV_FILE"; exit 1; }
|
|
38
|
-
|
|
39
|
-
DIST="$REPO_ROOT/dist/index.js"
|
|
40
|
-
[[ -f "$DIST" ]] || { err "$DIST not found. Run: npm run build"; exit 1; }
|
|
41
|
-
|
|
42
|
-
command -v nginx >/dev/null 2>&1 || { err "nginx not found. Run bootstrap-new-vps.sh first."; exit 1; }
|
|
43
|
-
command -v systemctl >/dev/null 2>&1 || { err "systemd not available."; exit 1; }
|
|
44
|
-
|
|
45
|
-
# Detect service user from existing unit file, fall back to env or default
|
|
46
|
-
EXISTING_USER=$(grep -Po '(?<=^User=).+' /etc/systemd/system/${SERVICE_NAME}.service 2>/dev/null || echo "")
|
|
47
|
-
SERVICE_USER="${SERVICE_USER:-${EXISTING_USER:-claude-bridge}}"
|
|
48
|
-
|
|
49
|
-
# Detect domain from existing nginx config
|
|
50
|
-
EXISTING_DOMAIN=$(grep -Po '(?<=server_name )[\w.-]+' /etc/nginx/sites-available/claude-bridge 2>/dev/null | head -1 || echo "")
|
|
51
|
-
DOMAIN="${DOMAIN:-$EXISTING_DOMAIN}"
|
|
52
|
-
|
|
53
|
-
if [[ -z "$DOMAIN" ]]; then
|
|
54
|
-
err "Cannot determine DOMAIN. Set it: DOMAIN=bridge.example.com bash deploy/install-vps-service.sh"
|
|
55
|
-
exit 1
|
|
56
|
-
fi
|
|
57
|
-
|
|
58
|
-
info "Repo: $REPO_ROOT"
|
|
59
|
-
info "Domain: $DOMAIN"
|
|
60
|
-
info "Port: $PORT"
|
|
61
|
-
info "Service user: $SERVICE_USER"
|
|
62
|
-
echo ""
|
|
63
|
-
|
|
64
|
-
# ── Systemd service ───────────────────────────────────────────────────────────
|
|
65
|
-
echo "Updating systemd service..."
|
|
66
|
-
|
|
67
|
-
cat > "/etc/systemd/system/${SERVICE_NAME}.service" <<SERVICE
|
|
68
|
-
[Unit]
|
|
69
|
-
Description=Claude IDE Bridge MCP Server
|
|
70
|
-
Documentation=https://github.com/Oolab-labs/claude-ide-bridge
|
|
71
|
-
After=network.target
|
|
72
|
-
StartLimitIntervalSec=120
|
|
73
|
-
StartLimitBurst=5
|
|
74
|
-
|
|
75
|
-
[Service]
|
|
76
|
-
Type=simple
|
|
77
|
-
User=$SERVICE_USER
|
|
78
|
-
WorkingDirectory=$REPO_ROOT
|
|
79
|
-
|
|
80
|
-
# Load config — FIXED_TOKEN, PORT, WORKSPACE
|
|
81
|
-
EnvironmentFile=$ENV_FILE
|
|
82
|
-
|
|
83
|
-
# Bridge process
|
|
84
|
-
ExecStart=/usr/bin/node $REPO_ROOT/dist/index.js \\
|
|
85
|
-
--port \${PORT} \\
|
|
86
|
-
--workspace \${WORKSPACE} \\
|
|
87
|
-
--fixed-token \${FIXED_TOKEN} \\
|
|
88
|
-
--grace-period 120000 \\
|
|
89
|
-
--vps
|
|
90
|
-
|
|
91
|
-
KillMode=mixed
|
|
92
|
-
KillSignal=SIGTERM
|
|
93
|
-
TimeoutStopSec=15
|
|
94
|
-
Restart=always
|
|
95
|
-
RestartSec=5
|
|
96
|
-
|
|
97
|
-
StandardOutput=journal
|
|
98
|
-
StandardError=journal
|
|
99
|
-
SyslogIdentifier=claude-ide-bridge
|
|
100
|
-
|
|
101
|
-
NoNewPrivileges=true
|
|
102
|
-
PrivateTmp=true
|
|
103
|
-
|
|
104
|
-
[Install]
|
|
105
|
-
WantedBy=multi-user.target
|
|
106
|
-
SERVICE
|
|
107
|
-
|
|
108
|
-
systemctl daemon-reload
|
|
109
|
-
systemctl enable "$SERVICE_NAME"
|
|
110
|
-
info "Systemd service updated"
|
|
111
|
-
|
|
112
|
-
# ── nginx ─────────────────────────────────────────────────────────────────────
|
|
113
|
-
echo "Updating nginx config..."
|
|
114
|
-
|
|
115
|
-
# Add connection_upgrade map if missing
|
|
116
|
-
if ! grep -q "connection_upgrade" /etc/nginx/nginx.conf 2>/dev/null; then
|
|
117
|
-
perl -i -0pe 's/(http \{)/$1\n map \$http_upgrade \$connection_upgrade {\n default upgrade;\n '"''"' close;\n }/' /etc/nginx/nginx.conf
|
|
118
|
-
info "Added connection_upgrade map to nginx.conf"
|
|
119
|
-
fi
|
|
120
|
-
|
|
121
|
-
# Write site config with domain and port injected
|
|
122
|
-
cat > "/etc/nginx/sites-available/claude-bridge" <<NGINX
|
|
123
|
-
# Claude IDE Bridge — nginx reverse proxy
|
|
124
|
-
# Domain: $DOMAIN Port: ${PORT}
|
|
125
|
-
# Updated by install-vps-service.sh on $(date -u +%Y-%m-%dT%H:%M:%SZ)
|
|
126
|
-
|
|
127
|
-
server {
|
|
128
|
-
listen 80;
|
|
129
|
-
listen [::]:80;
|
|
130
|
-
server_name $DOMAIN;
|
|
131
|
-
|
|
132
|
-
location /.well-known/acme-challenge/ {
|
|
133
|
-
root /var/www/html;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
location / {
|
|
137
|
-
return 301 https://\$host\$request_uri;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
server {
|
|
142
|
-
listen 443 ssl http2;
|
|
143
|
-
listen [::]:443 ssl http2;
|
|
144
|
-
server_name $DOMAIN;
|
|
145
|
-
|
|
146
|
-
# TLS — managed by Certbot
|
|
147
|
-
# ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
|
|
148
|
-
# ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
|
|
149
|
-
# include /etc/letsencrypt/options-ssl-nginx.conf;
|
|
150
|
-
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
|
151
|
-
|
|
152
|
-
add_header X-Content-Type-Options nosniff always;
|
|
153
|
-
add_header X-Frame-Options DENY always;
|
|
154
|
-
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
155
|
-
|
|
156
|
-
location /mcp {
|
|
157
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
158
|
-
proxy_http_version 1.1;
|
|
159
|
-
proxy_buffering off;
|
|
160
|
-
proxy_cache off;
|
|
161
|
-
proxy_read_timeout 86400s;
|
|
162
|
-
proxy_send_timeout 86400s;
|
|
163
|
-
proxy_connect_timeout 10s;
|
|
164
|
-
proxy_set_header Authorization \$http_authorization;
|
|
165
|
-
proxy_pass_header Authorization;
|
|
166
|
-
proxy_set_header Mcp-Session-Id \$http_mcp_session_id;
|
|
167
|
-
proxy_pass_header Mcp-Session-Id;
|
|
168
|
-
proxy_set_header Host \$host;
|
|
169
|
-
proxy_set_header X-Real-IP \$remote_addr;
|
|
170
|
-
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
|
171
|
-
proxy_set_header X-Forwarded-Proto \$scheme;
|
|
172
|
-
proxy_set_header Upgrade \$http_upgrade;
|
|
173
|
-
proxy_set_header Connection \$connection_upgrade;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
location /health {
|
|
177
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
178
|
-
proxy_http_version 1.1;
|
|
179
|
-
proxy_connect_timeout 5s;
|
|
180
|
-
proxy_read_timeout 10s;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
location /.well-known/ {
|
|
184
|
-
proxy_pass http://127.0.0.1:${PORT};
|
|
185
|
-
proxy_http_version 1.1;
|
|
186
|
-
proxy_connect_timeout 5s;
|
|
187
|
-
proxy_read_timeout 10s;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
location / {
|
|
191
|
-
return 404;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
NGINX
|
|
195
|
-
|
|
196
|
-
[[ -L "/etc/nginx/sites-enabled/claude-bridge" ]] || \
|
|
197
|
-
ln -s /etc/nginx/sites-available/claude-bridge /etc/nginx/sites-enabled/claude-bridge
|
|
198
|
-
|
|
199
|
-
[[ -L "/etc/nginx/sites-enabled/default" ]] && \
|
|
200
|
-
rm -f /etc/nginx/sites-enabled/default
|
|
201
|
-
|
|
202
|
-
nginx -t
|
|
203
|
-
systemctl reload nginx
|
|
204
|
-
info "nginx config updated"
|
|
205
|
-
|
|
206
|
-
# ── Stop tmux session if still running (superseded by systemd) ────────────────
|
|
207
|
-
if command -v tmux >/dev/null 2>&1 && tmux has-session -t "bridge" 2>/dev/null; then
|
|
208
|
-
tmux kill-session -t "bridge" 2>/dev/null || true
|
|
209
|
-
info "Stopped legacy tmux bridge session"
|
|
210
|
-
fi
|
|
211
|
-
|
|
212
|
-
# ── Restart service ───────────────────────────────────────────────────────────
|
|
213
|
-
echo "Restarting service..."
|
|
214
|
-
systemctl restart "$SERVICE_NAME"
|
|
215
|
-
|
|
216
|
-
echo -n "Waiting for bridge..."
|
|
217
|
-
for i in $(seq 1 20); do
|
|
218
|
-
if curl -sf --max-time 3 "http://127.0.0.1:${PORT}/health" >/dev/null 2>&1; then
|
|
219
|
-
echo " ready."
|
|
220
|
-
break
|
|
221
|
-
fi
|
|
222
|
-
sleep 1; echo -n "."
|
|
223
|
-
if [[ $i -eq 20 ]]; then
|
|
224
|
-
echo " timed out."
|
|
225
|
-
warn "Check: journalctl -u $SERVICE_NAME -n 50"
|
|
226
|
-
fi
|
|
227
|
-
done
|
|
228
|
-
|
|
229
|
-
# ── Summary ───────────────────────────────────────────────────────────────────
|
|
230
|
-
echo ""
|
|
231
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
232
|
-
echo " Claude IDE Bridge — service updated"
|
|
233
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
234
|
-
echo ""
|
|
235
|
-
echo " MCP endpoint: https://$DOMAIN/mcp"
|
|
236
|
-
echo " Local: http://127.0.0.1:${PORT}/mcp"
|
|
237
|
-
echo " Token: ${FIXED_TOKEN}"
|
|
238
|
-
echo ""
|
|
239
|
-
echo " journalctl -u $SERVICE_NAME -f"
|
|
240
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
package/deploy/macos/README.md
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
# macOS launchd setup for the bridge
|
|
2
|
-
|
|
3
|
-
Make the local `claude-ide-bridge` and the SSH reverse tunnel to your
|
|
4
|
-
self-hosted dashboard persistent on your Mac:
|
|
5
|
-
|
|
6
|
-
- Auto-start at login
|
|
7
|
-
- Auto-restart on crash (bridge has its own `--watch` supervisor; launchd
|
|
8
|
-
is the supervisor of the supervisor)
|
|
9
|
-
- Auto-reconnect on network change / sleep / wake (autossh)
|
|
10
|
-
- No tmux session to keep alive, no terminal to leave open
|
|
11
|
-
|
|
12
|
-
## One-time setup
|
|
13
|
-
|
|
14
|
-
1. **Install the patchwork CLI globally** (not via `npm link`). LaunchAgents
|
|
15
|
-
run in a tighter sandbox; symlinked installs into `~/Documents` /
|
|
16
|
-
`~/Desktop` / `~/Downloads` fail with `EPERM`:
|
|
17
|
-
```bash
|
|
18
|
-
npm install -g patchwork-os
|
|
19
|
-
# or, from a local repo:
|
|
20
|
-
# npm pack && npm install -g patchwork-os-*.tgz
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
2. **Make sure you can SSH to the VPS without a password prompt.** The
|
|
24
|
-
tunnel runs unattended; if SSH would prompt for a key passphrase,
|
|
25
|
-
add the key to your agent (`ssh-add ~/.ssh/id_ed25519`) or use a
|
|
26
|
-
passphrase-less key.
|
|
27
|
-
|
|
28
|
-
3. **(Recommended) Pin the SSH target in `~/.ssh/config` first.** Using
|
|
29
|
-
the public domain as the SSH target is fragile — DNS drifts during
|
|
30
|
-
redeploys (CDN edges, transient IPs), so SSH lands on a different
|
|
31
|
-
machine and the host key changes. Add an alias once and use it
|
|
32
|
-
everywhere:
|
|
33
|
-
|
|
34
|
-
```ssh-config
|
|
35
|
-
# ~/.ssh/config
|
|
36
|
-
Host pw-bridge
|
|
37
|
-
HostName 185.167.97.141 # your VPS IP — stable across DNS shifts
|
|
38
|
-
User wesh # or root, whatever your VPS allows
|
|
39
|
-
IdentityFile ~/.ssh/id_ed25519
|
|
40
|
-
ServerAliveInterval 30
|
|
41
|
-
ServerAliveCountMax 3
|
|
42
|
-
UserKnownHostsFile ~/.ssh/known_hosts.patchwork
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Verify it works once: `ssh pw-bridge "echo ok"`. The host key is
|
|
46
|
-
accepted into the dedicated `known_hosts.patchwork` file and stays
|
|
47
|
-
there even if you `ssh-keygen -R` your global known_hosts later.
|
|
48
|
-
|
|
49
|
-
4. **Run the installer** with the alias (cleanest):
|
|
50
|
-
```bash
|
|
51
|
-
VPS_HOST=pw-bridge bash deploy/macos/install-mac-bridge.sh
|
|
52
|
-
```
|
|
53
|
-
The installer detects the alias via `ssh -G` and lets ssh_config
|
|
54
|
-
own user + identity + hostname resolution. On a VPS rebuild, you
|
|
55
|
-
only update `~/.ssh/config` — the LaunchAgents pick it up.
|
|
56
|
-
|
|
57
|
-
Without an alias (interactive, prompts for VPS host):
|
|
58
|
-
```bash
|
|
59
|
-
bash deploy/macos/install-mac-bridge.sh
|
|
60
|
-
# → prompts; recommend the IP (185.167.97.141) over the domain
|
|
61
|
-
```
|
|
62
|
-
Or fully env-driven:
|
|
63
|
-
```bash
|
|
64
|
-
VPS_HOST=185.167.97.141 VPS_USER=root \
|
|
65
|
-
BRIDGE_PORT=63906 VPS_PORT=3285 \
|
|
66
|
-
bash deploy/macos/install-mac-bridge.sh
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
5. **Sync the bridge token to the VPS** (the installer prints the exact
|
|
70
|
-
`ssh … sed … pm2 restart` command — copy-paste).
|
|
71
|
-
|
|
72
|
-
## What runs after install
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
~/Library/LaunchAgents/com.patchwork.bridge.plist
|
|
76
|
-
~/Library/LaunchAgents/com.patchwork.tunnel.plist
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Both are loaded into the per-user `gui/$UID` launchd domain at install
|
|
80
|
-
time and at every login.
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
[claude-ide-bridge --port 63906 --fixed-token <…> --watch]
|
|
84
|
-
│
|
|
85
|
-
│ 127.0.0.1:63906
|
|
86
|
-
▼
|
|
87
|
-
[autossh -R 127.0.0.1:3285:localhost:63906]
|
|
88
|
-
│
|
|
89
|
-
│ encrypted SSH reverse tunnel
|
|
90
|
-
▼
|
|
91
|
-
VPS:3285 ──── nginx ──── dashboard `/api/bridge/*`
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Logs
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
tail -f ~/Library/Logs/patchwork-bridge.log
|
|
98
|
-
tail -f ~/Library/Logs/patchwork-tunnel.log
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Status
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
launchctl print gui/$UID/com.patchwork.bridge
|
|
105
|
-
launchctl print gui/$UID/com.patchwork.tunnel
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
## Restart manually
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
launchctl kickstart -k gui/$UID/com.patchwork.bridge
|
|
112
|
-
launchctl kickstart -k gui/$UID/com.patchwork.tunnel
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Uninstall
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
bash deploy/macos/uninstall-mac-bridge.sh
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Troubleshooting
|
|
122
|
-
|
|
123
|
-
- **`com.patchwork.bridge` exits with status 78 / `EPERM`** — the bridge
|
|
124
|
-
CLI is installed via `npm link` and points into `~/Documents`. The
|
|
125
|
-
macOS sandbox blocks LaunchAgents from reading that tree. Reinstall
|
|
126
|
-
globally as a real package (see step 1).
|
|
127
|
-
- **`com.patchwork.tunnel` keeps respawning** — check the SSH key is
|
|
128
|
-
added to `ssh-agent` (`ssh-add -l`). LaunchAgents run before the
|
|
129
|
-
user's shell rc, so an interactive `ssh-add` from `.zshrc` doesn't
|
|
130
|
-
apply. Use a passphrase-less key, or store the key in macOS Keychain
|
|
131
|
-
with `ssh-add --apple-use-keychain`.
|
|
132
|
-
- **Tunnel succeeds but dashboard says offline** — VPS port already in
|
|
133
|
-
use by an old leftover bridge. SSH to the VPS and `pkill -f "autossh\|sshd: .*\@notty"`,
|
|
134
|
-
or pick a different `VPS_PORT`.
|
|
135
|
-
- **Dashboard 401s on every bridge call** — `PATCHWORK_BRIDGE_TOKEN`
|
|
136
|
-
on the VPS doesn't match the `--fixed-token` value the bridge is
|
|
137
|
-
using. Re-run the install script's printed `sed … pm2 restart`
|
|
138
|
-
command.
|
|
139
|
-
- **`Host key for X has changed and you have requested strict
|
|
140
|
-
checking`** every now and then — the SSH target is moving. Two
|
|
141
|
-
causes:
|
|
142
|
-
1. **DNS drift.** The public domain resolves to a different IP than
|
|
143
|
-
it did last time (CDN edge, redeploy churn). `dig +short
|
|
144
|
-
bridge.your.tld` vs your known VPS IP — if those differ, switch
|
|
145
|
-
the `VPS_HOST` to the IP or a `~/.ssh/config` alias and re-run
|
|
146
|
-
the installer.
|
|
147
|
-
2. **VPS rebuild.** A reimage regenerates `/etc/ssh/ssh_host_*_key`
|
|
148
|
-
files. Either back them up before the rebuild and restore after,
|
|
149
|
-
or accept the new key once with `ssh-keygen -R <host> && ssh
|
|
150
|
-
<host>`. The launchd tunnel uses `StrictHostKeyChecking=accept-new`
|
|
151
|
-
(only auto-trusts on first connect, not after change), so you'll
|
|
152
|
-
see the warning, accept the new key interactively once, and the
|
|
153
|
-
tunnel resumes.
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>Label</key>
|
|
6
|
-
<string>com.patchwork.bridge</string>
|
|
7
|
-
|
|
8
|
-
<key>ProgramArguments</key>
|
|
9
|
-
<array>
|
|
10
|
-
<string>{{BRIDGE_BIN}}</string>
|
|
11
|
-
<string>--port</string>
|
|
12
|
-
<string>{{BRIDGE_PORT}}</string>
|
|
13
|
-
<string>--fixed-token</string>
|
|
14
|
-
<string>{{BRIDGE_TOKEN}}</string>
|
|
15
|
-
<string>--watch</string>
|
|
16
|
-
<string>--workspace</string>
|
|
17
|
-
<string>{{WORKSPACE}}</string>
|
|
18
|
-
</array>
|
|
19
|
-
|
|
20
|
-
<key>RunAtLoad</key>
|
|
21
|
-
<true/>
|
|
22
|
-
<!-- KeepAlive is redundant with `--watch` (which has its own
|
|
23
|
-
exponential-backoff supervisor and recovers from crashes faster
|
|
24
|
-
than launchd's per-second relaunch). Leave it true as belt-and-
|
|
25
|
-
suspenders in case `--watch` itself dies (its supervisor process
|
|
26
|
-
is a single Node, and that's the one launchd is keeping alive). -->
|
|
27
|
-
<key>KeepAlive</key>
|
|
28
|
-
<true/>
|
|
29
|
-
|
|
30
|
-
<key>StandardOutPath</key>
|
|
31
|
-
<string>{{HOME}}/Library/Logs/patchwork-bridge.log</string>
|
|
32
|
-
<key>StandardErrorPath</key>
|
|
33
|
-
<string>{{HOME}}/Library/Logs/patchwork-bridge.log</string>
|
|
34
|
-
|
|
35
|
-
<key>WorkingDirectory</key>
|
|
36
|
-
<string>{{WORKSPACE}}</string>
|
|
37
|
-
|
|
38
|
-
<key>EnvironmentVariables</key>
|
|
39
|
-
<dict>
|
|
40
|
-
<!-- launchd's default PATH doesn't include Homebrew. Bridge spawns
|
|
41
|
-
child processes (claude CLI, git, npm) via PATH lookup, so
|
|
42
|
-
missing /opt/homebrew/bin breaks half the tools. -->
|
|
43
|
-
<key>PATH</key>
|
|
44
|
-
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
|
|
45
|
-
<key>HOME</key>
|
|
46
|
-
<string>{{HOME}}</string>
|
|
47
|
-
</dict>
|
|
48
|
-
|
|
49
|
-
<!-- Throttle: don't relaunch faster than every 10 s on rapid crash
|
|
50
|
-
loops, prevents spinning up if the binary is broken. -->
|
|
51
|
-
<key>ThrottleInterval</key>
|
|
52
|
-
<integer>10</integer>
|
|
53
|
-
</dict>
|
|
54
|
-
</plist>
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>Label</key>
|
|
6
|
-
<string>com.patchwork.tunnel</string>
|
|
7
|
-
|
|
8
|
-
<key>ProgramArguments</key>
|
|
9
|
-
<array>
|
|
10
|
-
<string>{{AUTOSSH_BIN}}</string>
|
|
11
|
-
<!-- AUTOSSH_PORT=0 disables the legacy monitoring-port heartbeat in
|
|
12
|
-
favor of SSH's own ServerAliveInterval/CountMax. Modern autossh
|
|
13
|
-
docs recommend this; the monitoring port is unreliable behind
|
|
14
|
-
NAT and consumes another tunnel slot. -->
|
|
15
|
-
<string>-M</string>
|
|
16
|
-
<string>0</string>
|
|
17
|
-
<!-- -N: no remote command -T: no pseudo-tty -->
|
|
18
|
-
<string>-N</string>
|
|
19
|
-
<string>-T</string>
|
|
20
|
-
<string>-R</string>
|
|
21
|
-
<string>127.0.0.1:{{VPS_PORT}}:localhost:{{BRIDGE_PORT}}</string>
|
|
22
|
-
<!-- ServerAliveInterval=30 + CountMax=3 = ssh kills the link if
|
|
23
|
-
the server doesn't respond for 90 s, autossh restarts. Critical
|
|
24
|
-
for laptop sleep/wake and Wi-Fi switches. -->
|
|
25
|
-
<string>-o</string>
|
|
26
|
-
<string>ServerAliveInterval=30</string>
|
|
27
|
-
<string>-o</string>
|
|
28
|
-
<string>ServerAliveCountMax=3</string>
|
|
29
|
-
<!-- ExitOnForwardFailure=yes makes autossh exit + retry if the
|
|
30
|
-
remote port is already bound. Otherwise the tunnel "succeeds"
|
|
31
|
-
but no traffic flows. -->
|
|
32
|
-
<string>-o</string>
|
|
33
|
-
<string>ExitOnForwardFailure=yes</string>
|
|
34
|
-
<!-- Don't auto-add new host keys (security: surface key changes
|
|
35
|
-
instead of silently trusting). Initial setup expects the user
|
|
36
|
-
to have already SSH'd at least once and accepted the key. -->
|
|
37
|
-
<string>-o</string>
|
|
38
|
-
<string>StrictHostKeyChecking=accept-new</string>
|
|
39
|
-
<string>-i</string>
|
|
40
|
-
<string>{{SSH_KEY}}</string>
|
|
41
|
-
<!-- SSH_TARGET is rendered by install-mac-bridge.sh:
|
|
42
|
-
- "user@host" form when host is an IP or hostname
|
|
43
|
-
- bare alias when host matches a `~/.ssh/config` Host entry
|
|
44
|
-
(so ssh_config's User + HostName + IdentityFile resolution
|
|
45
|
-
works as designed; passing user@alias would override the
|
|
46
|
-
config's User directive and confuse the alias case). -->
|
|
47
|
-
<string>{{SSH_TARGET}}</string>
|
|
48
|
-
</array>
|
|
49
|
-
|
|
50
|
-
<key>RunAtLoad</key>
|
|
51
|
-
<true/>
|
|
52
|
-
<key>KeepAlive</key>
|
|
53
|
-
<true/>
|
|
54
|
-
|
|
55
|
-
<key>StandardOutPath</key>
|
|
56
|
-
<string>{{HOME}}/Library/Logs/patchwork-tunnel.log</string>
|
|
57
|
-
<key>StandardErrorPath</key>
|
|
58
|
-
<string>{{HOME}}/Library/Logs/patchwork-tunnel.log</string>
|
|
59
|
-
|
|
60
|
-
<key>EnvironmentVariables</key>
|
|
61
|
-
<dict>
|
|
62
|
-
<key>PATH</key>
|
|
63
|
-
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
|
|
64
|
-
<key>HOME</key>
|
|
65
|
-
<string>{{HOME}}</string>
|
|
66
|
-
<!-- AUTOSSH_GATETIME=0: don't require a "stable" connection time
|
|
67
|
-
before counting reconnect attempts. Default 30 s makes startup
|
|
68
|
-
after a long sleep slower than necessary. -->
|
|
69
|
-
<key>AUTOSSH_GATETIME</key>
|
|
70
|
-
<string>0</string>
|
|
71
|
-
</dict>
|
|
72
|
-
|
|
73
|
-
<key>ThrottleInterval</key>
|
|
74
|
-
<integer>10</integer>
|
|
75
|
-
</dict>
|
|
76
|
-
</plist>
|