patchwork-os 0.2.0-alpha.9 → 0.2.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.bridge.md +6 -0
- package/README.md +315 -35
- package/deploy/bootstrap-new-vps.sh +12 -12
- package/deploy/bootstrap-vps.sh +187 -0
- package/deploy/deploy-dashboard.sh +174 -0
- package/deploy/deploy-landing.sh +136 -0
- package/dist/activationMetrics.d.ts +67 -0
- package/dist/activationMetrics.js +255 -0
- package/dist/activationMetrics.js.map +1 -0
- package/dist/activityLog.d.ts +49 -0
- package/dist/activityLog.js +78 -0
- package/dist/activityLog.js.map +1 -1
- package/dist/approvalHttp.d.ts +49 -2
- package/dist/approvalHttp.js +217 -21
- package/dist/approvalHttp.js.map +1 -1
- package/dist/approvalInsights.d.ts +49 -0
- package/dist/approvalInsights.js +97 -0
- package/dist/approvalInsights.js.map +1 -0
- package/dist/approvalQueue.d.ts +27 -1
- package/dist/approvalQueue.js +123 -3
- package/dist/approvalQueue.js.map +1 -1
- package/dist/approvalSignals.d.ts +124 -0
- package/dist/approvalSignals.js +512 -0
- package/dist/approvalSignals.js.map +1 -0
- package/dist/automation.d.ts +57 -0
- package/dist/automation.js +156 -59
- package/dist/automation.js.map +1 -1
- package/dist/automationSuggestions.d.ts +79 -0
- package/dist/automationSuggestions.js +150 -0
- package/dist/automationSuggestions.js.map +1 -0
- package/dist/bridge.d.ts +3 -0
- package/dist/bridge.js +174 -143
- package/dist/bridge.js.map +1 -1
- package/dist/bridgeToken.js +57 -19
- package/dist/bridgeToken.js.map +1 -1
- package/dist/ccPermissions.d.ts +15 -0
- package/dist/ccPermissions.js +21 -4
- package/dist/ccPermissions.js.map +1 -1
- package/dist/claudeDriver.js +74 -16
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +1 -1
- package/dist/claudeOrchestrator.js +14 -8
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/dashboard.js +1 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/launchd.d.ts +2 -0
- package/dist/commands/launchd.js +94 -0
- package/dist/commands/launchd.js.map +1 -0
- package/dist/commands/patchworkInit.d.ts +8 -0
- package/dist/commands/patchworkInit.js +77 -11
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/recipe.d.ts +289 -0
- package/dist/commands/recipe.js +1359 -0
- package/dist/commands/recipe.js.map +1 -0
- package/dist/commands/recipeInstall.d.ts +150 -0
- package/dist/commands/recipeInstall.js +647 -0
- package/dist/commands/recipeInstall.js.map +1 -0
- package/dist/commands/tracesExport.d.ts +83 -0
- package/dist/commands/tracesExport.js +269 -0
- package/dist/commands/tracesExport.js.map +1 -0
- package/dist/commands/tracesImport.d.ts +56 -0
- package/dist/commands/tracesImport.js +161 -0
- package/dist/commands/tracesImport.js.map +1 -0
- package/dist/config.d.ts +22 -1
- package/dist/config.js +108 -9
- package/dist/config.js.map +1 -1
- package/dist/connectorRoutes.d.ts +43 -0
- package/dist/connectorRoutes.js +1609 -0
- package/dist/connectorRoutes.js.map +1 -0
- package/dist/connectors/asana.d.ts +198 -0
- package/dist/connectors/asana.js +679 -0
- package/dist/connectors/asana.js.map +1 -0
- package/dist/connectors/baseConnector.d.ts +153 -0
- package/dist/connectors/baseConnector.js +336 -0
- package/dist/connectors/baseConnector.js.map +1 -0
- package/dist/connectors/confluence.d.ts +111 -0
- package/dist/connectors/confluence.js +406 -0
- package/dist/connectors/confluence.js.map +1 -0
- package/dist/connectors/datadog.d.ts +116 -0
- package/dist/connectors/datadog.js +385 -0
- package/dist/connectors/datadog.js.map +1 -0
- package/dist/connectors/discord.d.ts +150 -0
- package/dist/connectors/discord.js +543 -0
- package/dist/connectors/discord.js.map +1 -0
- package/dist/connectors/fixtureLibrary.d.ts +21 -0
- package/dist/connectors/fixtureLibrary.js +70 -0
- package/dist/connectors/fixtureLibrary.js.map +1 -0
- package/dist/connectors/fixtureRecorder.d.ts +1 -0
- package/dist/connectors/fixtureRecorder.js +35 -0
- package/dist/connectors/fixtureRecorder.js.map +1 -0
- package/dist/connectors/github.js +17 -18
- package/dist/connectors/github.js.map +1 -1
- package/dist/connectors/gitlab.d.ts +180 -0
- package/dist/connectors/gitlab.js +582 -0
- package/dist/connectors/gitlab.js.map +1 -0
- package/dist/connectors/gmail.d.ts +4 -1
- package/dist/connectors/gmail.js +149 -27
- package/dist/connectors/gmail.js.map +1 -1
- package/dist/connectors/googleCalendar.d.ts +4 -1
- package/dist/connectors/googleCalendar.js +88 -25
- package/dist/connectors/googleCalendar.js.map +1 -1
- package/dist/connectors/googleDrive.d.ts +34 -0
- package/dist/connectors/googleDrive.js +321 -0
- package/dist/connectors/googleDrive.js.map +1 -0
- package/dist/connectors/htmlEscape.d.ts +5 -0
- package/dist/connectors/htmlEscape.js +13 -0
- package/dist/connectors/htmlEscape.js.map +1 -0
- package/dist/connectors/hubspot.d.ts +112 -0
- package/dist/connectors/hubspot.js +408 -0
- package/dist/connectors/hubspot.js.map +1 -0
- package/dist/connectors/intercom.d.ts +102 -0
- package/dist/connectors/intercom.js +402 -0
- package/dist/connectors/intercom.js.map +1 -0
- package/dist/connectors/jira.d.ts +98 -0
- package/dist/connectors/jira.js +379 -0
- package/dist/connectors/jira.js.map +1 -0
- package/dist/connectors/linear.js +30 -19
- package/dist/connectors/linear.js.map +1 -1
- package/dist/connectors/mcpOAuth.d.ts +3 -0
- package/dist/connectors/mcpOAuth.js +64 -10
- package/dist/connectors/mcpOAuth.js.map +1 -1
- package/dist/connectors/mockConnector.d.ts +28 -0
- package/dist/connectors/mockConnector.js +81 -0
- package/dist/connectors/mockConnector.js.map +1 -0
- package/dist/connectors/notion.d.ts +143 -0
- package/dist/connectors/notion.js +424 -0
- package/dist/connectors/notion.js.map +1 -0
- package/dist/connectors/oauthStateStore.d.ts +31 -0
- package/dist/connectors/oauthStateStore.js +52 -0
- package/dist/connectors/oauthStateStore.js.map +1 -0
- package/dist/connectors/pagerduty.d.ts +160 -0
- package/dist/connectors/pagerduty.js +464 -0
- package/dist/connectors/pagerduty.js.map +1 -0
- package/dist/connectors/sentry.js +5 -13
- package/dist/connectors/sentry.js.map +1 -1
- package/dist/connectors/slack.d.ts +16 -1
- package/dist/connectors/slack.js +155 -32
- package/dist/connectors/slack.js.map +1 -1
- package/dist/connectors/stripe.d.ts +116 -0
- package/dist/connectors/stripe.js +379 -0
- package/dist/connectors/stripe.js.map +1 -0
- package/dist/connectors/tokenStorage.d.ts +35 -0
- package/dist/connectors/tokenStorage.js +484 -0
- package/dist/connectors/tokenStorage.js.map +1 -0
- package/dist/connectors/zendesk.d.ts +104 -0
- package/dist/connectors/zendesk.js +442 -0
- package/dist/connectors/zendesk.js.map +1 -0
- package/dist/cors.d.ts +10 -0
- package/dist/cors.js +29 -0
- package/dist/cors.js.map +1 -0
- package/dist/decisionReplay.d.ts +72 -0
- package/dist/decisionReplay.js +92 -0
- package/dist/decisionReplay.js.map +1 -0
- package/dist/decisionTraceLog.d.ts +6 -0
- package/dist/decisionTraceLog.js +54 -2
- package/dist/decisionTraceLog.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +5 -1
- package/dist/drivers/gemini/index.js +39 -5
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/index.d.ts +5 -0
- package/dist/drivers/index.js +1 -1
- package/dist/drivers/index.js.map +1 -1
- package/dist/featureFlags.d.ts +79 -0
- package/dist/featureFlags.js +208 -0
- package/dist/featureFlags.js.map +1 -0
- package/dist/fp/automationInterpreter.js +26 -21
- package/dist/fp/automationInterpreter.js.map +1 -1
- package/dist/fp/automationProgram.d.ts +1 -1
- package/dist/fp/automationProgram.js.map +1 -1
- package/dist/fp/automationState.js +4 -1
- package/dist/fp/automationState.js.map +1 -1
- package/dist/fp/policyParser.js +21 -1
- package/dist/fp/policyParser.js.map +1 -1
- package/dist/inboxRoutes.d.ts +22 -0
- package/dist/inboxRoutes.js +114 -0
- package/dist/inboxRoutes.js.map +1 -0
- package/dist/index.js +1400 -201
- package/dist/index.js.map +1 -1
- package/dist/installGuard.d.ts +25 -0
- package/dist/installGuard.js +48 -0
- package/dist/installGuard.js.map +1 -0
- package/dist/mcpRoutes.d.ts +37 -0
- package/dist/mcpRoutes.js +76 -0
- package/dist/mcpRoutes.js.map +1 -0
- package/dist/oauth.d.ts +7 -1
- package/dist/oauth.js +201 -39
- package/dist/oauth.js.map +1 -1
- package/dist/oauthRoutes.d.ts +32 -0
- package/dist/oauthRoutes.js +124 -0
- package/dist/oauthRoutes.js.map +1 -0
- package/dist/orchestrator/orchestratorBridge.js +2 -2
- package/dist/orchestrator/orchestratorBridge.js.map +1 -1
- package/dist/patchworkConfig.d.ts +16 -0
- package/dist/patchworkConfig.js +1 -1
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/pluginLoader.d.ts +28 -0
- package/dist/pluginLoader.js +77 -11
- package/dist/pluginLoader.js.map +1 -1
- package/dist/pluginWatcher.js +8 -3
- package/dist/pluginWatcher.js.map +1 -1
- package/dist/preToolUseHook.d.ts +12 -0
- package/dist/preToolUseHook.js +23 -0
- package/dist/preToolUseHook.js.map +1 -1
- package/dist/recipeOrchestration.d.ts +121 -0
- package/dist/recipeOrchestration.js +955 -0
- package/dist/recipeOrchestration.js.map +1 -0
- package/dist/recipeRoutes.d.ts +180 -0
- package/dist/recipeRoutes.js +1345 -0
- package/dist/recipeRoutes.js.map +1 -0
- package/dist/recipes/RecipeOrchestrator.d.ts +40 -0
- package/dist/recipes/RecipeOrchestrator.js +51 -0
- package/dist/recipes/RecipeOrchestrator.js.map +1 -0
- package/dist/recipes/agentExecutor.d.ts +29 -0
- package/dist/recipes/agentExecutor.js +49 -0
- package/dist/recipes/agentExecutor.js.map +1 -0
- package/dist/recipes/chainedRunner.d.ts +191 -0
- package/dist/recipes/chainedRunner.js +759 -0
- package/dist/recipes/chainedRunner.js.map +1 -0
- package/dist/recipes/compiler.js +3 -3
- package/dist/recipes/compiler.js.map +1 -1
- package/dist/recipes/dependencyGraph.d.ts +39 -0
- package/dist/recipes/dependencyGraph.js +199 -0
- package/dist/recipes/dependencyGraph.js.map +1 -0
- package/dist/recipes/disabledMarkers.d.ts +48 -0
- package/dist/recipes/disabledMarkers.js +52 -0
- package/dist/recipes/disabledMarkers.js.map +1 -0
- package/dist/recipes/installer.js +3 -3
- package/dist/recipes/installer.js.map +1 -1
- package/dist/recipes/legacyRecipeCompat.d.ts +10 -0
- package/dist/recipes/legacyRecipeCompat.js +131 -0
- package/dist/recipes/legacyRecipeCompat.js.map +1 -0
- package/dist/recipes/manifest.d.ts +47 -0
- package/dist/recipes/manifest.js +156 -0
- package/dist/recipes/manifest.js.map +1 -0
- package/dist/recipes/migrationWarnings.d.ts +12 -0
- package/dist/recipes/migrationWarnings.js +44 -0
- package/dist/recipes/migrationWarnings.js.map +1 -0
- package/dist/recipes/migrations/index.d.ts +24 -0
- package/dist/recipes/migrations/index.js +55 -0
- package/dist/recipes/migrations/index.js.map +1 -0
- package/dist/recipes/migrations/types.d.ts +28 -0
- package/dist/recipes/migrations/types.js +2 -0
- package/dist/recipes/migrations/types.js.map +1 -0
- package/dist/recipes/migrations/v1.d.ts +11 -0
- package/dist/recipes/migrations/v1.js +18 -0
- package/dist/recipes/migrations/v1.js.map +1 -0
- package/dist/recipes/names.d.ts +40 -0
- package/dist/recipes/names.js +66 -0
- package/dist/recipes/names.js.map +1 -0
- package/dist/recipes/nestedRecipeStep.d.ts +58 -0
- package/dist/recipes/nestedRecipeStep.js +95 -0
- package/dist/recipes/nestedRecipeStep.js.map +1 -0
- package/dist/recipes/outputRegistry.d.ts +28 -0
- package/dist/recipes/outputRegistry.js +52 -0
- package/dist/recipes/outputRegistry.js.map +1 -0
- package/dist/recipes/parser.js +4 -1
- package/dist/recipes/parser.js.map +1 -1
- package/dist/recipes/replayRun.d.ts +62 -0
- package/dist/recipes/replayRun.js +97 -0
- package/dist/recipes/replayRun.js.map +1 -0
- package/dist/recipes/resolveRecipePath.d.ts +69 -0
- package/dist/recipes/resolveRecipePath.js +202 -0
- package/dist/recipes/resolveRecipePath.js.map +1 -0
- package/dist/recipes/scheduler.d.ts +23 -7
- package/dist/recipes/scheduler.js +225 -45
- package/dist/recipes/scheduler.js.map +1 -1
- package/dist/recipes/schema.d.ts +17 -2
- package/dist/recipes/schemaGenerator.d.ts +28 -0
- package/dist/recipes/schemaGenerator.js +565 -0
- package/dist/recipes/schemaGenerator.js.map +1 -0
- package/dist/recipes/stepObservation.d.ts +44 -0
- package/dist/recipes/stepObservation.js +232 -0
- package/dist/recipes/stepObservation.js.map +1 -0
- package/dist/recipes/templateEngine.d.ts +62 -0
- package/dist/recipes/templateEngine.js +201 -0
- package/dist/recipes/templateEngine.js.map +1 -0
- package/dist/recipes/toolRegistry.d.ts +186 -0
- package/dist/recipes/toolRegistry.js +309 -0
- package/dist/recipes/toolRegistry.js.map +1 -0
- package/dist/recipes/tools/asana.d.ts +16 -0
- package/dist/recipes/tools/asana.js +524 -0
- package/dist/recipes/tools/asana.js.map +1 -0
- package/dist/recipes/tools/calendar.d.ts +6 -0
- package/dist/recipes/tools/calendar.js +61 -0
- package/dist/recipes/tools/calendar.js.map +1 -0
- package/dist/recipes/tools/confluence.d.ts +6 -0
- package/dist/recipes/tools/confluence.js +254 -0
- package/dist/recipes/tools/confluence.js.map +1 -0
- package/dist/recipes/tools/datadog.d.ts +6 -0
- package/dist/recipes/tools/datadog.js +239 -0
- package/dist/recipes/tools/datadog.js.map +1 -0
- package/dist/recipes/tools/diagnostics.d.ts +6 -0
- package/dist/recipes/tools/diagnostics.js +36 -0
- package/dist/recipes/tools/diagnostics.js.map +1 -0
- package/dist/recipes/tools/discord.d.ts +18 -0
- package/dist/recipes/tools/discord.js +254 -0
- package/dist/recipes/tools/discord.js.map +1 -0
- package/dist/recipes/tools/file.d.ts +12 -0
- package/dist/recipes/tools/file.js +174 -0
- package/dist/recipes/tools/file.js.map +1 -0
- package/dist/recipes/tools/git.d.ts +6 -0
- package/dist/recipes/tools/git.js +63 -0
- package/dist/recipes/tools/git.js.map +1 -0
- package/dist/recipes/tools/github.d.ts +6 -0
- package/dist/recipes/tools/github.js +116 -0
- package/dist/recipes/tools/github.js.map +1 -0
- package/dist/recipes/tools/gitlab.d.ts +11 -0
- package/dist/recipes/tools/gitlab.js +285 -0
- package/dist/recipes/tools/gitlab.js.map +1 -0
- package/dist/recipes/tools/gmail.d.ts +6 -0
- package/dist/recipes/tools/gmail.js +434 -0
- package/dist/recipes/tools/gmail.js.map +1 -0
- package/dist/recipes/tools/googleDrive.d.ts +1 -0
- package/dist/recipes/tools/googleDrive.js +55 -0
- package/dist/recipes/tools/googleDrive.js.map +1 -0
- package/dist/recipes/tools/hubspot.d.ts +6 -0
- package/dist/recipes/tools/hubspot.js +232 -0
- package/dist/recipes/tools/hubspot.js.map +1 -0
- package/dist/recipes/tools/index.d.ts +30 -0
- package/dist/recipes/tools/index.js +33 -0
- package/dist/recipes/tools/index.js.map +1 -0
- package/dist/recipes/tools/intercom.d.ts +6 -0
- package/dist/recipes/tools/intercom.js +226 -0
- package/dist/recipes/tools/intercom.js.map +1 -0
- package/dist/recipes/tools/jira.d.ts +14 -0
- package/dist/recipes/tools/jira.js +369 -0
- package/dist/recipes/tools/jira.js.map +1 -0
- package/dist/recipes/tools/linear.d.ts +7 -0
- package/dist/recipes/tools/linear.js +307 -0
- package/dist/recipes/tools/linear.js.map +1 -0
- package/dist/recipes/tools/meetingNotes.d.ts +21 -0
- package/dist/recipes/tools/meetingNotes.js +701 -0
- package/dist/recipes/tools/meetingNotes.js.map +1 -0
- package/dist/recipes/tools/notion.d.ts +6 -0
- package/dist/recipes/tools/notion.js +278 -0
- package/dist/recipes/tools/notion.js.map +1 -0
- package/dist/recipes/tools/pagerduty.d.ts +15 -0
- package/dist/recipes/tools/pagerduty.js +451 -0
- package/dist/recipes/tools/pagerduty.js.map +1 -0
- package/dist/recipes/tools/sentry.d.ts +12 -0
- package/dist/recipes/tools/sentry.js +73 -0
- package/dist/recipes/tools/sentry.js.map +1 -0
- package/dist/recipes/tools/slack.d.ts +6 -0
- package/dist/recipes/tools/slack.js +82 -0
- package/dist/recipes/tools/slack.js.map +1 -0
- package/dist/recipes/tools/stripe.d.ts +6 -0
- package/dist/recipes/tools/stripe.js +265 -0
- package/dist/recipes/tools/stripe.js.map +1 -0
- package/dist/recipes/tools/zendesk.d.ts +6 -0
- package/dist/recipes/tools/zendesk.js +245 -0
- package/dist/recipes/tools/zendesk.js.map +1 -0
- package/dist/recipes/validation.d.ts +13 -0
- package/dist/recipes/validation.js +617 -0
- package/dist/recipes/validation.js.map +1 -0
- package/dist/recipes/yamlRunner.d.ts +116 -1
- package/dist/recipes/yamlRunner.js +1000 -401
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/recipesHttp.d.ts +137 -6
- package/dist/recipesHttp.js +941 -29
- package/dist/recipesHttp.js.map +1 -1
- package/dist/riskTier.js +7 -1
- package/dist/riskTier.js.map +1 -1
- package/dist/runLog.d.ts +100 -1
- package/dist/runLog.js +258 -5
- package/dist/runLog.js.map +1 -1
- package/dist/schemas/dry-run-plan.v1.json +139 -0
- package/dist/schemas/recipe.v1.json +684 -0
- package/dist/server.d.ts +121 -8
- package/dist/server.js +538 -735
- package/dist/server.js.map +1 -1
- package/dist/ssrfGuard.d.ts +54 -0
- package/dist/ssrfGuard.js +122 -0
- package/dist/ssrfGuard.js.map +1 -0
- package/dist/streamableHttp.d.ts +39 -1
- package/dist/streamableHttp.js +128 -17
- package/dist/streamableHttp.js.map +1 -1
- package/dist/tokenUsageTracker.d.ts +33 -0
- package/dist/tokenUsageTracker.js +146 -0
- package/dist/tokenUsageTracker.js.map +1 -0
- package/dist/tools/activityLog.d.ts +2 -0
- package/dist/tools/addLinearComment.d.ts +1 -0
- package/dist/tools/addLinearComment.js +4 -2
- package/dist/tools/addLinearComment.js.map +1 -1
- package/dist/tools/batchLsp.d.ts +3 -0
- package/dist/tools/bridgeDoctor.d.ts +1 -0
- package/dist/tools/bridgeDoctor.js +2 -2
- package/dist/tools/bridgeDoctor.js.map +1 -1
- package/dist/tools/bridgeStatus.d.ts +1 -0
- package/dist/tools/cancelClaudeTask.d.ts +2 -0
- package/dist/tools/cancelClaudeTask.js +1 -0
- package/dist/tools/cancelClaudeTask.js.map +1 -1
- package/dist/tools/checkDocumentDirty.d.ts +1 -0
- package/dist/tools/clipboard.d.ts +2 -0
- package/dist/tools/closeTabs.d.ts +2 -0
- package/dist/tools/codeLens.d.ts +1 -0
- package/dist/tools/contextBundle.d.ts +1 -0
- package/dist/tools/createIssueFromAIComment.d.ts +1 -0
- package/dist/tools/createLinearIssue.d.ts +1 -0
- package/dist/tools/ctxGetTaskContext.d.ts +1 -0
- package/dist/tools/ctxQueryTraces.d.ts +1 -0
- package/dist/tools/ctxSaveTrace.d.ts +1 -0
- package/dist/tools/debug.d.ts +4 -0
- package/dist/tools/decorations.d.ts +2 -0
- package/dist/tools/documentLinks.d.ts +1 -0
- package/dist/tools/editText.d.ts +1 -0
- package/dist/tools/enrichCommit.d.ts +1 -0
- package/dist/tools/enrichStackTrace.d.ts +1 -0
- package/dist/tools/explainDiagnostic.d.ts +1 -0
- package/dist/tools/explainSymbol.d.ts +1 -0
- package/dist/tools/fetchCalendarEvents.d.ts +1 -0
- package/dist/tools/fetchGithubIssue.d.ts +1 -0
- package/dist/tools/fetchGithubPR.d.ts +1 -0
- package/dist/tools/fetchLinearIssue.d.ts +1 -0
- package/dist/tools/fetchSentryIssue.d.ts +1 -0
- package/dist/tools/fetchSlackProfile.d.ts +1 -0
- package/dist/tools/fetchSlackProfile.js +4 -1
- package/dist/tools/fetchSlackProfile.js.map +1 -1
- package/dist/tools/fileOperations.d.ts +3 -0
- package/dist/tools/fileWatcher.d.ts +2 -0
- package/dist/tools/findFiles.d.ts +1 -0
- package/dist/tools/findRelatedTests.d.ts +1 -0
- package/dist/tools/fixAllLintErrors.d.ts +1 -0
- package/dist/tools/foldingRanges.d.ts +1 -0
- package/dist/tools/formatDocument.d.ts +1 -0
- package/dist/tools/generateTests.d.ts +1 -0
- package/dist/tools/getAIComments.d.ts +1 -0
- package/dist/tools/getAnalyticsReport.d.ts +1 -0
- package/dist/tools/getArchitectureContext.d.ts +1 -0
- package/dist/tools/getBufferContent.d.ts +1 -0
- package/dist/tools/getChangeImpact.d.ts +1 -0
- package/dist/tools/getClaudeTaskStatus.d.ts +2 -0
- package/dist/tools/getClaudeTaskStatus.js +1 -0
- package/dist/tools/getClaudeTaskStatus.js.map +1 -1
- package/dist/tools/getCodeCoverage.d.ts +1 -0
- package/dist/tools/getCommitsForIssue.d.ts +1 -0
- package/dist/tools/getConnectorStatus.d.ts +1 -0
- package/dist/tools/getCurrentSelection.d.ts +2 -0
- package/dist/tools/getDebugState.d.ts +1 -0
- package/dist/tools/getDependencyTree.d.ts +1 -0
- package/dist/tools/getDiagnostics.d.ts +1 -0
- package/dist/tools/getDiffFromHandoff.d.ts +1 -0
- package/dist/tools/getDocumentSymbols.d.ts +25 -0
- package/dist/tools/getDocumentSymbols.js +74 -8
- package/dist/tools/getDocumentSymbols.js.map +1 -1
- package/dist/tools/getFileTree.d.ts +1 -0
- package/dist/tools/getGitDiff.d.ts +1 -0
- package/dist/tools/getGitHotspots.d.ts +1 -0
- package/dist/tools/getGitLog.d.ts +1 -0
- package/dist/tools/getGitStatus.d.ts +1 -0
- package/dist/tools/getImportTree.d.ts +1 -0
- package/dist/tools/getImportedSignatures.d.ts +1 -0
- package/dist/tools/getOpenEditors.d.ts +1 -0
- package/dist/tools/getPRTemplate.d.ts +1 -0
- package/dist/tools/getProjectContext.d.ts +1 -0
- package/dist/tools/getProjectInfo.d.ts +1 -0
- package/dist/tools/getSecurityAdvisories.d.ts +1 -0
- package/dist/tools/getSecurityAdvisories.js +10 -1
- package/dist/tools/getSecurityAdvisories.js.map +1 -1
- package/dist/tools/getSessionUsage.d.ts +4 -0
- package/dist/tools/getSessionUsage.js +3 -0
- package/dist/tools/getSessionUsage.js.map +1 -1
- package/dist/tools/getSymbolHistory.d.ts +1 -0
- package/dist/tools/getToolCapabilities.d.ts +1 -0
- package/dist/tools/getTypeSignature.d.ts +1 -0
- package/dist/tools/getWorkspaceFolders.d.ts +1 -0
- package/dist/tools/getWorkspaceSettings.d.ts +1 -0
- package/dist/tools/gitHistory.d.ts +2 -0
- package/dist/tools/gitWrite.d.ts +11 -0
- package/dist/tools/github/actions.d.ts +2 -0
- package/dist/tools/github/actions.js +4 -2
- package/dist/tools/github/actions.js.map +1 -1
- package/dist/tools/github/composite.d.ts +342 -0
- package/dist/tools/github/composite.js +343 -0
- package/dist/tools/github/composite.js.map +1 -0
- package/dist/tools/github/index.d.ts +1 -0
- package/dist/tools/github/index.js +1 -0
- package/dist/tools/github/index.js.map +1 -1
- package/dist/tools/github/issues.d.ts +4 -0
- package/dist/tools/github/issues.js +8 -4
- package/dist/tools/github/issues.js.map +1 -1
- package/dist/tools/github/pr.d.ts +7 -0
- package/dist/tools/github/pr.js +50 -12
- package/dist/tools/github/pr.js.map +1 -1
- package/dist/tools/handoffNote.d.ts +4 -0
- package/dist/tools/handoffNote.js +2 -0
- package/dist/tools/handoffNote.js.map +1 -1
- package/dist/tools/hoverAtCursor.d.ts +1 -0
- package/dist/tools/httpClient.d.ts +2 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.js +47 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/inlayHints.d.ts +1 -0
- package/dist/tools/launchQuickTask.d.ts +2 -0
- package/dist/tools/launchQuickTask.js +1 -0
- package/dist/tools/launchQuickTask.js.map +1 -1
- package/dist/tools/listClaudeTasks.d.ts +2 -0
- package/dist/tools/listClaudeTasks.js +1 -0
- package/dist/tools/listClaudeTasks.js.map +1 -1
- package/dist/tools/listTerminals.d.ts +1 -0
- package/dist/tools/lsp.d.ts +14 -0
- package/dist/tools/navigateToSymbolByName.d.ts +1 -0
- package/dist/tools/openDiff.d.ts +1 -0
- package/dist/tools/openFile.d.ts +1 -0
- package/dist/tools/openInBrowser.d.ts +1 -0
- package/dist/tools/organizeImports.d.ts +1 -0
- package/dist/tools/performanceReport.d.ts +1 -0
- package/dist/tools/planPersistence.d.ts +5 -0
- package/dist/tools/previewEdit.d.ts +1 -0
- package/dist/tools/refactorAnalyze.d.ts +1 -0
- package/dist/tools/refactorPreview.d.ts +2 -0
- package/dist/tools/refactorPreview.js +1 -0
- package/dist/tools/refactorPreview.js.map +1 -1
- package/dist/tools/replaceBlock.d.ts +1 -0
- package/dist/tools/resumeClaudeTask.d.ts +2 -0
- package/dist/tools/resumeClaudeTask.js +1 -0
- package/dist/tools/resumeClaudeTask.js.map +1 -1
- package/dist/tools/runClaudeTask.d.ts +2 -0
- package/dist/tools/runClaudeTask.js +1 -0
- package/dist/tools/runClaudeTask.js.map +1 -1
- package/dist/tools/runCommand.d.ts +1 -0
- package/dist/tools/runTests.d.ts +1 -0
- package/dist/tools/saveDocument.d.ts +1 -0
- package/dist/tools/screenshotAndAnnotate.d.ts +1 -0
- package/dist/tools/searchAndReplace.d.ts +1 -0
- package/dist/tools/searchTools.d.ts +1 -0
- package/dist/tools/searchTools.js +1 -1
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/searchWorkspace.d.ts +1 -0
- package/dist/tools/selectionRanges.d.ts +1 -0
- package/dist/tools/semanticTokens.d.ts +1 -0
- package/dist/tools/setActiveWorkspaceFolder.d.ts +1 -0
- package/dist/tools/signatureHelp.d.ts +1 -0
- package/dist/tools/slackListChannels.d.ts +1 -0
- package/dist/tools/slackListChannels.js.map +1 -1
- package/dist/tools/slackPostMessage.d.ts +1 -0
- package/dist/tools/slackPostMessage.js +11 -6
- package/dist/tools/slackPostMessage.js.map +1 -1
- package/dist/tools/terminal.d.ts +6 -0
- package/dist/tools/testTraceToSource.d.ts +1 -0
- package/dist/tools/testTraceToSource.js +2 -2
- package/dist/tools/testTraceToSource.js.map +1 -1
- package/dist/tools/transaction.d.ts +23 -0
- package/dist/tools/transaction.js +29 -0
- package/dist/tools/transaction.js.map +1 -1
- package/dist/tools/typeHierarchy.d.ts +1 -0
- package/dist/tools/updateLinearIssue.d.ts +1 -0
- package/dist/tools/updateLinearIssue.js +20 -6
- package/dist/tools/updateLinearIssue.js.map +1 -1
- package/dist/tools/utils.d.ts +2 -0
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/vscodeCommands.d.ts +2 -0
- package/dist/tools/vscodeTasks.d.ts +2 -0
- package/dist/tools/workspaceSettings.d.ts +1 -0
- package/dist/traceEncryption.d.ts +46 -0
- package/dist/traceEncryption.js +124 -0
- package/dist/traceEncryption.js.map +1 -0
- package/dist/transport.d.ts +46 -1
- package/dist/transport.js +173 -19
- package/dist/transport.js.map +1 -1
- package/package.json +30 -8
- package/scripts/mcp-stdio-shim.cjs +19 -3
- package/scripts/start-all.sh +30 -1
- package/templates/automation-policies/recipe-authoring.json +25 -0
- package/templates/automation-policy.example.json +6 -0
- package/templates/co.patchwork-os.bridge.plist +34 -0
- package/templates/policies/README.md +72 -0
- package/templates/policies/conservative.json +14 -0
- package/templates/policies/developer.json +14 -0
- package/templates/policies/headless-ci.json +24 -0
- package/templates/policies/personal-assistant.json +15 -0
- package/templates/policies/regulated-industry.json +18 -0
- package/templates/recipes/lint-on-save.yaml +1 -2
- package/templates/recipes/morning-brief-slack.yaml +57 -0
- package/templates/recipes/morning-brief.yaml +2 -2
- package/templates/recipes/project-health-check.yaml +50 -0
- package/templates/recipes/webhook/README.md +70 -0
- package/templates/recipes/webhook/capture-thought.yaml +26 -0
- package/templates/recipes/webhook/customer-escalation.yaml +49 -0
- package/templates/recipes/webhook/incident-intake.yaml +46 -0
- package/templates/recipes/webhook/meeting-prep.yaml +48 -0
- package/templates/recipes/webhook/morning-brief.yaml +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipeInstall.js","sourceRoot":"","sources":["../../src/commands/recipeInstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* patchwork traces export — bundle the four local trace logs into a
|
|
3
|
+
* single round-trippable file so a user can move machines, take a
|
|
4
|
+
* compliance snapshot, or share traces with another tool without the
|
|
5
|
+
* fragile-glob ritual of finding each .jsonl by hand.
|
|
6
|
+
*
|
|
7
|
+
* Output format (Decision 1 / option A in the 2026-05-02 strategic walk-through):
|
|
8
|
+
* a single gzipped JSONL file. Line 1 is a manifest envelope; every
|
|
9
|
+
* subsequent line is a per-row envelope. Encryption is intentionally NOT
|
|
10
|
+
* in this PR — encryption is a 2-hour follow-up once we know which
|
|
11
|
+
* passphrase / KMS UX the user wants.
|
|
12
|
+
*
|
|
13
|
+
* {"type":"manifest","version":1,"exportedAt":"...","sources":[...],"counts":{...}}
|
|
14
|
+
* {"source":"runs","entry":{...one runs.jsonl row...}}
|
|
15
|
+
* {"source":"decision_traces","entry":{...one decision_traces.jsonl row...}}
|
|
16
|
+
* ...
|
|
17
|
+
*
|
|
18
|
+
* Round-trip with `gunzip -c file.jsonl.gz | jq`. Filter one source with
|
|
19
|
+
* `gunzip -c file.jsonl.gz | jq 'select(.source=="decision_traces") | .entry'`.
|
|
20
|
+
*
|
|
21
|
+
* Memory/Ecosystem strategic-plan agent (2026-05-02) flagged trace
|
|
22
|
+
* durability as the top backlog item — see
|
|
23
|
+
* `docs/strategic/2026-05-02/memory-ecosystem-report.md` items 1, 3, 12.
|
|
24
|
+
* Without this, every claim about "years of personal AI memory" is
|
|
25
|
+
* undercut by the existing 1 MB / 10 000-line silent rotation.
|
|
26
|
+
*/
|
|
27
|
+
export declare const TRACES_EXPORT_VERSION = 1;
|
|
28
|
+
/**
|
|
29
|
+
* Logical sources we bundle. Adding a new source: extend this enum, add
|
|
30
|
+
* a discoverer below, and consumer tooling that filters on source.
|
|
31
|
+
*/
|
|
32
|
+
export type TraceSource = "runs" | "decision_traces" | "commit_issue_links" | "activity";
|
|
33
|
+
export interface TracesExportOptions {
|
|
34
|
+
/** Where to write the bundle. Default: `${patchworkDir}/traces-export-{ISO}.jsonl.gz`. */
|
|
35
|
+
output?: string;
|
|
36
|
+
/** Directory containing runs.jsonl / decision_traces.jsonl / commit_issue_links.jsonl. Default: `~/.patchwork/`. */
|
|
37
|
+
patchworkDir?: string;
|
|
38
|
+
/** Directory containing `activity-{port}.jsonl` files. Default: `~/.claude/ide/`. */
|
|
39
|
+
activityDir?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface TracesExportSourceFile {
|
|
42
|
+
/** Logical source. */
|
|
43
|
+
source: TraceSource;
|
|
44
|
+
/** Absolute path read. */
|
|
45
|
+
path: string;
|
|
46
|
+
/** Number of JSONL rows successfully parsed and emitted. */
|
|
47
|
+
count: number;
|
|
48
|
+
/** Bytes read from disk. */
|
|
49
|
+
bytes: number;
|
|
50
|
+
}
|
|
51
|
+
export interface TracesExportResult {
|
|
52
|
+
/** Absolute path of the written `.jsonl.gz` bundle. */
|
|
53
|
+
outputPath: string;
|
|
54
|
+
/** ISO-8601 timestamp recorded in the manifest. */
|
|
55
|
+
exportedAt: string;
|
|
56
|
+
/** Per-source-file accounting. Multiple files possible for `activity` (one per bridge instance). */
|
|
57
|
+
files: TracesExportSourceFile[];
|
|
58
|
+
/** Total rows across all files. */
|
|
59
|
+
totalCount: number;
|
|
60
|
+
/** Total bytes read across all files. */
|
|
61
|
+
totalBytes: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Run the export. Pure function over filesystem state — no log instance
|
|
65
|
+
* handles needed, so it works headless (e.g. in CI restoring a snapshot)
|
|
66
|
+
* and during a running bridge alike (the export reads files atomically
|
|
67
|
+
* line-by-line; concurrent appends only add new rows beyond the export's
|
|
68
|
+
* point-in-time view).
|
|
69
|
+
*/
|
|
70
|
+
export declare function runTracesExport(opts?: TracesExportOptions): Promise<TracesExportResult>;
|
|
71
|
+
/**
|
|
72
|
+
* Stream-variant of `runTracesExport` — writes gzip-compressed JSONL
|
|
73
|
+
* directly into a caller-supplied `Writable` (e.g. an HTTP response).
|
|
74
|
+
* No temp file is created; the manifest/rows are emitted in one pass.
|
|
75
|
+
*
|
|
76
|
+
* The caller is responsible for setting `Content-Type`,
|
|
77
|
+
* `Content-Encoding`, and `Content-Disposition` headers BEFORE calling
|
|
78
|
+
* this function because Node's HTTP response is not writable after headers
|
|
79
|
+
* have been flushed.
|
|
80
|
+
*
|
|
81
|
+
* Returns row/byte accounting but omits `outputPath` (no disk file).
|
|
82
|
+
*/
|
|
83
|
+
export declare function runTracesExportToStream(writable: import("node:stream").Writable, opts?: Omit<TracesExportOptions, "output">): Promise<Omit<TracesExportResult, "outputPath">>;
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* patchwork traces export — bundle the four local trace logs into a
|
|
3
|
+
* single round-trippable file so a user can move machines, take a
|
|
4
|
+
* compliance snapshot, or share traces with another tool without the
|
|
5
|
+
* fragile-glob ritual of finding each .jsonl by hand.
|
|
6
|
+
*
|
|
7
|
+
* Output format (Decision 1 / option A in the 2026-05-02 strategic walk-through):
|
|
8
|
+
* a single gzipped JSONL file. Line 1 is a manifest envelope; every
|
|
9
|
+
* subsequent line is a per-row envelope. Encryption is intentionally NOT
|
|
10
|
+
* in this PR — encryption is a 2-hour follow-up once we know which
|
|
11
|
+
* passphrase / KMS UX the user wants.
|
|
12
|
+
*
|
|
13
|
+
* {"type":"manifest","version":1,"exportedAt":"...","sources":[...],"counts":{...}}
|
|
14
|
+
* {"source":"runs","entry":{...one runs.jsonl row...}}
|
|
15
|
+
* {"source":"decision_traces","entry":{...one decision_traces.jsonl row...}}
|
|
16
|
+
* ...
|
|
17
|
+
*
|
|
18
|
+
* Round-trip with `gunzip -c file.jsonl.gz | jq`. Filter one source with
|
|
19
|
+
* `gunzip -c file.jsonl.gz | jq 'select(.source=="decision_traces") | .entry'`.
|
|
20
|
+
*
|
|
21
|
+
* Memory/Ecosystem strategic-plan agent (2026-05-02) flagged trace
|
|
22
|
+
* durability as the top backlog item — see
|
|
23
|
+
* `docs/strategic/2026-05-02/memory-ecosystem-report.md` items 1, 3, 12.
|
|
24
|
+
* Without this, every claim about "years of personal AI memory" is
|
|
25
|
+
* undercut by the existing 1 MB / 10 000-line silent rotation.
|
|
26
|
+
*/
|
|
27
|
+
import { createReadStream, createWriteStream, existsSync, mkdirSync, readdirSync, statSync, } from "node:fs";
|
|
28
|
+
import os from "node:os";
|
|
29
|
+
import path from "node:path";
|
|
30
|
+
import { createInterface } from "node:readline";
|
|
31
|
+
import { pipeline } from "node:stream/promises";
|
|
32
|
+
import { createGzip } from "node:zlib";
|
|
33
|
+
export const TRACES_EXPORT_VERSION = 1;
|
|
34
|
+
function defaultPatchworkDir() {
|
|
35
|
+
return path.join(os.homedir(), ".patchwork");
|
|
36
|
+
}
|
|
37
|
+
function defaultActivityDir() {
|
|
38
|
+
return path.join(os.homedir(), ".claude", "ide");
|
|
39
|
+
}
|
|
40
|
+
/** Single-file sources live at fixed names in the patchwork dir. */
|
|
41
|
+
const SINGLE_FILE_SOURCES = [
|
|
42
|
+
{ source: "runs", filename: "runs.jsonl" },
|
|
43
|
+
{ source: "decision_traces", filename: "decision_traces.jsonl" },
|
|
44
|
+
{ source: "commit_issue_links", filename: "commit_issue_links.jsonl" },
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Discover activity-log files. Bridge instances each persist to
|
|
48
|
+
* `activity-{port}.jsonl` so we glob for that pattern and include any
|
|
49
|
+
* file that exists. Single explicit `activity.jsonl` (no port suffix)
|
|
50
|
+
* is also picked up — some test harnesses use that name.
|
|
51
|
+
*/
|
|
52
|
+
function discoverActivityFiles(activityDir) {
|
|
53
|
+
if (!existsSync(activityDir))
|
|
54
|
+
return [];
|
|
55
|
+
let entries;
|
|
56
|
+
try {
|
|
57
|
+
entries = readdirSync(activityDir);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
return entries
|
|
63
|
+
.filter((name) => /^activity(-\d+)?\.jsonl$/i.test(name) ||
|
|
64
|
+
/^activity-log\.jsonl$/i.test(name))
|
|
65
|
+
.map((name) => path.join(activityDir, name))
|
|
66
|
+
.filter((p) => {
|
|
67
|
+
try {
|
|
68
|
+
return statSync(p).isFile();
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
.sort();
|
|
75
|
+
}
|
|
76
|
+
async function readJsonlRows(filePath) {
|
|
77
|
+
const rows = [];
|
|
78
|
+
let bytes = 0;
|
|
79
|
+
try {
|
|
80
|
+
bytes = statSync(filePath).size;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return { rows, bytes: 0 };
|
|
84
|
+
}
|
|
85
|
+
const stream = createReadStream(filePath, { encoding: "utf8" });
|
|
86
|
+
const rl = createInterface({ input: stream, crlfDelay: Infinity });
|
|
87
|
+
for await (const line of rl) {
|
|
88
|
+
const trimmed = line.trim();
|
|
89
|
+
if (trimmed.length === 0)
|
|
90
|
+
continue;
|
|
91
|
+
try {
|
|
92
|
+
rows.push(JSON.parse(trimmed));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Drop unparseable rows. The export's invariant is "every line is
|
|
96
|
+
// valid JSON"; preserving a malformed line would break consumers.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return { rows, bytes };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Run the export. Pure function over filesystem state — no log instance
|
|
103
|
+
* handles needed, so it works headless (e.g. in CI restoring a snapshot)
|
|
104
|
+
* and during a running bridge alike (the export reads files atomically
|
|
105
|
+
* line-by-line; concurrent appends only add new rows beyond the export's
|
|
106
|
+
* point-in-time view).
|
|
107
|
+
*/
|
|
108
|
+
export async function runTracesExport(opts = {}) {
|
|
109
|
+
const exportedAt = new Date().toISOString();
|
|
110
|
+
const patchworkDir = opts.patchworkDir ?? defaultPatchworkDir();
|
|
111
|
+
const activityDir = opts.activityDir ?? defaultActivityDir();
|
|
112
|
+
// Default output: `<patchworkDir>/traces-export-<safeIso>.jsonl.gz`. ISO
|
|
113
|
+
// colons are filename-hostile on Windows so swap them for hyphens.
|
|
114
|
+
const safeStamp = exportedAt.replace(/:/g, "-").replace(/\..+$/, "");
|
|
115
|
+
const outputPath = opts.output ??
|
|
116
|
+
path.join(patchworkDir, `traces-export-${safeStamp}.jsonl.gz`);
|
|
117
|
+
// Discover sources.
|
|
118
|
+
const files = [];
|
|
119
|
+
for (const { source, filename } of SINGLE_FILE_SOURCES) {
|
|
120
|
+
const p = path.join(patchworkDir, filename);
|
|
121
|
+
if (!existsSync(p))
|
|
122
|
+
continue;
|
|
123
|
+
const { rows, bytes } = await readJsonlRows(p);
|
|
124
|
+
files.push({ source, path: p, relativePath: filename, rows, bytes });
|
|
125
|
+
}
|
|
126
|
+
for (const p of discoverActivityFiles(activityDir)) {
|
|
127
|
+
const { rows, bytes } = await readJsonlRows(p);
|
|
128
|
+
files.push({
|
|
129
|
+
source: "activity",
|
|
130
|
+
path: p,
|
|
131
|
+
relativePath: path.basename(p),
|
|
132
|
+
rows,
|
|
133
|
+
bytes,
|
|
134
|
+
activityFile: path.basename(p),
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
// Ensure output dir exists.
|
|
138
|
+
const outputDir = path.dirname(outputPath);
|
|
139
|
+
if (!existsSync(outputDir))
|
|
140
|
+
mkdirSync(outputDir, { recursive: true });
|
|
141
|
+
// Build manifest from discovered files (even ones with zero rows are
|
|
142
|
+
// recorded — "we looked here and found this" is more useful than silence).
|
|
143
|
+
const totalCount = files.reduce((sum, f) => sum + f.rows.length, 0);
|
|
144
|
+
const sources = [
|
|
145
|
+
...new Set(files.map((f) => f.source)),
|
|
146
|
+
].sort();
|
|
147
|
+
const manifest = {
|
|
148
|
+
type: "manifest",
|
|
149
|
+
version: TRACES_EXPORT_VERSION,
|
|
150
|
+
exportedAt,
|
|
151
|
+
sources,
|
|
152
|
+
files: files.map((f) => ({
|
|
153
|
+
source: f.source,
|
|
154
|
+
relativePath: f.relativePath,
|
|
155
|
+
count: f.rows.length,
|
|
156
|
+
bytes: f.bytes,
|
|
157
|
+
})),
|
|
158
|
+
totalCount,
|
|
159
|
+
};
|
|
160
|
+
// Emit: manifest line + one envelope per row, gzip-piped to disk.
|
|
161
|
+
// Use a Readable source so pipeline() owns backpressure end-to-end —
|
|
162
|
+
// writing directly to gzip outside the pipeline ignores the drain signal
|
|
163
|
+
// and silently buffers everything in memory on large exports.
|
|
164
|
+
const { Readable } = await import("node:stream");
|
|
165
|
+
const source = Readable.from((function* () {
|
|
166
|
+
yield `${JSON.stringify(manifest)}\n`;
|
|
167
|
+
for (const f of files) {
|
|
168
|
+
for (const entry of f.rows) {
|
|
169
|
+
const env = { source: f.source, entry };
|
|
170
|
+
if (f.activityFile)
|
|
171
|
+
env.file = f.activityFile;
|
|
172
|
+
yield `${JSON.stringify(env)}\n`;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
})(), { objectMode: false });
|
|
176
|
+
const sink = createWriteStream(outputPath, { mode: 0o600 });
|
|
177
|
+
await pipeline(source, createGzip(), sink);
|
|
178
|
+
return {
|
|
179
|
+
outputPath,
|
|
180
|
+
exportedAt,
|
|
181
|
+
files: files.map((f) => ({
|
|
182
|
+
source: f.source,
|
|
183
|
+
path: f.path,
|
|
184
|
+
count: f.rows.length,
|
|
185
|
+
bytes: f.bytes,
|
|
186
|
+
})),
|
|
187
|
+
totalCount,
|
|
188
|
+
totalBytes: files.reduce((sum, f) => sum + f.bytes, 0),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Stream-variant of `runTracesExport` — writes gzip-compressed JSONL
|
|
193
|
+
* directly into a caller-supplied `Writable` (e.g. an HTTP response).
|
|
194
|
+
* No temp file is created; the manifest/rows are emitted in one pass.
|
|
195
|
+
*
|
|
196
|
+
* The caller is responsible for setting `Content-Type`,
|
|
197
|
+
* `Content-Encoding`, and `Content-Disposition` headers BEFORE calling
|
|
198
|
+
* this function because Node's HTTP response is not writable after headers
|
|
199
|
+
* have been flushed.
|
|
200
|
+
*
|
|
201
|
+
* Returns row/byte accounting but omits `outputPath` (no disk file).
|
|
202
|
+
*/
|
|
203
|
+
export async function runTracesExportToStream(writable, opts = {}) {
|
|
204
|
+
const exportedAt = new Date().toISOString();
|
|
205
|
+
const patchworkDir = opts.patchworkDir ?? defaultPatchworkDir();
|
|
206
|
+
const activityDir = opts.activityDir ?? defaultActivityDir();
|
|
207
|
+
const files = [];
|
|
208
|
+
for (const { source, filename } of SINGLE_FILE_SOURCES) {
|
|
209
|
+
const p = path.join(patchworkDir, filename);
|
|
210
|
+
if (!existsSync(p))
|
|
211
|
+
continue;
|
|
212
|
+
const { rows, bytes } = await readJsonlRows(p);
|
|
213
|
+
files.push({ source, path: p, relativePath: filename, rows, bytes });
|
|
214
|
+
}
|
|
215
|
+
for (const p of discoverActivityFiles(activityDir)) {
|
|
216
|
+
const { rows, bytes } = await readJsonlRows(p);
|
|
217
|
+
files.push({
|
|
218
|
+
source: "activity",
|
|
219
|
+
path: p,
|
|
220
|
+
relativePath: path.relative(activityDir, p),
|
|
221
|
+
rows,
|
|
222
|
+
bytes,
|
|
223
|
+
activityFile: path.basename(p),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
const totalCount = files.reduce((s, f) => s + f.rows.length, 0);
|
|
227
|
+
const sources = [
|
|
228
|
+
...new Set(files.map((f) => f.source)),
|
|
229
|
+
].sort();
|
|
230
|
+
const manifest = {
|
|
231
|
+
type: "manifest",
|
|
232
|
+
version: TRACES_EXPORT_VERSION,
|
|
233
|
+
exportedAt,
|
|
234
|
+
sources,
|
|
235
|
+
files: files.map((f) => ({
|
|
236
|
+
source: f.source,
|
|
237
|
+
relativePath: f.relativePath,
|
|
238
|
+
count: f.rows.length,
|
|
239
|
+
bytes: f.bytes,
|
|
240
|
+
})),
|
|
241
|
+
totalCount,
|
|
242
|
+
};
|
|
243
|
+
// Use a Readable source so pipeline() owns backpressure end-to-end.
|
|
244
|
+
const { Readable } = await import("node:stream");
|
|
245
|
+
const source = Readable.from((function* () {
|
|
246
|
+
yield `${JSON.stringify(manifest)}\n`;
|
|
247
|
+
for (const f of files) {
|
|
248
|
+
for (const entry of f.rows) {
|
|
249
|
+
const env = { source: f.source, entry };
|
|
250
|
+
if (f.activityFile)
|
|
251
|
+
env.file = f.activityFile;
|
|
252
|
+
yield `${JSON.stringify(env)}\n`;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
})(), { objectMode: false });
|
|
256
|
+
await pipeline(source, createGzip(), writable);
|
|
257
|
+
return {
|
|
258
|
+
exportedAt,
|
|
259
|
+
files: files.map((f) => ({
|
|
260
|
+
source: f.source,
|
|
261
|
+
path: f.path,
|
|
262
|
+
count: f.rows.length,
|
|
263
|
+
bytes: f.bytes,
|
|
264
|
+
})),
|
|
265
|
+
totalCount,
|
|
266
|
+
totalBytes: files.reduce((sum, f) => sum + f.bytes, 0),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=tracesExport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracesExport.js","sourceRoot":"","sources":["../../src/commands/tracesExport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* patchwork traces import — restore a bundle written by `tracesExport` into
|
|
3
|
+
* the local patchwork dirs. Closes the export → backup → restore-on-new-
|
|
4
|
+
* machine loop that was half-shipped (export landed, import did not).
|
|
5
|
+
*
|
|
6
|
+
* Bundle format is the manifest+row-envelope schema from tracesExport.ts:
|
|
7
|
+
*
|
|
8
|
+
* {"type":"manifest","version":1,"exportedAt":"...","sources":[...],"files":[...]}
|
|
9
|
+
* {"source":"runs","entry":{...}}
|
|
10
|
+
* {"source":"decision_traces","entry":{...}}
|
|
11
|
+
* ...
|
|
12
|
+
*
|
|
13
|
+
* Modes:
|
|
14
|
+
* - "append" (default) — entries are appended to the target file. The
|
|
15
|
+
* bundle's row order is preserved. No dedup; if you import the same
|
|
16
|
+
* bundle twice, you get duplicates. This is by design — dedup needs
|
|
17
|
+
* a stable key choice per source and we'd rather ship the simple
|
|
18
|
+
* thing now and add it as a follow-up.
|
|
19
|
+
* - "overwrite" — target file is truncated before any writes. Use
|
|
20
|
+
* this for "clean restore on a fresh machine" — never use it when
|
|
21
|
+
* there's local data you want to keep.
|
|
22
|
+
*
|
|
23
|
+
* Encryption: `.age` bundles must be decrypted out-of-band first
|
|
24
|
+
* (`age -d bundle.jsonl.gz.age | gunzip > bundle.jsonl`). A `--decrypt`
|
|
25
|
+
* flag is a small follow-up.
|
|
26
|
+
*/
|
|
27
|
+
import { type TraceSource } from "./tracesExport.js";
|
|
28
|
+
export type ImportMode = "append" | "overwrite";
|
|
29
|
+
export interface TracesImportOptions {
|
|
30
|
+
/** Path to a `.jsonl.gz` (or plain `.jsonl`) bundle written by tracesExport. */
|
|
31
|
+
input: string;
|
|
32
|
+
/** Where to restore single-file sources. Default: `~/.patchwork/`. */
|
|
33
|
+
patchworkDir?: string;
|
|
34
|
+
/** Where to restore activity-*.jsonl. Default: `~/.claude/ide/`. */
|
|
35
|
+
activityDir?: string;
|
|
36
|
+
/** "append" (default) or "overwrite". */
|
|
37
|
+
mode?: ImportMode;
|
|
38
|
+
/** Don't write anything — return what would happen. */
|
|
39
|
+
dryRun?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface TracesImportResult {
|
|
42
|
+
inputPath: string;
|
|
43
|
+
exportedAt: string;
|
|
44
|
+
mode: ImportMode;
|
|
45
|
+
dryRun: boolean;
|
|
46
|
+
/** Per target-file accounting. Multiple files possible for activity (one per source bridge instance). */
|
|
47
|
+
files: Array<{
|
|
48
|
+
source: TraceSource;
|
|
49
|
+
targetPath: string;
|
|
50
|
+
/** Rows written (or that would be written, in dry-run). */
|
|
51
|
+
count: number;
|
|
52
|
+
}>;
|
|
53
|
+
/** Total rows across all target files. */
|
|
54
|
+
totalCount: number;
|
|
55
|
+
}
|
|
56
|
+
export declare function runTracesImport(opts: TracesImportOptions): Promise<TracesImportResult>;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* patchwork traces import — restore a bundle written by `tracesExport` into
|
|
3
|
+
* the local patchwork dirs. Closes the export → backup → restore-on-new-
|
|
4
|
+
* machine loop that was half-shipped (export landed, import did not).
|
|
5
|
+
*
|
|
6
|
+
* Bundle format is the manifest+row-envelope schema from tracesExport.ts:
|
|
7
|
+
*
|
|
8
|
+
* {"type":"manifest","version":1,"exportedAt":"...","sources":[...],"files":[...]}
|
|
9
|
+
* {"source":"runs","entry":{...}}
|
|
10
|
+
* {"source":"decision_traces","entry":{...}}
|
|
11
|
+
* ...
|
|
12
|
+
*
|
|
13
|
+
* Modes:
|
|
14
|
+
* - "append" (default) — entries are appended to the target file. The
|
|
15
|
+
* bundle's row order is preserved. No dedup; if you import the same
|
|
16
|
+
* bundle twice, you get duplicates. This is by design — dedup needs
|
|
17
|
+
* a stable key choice per source and we'd rather ship the simple
|
|
18
|
+
* thing now and add it as a follow-up.
|
|
19
|
+
* - "overwrite" — target file is truncated before any writes. Use
|
|
20
|
+
* this for "clean restore on a fresh machine" — never use it when
|
|
21
|
+
* there's local data you want to keep.
|
|
22
|
+
*
|
|
23
|
+
* Encryption: `.age` bundles must be decrypted out-of-band first
|
|
24
|
+
* (`age -d bundle.jsonl.gz.age | gunzip > bundle.jsonl`). A `--decrypt`
|
|
25
|
+
* flag is a small follow-up.
|
|
26
|
+
*/
|
|
27
|
+
import { appendFileSync, createReadStream, existsSync, mkdirSync, writeFileSync, } from "node:fs";
|
|
28
|
+
import os from "node:os";
|
|
29
|
+
import path from "node:path";
|
|
30
|
+
import { createInterface } from "node:readline";
|
|
31
|
+
import { createGunzip } from "node:zlib";
|
|
32
|
+
import { TRACES_EXPORT_VERSION } from "./tracesExport.js";
|
|
33
|
+
const SINGLE_FILE_TARGETS = {
|
|
34
|
+
runs: "runs.jsonl",
|
|
35
|
+
decision_traces: "decision_traces.jsonl",
|
|
36
|
+
commit_issue_links: "commit_issue_links.jsonl",
|
|
37
|
+
};
|
|
38
|
+
function defaultPatchworkDir() {
|
|
39
|
+
return path.join(os.homedir(), ".patchwork");
|
|
40
|
+
}
|
|
41
|
+
function defaultActivityDir() {
|
|
42
|
+
return path.join(os.homedir(), ".claude", "ide");
|
|
43
|
+
}
|
|
44
|
+
function resolveTargetPath(source, envelopeFile, patchworkDir, activityDir) {
|
|
45
|
+
if (source === "activity") {
|
|
46
|
+
// activity rows carry the original file name — preserve it so a
|
|
47
|
+
// multi-instance export round-trips per-port. Default fallback if
|
|
48
|
+
// the envelope didn't include one.
|
|
49
|
+
const name = envelopeFile ?? "activity.jsonl";
|
|
50
|
+
return path.join(activityDir, name);
|
|
51
|
+
}
|
|
52
|
+
return path.join(patchworkDir, SINGLE_FILE_TARGETS[source]);
|
|
53
|
+
}
|
|
54
|
+
export async function runTracesImport(opts) {
|
|
55
|
+
const inputPath = path.resolve(opts.input);
|
|
56
|
+
if (!existsSync(inputPath)) {
|
|
57
|
+
throw new Error(`Input bundle not found: ${inputPath}`);
|
|
58
|
+
}
|
|
59
|
+
const mode = opts.mode ?? "append";
|
|
60
|
+
const dryRun = opts.dryRun === true;
|
|
61
|
+
const patchworkDir = opts.patchworkDir ?? defaultPatchworkDir();
|
|
62
|
+
const activityDir = opts.activityDir ?? defaultActivityDir();
|
|
63
|
+
if (!dryRun) {
|
|
64
|
+
if (!existsSync(patchworkDir))
|
|
65
|
+
mkdirSync(patchworkDir, { recursive: true });
|
|
66
|
+
if (!existsSync(activityDir))
|
|
67
|
+
mkdirSync(activityDir, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
// Stream-read the bundle. Auto-detect gzip via `.gz` suffix; users who
|
|
70
|
+
// already gunzipped manually can pass the plain .jsonl.
|
|
71
|
+
const baseStream = createReadStream(inputPath);
|
|
72
|
+
const lineStream = inputPath.endsWith(".gz")
|
|
73
|
+
? baseStream.pipe(createGunzip())
|
|
74
|
+
: baseStream;
|
|
75
|
+
const rl = createInterface({ input: lineStream, crlfDelay: Infinity });
|
|
76
|
+
let manifest = null;
|
|
77
|
+
// Group writes by target so we can truncate-once for overwrite mode and
|
|
78
|
+
// batch the appends. Memory cost is one row's worth of buffer per target,
|
|
79
|
+
// which is acceptable for a CLI command operating on user-machine-sized
|
|
80
|
+
// data.
|
|
81
|
+
const buffers = new Map();
|
|
82
|
+
let lineNum = 0;
|
|
83
|
+
for await (const raw of rl) {
|
|
84
|
+
lineNum++;
|
|
85
|
+
const line = raw.trim();
|
|
86
|
+
if (line === "")
|
|
87
|
+
continue;
|
|
88
|
+
let parsed;
|
|
89
|
+
try {
|
|
90
|
+
parsed = JSON.parse(line);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
throw new Error(`Bundle parse error at line ${lineNum}: not valid JSON`);
|
|
94
|
+
}
|
|
95
|
+
if (lineNum === 1) {
|
|
96
|
+
// First non-empty line must be the manifest.
|
|
97
|
+
if (!parsed ||
|
|
98
|
+
typeof parsed !== "object" ||
|
|
99
|
+
parsed.type !== "manifest") {
|
|
100
|
+
throw new Error(`First line of bundle is not a manifest envelope (got: ${line.slice(0, 80)}…)`);
|
|
101
|
+
}
|
|
102
|
+
manifest = parsed;
|
|
103
|
+
if (manifest.version !== TRACES_EXPORT_VERSION) {
|
|
104
|
+
throw new Error(`Bundle version ${manifest.version} not supported (expected ${TRACES_EXPORT_VERSION})`);
|
|
105
|
+
}
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (manifest === null) {
|
|
109
|
+
throw new Error("Bundle has rows before a manifest line");
|
|
110
|
+
}
|
|
111
|
+
const env = parsed;
|
|
112
|
+
if (typeof env.source !== "string" || env.entry === undefined) {
|
|
113
|
+
throw new Error(`Bundle row at line ${lineNum} missing source/entry`);
|
|
114
|
+
}
|
|
115
|
+
const source = env.source;
|
|
116
|
+
const file = typeof env.file === "string" ? env.file : undefined;
|
|
117
|
+
const targetPath = resolveTargetPath(source, file, patchworkDir, activityDir);
|
|
118
|
+
const buf = buffers.get(targetPath) ?? { source, lines: [] };
|
|
119
|
+
// Re-serialize the entry as one JSONL line. Tools downstream of these
|
|
120
|
+
// files expect one JSON object per line, no envelope.
|
|
121
|
+
buf.lines.push(JSON.stringify(env.entry));
|
|
122
|
+
buffers.set(targetPath, buf);
|
|
123
|
+
}
|
|
124
|
+
if (manifest === null) {
|
|
125
|
+
throw new Error("Bundle is empty (no manifest line)");
|
|
126
|
+
}
|
|
127
|
+
// Apply: in overwrite mode, truncate each target before appending its
|
|
128
|
+
// batch. In append mode, just append.
|
|
129
|
+
const files = [];
|
|
130
|
+
let totalCount = 0;
|
|
131
|
+
for (const [targetPath, buf] of buffers) {
|
|
132
|
+
const count = buf.lines.length;
|
|
133
|
+
totalCount += count;
|
|
134
|
+
if (!dryRun) {
|
|
135
|
+
// Ensure the target directory exists (activity-port files might
|
|
136
|
+
// land in a dir we don't control — covered by the mkdir above for
|
|
137
|
+
// the configured activityDir, but parent dir of arbitrary path
|
|
138
|
+
// needs its own check).
|
|
139
|
+
const parent = path.dirname(targetPath);
|
|
140
|
+
if (!existsSync(parent))
|
|
141
|
+
mkdirSync(parent, { recursive: true });
|
|
142
|
+
const payload = `${buf.lines.join("\n")}\n`;
|
|
143
|
+
if (mode === "overwrite") {
|
|
144
|
+
writeFileSync(targetPath, payload, "utf-8");
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
appendFileSync(targetPath, payload, "utf-8");
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
files.push({ source: buf.source, targetPath, count });
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
inputPath,
|
|
154
|
+
exportedAt: manifest.exportedAt,
|
|
155
|
+
mode,
|
|
156
|
+
dryRun,
|
|
157
|
+
files: files.sort((a, b) => a.targetPath.localeCompare(b.targetPath)),
|
|
158
|
+
totalCount,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=tracesImport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracesImport.js","sourceRoot":"","sources":["../../src/commands/tracesImport.ts"],"names":[],"mappings":"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"}
|