patchwork-os 0.2.0-beta.1 → 0.2.0-beta.10.canary.95
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 +14 -14
- package/README.md +201 -34
- package/deploy/README.md +1 -1
- package/deploy/bootstrap-vps.sh +14 -9
- package/deploy/deploy-dashboard.sh +25 -1
- package/deploy/macos/README.md +153 -0
- package/deploy/macos/com.patchwork.bridge.plist.template +54 -0
- package/deploy/macos/com.patchwork.tunnel.plist.template +76 -0
- package/deploy/macos/install-mac-bridge.sh +244 -0
- package/deploy/macos/uninstall-mac-bridge.sh +22 -0
- package/dist/activityLog.d.ts +6 -0
- package/dist/activityLog.js +63 -26
- package/dist/activityLog.js.map +1 -1
- package/dist/adapters/claude.js +22 -16
- package/dist/adapters/claude.js.map +1 -1
- package/dist/adapters/gemini.js +15 -11
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/openai.js +9 -9
- package/dist/adapters/openai.js.map +1 -1
- package/dist/ajv2020.d.ts +25 -0
- package/dist/ajv2020.js +33 -0
- package/dist/ajv2020.js.map +1 -0
- package/dist/analyticsAggregator.js +1 -1
- package/dist/analyticsAggregator.js.map +1 -1
- package/dist/analyticsConfig.d.ts +29 -0
- package/dist/analyticsConfig.js +102 -0
- package/dist/analyticsConfig.js.map +1 -0
- package/dist/analyticsPrefs.d.ts +38 -2
- package/dist/analyticsPrefs.js +148 -23
- package/dist/analyticsPrefs.js.map +1 -1
- package/dist/analyticsSend.d.ts +17 -1
- package/dist/analyticsSend.js +67 -5
- package/dist/analyticsSend.js.map +1 -1
- package/dist/approvalHttp.d.ts +14 -0
- package/dist/approvalHttp.js +212 -9
- package/dist/approvalHttp.js.map +1 -1
- package/dist/approvalInsights.js +13 -5
- package/dist/approvalInsights.js.map +1 -1
- package/dist/approvalQueue.d.ts +97 -3
- package/dist/approvalQueue.js +193 -19
- package/dist/approvalQueue.js.map +1 -1
- package/dist/approvalSignals.js +19 -11
- package/dist/approvalSignals.js.map +1 -1
- package/dist/automation.d.ts +35 -10
- package/dist/automation.js +133 -37
- package/dist/automation.js.map +1 -1
- package/dist/automationSuggestions.js +10 -8
- package/dist/automationSuggestions.js.map +1 -1
- package/dist/bridge.d.ts +2 -0
- package/dist/bridge.js +202 -25
- package/dist/bridge.js.map +1 -1
- package/dist/bridgeLockDiscovery.d.ts +27 -1
- package/dist/bridgeLockDiscovery.js +38 -11
- package/dist/bridgeLockDiscovery.js.map +1 -1
- package/dist/bridgeToken.js +3 -2
- package/dist/bridgeToken.js.map +1 -1
- package/dist/claudeDriver.js +23 -8
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +1 -1
- package/dist/claudeOrchestrator.js +87 -44
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/analytics.d.ts +8 -0
- package/dist/commands/analytics.js +134 -0
- package/dist/commands/analytics.js.map +1 -0
- package/dist/commands/auditEnv.d.ts +36 -0
- package/dist/commands/auditEnv.js +202 -0
- package/dist/commands/auditEnv.js.map +1 -0
- package/dist/commands/dashboard.js +8 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/doctor.d.ts +35 -0
- package/dist/commands/doctor.js +51 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/install.js +3 -0
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/launchd.js +15 -16
- package/dist/commands/launchd.js.map +1 -1
- package/dist/commands/patchworkInit.d.ts +5 -0
- package/dist/commands/patchworkInit.js +89 -7
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/recipe.d.ts +110 -0
- package/dist/commands/recipe.js +512 -9
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.js +11 -4
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/commands/shadowScan.d.ts +34 -0
- package/dist/commands/shadowScan.js +142 -0
- package/dist/commands/shadowScan.js.map +1 -0
- package/dist/commands/task.js +2 -2
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/tools.d.ts +20 -1
- package/dist/commands/tools.js +112 -3
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/tracesImport.js +21 -4
- package/dist/commands/tracesImport.js.map +1 -1
- package/dist/commitIssueLinkLog.d.ts +16 -0
- package/dist/commitIssueLinkLog.js +110 -24
- package/dist/commitIssueLinkLog.js.map +1 -1
- package/dist/companions/registry.js +15 -7
- package/dist/companions/registry.js.map +1 -1
- package/dist/config.d.ts +47 -3
- package/dist/config.js +111 -21
- package/dist/config.js.map +1 -1
- package/dist/connectorRoutes.js +866 -57
- package/dist/connectorRoutes.js.map +1 -1
- package/dist/connectors/airtable.d.ts +230 -0
- package/dist/connectors/airtable.js +700 -0
- package/dist/connectors/airtable.js.map +1 -0
- package/dist/connectors/asana.js +13 -9
- package/dist/connectors/asana.js.map +1 -1
- package/dist/connectors/baseConnector.js +25 -3
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/caldiy.d.ts +137 -0
- package/dist/connectors/caldiy.js +424 -0
- package/dist/connectors/caldiy.js.map +1 -0
- package/dist/connectors/circleci.d.ts +162 -0
- package/dist/connectors/circleci.js +576 -0
- package/dist/connectors/circleci.js.map +1 -0
- package/dist/connectors/cloudflare.d.ts +132 -0
- package/dist/connectors/cloudflare.js +622 -0
- package/dist/connectors/cloudflare.js.map +1 -0
- package/dist/connectors/confluence.js +35 -0
- package/dist/connectors/confluence.js.map +1 -1
- package/dist/connectors/connectorRedirectUri.d.ts +30 -0
- package/dist/connectors/connectorRedirectUri.js +38 -0
- package/dist/connectors/connectorRedirectUri.js.map +1 -0
- package/dist/connectors/connectorRegistry.d.ts +63 -0
- package/dist/connectors/connectorRegistry.js +354 -0
- package/dist/connectors/connectorRegistry.js.map +1 -0
- package/dist/connectors/datadog.js +33 -4
- package/dist/connectors/datadog.js.map +1 -1
- package/dist/connectors/discord.js +14 -10
- package/dist/connectors/discord.js.map +1 -1
- package/dist/connectors/elasticsearch.d.ts +141 -0
- package/dist/connectors/elasticsearch.js +601 -0
- package/dist/connectors/elasticsearch.js.map +1 -0
- package/dist/connectors/figma.d.ts +130 -0
- package/dist/connectors/figma.js +387 -0
- package/dist/connectors/figma.js.map +1 -0
- package/dist/connectors/github.d.ts +17 -0
- package/dist/connectors/github.js +53 -2
- package/dist/connectors/github.js.map +1 -1
- package/dist/connectors/gitlab.js +12 -6
- package/dist/connectors/gitlab.js.map +1 -1
- package/dist/connectors/gmail.js +72 -21
- package/dist/connectors/gmail.js.map +1 -1
- package/dist/connectors/googleCalendar.js +8 -8
- package/dist/connectors/googleCalendar.js.map +1 -1
- package/dist/connectors/googleDocs.d.ts +103 -0
- package/dist/connectors/googleDocs.js +409 -0
- package/dist/connectors/googleDocs.js.map +1 -0
- package/dist/connectors/googleDrive.d.ts +12 -0
- package/dist/connectors/googleDrive.js +35 -8
- package/dist/connectors/googleDrive.js.map +1 -1
- package/dist/connectors/grafana.d.ts +133 -0
- package/dist/connectors/grafana.js +478 -0
- package/dist/connectors/grafana.js.map +1 -0
- package/dist/connectors/jira.d.ts +25 -0
- package/dist/connectors/jira.js +227 -1
- package/dist/connectors/jira.js.map +1 -1
- package/dist/connectors/linear.js +1 -1
- package/dist/connectors/linear.js.map +1 -1
- package/dist/connectors/mcpOAuth.js +78 -16
- package/dist/connectors/mcpOAuth.js.map +1 -1
- package/dist/connectors/monday.d.ts +217 -0
- package/dist/connectors/monday.js +655 -0
- package/dist/connectors/monday.js.map +1 -0
- package/dist/connectors/mongodb.d.ts +139 -0
- package/dist/connectors/mongodb.js +455 -0
- package/dist/connectors/mongodb.js.map +1 -0
- package/dist/connectors/oauthStateStore.d.ts +20 -0
- package/dist/connectors/oauthStateStore.js +94 -4
- package/dist/connectors/oauthStateStore.js.map +1 -1
- package/dist/connectors/obsidian.d.ts +83 -0
- package/dist/connectors/obsidian.js +441 -0
- package/dist/connectors/obsidian.js.map +1 -0
- package/dist/connectors/paystack.d.ts +159 -0
- package/dist/connectors/paystack.js +607 -0
- package/dist/connectors/paystack.js.map +1 -0
- package/dist/connectors/pipedrive.d.ts +189 -0
- package/dist/connectors/pipedrive.js +559 -0
- package/dist/connectors/pipedrive.js.map +1 -0
- package/dist/connectors/postgres.d.ts +127 -0
- package/dist/connectors/postgres.js +512 -0
- package/dist/connectors/postgres.js.map +1 -0
- package/dist/connectors/posthog.d.ts +119 -0
- package/dist/connectors/posthog.js +479 -0
- package/dist/connectors/posthog.js.map +1 -0
- package/dist/connectors/redis.d.ts +140 -0
- package/dist/connectors/redis.js +571 -0
- package/dist/connectors/redis.js.map +1 -0
- package/dist/connectors/resend.d.ts +131 -0
- package/dist/connectors/resend.js +529 -0
- package/dist/connectors/resend.js.map +1 -0
- package/dist/connectors/salesforce.d.ts +136 -0
- package/dist/connectors/salesforce.js +603 -0
- package/dist/connectors/salesforce.js.map +1 -0
- package/dist/connectors/secrets.d.ts +51 -0
- package/dist/connectors/secrets.js +102 -0
- package/dist/connectors/secrets.js.map +1 -0
- package/dist/connectors/sendgrid.d.ts +102 -0
- package/dist/connectors/sendgrid.js +423 -0
- package/dist/connectors/sendgrid.js.map +1 -0
- package/dist/connectors/shopify.d.ts +145 -0
- package/dist/connectors/shopify.js +502 -0
- package/dist/connectors/shopify.js.map +1 -0
- package/dist/connectors/slack.d.ts +1 -1
- package/dist/connectors/slack.js +61 -9
- package/dist/connectors/slack.js.map +1 -1
- package/dist/connectors/snowflake.d.ts +119 -0
- package/dist/connectors/snowflake.js +615 -0
- package/dist/connectors/snowflake.js.map +1 -0
- package/dist/connectors/supabase.d.ts +92 -0
- package/dist/connectors/supabase.js +630 -0
- package/dist/connectors/supabase.js.map +1 -0
- package/dist/connectors/todoist.d.ts +117 -0
- package/dist/connectors/todoist.js +485 -0
- package/dist/connectors/todoist.js.map +1 -0
- package/dist/connectors/tokenStorage.js +56 -14
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/connectors/twilio.d.ts +118 -0
- package/dist/connectors/twilio.js +475 -0
- package/dist/connectors/twilio.js.map +1 -0
- package/dist/connectors/vercel.d.ts +110 -0
- package/dist/connectors/vercel.js +479 -0
- package/dist/connectors/vercel.js.map +1 -0
- package/dist/connectors/webflow.d.ts +118 -0
- package/dist/connectors/webflow.js +393 -0
- package/dist/connectors/webflow.js.map +1 -0
- package/dist/connectors/woocommerce.d.ts +220 -0
- package/dist/connectors/woocommerce.js +464 -0
- package/dist/connectors/woocommerce.js.map +1 -0
- package/dist/crypto.js +7 -2
- package/dist/crypto.js.map +1 -1
- package/dist/decisionReplay.js +15 -6
- package/dist/decisionReplay.js.map +1 -1
- package/dist/decisionTraceLog.d.ts +28 -0
- package/dist/decisionTraceLog.js +156 -29
- package/dist/decisionTraceLog.js.map +1 -1
- package/dist/drivers/claude/api.js +5 -4
- package/dist/drivers/claude/api.js.map +1 -1
- package/dist/drivers/claude/envSanitizer.d.ts +0 -6
- package/dist/drivers/claude/envSanitizer.js +17 -2
- package/dist/drivers/claude/envSanitizer.js.map +1 -1
- package/dist/drivers/claude/streamParser.js +5 -4
- package/dist/drivers/claude/streamParser.js.map +1 -1
- package/dist/drivers/claude/subprocess.js +22 -3
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +22 -0
- package/dist/drivers/gemini/index.js +256 -129
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/local/index.d.ts +17 -0
- package/dist/drivers/local/index.js +99 -0
- package/dist/drivers/local/index.js.map +1 -1
- package/dist/drivers/openai/index.js +30 -2
- package/dist/drivers/openai/index.js.map +1 -1
- package/dist/extensionClient.d.ts +37 -4
- package/dist/extensionClient.js +58 -16
- package/dist/extensionClient.js.map +1 -1
- package/dist/featureFlags.d.ts +91 -0
- package/dist/featureFlags.js +174 -3
- package/dist/featureFlags.js.map +1 -1
- package/dist/fileLock.js +21 -12
- package/dist/fileLock.js.map +1 -1
- package/dist/fileLockSync.d.ts +67 -0
- package/dist/fileLockSync.js +126 -0
- package/dist/fileLockSync.js.map +1 -0
- package/dist/fp/activityAnalytics.js +26 -12
- package/dist/fp/activityAnalytics.js.map +1 -1
- package/dist/fp/automationInterpreter.d.ts +15 -1
- package/dist/fp/automationInterpreter.js +217 -82
- package/dist/fp/automationInterpreter.js.map +1 -1
- package/dist/fp/automationProgram.d.ts +30 -0
- package/dist/fp/automationProgram.js.map +1 -1
- package/dist/fp/automationState.d.ts +24 -5
- package/dist/fp/automationState.js +56 -9
- package/dist/fp/automationState.js.map +1 -1
- package/dist/fp/automationUtils.js +1 -1
- package/dist/fp/automationUtils.js.map +1 -1
- package/dist/fp/commandDescription.js +7 -1
- package/dist/fp/commandDescription.js.map +1 -1
- package/dist/fp/extensionSnapshot.js +8 -2
- package/dist/fp/extensionSnapshot.js.map +1 -1
- package/dist/fp/interpreterContext.d.ts +66 -1
- package/dist/fp/interpreterContext.js +91 -1
- package/dist/fp/interpreterContext.js.map +1 -1
- package/dist/fp/policyParser.js +29 -1
- package/dist/fp/policyParser.js.map +1 -1
- package/dist/fsWatchWithFallback.d.ts +36 -0
- package/dist/fsWatchWithFallback.js +128 -0
- package/dist/fsWatchWithFallback.js.map +1 -0
- package/dist/haltPushDispatch.d.ts +33 -0
- package/dist/haltPushDispatch.js +103 -0
- package/dist/haltPushDispatch.js.map +1 -0
- package/dist/httpBodyValidation.d.ts +41 -0
- package/dist/httpBodyValidation.js +45 -0
- package/dist/httpBodyValidation.js.map +1 -0
- package/dist/inboxRoutes.d.ts +22 -0
- package/dist/inboxRoutes.js +61 -1
- package/dist/inboxRoutes.js.map +1 -1
- package/dist/index.js +1053 -76
- package/dist/index.js.map +1 -1
- package/dist/installGuard.js +6 -2
- package/dist/installGuard.js.map +1 -1
- package/dist/lockfile.js +31 -4
- package/dist/lockfile.js.map +1 -1
- package/dist/oauth.d.ts +9 -0
- package/dist/oauth.js +33 -0
- package/dist/oauth.js.map +1 -1
- package/dist/oauthRoutes.d.ts +1 -1
- package/dist/oauthRoutes.js +5 -3
- package/dist/oauthRoutes.js.map +1 -1
- package/dist/orchestrator/childBridgeRegistry.js +29 -11
- package/dist/orchestrator/childBridgeRegistry.js.map +1 -1
- package/dist/patchworkConfig.d.ts +44 -1
- package/dist/patchworkConfig.js +28 -3
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/pluginLoader.js +10 -1
- package/dist/pluginLoader.js.map +1 -1
- package/dist/pluginWatcher.js +12 -14
- package/dist/pluginWatcher.js.map +1 -1
- package/dist/preToolUseHook.js +3 -2
- package/dist/preToolUseHook.js.map +1 -1
- package/dist/processTree.d.ts +34 -0
- package/dist/processTree.js +105 -0
- package/dist/processTree.js.map +1 -0
- package/dist/prompts.js +3 -3
- package/dist/prompts.js.map +1 -1
- package/dist/recipeOrchestration.d.ts +9 -0
- package/dist/recipeOrchestration.js +341 -24
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.d.ts +58 -2
- package/dist/recipeRoutes.js +744 -115
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/RecipeOrchestrator.d.ts +2 -0
- package/dist/recipes/RecipeOrchestrator.js +6 -1
- package/dist/recipes/RecipeOrchestrator.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +25 -5
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/chainedRunner.d.ts +2 -0
- package/dist/recipes/chainedRunner.js +142 -5
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/connectorPreflight.d.ts +66 -0
- package/dist/recipes/connectorPreflight.js +169 -0
- package/dist/recipes/connectorPreflight.js.map +1 -0
- package/dist/recipes/dependencyGraph.js +13 -5
- package/dist/recipes/dependencyGraph.js.map +1 -1
- package/dist/recipes/githubInstallSource.d.ts +128 -0
- package/dist/recipes/githubInstallSource.js +206 -0
- package/dist/recipes/githubInstallSource.js.map +1 -0
- package/dist/recipes/haltCategory.d.ts +119 -0
- package/dist/recipes/haltCategory.js +188 -0
- package/dist/recipes/haltCategory.js.map +1 -0
- package/dist/recipes/idempotencyKey.d.ts +134 -0
- package/dist/recipes/idempotencyKey.js +322 -0
- package/dist/recipes/idempotencyKey.js.map +1 -0
- package/dist/recipes/installer.js +48 -2
- package/dist/recipes/installer.js.map +1 -1
- package/dist/recipes/judgeSummary.d.ts +50 -0
- package/dist/recipes/judgeSummary.js +47 -0
- package/dist/recipes/judgeSummary.js.map +1 -0
- package/dist/recipes/judgeVerdict.d.ts +48 -0
- package/dist/recipes/judgeVerdict.js +174 -0
- package/dist/recipes/judgeVerdict.js.map +1 -0
- package/dist/recipes/migrations/index.d.ts +9 -0
- package/dist/recipes/migrations/index.js +133 -0
- package/dist/recipes/migrations/index.js.map +1 -1
- package/dist/recipes/names.d.ts +20 -0
- package/dist/recipes/names.js +25 -0
- package/dist/recipes/names.js.map +1 -1
- package/dist/recipes/parser.js +88 -5
- package/dist/recipes/parser.js.map +1 -1
- package/dist/recipes/replayRun.js +1 -1
- package/dist/recipes/replayRun.js.map +1 -1
- package/dist/recipes/runBudget.d.ts +70 -0
- package/dist/recipes/runBudget.js +109 -0
- package/dist/recipes/runBudget.js.map +1 -0
- package/dist/recipes/scheduler.d.ts +30 -0
- package/dist/recipes/scheduler.js +69 -19
- package/dist/recipes/scheduler.js.map +1 -1
- package/dist/recipes/schema.d.ts +36 -0
- package/dist/recipes/schemaGenerator.js +103 -5
- package/dist/recipes/schemaGenerator.js.map +1 -1
- package/dist/recipes/stepObservation.js +9 -0
- package/dist/recipes/stepObservation.js.map +1 -1
- package/dist/recipes/toolRegistry.js +20 -3
- package/dist/recipes/toolRegistry.js.map +1 -1
- package/dist/recipes/tools/fanOut.d.ts +20 -0
- package/dist/recipes/tools/fanOut.js +199 -0
- package/dist/recipes/tools/fanOut.js.map +1 -0
- package/dist/recipes/tools/file.js +5 -2
- package/dist/recipes/tools/file.js.map +1 -1
- package/dist/recipes/tools/github.d.ts +1 -1
- package/dist/recipes/tools/github.js +75 -1
- package/dist/recipes/tools/github.js.map +1 -1
- package/dist/recipes/tools/gmail.js +27 -5
- package/dist/recipes/tools/gmail.js.map +1 -1
- package/dist/recipes/tools/googleDrive.js +64 -0
- package/dist/recipes/tools/googleDrive.js.map +1 -1
- package/dist/recipes/tools/http.d.ts +10 -0
- package/dist/recipes/tools/http.js +176 -0
- package/dist/recipes/tools/http.js.map +1 -0
- package/dist/recipes/tools/index.d.ts +2 -0
- package/dist/recipes/tools/index.js +2 -0
- package/dist/recipes/tools/index.js.map +1 -1
- package/dist/recipes/tools/slack.js +1 -1
- package/dist/recipes/validation.d.ts +17 -0
- package/dist/recipes/validation.js +29 -11
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/workspaceRoot.d.ts +37 -0
- package/dist/recipes/workspaceRoot.js +73 -0
- package/dist/recipes/workspaceRoot.js.map +1 -0
- package/dist/recipes/yamlPositions.d.ts +56 -0
- package/dist/recipes/yamlPositions.js +183 -0
- package/dist/recipes/yamlPositions.js.map +1 -0
- package/dist/recipes/yamlRunner.d.ts +182 -8
- package/dist/recipes/yamlRunner.js +877 -217
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/recipesHttp.d.ts +19 -3
- package/dist/recipesHttp.js +67 -11
- package/dist/recipesHttp.js.map +1 -1
- package/dist/resources.js +21 -13
- package/dist/resources.js.map +1 -1
- package/dist/runLog.d.ts +58 -5
- package/dist/runLog.js +98 -21
- package/dist/runLog.js.map +1 -1
- package/dist/sanitizeParsedJson.d.ts +39 -0
- package/dist/sanitizeParsedJson.js +55 -0
- package/dist/sanitizeParsedJson.js.map +1 -0
- package/dist/schemas/recipe.v1.json +885 -196
- package/dist/server.d.ts +160 -3
- package/dist/server.js +1099 -122
- package/dist/server.js.map +1 -1
- package/dist/sessionCheckpoint.d.ts +8 -0
- package/dist/sessionCheckpoint.js +33 -3
- package/dist/sessionCheckpoint.js.map +1 -1
- package/dist/ssrfGuard.d.ts +16 -0
- package/dist/ssrfGuard.js +87 -4
- package/dist/ssrfGuard.js.map +1 -1
- package/dist/streamableHttp.d.ts +9 -4
- package/dist/streamableHttp.js +76 -20
- package/dist/streamableHttp.js.map +1 -1
- package/dist/telemetry.js +19 -12
- package/dist/telemetry.js.map +1 -1
- package/dist/testing/shadowRun.d.ts +52 -0
- package/dist/testing/shadowRun.js +71 -0
- package/dist/testing/shadowRun.js.map +1 -0
- package/dist/tools/batchLsp.d.ts +3 -0
- package/dist/tools/bridgeDoctor.d.ts +11 -0
- package/dist/tools/bridgeDoctor.js +48 -2
- package/dist/tools/bridgeDoctor.js.map +1 -1
- package/dist/tools/bridgeStatus.d.ts +0 -12
- package/dist/tools/bridgeStatus.js +2 -28
- package/dist/tools/bridgeStatus.js.map +1 -1
- package/dist/tools/cancelClaudeTask.d.ts +1 -0
- package/dist/tools/clipboard.d.ts +2 -0
- package/dist/tools/closeTabs.d.ts +1 -0
- package/dist/tools/codeLens.d.ts +1 -0
- package/dist/tools/createIssueFromAIComment.d.ts +1 -0
- package/dist/tools/ctxGetTaskContext.d.ts +9 -0
- package/dist/tools/ctxGetTaskContext.js +50 -2
- package/dist/tools/ctxGetTaskContext.js.map +1 -1
- package/dist/tools/ctxQueryTraces.js +32 -24
- package/dist/tools/ctxQueryTraces.js.map +1 -1
- 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/detectUnusedCode.js +9 -7
- package/dist/tools/detectUnusedCode.js.map +1 -1
- package/dist/tools/documentLinks.d.ts +1 -0
- package/dist/tools/editText.d.ts +1 -0
- package/dist/tools/editText.js +2 -1
- package/dist/tools/editText.js.map +1 -1
- package/dist/tools/enrichCommit.d.ts +1 -0
- package/dist/tools/enrichStackTrace.js +11 -5
- package/dist/tools/enrichStackTrace.js.map +1 -1
- package/dist/tools/explainDiagnostic.d.ts +1 -0
- package/dist/tools/explainSymbol.d.ts +1 -0
- package/dist/tools/fileOperations.d.ts +3 -0
- package/dist/tools/fileOperations.js +2 -1
- package/dist/tools/fileOperations.js.map +1 -1
- package/dist/tools/fileWatcher.d.ts +2 -0
- package/dist/tools/fileWatcher.js +8 -2
- package/dist/tools/fileWatcher.js.map +1 -1
- package/dist/tools/findFiles.d.ts +1 -0
- package/dist/tools/fixAllLintErrors.d.ts +1 -0
- package/dist/tools/fixAllLintErrors.js +10 -5
- package/dist/tools/fixAllLintErrors.js.map +1 -1
- package/dist/tools/foldingRanges.d.ts +1 -0
- package/dist/tools/formatDocument.d.ts +1 -0
- package/dist/tools/formatDocument.js +10 -5
- package/dist/tools/formatDocument.js.map +1 -1
- package/dist/tools/generateTests.d.ts +1 -0
- package/dist/tools/getAIComments.d.ts +1 -0
- package/dist/tools/getAnalyticsReport.js +5 -1
- package/dist/tools/getAnalyticsReport.js.map +1 -1
- package/dist/tools/getBufferContent.d.ts +1 -0
- package/dist/tools/getChangeImpact.d.ts +1 -0
- package/dist/tools/getChangeImpact.js +23 -14
- package/dist/tools/getChangeImpact.js.map +1 -1
- package/dist/tools/getClaudeTaskStatus.d.ts +1 -0
- package/dist/tools/getCodeCoverage.d.ts +1 -0
- package/dist/tools/getCodeCoverage.js +32 -14
- package/dist/tools/getCodeCoverage.js.map +1 -1
- package/dist/tools/getCommitsForIssue.d.ts +1 -0
- package/dist/tools/getDebugState.d.ts +1 -0
- package/dist/tools/getDiagnostics.js +32 -29
- package/dist/tools/getDiagnostics.js.map +1 -1
- package/dist/tools/getDiffFromHandoff.js +8 -2
- package/dist/tools/getDiffFromHandoff.js.map +1 -1
- package/dist/tools/getDocumentSymbols.d.ts +1 -0
- package/dist/tools/getGitHotspots.d.ts +1 -0
- package/dist/tools/getImportedSignatures.d.ts +1 -0
- package/dist/tools/getImportedSignatures.js +18 -14
- package/dist/tools/getImportedSignatures.js.map +1 -1
- package/dist/tools/getPRTemplate.d.ts +1 -0
- package/dist/tools/getProjectContext.js +23 -10
- package/dist/tools/getProjectContext.js.map +1 -1
- package/dist/tools/getSymbolHistory.d.ts +1 -0
- package/dist/tools/getToolCapabilities.d.ts +10 -5
- package/dist/tools/getToolCapabilities.js +79 -202
- package/dist/tools/getToolCapabilities.js.map +1 -1
- package/dist/tools/getTypeSignature.d.ts +1 -0
- package/dist/tools/getWorkspaceSettings.d.ts +1 -0
- package/dist/tools/gitWrite.d.ts +11 -0
- package/dist/tools/github/actions.d.ts +2 -0
- package/dist/tools/github/composite.d.ts +3 -0
- package/dist/tools/github/issues.d.ts +4 -0
- package/dist/tools/github/pr.d.ts +7 -0
- package/dist/tools/handoffNote.d.ts +1 -0
- package/dist/tools/handoffNote.js +2 -1
- package/dist/tools/handoffNote.js.map +1 -1
- package/dist/tools/headless/lspClient.js +3 -0
- package/dist/tools/headless/lspClient.js.map +1 -1
- package/dist/tools/hoverAtCursor.d.ts +1 -0
- package/dist/tools/httpClient.d.ts +2 -0
- package/dist/tools/httpClient.js +38 -71
- package/dist/tools/httpClient.js.map +1 -1
- package/dist/tools/inlayHints.d.ts +1 -0
- package/dist/tools/launchQuickTask.d.ts +1 -0
- package/dist/tools/listClaudeTasks.d.ts +1 -0
- package/dist/tools/listClaudeTasks.js +10 -8
- package/dist/tools/listClaudeTasks.js.map +1 -1
- package/dist/tools/listTerminals.d.ts +1 -0
- package/dist/tools/lsp.d.ts +15 -0
- package/dist/tools/lsp.js +17 -0
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/navigateToSymbolByName.d.ts +1 -0
- package/dist/tools/openDiff.d.ts +1 -0
- package/dist/tools/openDiff.js +4 -1
- package/dist/tools/openDiff.js.map +1 -1
- package/dist/tools/openFile.d.ts +1 -0
- package/dist/tools/openFile.js +4 -1
- package/dist/tools/openFile.js.map +1 -1
- package/dist/tools/openInBrowser.js +6 -1
- package/dist/tools/openInBrowser.js.map +1 -1
- package/dist/tools/organizeImports.d.ts +1 -0
- package/dist/tools/organizeImports.js +5 -3
- package/dist/tools/organizeImports.js.map +1 -1
- package/dist/tools/performanceReport.js +5 -3
- package/dist/tools/performanceReport.js.map +1 -1
- package/dist/tools/planPersistence.d.ts +3 -0
- package/dist/tools/planPersistence.js +4 -1
- package/dist/tools/planPersistence.js.map +1 -1
- package/dist/tools/previewEdit.d.ts +1 -0
- package/dist/tools/previewEdit.js +15 -4
- package/dist/tools/previewEdit.js.map +1 -1
- package/dist/tools/recentTracesDigest.js +54 -11
- package/dist/tools/recentTracesDigest.js.map +1 -1
- package/dist/tools/refactorAnalyze.d.ts +1 -0
- package/dist/tools/refactorExtractFunction.js +4 -1
- package/dist/tools/refactorExtractFunction.js.map +1 -1
- package/dist/tools/refactorPreview.d.ts +1 -0
- package/dist/tools/refactorPreview.js +10 -2
- package/dist/tools/refactorPreview.js.map +1 -1
- package/dist/tools/replaceBlock.d.ts +1 -0
- package/dist/tools/replaceBlock.js +2 -1
- package/dist/tools/replaceBlock.js.map +1 -1
- package/dist/tools/resumeClaudeTask.d.ts +1 -0
- package/dist/tools/runClaudeTask.d.ts +1 -0
- package/dist/tools/runTests.js +15 -4
- package/dist/tools/runTests.js.map +1 -1
- package/dist/tools/screenshot.d.ts +1 -0
- package/dist/tools/screenshotAndAnnotate.js +6 -2
- package/dist/tools/screenshotAndAnnotate.js.map +1 -1
- package/dist/tools/searchAndReplace.d.ts +1 -0
- package/dist/tools/searchAndReplace.js +17 -7
- package/dist/tools/searchAndReplace.js.map +1 -1
- package/dist/tools/searchTools.js +20 -19
- 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/signatureHelp.d.ts +1 -0
- package/dist/tools/spawnWorkspace.js +15 -7
- package/dist/tools/spawnWorkspace.js.map +1 -1
- package/dist/tools/terminal.d.ts +6 -0
- package/dist/tools/testRunners/pytest.js +6 -2
- package/dist/tools/testRunners/pytest.js.map +1 -1
- package/dist/tools/testRunners/vitestJest.js +3 -1
- package/dist/tools/testRunners/vitestJest.js.map +1 -1
- package/dist/tools/testTraceToSource.d.ts +1 -0
- package/dist/tools/transaction.d.ts +4 -0
- package/dist/tools/transaction.js +4 -1
- package/dist/tools/transaction.js.map +1 -1
- package/dist/tools/typeHierarchy.d.ts +1 -0
- package/dist/tools/utils.d.ts +18 -0
- package/dist/tools/utils.js +103 -18
- 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/transport.d.ts +3 -1
- package/dist/transport.js +103 -52
- package/dist/transport.js.map +1 -1
- package/dist/winShim.d.ts +34 -0
- package/dist/winShim.js +94 -0
- package/dist/winShim.js.map +1 -0
- package/dist/wireHaltPushDispatch.d.ts +38 -0
- package/dist/wireHaltPushDispatch.js +71 -0
- package/dist/wireHaltPushDispatch.js.map +1 -0
- package/dist/writeFileAtomic.d.ts +23 -0
- package/dist/writeFileAtomic.js +121 -0
- package/dist/writeFileAtomic.js.map +1 -0
- package/package.json +23 -7
- package/scripts/postinstall.mjs +42 -2
- package/scripts/smoke/run-all.mjs +213 -0
- package/scripts/start-all.mjs +572 -0
- package/scripts/start-all.ps1 +209 -0
- package/scripts/start-all.sh +73 -17
- package/scripts/start-orchestrator.ps1 +158 -0
- package/scripts/start-remote.mjs +122 -0
- package/templates/automation-policies/recipe-authoring.json +1 -1
- package/templates/automation-policies/security-first.json +1 -1
- package/templates/automation-policies/strict-lint.json +1 -1
- package/templates/automation-policies/test-driven.json +1 -1
- package/templates/automation-policy.example.json +1 -1
- package/templates/co.patchwork-os.bridge.plist +2 -2
- package/templates/recipes/approval-queue-ui-test.yaml +1 -1
- package/templates/recipes/ctx-loop-test.yaml +1 -1
- package/templates/recipes/fix-errors-on-save.yaml +71 -0
- package/templates/recipes/morning-brief.yaml +5 -2
- package/templates/recipes/project-health-check.yaml +4 -1
- package/templates/recipes/sentry-to-linear.yaml +72 -38
- package/templates/recipes/webhook/apple-watch-health-log.yaml +145 -0
- package/templates/recipes/webhook/customer-escalation.yaml +8 -9
- package/templates/recipes/webhook/meeting-prep.yaml +11 -5
- package/dist/commands/marketplace.d.ts +0 -16
- package/dist/commands/marketplace.js +0 -32
- package/dist/commands/marketplace.js.map +0 -1
- package/dist/recipes/legacyRecipeCompat.d.ts +0 -10
- package/dist/recipes/legacyRecipeCompat.js +0 -131
- package/dist/recipes/legacyRecipeCompat.js.map +0 -1
|
@@ -14,13 +14,20 @@
|
|
|
14
14
|
* file.read — read file into `into` variable (optional: true ok)
|
|
15
15
|
* git.log_since — run git log --oneline --since=<since> (injected for tests)
|
|
16
16
|
* git.stale_branches — list branches with no activity in N days
|
|
17
|
-
* diagnostics.get —
|
|
17
|
+
* diagnostics.get — returns the bridge's LSP diagnostics; in CLI runs
|
|
18
|
+
* (no bridge available) returns a JSON {ok:false,error}
|
|
19
|
+
* payload that the step-error detector flags so the
|
|
20
|
+
* recipe halts rather than silently succeeding.
|
|
18
21
|
*
|
|
19
22
|
* Supported trigger types (for `patchwork recipe run`):
|
|
20
23
|
* manual, cron — both run immediately via CLI
|
|
21
24
|
* git_hook, on_file_save — also runnable manually; trigger context injected
|
|
22
25
|
*/
|
|
26
|
+
import path from "node:path";
|
|
23
27
|
import type { RecipeRunLog } from "../runLog.js";
|
|
28
|
+
import { type AgentResult } from "./agentExecutor.js";
|
|
29
|
+
import { type HaltCategory } from "./haltCategory.js";
|
|
30
|
+
import { WriteEffectLedger } from "./idempotencyKey.js";
|
|
24
31
|
import type { ErrorPolicy } from "./schema.js";
|
|
25
32
|
import "./tools/index.js";
|
|
26
33
|
export interface YamlStep {
|
|
@@ -39,6 +46,23 @@ export interface YamlStep {
|
|
|
39
46
|
* trace queries, etc.).
|
|
40
47
|
*/
|
|
41
48
|
mcpAccess?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* PR3a — judge step (cold-eyes review). When `kind: "judge"` the
|
|
51
|
+
* runner appends a structured-verdict instruction to the prompt and
|
|
52
|
+
* parses the model's response into a `JudgeVerdict`
|
|
53
|
+
* (approve / request_changes / unparseable). The verdict is
|
|
54
|
+
* attached to the step result but **never gates the run** — judge
|
|
55
|
+
* steps always finish with `status: "ok"` regardless of the
|
|
56
|
+
* verdict. This is the augment-only invariant: judges add signal,
|
|
57
|
+
* they don't block.
|
|
58
|
+
*
|
|
59
|
+
* Pair with `reviews: <stepId>` to point the judge at the output
|
|
60
|
+
* of a prior step; the runner injects that step's `output` into
|
|
61
|
+
* the prompt under an `<artefact>` section.
|
|
62
|
+
*/
|
|
63
|
+
kind?: "agent" | "judge";
|
|
64
|
+
/** Step id whose output the judge should review. Required when `kind: "judge"`. */
|
|
65
|
+
reviews?: string;
|
|
42
66
|
};
|
|
43
67
|
into?: string;
|
|
44
68
|
optional?: boolean;
|
|
@@ -55,8 +79,48 @@ export interface YamlStep {
|
|
|
55
79
|
* legitimately returns one of those shapes as a successful result.
|
|
56
80
|
*/
|
|
57
81
|
silentFailDetection?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Per-step assertion block (agentic-workflow slice 2). Evaluated against
|
|
84
|
+
* the step's output value AFTER `transform` is applied and BEFORE `into`
|
|
85
|
+
* commits to ctx — so a failed expect halts the run with the offending
|
|
86
|
+
* value still visible in the step result, but never propagates a bad
|
|
87
|
+
* value downstream. `on_fail: judge` is intentionally NOT supported in
|
|
88
|
+
* v1 — synthesizing a judge to gate a step would violate the
|
|
89
|
+
* augment-only invariant in judgeVerdict.ts.
|
|
90
|
+
*/
|
|
91
|
+
expect?: StepExpect;
|
|
92
|
+
/**
|
|
93
|
+
* Per-step wall-clock timeout in milliseconds. When set, the step's
|
|
94
|
+
* `executeStep` call is wrapped in `Promise.race` against a timer; if
|
|
95
|
+
* the timer wins the step halts with category `step_timeout`. Note:
|
|
96
|
+
* the underlying tool is NOT aborted — it continues running to
|
|
97
|
+
* completion in the background. This is a halt signal, not a process
|
|
98
|
+
* kill; pair with `optional: true` / `on_error.fallback` for fail-open
|
|
99
|
+
* behavior. Agent steps are not currently subject to this timeout.
|
|
100
|
+
*/
|
|
101
|
+
timeout_ms?: number;
|
|
58
102
|
[key: string]: unknown;
|
|
59
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Per-step assertion block. Exactly one of `schema|equals|matches|contains`
|
|
106
|
+
* should be set in v1; multiple set are AND-composed (all must pass).
|
|
107
|
+
*/
|
|
108
|
+
export interface StepExpect {
|
|
109
|
+
/** JSON Schema validated via AJV. Step output is JSON.parse'd first; non-JSON output fails with `expect_failed: not JSON`. */
|
|
110
|
+
schema?: object;
|
|
111
|
+
/** Deep-equal comparison. Strings compared verbatim; objects/arrays compared via JSON canonical form. */
|
|
112
|
+
equals?: unknown;
|
|
113
|
+
/** Regex (string source, no flags) matched against the stringified output. */
|
|
114
|
+
matches?: string;
|
|
115
|
+
/** Substring(s) that must appear in the stringified output. Array → all must be present. */
|
|
116
|
+
contains?: string | string[];
|
|
117
|
+
/**
|
|
118
|
+
* What to do when an assertion fails. `halt` (default) flips the step to
|
|
119
|
+
* status:error with haltReason `expect_failed: ...`. `warn` keeps status
|
|
120
|
+
* but attaches the failure list to `stepResult.expectWarnings`.
|
|
121
|
+
*/
|
|
122
|
+
on_fail?: "halt" | "warn";
|
|
123
|
+
}
|
|
60
124
|
export interface YamlTrigger {
|
|
61
125
|
type: string;
|
|
62
126
|
at?: string;
|
|
@@ -77,6 +141,15 @@ export interface AssertionFailure {
|
|
|
77
141
|
message: string;
|
|
78
142
|
}
|
|
79
143
|
export declare function evaluateExpect(result: Pick<RunResult, "stepsRun" | "outputs" | "context" | "errorMessage">, expect: YamlRecipeExpect): AssertionFailure[];
|
|
144
|
+
/**
|
|
145
|
+
* Evaluate a per-step `expect` block against the step's output value.
|
|
146
|
+
* Returns the list of failure messages (empty = all assertions passed).
|
|
147
|
+
*
|
|
148
|
+
* Slice 2 of the agentic-workflow primitives. v1 supports
|
|
149
|
+
* schema/equals/matches/contains; `on_fail: judge` deliberately omitted —
|
|
150
|
+
* see comment on `StepExpect`.
|
|
151
|
+
*/
|
|
152
|
+
export declare function evaluateStepExpect(expect: StepExpect, value: unknown): Promise<string[]>;
|
|
80
153
|
export interface YamlRecipe {
|
|
81
154
|
name: string;
|
|
82
155
|
description?: string;
|
|
@@ -88,7 +161,15 @@ export interface YamlRecipe {
|
|
|
88
161
|
};
|
|
89
162
|
/** Plugin specs (npm package name or local path) to load before running steps. */
|
|
90
163
|
servers?: string[];
|
|
164
|
+
/**
|
|
165
|
+
* Acknowledge write-tool steps so preflight does not flag them. Each entry
|
|
166
|
+
* is a tool id (e.g. "file.write") or a namespace (e.g. "slack"). Merged
|
|
167
|
+
* with any --allow-write CLI flags at preflight time.
|
|
168
|
+
*/
|
|
169
|
+
allowWrites?: string[];
|
|
91
170
|
on_error?: ErrorPolicy;
|
|
171
|
+
/** PR2b — per-recipe token budget (see `BudgetPolicy` in schema.ts). */
|
|
172
|
+
budget?: import("./schema.js").BudgetPolicy;
|
|
92
173
|
}
|
|
93
174
|
export type RunContext = Record<string, string>;
|
|
94
175
|
export type FetchFn = (url: string, init?: {
|
|
@@ -127,26 +208,55 @@ export interface RunnerDeps {
|
|
|
127
208
|
* (they fall back to constructing a local log + `appendDirect`).
|
|
128
209
|
*/
|
|
129
210
|
runLog?: RecipeRunLog;
|
|
130
|
-
/**
|
|
131
|
-
|
|
211
|
+
/**
|
|
212
|
+
* Live-tail broadcaster for recipe + step lifecycle events. When
|
|
213
|
+
* supplied, the runner emits `recipe_started`, `recipe_step_start`,
|
|
214
|
+
* `recipe_step_done`, and `recipe_done` lifecycle events to the
|
|
215
|
+
* activity log, which the bridge proxies to dashboard SSE
|
|
216
|
+
* subscribers via /stream. Previously only `chainedRunner` emitted
|
|
217
|
+
* step events; flat YAML recipes (the common case) ran silent.
|
|
218
|
+
* Pass `bridge.activityLog`.
|
|
219
|
+
*/
|
|
220
|
+
activityLog?: import("../activityLog.js").ActivityLog;
|
|
221
|
+
/**
|
|
222
|
+
* Optional Anthropic API caller for agent steps. Defaults to fetch-based
|
|
223
|
+
* impl. May return either a raw string (legacy / tests) or `AgentResult`
|
|
224
|
+
* carrying usage tokens (bridge wrappers, real adapters). The runner
|
|
225
|
+
* normalises at the executor boundary — see PR2a.
|
|
226
|
+
*/
|
|
227
|
+
claudeFn?: (prompt: string, model: string) => Promise<string | AgentResult>;
|
|
132
228
|
/** Optional Claude Code CLI caller for agent steps with driver: claude-code. */
|
|
133
229
|
claudeCodeFn?: (prompt: string, opts?: {
|
|
134
230
|
mcpAccess?: boolean;
|
|
135
|
-
}) => Promise<string>;
|
|
231
|
+
}) => Promise<string | AgentResult>;
|
|
136
232
|
/** Optional local LLM caller (Ollama / LM Studio) for agent steps with driver: local or model: local. */
|
|
137
|
-
localFn?: (prompt: string, model: string) => Promise<string>;
|
|
233
|
+
localFn?: (prompt: string, model: string) => Promise<string | AgentResult>;
|
|
138
234
|
/**
|
|
139
235
|
* Optional provider driver invoker for agent steps with driver: openai|grok|gemini.
|
|
140
236
|
* Dispatches to src/drivers/* under the hood. If not provided, the runner will
|
|
141
237
|
* lazily construct a driver via createDriver() from drivers/index.js.
|
|
142
238
|
*/
|
|
143
|
-
providerDriverFn?: (driverName: "openai" | "grok" | "gemini", prompt: string, model: string | undefined) => Promise<string>;
|
|
239
|
+
providerDriverFn?: (driverName: "openai" | "grok" | "gemini", prompt: string, model: string | undefined) => Promise<string | AgentResult>;
|
|
144
240
|
/** Mock connector replays used by `patchwork recipe test`. */
|
|
145
241
|
mockConnectors?: Partial<Record<string, MockToolConnector>>;
|
|
146
242
|
/** Directory to store recorded connector fixtures for `patchwork recipe record`. */
|
|
147
243
|
recordFixturesDir?: string;
|
|
148
244
|
/** Suppress run logs / notifications for mocked recipe test execution. */
|
|
149
245
|
testMode?: boolean;
|
|
246
|
+
/**
|
|
247
|
+
* PR5b — when set, write-effect dedup persists to
|
|
248
|
+
* `${ledgerDir}/effect_ledger.jsonl` and is rehydrated on construction
|
|
249
|
+
* for the scope `${recipe.name}:${manualRunId}`. Requires `manualRunId`
|
|
250
|
+
* to actually go to disk; without it the ledger stays in-memory.
|
|
251
|
+
*/
|
|
252
|
+
ledgerDir?: string;
|
|
253
|
+
/**
|
|
254
|
+
* PR5b — stable id for one *logical* user-initiated execution attempt.
|
|
255
|
+
* Composed with `recipe.name` into the disk-ledger scope key so a
|
|
256
|
+
* retry of the same attempt re-uses prior dedup records (resume
|
|
257
|
+
* semantics). Caller-supplied; left unset for cron / webhook runs.
|
|
258
|
+
*/
|
|
259
|
+
manualRunId?: string;
|
|
150
260
|
}
|
|
151
261
|
export interface RunResult {
|
|
152
262
|
recipe: string;
|
|
@@ -162,6 +272,13 @@ export type StepResult = {
|
|
|
162
272
|
tool?: string;
|
|
163
273
|
status: "ok" | "skipped" | "error";
|
|
164
274
|
error?: string;
|
|
275
|
+
/**
|
|
276
|
+
* PR3a — judge-step verdict, present only when `step.agent.kind ===
|
|
277
|
+
* "judge"`. Augment-only: a `request_changes` verdict still
|
|
278
|
+
* produces `status: "ok"`. Surfaced separately in dashboard panels
|
|
279
|
+
* and `bridge_recipe_judgments` metrics (forthcoming PR3b/c).
|
|
280
|
+
*/
|
|
281
|
+
judgeVerdict?: import("./judgeVerdict.js").JudgeVerdict;
|
|
165
282
|
/**
|
|
166
283
|
* Structured error code propagated from a thrown step error. Currently
|
|
167
284
|
* populated for `recipe_path_jail_escape` (G-security A-PR1) so tests
|
|
@@ -169,15 +286,58 @@ export type StepResult = {
|
|
|
169
286
|
* (R2 M-4). Other codes may follow.
|
|
170
287
|
*/
|
|
171
288
|
errorCode?: string;
|
|
289
|
+
/**
|
|
290
|
+
* One-sentence, human-actionable halt reason — what stopped the step and
|
|
291
|
+
* why, phrased so a tired human at 7am can act on it without reading the
|
|
292
|
+
* raw `error` stack/message. Populated only for `status: "error"` rows.
|
|
293
|
+
* Categories: agent silent-fail, agent narration-only, agent threw, tool
|
|
294
|
+
* threw, tool reported error. Foundation for the inbox morning-summary
|
|
295
|
+
* (Val "halt cleanly with reason" idea, refined per plan review).
|
|
296
|
+
*/
|
|
297
|
+
haltReason?: string;
|
|
298
|
+
/**
|
|
299
|
+
* Pre-tagged category for this halt — set at the throw site so
|
|
300
|
+
* `summariseHalts` / the emit path don't need to re-derive it via
|
|
301
|
+
* free-text regex. Falls back to `categoriseHaltReason(haltReason)`
|
|
302
|
+
* when absent (e.g. legacy persisted run-log rows).
|
|
303
|
+
*/
|
|
304
|
+
haltCategory?: HaltCategory;
|
|
305
|
+
/**
|
|
306
|
+
* Slice 2 — per-step `expect` block warnings when `on_fail: warn` is set.
|
|
307
|
+
* Each entry is a one-line failure message (assertion that did not pass).
|
|
308
|
+
* Populated only when the step's status remains `ok` despite an expect
|
|
309
|
+
* mismatch. For `on_fail: halt` the failures are folded into `haltReason`
|
|
310
|
+
* instead and this stays undefined.
|
|
311
|
+
*/
|
|
312
|
+
expectWarnings?: string[];
|
|
172
313
|
durationMs: number;
|
|
173
314
|
};
|
|
174
|
-
export type StepDeps = Required<Omit<RunnerDeps, "now" | "logDir" | "recordFixturesDir" | "runLog">> & {
|
|
315
|
+
export type StepDeps = Required<Omit<RunnerDeps, "now" | "logDir" | "recordFixturesDir" | "runLog" | "ledgerDir" | "manualRunId" | "activityLog">> & {
|
|
175
316
|
workdir: string;
|
|
176
317
|
logDir?: string;
|
|
177
318
|
recordFixturesDir?: string;
|
|
178
319
|
runLog?: RecipeRunLog;
|
|
179
320
|
testMode: boolean;
|
|
321
|
+
/**
|
|
322
|
+
* PR5a — per-run idempotency ledger. When present, `executeTool`
|
|
323
|
+
* short-circuits duplicate write-tool calls (same toolId + params)
|
|
324
|
+
* within the run, returning the cached output instead of re-invoking
|
|
325
|
+
* the tool. Constructed at run start in `runYamlRecipe` /
|
|
326
|
+
* `runChainedRecipe`; discarded when the run completes.
|
|
327
|
+
*/
|
|
328
|
+
writeEffectLedger?: WriteEffectLedger;
|
|
180
329
|
};
|
|
330
|
+
/**
|
|
331
|
+
* Phase 0β — separator-agnostic inbox-path detector. Extracted so the
|
|
332
|
+
* Windows path-separator behaviour can be unit-tested by injecting
|
|
333
|
+
* `path.win32` / `path.posix` without booting a real recipe runner.
|
|
334
|
+
*
|
|
335
|
+
* Returns true when `candidate` resolves to a direct child of
|
|
336
|
+
* `inboxDirAbs`, isn't a dotfile, and lives in (not above) the inbox
|
|
337
|
+
* dir. Both arguments must already be platform-appropriate absolute
|
|
338
|
+
* paths (resolve them with the same path module before calling).
|
|
339
|
+
*/
|
|
340
|
+
export declare function isInboxPathFor(candidate: string, inboxDirAbs: string, pathMod: typeof path): boolean;
|
|
181
341
|
export declare function loadYamlRecipe(filePath: string): YamlRecipe;
|
|
182
342
|
export declare function validateYamlRecipe(raw: unknown): YamlRecipe;
|
|
183
343
|
/**
|
|
@@ -191,6 +351,20 @@ export declare function executeStep(step: YamlStep, ctx: RunContext, deps: StepD
|
|
|
191
351
|
export declare function render(template: string, ctx: RunContext): string;
|
|
192
352
|
export declare function defaultGitLogSince(since: string, workdir?: string): string;
|
|
193
353
|
export declare function defaultGitStaleBranches(days: number, workdir?: string): string;
|
|
354
|
+
/**
|
|
355
|
+
* Resolve the `claude` binary path with override precedence:
|
|
356
|
+
* 1. PATCHWORK_CLAUDE_BINARY env var (set by the bridge LaunchAgent
|
|
357
|
+
* or any wrapper script)
|
|
358
|
+
* 2. `~/.patchwork/config.json` `claudeBinary` field
|
|
359
|
+
* 3. plain `"claude"` (PATH lookup — pre-existing default)
|
|
360
|
+
*
|
|
361
|
+
* Resolved per-call, not memoised, so config edits + env-var changes
|
|
362
|
+
* take effect on the next agent step without a bridge restart.
|
|
363
|
+
*/
|
|
364
|
+
export declare function resolveClaudeBinary(): string;
|
|
365
|
+
export declare function defaultClaudeCodeFn(prompt: string, opts?: {
|
|
366
|
+
mcpAccess?: boolean;
|
|
367
|
+
}): Promise<string>;
|
|
194
368
|
/**
|
|
195
369
|
* Build ExecutionDeps for ChainedRecipeRunner backed by the yamlRunner step
|
|
196
370
|
* handlers. This lets chained recipes use the same tool set (file.*, git.*,
|
|
@@ -201,7 +375,7 @@ export declare function defaultGitStaleBranches(days: number, workdir?: string):
|
|
|
201
375
|
*/
|
|
202
376
|
export declare function buildChainedDeps(runnerDeps: RunnerDeps, claudeCodeFnOverride?: (prompt: string, opts?: {
|
|
203
377
|
mcpAccess?: boolean;
|
|
204
|
-
}) => Promise<string>): import("./chainedRunner.js").ExecutionDeps;
|
|
378
|
+
}) => Promise<string | AgentResult>): import("./chainedRunner.js").ExecutionDeps;
|
|
205
379
|
/**
|
|
206
380
|
* Dispatch a loaded recipe to the appropriate runner.
|
|
207
381
|
*
|