patchwork-os 0.2.0-beta.9.canary.92 → 1.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.bridge.md +15 -16
- package/README.md +46 -458
- package/dist/activationMetrics.js +2 -3
- package/dist/activationMetrics.js.map +1 -1
- package/dist/activityLog.d.ts +1 -0
- package/dist/activityLog.js +8 -3
- package/dist/activityLog.js.map +1 -1
- package/dist/adapters/gemini.js +2 -2
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/grok.js +6 -1
- package/dist/adapters/grok.js.map +1 -1
- package/dist/adapters/openai.js +4 -0
- package/dist/adapters/openai.js.map +1 -1
- package/dist/approvalHttp.d.ts +9 -0
- package/dist/approvalHttp.js +210 -171
- package/dist/approvalHttp.js.map +1 -1
- package/dist/approvalKpi.d.ts +102 -0
- package/dist/approvalKpi.js +282 -0
- package/dist/approvalKpi.js.map +1 -0
- package/dist/approvalQueue.d.ts +1 -1
- package/dist/approvalQueue.js.map +1 -1
- package/dist/automation.d.ts +45 -4
- package/dist/automation.js +123 -15
- package/dist/automation.js.map +1 -1
- package/dist/bridge.d.ts +10 -0
- package/dist/bridge.js +225 -46
- package/dist/bridge.js.map +1 -1
- package/dist/bridgeLockDiscovery.d.ts +16 -1
- package/dist/bridgeLockDiscovery.js +38 -4
- package/dist/bridgeLockDiscovery.js.map +1 -1
- package/dist/bridgeToolsRules.js +3 -18
- package/dist/bridgeToolsRules.js.map +1 -1
- package/dist/claudeAuthHttp.d.ts +25 -0
- package/dist/claudeAuthHttp.js +219 -0
- package/dist/claudeAuthHttp.js.map +1 -0
- package/dist/claudeDriver.js +4 -1
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +15 -0
- package/dist/claudeOrchestrator.js +44 -0
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/connect.d.ts +47 -0
- package/dist/commands/connect.js +419 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/install.js +3 -10
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/launchd.d.ts +7 -0
- package/dist/commands/launchd.js +20 -2
- package/dist/commands/launchd.js.map +1 -1
- package/dist/commands/patchworkInit.d.ts +7 -0
- package/dist/commands/patchworkInit.js +26 -0
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/recipe.d.ts +59 -4
- package/dist/commands/recipe.js +206 -5
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.d.ts +9 -0
- package/dist/commands/recipeInstall.js +56 -3
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/commands/task.d.ts +25 -0
- package/dist/commands/task.js +61 -41
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/tokenEfficiency.d.ts +4 -0
- package/dist/commands/tokenEfficiency.js +23 -26
- package/dist/commands/tokenEfficiency.js.map +1 -1
- package/dist/commands/tracesExport.d.ts +15 -1
- package/dist/commands/tracesExport.js +39 -5
- package/dist/commands/tracesExport.js.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/connectorRoutes.js +613 -62
- package/dist/connectorRoutes.js.map +1 -1
- package/dist/connectors/asana.js +9 -3
- package/dist/connectors/asana.js.map +1 -1
- package/dist/connectors/baseConnector.d.ts +16 -0
- package/dist/connectors/baseConnector.js +2 -0
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/caldiy.js +34 -0
- package/dist/connectors/caldiy.js.map +1 -1
- package/dist/connectors/confluence.js +9 -2
- package/dist/connectors/confluence.js.map +1 -1
- package/dist/connectors/connectorActivity.d.ts +24 -0
- package/dist/connectors/connectorActivity.js +32 -0
- package/dist/connectors/connectorActivity.js.map +1 -0
- package/dist/connectors/connectorRedirectUri.js +22 -2
- package/dist/connectors/connectorRedirectUri.js.map +1 -1
- package/dist/connectors/connectorRegistry.d.ts +0 -3
- package/dist/connectors/connectorRegistry.js +8 -8
- package/dist/connectors/connectorRegistry.js.map +1 -1
- package/dist/connectors/datadog.js +8 -1
- package/dist/connectors/datadog.js.map +1 -1
- package/dist/connectors/discord.js +4 -3
- package/dist/connectors/discord.js.map +1 -1
- package/dist/connectors/elasticsearch.js +22 -0
- package/dist/connectors/elasticsearch.js.map +1 -1
- package/dist/connectors/github.d.ts +38 -0
- package/dist/connectors/github.js +91 -5
- package/dist/connectors/github.js.map +1 -1
- package/dist/connectors/gitlab.js +19 -16
- package/dist/connectors/gitlab.js.map +1 -1
- package/dist/connectors/gmail.d.ts +5 -0
- package/dist/connectors/gmail.js +53 -11
- package/dist/connectors/gmail.js.map +1 -1
- package/dist/connectors/googleCalendar.js +5 -4
- package/dist/connectors/googleCalendar.js.map +1 -1
- package/dist/connectors/googleDocs.js +7 -6
- package/dist/connectors/googleDocs.js.map +1 -1
- package/dist/connectors/googleDrive.js +15 -8
- package/dist/connectors/googleDrive.js.map +1 -1
- package/dist/connectors/grafana.js +39 -3
- package/dist/connectors/grafana.js.map +1 -1
- package/dist/connectors/jira.d.ts +1 -1
- package/dist/connectors/jira.js +19 -4
- package/dist/connectors/jira.js.map +1 -1
- package/dist/connectors/linear.js +2 -2
- package/dist/connectors/linear.js.map +1 -1
- package/dist/connectors/mcpClient.d.ts +29 -1
- package/dist/connectors/mcpClient.js +114 -44
- package/dist/connectors/mcpClient.js.map +1 -1
- package/dist/connectors/mcpOAuth.d.ts +1 -0
- package/dist/connectors/mcpOAuth.js +49 -4
- package/dist/connectors/mcpOAuth.js.map +1 -1
- package/dist/connectors/monday.js +5 -4
- package/dist/connectors/monday.js.map +1 -1
- package/dist/connectors/mongodb.js +32 -5
- package/dist/connectors/mongodb.js.map +1 -1
- package/dist/connectors/notion.d.ts +1 -1
- package/dist/connectors/notion.js +22 -6
- package/dist/connectors/notion.js.map +1 -1
- package/dist/connectors/oauthError.d.ts +17 -0
- package/dist/connectors/oauthError.js +50 -0
- package/dist/connectors/oauthError.js.map +1 -0
- package/dist/connectors/postgres.d.ts +7 -0
- package/dist/connectors/postgres.js +32 -2
- package/dist/connectors/postgres.js.map +1 -1
- package/dist/connectors/posthog.js +26 -0
- package/dist/connectors/posthog.js.map +1 -1
- package/dist/connectors/redis.d.ts +1 -0
- package/dist/connectors/redis.js +47 -20
- package/dist/connectors/redis.js.map +1 -1
- package/dist/connectors/salesforce.js +66 -5
- package/dist/connectors/salesforce.js.map +1 -1
- package/dist/connectors/sentry.js +2 -2
- package/dist/connectors/sentry.js.map +1 -1
- package/dist/connectors/slack.js +37 -14
- package/dist/connectors/slack.js.map +1 -1
- package/dist/connectors/snowflake.js +24 -0
- package/dist/connectors/snowflake.js.map +1 -1
- package/dist/connectors/stripe.js +9 -2
- package/dist/connectors/stripe.js.map +1 -1
- package/dist/connectors/supabase.js +34 -0
- package/dist/connectors/supabase.js.map +1 -1
- package/dist/connectors/tokenStorage.d.ts +20 -0
- package/dist/connectors/tokenStorage.js +196 -64
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/connectors/woocommerce.js +34 -0
- package/dist/connectors/woocommerce.js.map +1 -1
- package/dist/copilot/parseIntent.d.ts +58 -0
- package/dist/copilot/parseIntent.js +149 -0
- package/dist/copilot/parseIntent.js.map +1 -0
- package/dist/decisionReplay.d.ts +8 -6
- package/dist/decisionReplay.js +35 -11
- package/dist/decisionReplay.js.map +1 -1
- package/dist/decisionTraceLog.d.ts +9 -0
- package/dist/decisionTraceLog.js +6 -0
- package/dist/decisionTraceLog.js.map +1 -1
- package/dist/drivers/claude/api.js +49 -7
- package/dist/drivers/claude/api.js.map +1 -1
- package/dist/drivers/claude/envSanitizer.d.ts +9 -1
- package/dist/drivers/claude/envSanitizer.js +41 -3
- package/dist/drivers/claude/envSanitizer.js.map +1 -1
- package/dist/drivers/claude/streamParser.d.ts +13 -0
- package/dist/drivers/claude/streamParser.js.map +1 -1
- package/dist/drivers/claude/subprocess.js +131 -16
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/claude/subprocessSettings.d.ts +1 -1
- package/dist/drivers/claude/subprocessSettings.js +18 -4
- package/dist/drivers/claude/subprocessSettings.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +13 -0
- package/dist/drivers/gemini/index.js +211 -67
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/local/index.d.ts +2 -17
- package/dist/drivers/local/index.js +5 -92
- package/dist/drivers/local/index.js.map +1 -1
- package/dist/drivers/openai/index.js +69 -9
- package/dist/drivers/openai/index.js.map +1 -1
- package/dist/drivers/outputCap.d.ts +27 -0
- package/dist/drivers/outputCap.js +50 -0
- package/dist/drivers/outputCap.js.map +1 -0
- package/dist/embeddings/cosine.d.ts +23 -0
- package/dist/embeddings/cosine.js +59 -0
- package/dist/embeddings/cosine.js.map +1 -0
- package/dist/embeddings/index.d.ts +19 -0
- package/dist/embeddings/index.js +35 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/localEmbeddings.d.ts +29 -0
- package/dist/embeddings/localEmbeddings.js +103 -0
- package/dist/embeddings/localEmbeddings.js.map +1 -0
- package/dist/embeddings/localEndpoints.d.ts +24 -0
- package/dist/embeddings/localEndpoints.js +37 -0
- package/dist/embeddings/localEndpoints.js.map +1 -0
- package/dist/embeddings/types.d.ts +32 -0
- package/dist/embeddings/types.js +12 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/featureFlags.d.ts +18 -0
- package/dist/featureFlags.js +32 -0
- package/dist/featureFlags.js.map +1 -1
- package/dist/fp/automationInterpreter.js +118 -39
- package/dist/fp/automationInterpreter.js.map +1 -1
- package/dist/fp/automationProgram.d.ts +10 -0
- package/dist/fp/automationProgram.js.map +1 -1
- package/dist/fp/automationState.d.ts +6 -0
- package/dist/fp/automationState.js +38 -0
- package/dist/fp/automationState.js.map +1 -1
- package/dist/fp/commandDescription.d.ts +6 -0
- package/dist/fp/commandDescription.js +18 -5
- package/dist/fp/commandDescription.js.map +1 -1
- package/dist/fp/interpreterContext.d.ts +16 -5
- package/dist/fp/interpreterContext.js +59 -3
- package/dist/fp/interpreterContext.js.map +1 -1
- package/dist/fp/policyParser.js +18 -8
- package/dist/fp/policyParser.js.map +1 -1
- package/dist/haltPushDispatch.d.ts +4 -0
- package/dist/haltPushDispatch.js +7 -22
- package/dist/haltPushDispatch.js.map +1 -1
- package/dist/inboxRoutes.js +2 -2
- package/dist/inboxRoutes.js.map +1 -1
- package/dist/index.js +672 -135
- package/dist/index.js.map +1 -1
- package/dist/installGuard.js +6 -0
- package/dist/installGuard.js.map +1 -1
- package/dist/localEndpointGuard.d.ts +25 -0
- package/dist/localEndpointGuard.js +101 -0
- package/dist/localEndpointGuard.js.map +1 -0
- package/dist/mcpRoutes.js +1 -1
- package/dist/mcpRoutes.js.map +1 -1
- package/dist/oauth.d.ts +13 -0
- package/dist/oauth.js +53 -9
- package/dist/oauth.js.map +1 -1
- package/dist/orchestrator/childBridgeClient.d.ts +7 -0
- package/dist/orchestrator/childBridgeClient.js +42 -1
- package/dist/orchestrator/childBridgeClient.js.map +1 -1
- package/dist/orchestrator/orchestratorBridge.d.ts +33 -0
- package/dist/orchestrator/orchestratorBridge.js +75 -9
- package/dist/orchestrator/orchestratorBridge.js.map +1 -1
- package/dist/patchworkConfig.d.ts +4 -0
- package/dist/patchworkConfig.js +33 -4
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/probe.js +39 -5
- package/dist/probe.js.map +1 -1
- package/dist/recipeOrchestration.d.ts +59 -0
- package/dist/recipeOrchestration.js +314 -60
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.d.ts +93 -0
- package/dist/recipeRoutes.js +664 -27
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/RecipeOrchestrator.d.ts +14 -0
- package/dist/recipes/RecipeOrchestrator.js +42 -2
- package/dist/recipes/RecipeOrchestrator.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +51 -2
- package/dist/recipes/agentExecutor.js +86 -13
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/chainedRunner.d.ts +111 -3
- package/dist/recipes/chainedRunner.js +440 -45
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/compiler.js +42 -29
- package/dist/recipes/compiler.js.map +1 -1
- package/dist/recipes/connectorPreflight.js +31 -0
- package/dist/recipes/connectorPreflight.js.map +1 -1
- package/dist/recipes/dependencyGraph.d.ts +16 -0
- package/dist/recipes/dependencyGraph.js +37 -2
- package/dist/recipes/dependencyGraph.js.map +1 -1
- package/dist/recipes/eventTriggerPrograms.d.ts +36 -0
- package/dist/recipes/eventTriggerPrograms.js +158 -0
- package/dist/recipes/eventTriggerPrograms.js.map +1 -0
- package/dist/recipes/githubInstallSource.d.ts +9 -2
- package/dist/recipes/githubInstallSource.js +36 -6
- package/dist/recipes/githubInstallSource.js.map +1 -1
- package/dist/recipes/haltCategory.d.ts +10 -0
- package/dist/recipes/haltCategory.js +11 -1
- package/dist/recipes/haltCategory.js.map +1 -1
- package/dist/recipes/idempotencyKey.d.ts +30 -3
- package/dist/recipes/idempotencyKey.js +89 -5
- package/dist/recipes/idempotencyKey.js.map +1 -1
- package/dist/recipes/installer.js +12 -35
- package/dist/recipes/installer.js.map +1 -1
- package/dist/recipes/judgeVerdict.d.ts +11 -1
- package/dist/recipes/judgeVerdict.js +47 -7
- package/dist/recipes/judgeVerdict.js.map +1 -1
- package/dist/recipes/names.d.ts +5 -0
- package/dist/recipes/names.js +10 -5
- package/dist/recipes/names.js.map +1 -1
- package/dist/recipes/parser.js +74 -10
- package/dist/recipes/parser.js.map +1 -1
- package/dist/recipes/pricing/costRouter.d.ts +43 -0
- package/dist/recipes/pricing/costRouter.js +44 -0
- package/dist/recipes/pricing/costRouter.js.map +1 -0
- package/dist/recipes/pricing/priceTable.d.ts +76 -0
- package/dist/recipes/pricing/priceTable.js +144 -0
- package/dist/recipes/pricing/priceTable.js.map +1 -0
- package/dist/recipes/replayRun.js +5 -2
- package/dist/recipes/replayRun.js.map +1 -1
- package/dist/recipes/resolveRecipePath.js +15 -1
- package/dist/recipes/resolveRecipePath.js.map +1 -1
- package/dist/recipes/runBudget.d.ts +93 -32
- package/dist/recipes/runBudget.js +213 -49
- package/dist/recipes/runBudget.js.map +1 -1
- package/dist/recipes/runRegistry.d.ts +32 -0
- package/dist/recipes/runRegistry.js +54 -0
- package/dist/recipes/runRegistry.js.map +1 -0
- package/dist/recipes/scheduler.js +6 -2
- package/dist/recipes/scheduler.js.map +1 -1
- package/dist/recipes/schema.d.ts +59 -6
- package/dist/recipes/schemaGenerator.d.ts +9 -0
- package/dist/recipes/schemaGenerator.js +446 -77
- package/dist/recipes/schemaGenerator.js.map +1 -1
- package/dist/recipes/simulation/aggregateRunRisk.d.ts +46 -0
- package/dist/recipes/simulation/aggregateRunRisk.js +120 -0
- package/dist/recipes/simulation/aggregateRunRisk.js.map +1 -0
- package/dist/recipes/simulation/costProjector.d.ts +32 -0
- package/dist/recipes/simulation/costProjector.js +194 -0
- package/dist/recipes/simulation/costProjector.js.map +1 -0
- package/dist/recipes/simulation/sideEffects.d.ts +32 -0
- package/dist/recipes/simulation/sideEffects.js +62 -0
- package/dist/recipes/simulation/sideEffects.js.map +1 -0
- package/dist/recipes/simulation/simulate.d.ts +36 -0
- package/dist/recipes/simulation/simulate.js +264 -0
- package/dist/recipes/simulation/simulate.js.map +1 -0
- package/dist/recipes/simulation/simulateMockedRun.d.ts +52 -0
- package/dist/recipes/simulation/simulateMockedRun.js +84 -0
- package/dist/recipes/simulation/simulateMockedRun.js.map +1 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.d.ts +31 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.js +50 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.js.map +1 -0
- package/dist/recipes/simulation/types.d.ts +198 -0
- package/dist/recipes/simulation/types.js +30 -0
- package/dist/recipes/simulation/types.js.map +1 -0
- package/dist/recipes/stepObservation.d.ts +12 -0
- package/dist/recipes/stepObservation.js +21 -1
- package/dist/recipes/stepObservation.js.map +1 -1
- package/dist/recipes/toolRegistry.js +61 -24
- package/dist/recipes/toolRegistry.js.map +1 -1
- package/dist/recipes/tools/airtable.d.ts +15 -0
- package/dist/recipes/tools/airtable.js +240 -0
- package/dist/recipes/tools/airtable.js.map +1 -0
- package/dist/recipes/tools/caldiy.d.ts +13 -0
- package/dist/recipes/tools/caldiy.js +215 -0
- package/dist/recipes/tools/caldiy.js.map +1 -0
- package/dist/recipes/tools/circleci.d.ts +10 -0
- package/dist/recipes/tools/circleci.js +204 -0
- package/dist/recipes/tools/circleci.js.map +1 -0
- package/dist/recipes/tools/cloudflare.d.ts +13 -0
- package/dist/recipes/tools/cloudflare.js +211 -0
- package/dist/recipes/tools/cloudflare.js.map +1 -0
- package/dist/recipes/tools/confluence.js +11 -10
- package/dist/recipes/tools/confluence.js.map +1 -1
- package/dist/recipes/tools/datadog.js +13 -12
- package/dist/recipes/tools/datadog.js.map +1 -1
- package/dist/recipes/tools/docs.d.ts +18 -0
- package/dist/recipes/tools/docs.js +95 -0
- package/dist/recipes/tools/docs.js.map +1 -0
- package/dist/recipes/tools/elasticsearch.d.ts +11 -0
- package/dist/recipes/tools/elasticsearch.js +157 -0
- package/dist/recipes/tools/elasticsearch.js.map +1 -0
- package/dist/recipes/tools/fanOut.js +4 -4
- package/dist/recipes/tools/fanOut.js.map +1 -1
- package/dist/recipes/tools/figma.d.ts +12 -0
- package/dist/recipes/tools/figma.js +195 -0
- package/dist/recipes/tools/figma.js.map +1 -0
- package/dist/recipes/tools/file.js +43 -22
- package/dist/recipes/tools/file.js.map +1 -1
- package/dist/recipes/tools/github.js +162 -5
- package/dist/recipes/tools/github.js.map +1 -1
- package/dist/recipes/tools/gmail.js +45 -33
- package/dist/recipes/tools/gmail.js.map +1 -1
- package/dist/recipes/tools/grafana.d.ts +11 -0
- package/dist/recipes/tools/grafana.js +216 -0
- package/dist/recipes/tools/grafana.js.map +1 -0
- package/dist/recipes/tools/http.d.ts +1 -1
- package/dist/recipes/tools/http.js +10 -28
- package/dist/recipes/tools/http.js.map +1 -1
- package/dist/recipes/tools/hubspot.js +13 -12
- package/dist/recipes/tools/hubspot.js.map +1 -1
- package/dist/recipes/tools/index.d.ts +28 -0
- package/dist/recipes/tools/index.js +28 -0
- package/dist/recipes/tools/index.js.map +1 -1
- package/dist/recipes/tools/intercom.js +11 -10
- package/dist/recipes/tools/intercom.js.map +1 -1
- package/dist/recipes/tools/jira.js +13 -0
- package/dist/recipes/tools/jira.js.map +1 -1
- package/dist/recipes/tools/meetingNotes.js +2 -2
- package/dist/recipes/tools/monday.d.ts +22 -0
- package/dist/recipes/tools/monday.js +242 -0
- package/dist/recipes/tools/monday.js.map +1 -0
- package/dist/recipes/tools/mongodb.d.ts +19 -0
- package/dist/recipes/tools/mongodb.js +194 -0
- package/dist/recipes/tools/mongodb.js.map +1 -0
- package/dist/recipes/tools/notion.js +11 -10
- package/dist/recipes/tools/notion.js.map +1 -1
- package/dist/recipes/tools/obsidian.d.ts +15 -0
- package/dist/recipes/tools/obsidian.js +173 -0
- package/dist/recipes/tools/obsidian.js.map +1 -0
- package/dist/recipes/tools/outcomes.d.ts +15 -0
- package/dist/recipes/tools/outcomes.js +111 -0
- package/dist/recipes/tools/outcomes.js.map +1 -0
- package/dist/recipes/tools/paystack.d.ts +11 -0
- package/dist/recipes/tools/paystack.js +212 -0
- package/dist/recipes/tools/paystack.js.map +1 -0
- package/dist/recipes/tools/pipedrive.d.ts +16 -0
- package/dist/recipes/tools/pipedrive.js +234 -0
- package/dist/recipes/tools/pipedrive.js.map +1 -0
- package/dist/recipes/tools/postgres.d.ts +15 -0
- package/dist/recipes/tools/postgres.js +186 -0
- package/dist/recipes/tools/postgres.js.map +1 -0
- package/dist/recipes/tools/posthog.d.ts +16 -0
- package/dist/recipes/tools/posthog.js +219 -0
- package/dist/recipes/tools/posthog.js.map +1 -0
- package/dist/recipes/tools/redis.d.ts +9 -0
- package/dist/recipes/tools/redis.js +141 -0
- package/dist/recipes/tools/redis.js.map +1 -0
- package/dist/recipes/tools/resend.d.ts +8 -0
- package/dist/recipes/tools/resend.js +153 -0
- package/dist/recipes/tools/resend.js.map +1 -0
- package/dist/recipes/tools/salesforce.d.ts +16 -0
- package/dist/recipes/tools/salesforce.js +184 -0
- package/dist/recipes/tools/salesforce.js.map +1 -0
- package/dist/recipes/tools/sendgrid.d.ts +9 -0
- package/dist/recipes/tools/sendgrid.js +175 -0
- package/dist/recipes/tools/sendgrid.js.map +1 -0
- package/dist/recipes/tools/shopify.d.ts +16 -0
- package/dist/recipes/tools/shopify.js +266 -0
- package/dist/recipes/tools/shopify.js.map +1 -0
- package/dist/recipes/tools/snowflake.d.ts +16 -0
- package/dist/recipes/tools/snowflake.js +173 -0
- package/dist/recipes/tools/snowflake.js.map +1 -0
- package/dist/recipes/tools/stripe.js +13 -12
- package/dist/recipes/tools/stripe.js.map +1 -1
- package/dist/recipes/tools/supabase.d.ts +9 -0
- package/dist/recipes/tools/supabase.js +133 -0
- package/dist/recipes/tools/supabase.js.map +1 -0
- package/dist/recipes/tools/todoist.d.ts +15 -0
- package/dist/recipes/tools/todoist.js +228 -0
- package/dist/recipes/tools/todoist.js.map +1 -0
- package/dist/recipes/tools/twilio.d.ts +11 -0
- package/dist/recipes/tools/twilio.js +180 -0
- package/dist/recipes/tools/twilio.js.map +1 -0
- package/dist/recipes/tools/vercel.d.ts +9 -0
- package/dist/recipes/tools/vercel.js +146 -0
- package/dist/recipes/tools/vercel.js.map +1 -0
- package/dist/recipes/tools/webflow.d.ts +11 -0
- package/dist/recipes/tools/webflow.js +244 -0
- package/dist/recipes/tools/webflow.js.map +1 -0
- package/dist/recipes/tools/woocommerce.d.ts +18 -0
- package/dist/recipes/tools/woocommerce.js +260 -0
- package/dist/recipes/tools/woocommerce.js.map +1 -0
- package/dist/recipes/tools/wrapConnectorExecute.d.ts +25 -0
- package/dist/recipes/tools/wrapConnectorExecute.js +37 -0
- package/dist/recipes/tools/wrapConnectorExecute.js.map +1 -0
- package/dist/recipes/tools/zendesk.js +11 -10
- package/dist/recipes/tools/zendesk.js.map +1 -1
- package/dist/recipes/triggerVars.d.ts +15 -0
- package/dist/recipes/triggerVars.js +57 -0
- package/dist/recipes/triggerVars.js.map +1 -0
- package/dist/recipes/validation.d.ts +1 -1
- package/dist/recipes/validation.js +536 -12
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/yamlPositions.d.ts +1 -1
- package/dist/recipes/yamlPositions.js +7 -2
- package/dist/recipes/yamlPositions.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +216 -4
- package/dist/recipes/yamlRunner.js +1030 -96
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/recipesHttp.d.ts +5 -0
- package/dist/recipesHttp.js +68 -6
- package/dist/recipesHttp.js.map +1 -1
- package/dist/resources.js +14 -1
- package/dist/resources.js.map +1 -1
- package/dist/riskSignals.d.ts +42 -0
- package/dist/riskSignals.js +197 -0
- package/dist/riskSignals.js.map +1 -0
- package/dist/riskTier.d.ts +9 -0
- package/dist/riskTier.js +48 -0
- package/dist/riskTier.js.map +1 -1
- package/dist/runLog.d.ts +53 -0
- package/dist/runLog.js +75 -16
- package/dist/runLog.js.map +1 -1
- package/dist/schemas/recipe.v1.json +360 -16
- package/dist/server.d.ts +60 -0
- package/dist/server.js +192 -31
- package/dist/server.js.map +1 -1
- package/dist/sessionCheckpoint.js +4 -1
- package/dist/sessionCheckpoint.js.map +1 -1
- package/dist/sessionDetail.d.ts +43 -0
- package/dist/sessionDetail.js +59 -0
- package/dist/sessionDetail.js.map +1 -0
- package/dist/settingsEnv.d.ts +47 -0
- package/dist/settingsEnv.js +88 -0
- package/dist/settingsEnv.js.map +1 -0
- package/dist/streamableHttp.js +44 -10
- package/dist/streamableHttp.js.map +1 -1
- package/dist/ta/backtest/abnday.d.ts +53 -0
- package/dist/ta/backtest/abnday.js +123 -0
- package/dist/ta/backtest/abnday.js.map +1 -0
- package/dist/ta/backtest/directional.d.ts +48 -0
- package/dist/ta/backtest/directional.js +103 -0
- package/dist/ta/backtest/directional.js.map +1 -0
- package/dist/ta/backtest/fundx.d.ts +67 -0
- package/dist/ta/backtest/fundx.js +264 -0
- package/dist/ta/backtest/fundx.js.map +1 -0
- package/dist/ta/backtest/fvg.d.ts +62 -0
- package/dist/ta/backtest/fvg.js +236 -0
- package/dist/ta/backtest/fvg.js.map +1 -0
- package/dist/ta/backtest/ichimoku.d.ts +41 -0
- package/dist/ta/backtest/ichimoku.js +146 -0
- package/dist/ta/backtest/ichimoku.js.map +1 -0
- package/dist/ta/backtest/ingest.d.ts +20 -0
- package/dist/ta/backtest/ingest.js +104 -0
- package/dist/ta/backtest/ingest.js.map +1 -0
- package/dist/ta/backtest/msb.d.ts +49 -0
- package/dist/ta/backtest/msb.js +162 -0
- package/dist/ta/backtest/msb.js.map +1 -0
- package/dist/ta/backtest/scoring.d.ts +33 -0
- package/dist/ta/backtest/scoring.js +82 -0
- package/dist/ta/backtest/scoring.js.map +1 -0
- package/dist/ta/backtest/summary.d.ts +20 -0
- package/dist/ta/backtest/summary.js +42 -0
- package/dist/ta/backtest/summary.js.map +1 -0
- package/dist/ta/backtest/tsmom.d.ts +72 -0
- package/dist/ta/backtest/tsmom.js +202 -0
- package/dist/ta/backtest/tsmom.js.map +1 -0
- package/dist/ta/backtest/volsq.d.ts +34 -0
- package/dist/ta/backtest/volsq.js +154 -0
- package/dist/ta/backtest/volsq.js.map +1 -0
- package/dist/ta/backtest/walkForward.d.ts +45 -0
- package/dist/ta/backtest/walkForward.js +136 -0
- package/dist/ta/backtest/walkForward.js.map +1 -0
- package/dist/ta/cycles.d.ts +15 -0
- package/dist/ta/cycles.js +31 -0
- package/dist/ta/cycles.js.map +1 -0
- package/dist/ta/desk/accrualEmitter.d.ts +59 -0
- package/dist/ta/desk/accrualEmitter.js +136 -0
- package/dist/ta/desk/accrualEmitter.js.map +1 -0
- package/dist/ta/desk/cellBacktest.d.ts +179 -0
- package/dist/ta/desk/cellBacktest.js +514 -0
- package/dist/ta/desk/cellBacktest.js.map +1 -0
- package/dist/ta/desk/cells/wpMaRejection.d.ts +49 -0
- package/dist/ta/desk/cells/wpMaRejection.js +141 -0
- package/dist/ta/desk/cells/wpMaRejection.js.map +1 -0
- package/dist/ta/desk/cells/wpVolumeClimax.d.ts +57 -0
- package/dist/ta/desk/cells/wpVolumeClimax.js +193 -0
- package/dist/ta/desk/cells/wpVolumeClimax.js.map +1 -0
- package/dist/ta/desk/collectors.d.ts +18 -0
- package/dist/ta/desk/collectors.js +450 -0
- package/dist/ta/desk/collectors.js.map +1 -0
- package/dist/ta/desk/contract.d.ts +51 -0
- package/dist/ta/desk/contract.js +261 -0
- package/dist/ta/desk/contract.js.map +1 -0
- package/dist/ta/desk/deskLedger.d.ts +36 -0
- package/dist/ta/desk/deskLedger.js +239 -0
- package/dist/ta/desk/deskLedger.js.map +1 -0
- package/dist/ta/desk/liqTape.d.ts +37 -0
- package/dist/ta/desk/liqTape.js +99 -0
- package/dist/ta/desk/liqTape.js.map +1 -0
- package/dist/ta/desk/post.d.ts +20 -0
- package/dist/ta/desk/post.js +65 -0
- package/dist/ta/desk/post.js.map +1 -0
- package/dist/ta/desk/render.d.ts +25 -0
- package/dist/ta/desk/render.js +398 -0
- package/dist/ta/desk/render.js.map +1 -0
- package/dist/ta/desk/surfaces.d.ts +216 -0
- package/dist/ta/desk/surfaces.js +472 -0
- package/dist/ta/desk/surfaces.js.map +1 -0
- package/dist/ta/desk/types.d.ts +174 -0
- package/dist/ta/desk/types.js +104 -0
- package/dist/ta/desk/types.js.map +1 -0
- package/dist/ta/index.d.ts +23 -0
- package/dist/ta/index.js +54 -0
- package/dist/ta/index.js.map +1 -0
- package/dist/ta/ledger.d.ts +44 -0
- package/dist/ta/ledger.js +95 -0
- package/dist/ta/ledger.js.map +1 -0
- package/dist/ta/levels.d.ts +21 -0
- package/dist/ta/levels.js +41 -0
- package/dist/ta/levels.js.map +1 -0
- package/dist/ta/swings.d.ts +30 -0
- package/dist/ta/swings.js +83 -0
- package/dist/ta/swings.js.map +1 -0
- package/dist/ta/types.d.ts +81 -0
- package/dist/ta/types.js +20 -0
- package/dist/ta/types.js.map +1 -0
- package/dist/telemetry.js +20 -9
- package/dist/telemetry.js.map +1 -1
- package/dist/tokenUsageTracker.d.ts +2 -1
- package/dist/tokenUsageTracker.js +38 -20
- package/dist/tokenUsageTracker.js.map +1 -1
- package/dist/tools/contextBundle.js +13 -9
- package/dist/tools/contextBundle.js.map +1 -1
- package/dist/tools/ctxGetTaskContext.js +8 -3
- package/dist/tools/ctxGetTaskContext.js.map +1 -1
- package/dist/tools/ctxQueryTraces.d.ts +18 -1
- package/dist/tools/ctxQueryTraces.js +176 -27
- package/dist/tools/ctxQueryTraces.js.map +1 -1
- package/dist/tools/enrichCommit.js +5 -2
- package/dist/tools/enrichCommit.js.map +1 -1
- package/dist/tools/getDependencyTree.js +2 -2
- package/dist/tools/getDependencyTree.js.map +1 -1
- package/dist/tools/getDiagnostics.js +3 -0
- package/dist/tools/getDiagnostics.js.map +1 -1
- package/dist/tools/getDocumentSymbols.js +5 -1
- package/dist/tools/getDocumentSymbols.js.map +1 -1
- package/dist/tools/getGitHotspots.js +12 -1
- package/dist/tools/getGitHotspots.js.map +1 -1
- package/dist/tools/getGitLog.js +5 -2
- package/dist/tools/getGitLog.js.map +1 -1
- package/dist/tools/getGitStatus.js +6 -1
- package/dist/tools/getGitStatus.js.map +1 -1
- package/dist/tools/getProjectContext.js +3 -1
- package/dist/tools/getProjectContext.js.map +1 -1
- package/dist/tools/getToolCapabilities.js +39 -4
- package/dist/tools/getToolCapabilities.js.map +1 -1
- package/dist/tools/gitWrite.js +12 -3
- package/dist/tools/gitWrite.js.map +1 -1
- package/dist/tools/github/composite.d.ts +1 -1
- package/dist/tools/github/composite.js +7 -7
- package/dist/tools/github/composite.js.map +1 -1
- package/dist/tools/github/pr.d.ts +6 -6
- package/dist/tools/github/pr.js +18 -11
- package/dist/tools/github/pr.js.map +1 -1
- package/dist/tools/httpClient.js +55 -3
- package/dist/tools/httpClient.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.js +19 -12
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp.d.ts +6 -0
- package/dist/tools/lsp.js +81 -12
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/previewEdit.js +16 -1
- package/dist/tools/previewEdit.js.map +1 -1
- package/dist/tools/resumeClaudeTask.js +17 -0
- package/dist/tools/resumeClaudeTask.js.map +1 -1
- package/dist/tools/searchAndReplace.js +9 -5
- package/dist/tools/searchAndReplace.js.map +1 -1
- package/dist/tools/searchTools.d.ts +26 -0
- package/dist/tools/searchTools.js +42 -2
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/terminal.js +23 -51
- package/dist/tools/terminal.js.map +1 -1
- package/dist/tools/transaction.d.ts +9 -1
- package/dist/tools/transaction.js +59 -4
- package/dist/tools/transaction.js.map +1 -1
- package/dist/tools/utils.d.ts +16 -0
- package/dist/tools/utils.js +77 -7
- package/dist/tools/utils.js.map +1 -1
- package/dist/transport.d.ts +31 -0
- package/dist/transport.js +117 -14
- package/dist/transport.js.map +1 -1
- package/dist/wireHaltPushDispatch.js +12 -0
- package/dist/wireHaltPushDispatch.js.map +1 -1
- package/dist/workerGateDecisionLog.d.ts +141 -0
- package/dist/workerGateDecisionLog.js +361 -0
- package/dist/workerGateDecisionLog.js.map +1 -0
- package/dist/workers/actionClass.d.ts +38 -0
- package/dist/workers/actionClass.js +155 -0
- package/dist/workers/actionClass.js.map +1 -0
- package/dist/workers/backtest.d.ts +68 -0
- package/dist/workers/backtest.js +113 -0
- package/dist/workers/backtest.js.map +1 -0
- package/dist/workers/contextRisk.d.ts +35 -0
- package/dist/workers/contextRisk.js +20 -0
- package/dist/workers/contextRisk.js.map +1 -0
- package/dist/workers/contextRiskScorer.d.ts +48 -0
- package/dist/workers/contextRiskScorer.js +94 -0
- package/dist/workers/contextRiskScorer.js.map +1 -0
- package/dist/workers/graduation.d.ts +61 -0
- package/dist/workers/graduation.js +112 -0
- package/dist/workers/graduation.js.map +1 -0
- package/dist/workers/outcomeStore.d.ts +98 -0
- package/dist/workers/outcomeStore.js +146 -0
- package/dist/workers/outcomeStore.js.map +1 -0
- package/dist/workers/outcomesCli.d.ts +34 -0
- package/dist/workers/outcomesCli.js +91 -0
- package/dist/workers/outcomesCli.js.map +1 -0
- package/dist/workers/runWorkerShadow.d.ts +90 -0
- package/dist/workers/runWorkerShadow.js +323 -0
- package/dist/workers/runWorkerShadow.js.map +1 -0
- package/dist/workers/shadowGate.d.ts +30 -0
- package/dist/workers/shadowGate.js +58 -0
- package/dist/workers/shadowGate.js.map +1 -0
- package/dist/workers/shadowObserver.d.ts +165 -0
- package/dist/workers/shadowObserver.js +203 -0
- package/dist/workers/shadowObserver.js.map +1 -0
- package/dist/workers/shadowReport.d.ts +16 -0
- package/dist/workers/shadowReport.js +61 -0
- package/dist/workers/shadowReport.js.map +1 -0
- package/dist/workers/shadowRun.d.ts +38 -0
- package/dist/workers/shadowRun.js +44 -0
- package/dist/workers/shadowRun.js.map +1 -0
- package/dist/workers/trustLevel.d.ts +82 -0
- package/dist/workers/trustLevel.js +100 -0
- package/dist/workers/trustLevel.js.map +1 -0
- package/dist/workers/worker.d.ts +49 -0
- package/dist/workers/worker.js +88 -0
- package/dist/workers/worker.js.map +1 -0
- package/dist/workers/workerGate.d.ts +101 -0
- package/dist/workers/workerGate.js +210 -0
- package/dist/workers/workerGate.js.map +1 -0
- package/dist/workers/workerLevelStore.d.ts +33 -0
- package/dist/workers/workerLevelStore.js +87 -0
- package/dist/workers/workerLevelStore.js.map +1 -0
- package/dist/workers/workerLoader.d.ts +7 -0
- package/dist/workers/workerLoader.js +31 -0
- package/dist/workers/workerLoader.js.map +1 -0
- package/dist/writeFileAtomic.js +40 -13
- package/dist/writeFileAtomic.js.map +1 -1
- package/package.json +14 -6
- package/scripts/mcp-stdio-shim.cjs +247 -87
- package/templates/CLAUDE.bridge.md +1 -1
- package/templates/recipes/dependency-bump.yaml +33 -0
- package/templates/recipes/incident-to-pr.yaml +187 -0
- package/templates/recipes/outcome-ingester.yaml +53 -0
- package/templates/recipes/release-notes.yaml +30 -0
- package/templates/recipes/triage-failing-tests-autofile.yaml +152 -0
- package/templates/recipes/triage-failing-tests.yaml +38 -0
- package/templates/workers/dependency-upkeep.worker.yaml +26 -0
- package/templates/workers/release-notes.worker.yaml +17 -0
- package/templates/workers/test-guardian.worker.yaml +24 -0
- package/deploy/README.md +0 -172
- package/deploy/bootstrap-new-vps.sh +0 -364
- package/deploy/bootstrap-vps.sh +0 -192
- package/deploy/claude-ide-bridge.service.template +0 -67
- package/deploy/claude-ide-bridge@.service +0 -31
- package/deploy/deploy-dashboard.sh +0 -198
- package/deploy/deploy-landing.sh +0 -136
- package/deploy/ecosystem.config.js.example +0 -36
- package/deploy/install-vps-service.sh +0 -240
- package/deploy/macos/README.md +0 -153
- package/deploy/macos/com.patchwork.bridge.plist.template +0 -54
- package/deploy/macos/com.patchwork.tunnel.plist.template +0 -76
- package/deploy/macos/install-mac-bridge.sh +0 -244
- package/deploy/macos/uninstall-mac-bridge.sh +0 -22
- package/deploy/nginx-claude-bridge.conf.template +0 -129
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB recipe-step tools — read-only query surface.
|
|
3
|
+
*
|
|
4
|
+
* Self-registering tool module for the recipe tool registry. Like the other
|
|
5
|
+
* module-function connectors (salesforce/monday/google-docs), src/connectors/
|
|
6
|
+
* mongodb.ts exports standalone async functions rather than a getXConnector()
|
|
7
|
+
* accessor, so each tool dynamically imports the function it wraps and
|
|
8
|
+
* JSON-stringifies the raw return value.
|
|
9
|
+
*
|
|
10
|
+
* Every tool is read-only (`isWrite: false`): the connector enforces a
|
|
11
|
+
* read-only-operation guard (`isReadOnlyMongoOp`) on filters/pipelines and
|
|
12
|
+
* rejects mutating aggregation stages ($out/$merge/$function/$where), and the
|
|
13
|
+
* result sets are limit-capped (default 100, hard cap 1000). There is no
|
|
14
|
+
* insert/update/delete surface by design.
|
|
15
|
+
*
|
|
16
|
+
* Completes connector-step parity: mongodb was the last entry in
|
|
17
|
+
* connector-step-parity-allowlist.json.
|
|
18
|
+
*/
|
|
19
|
+
import { CommonSchemas, registerTool } from "../toolRegistry.js";
|
|
20
|
+
import { wrapConnectorExecute } from "./wrapConnectorExecute.js";
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// mongodb.list_databases
|
|
23
|
+
// ============================================================================
|
|
24
|
+
registerTool({
|
|
25
|
+
id: "mongodb.list_databases",
|
|
26
|
+
namespace: "mongodb",
|
|
27
|
+
description: "List the database names available on the connected MongoDB.",
|
|
28
|
+
paramsSchema: {
|
|
29
|
+
type: "object",
|
|
30
|
+
properties: {
|
|
31
|
+
into: CommonSchemas.into,
|
|
32
|
+
},
|
|
33
|
+
required: [],
|
|
34
|
+
},
|
|
35
|
+
outputSchema: {
|
|
36
|
+
type: "array",
|
|
37
|
+
items: { type: "string" },
|
|
38
|
+
},
|
|
39
|
+
riskDefault: "low",
|
|
40
|
+
isWrite: false,
|
|
41
|
+
isConnector: true,
|
|
42
|
+
execute: wrapConnectorExecute(async () => {
|
|
43
|
+
const { listDatabases } = await import("../../connectors/mongodb.js");
|
|
44
|
+
return JSON.stringify(await listDatabases());
|
|
45
|
+
}),
|
|
46
|
+
});
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// mongodb.list_collections
|
|
49
|
+
// ============================================================================
|
|
50
|
+
registerTool({
|
|
51
|
+
id: "mongodb.list_collections",
|
|
52
|
+
namespace: "mongodb",
|
|
53
|
+
description: "List the collection names in a MongoDB database.",
|
|
54
|
+
paramsSchema: {
|
|
55
|
+
type: "object",
|
|
56
|
+
properties: {
|
|
57
|
+
database: {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "Database name to list collections from",
|
|
60
|
+
},
|
|
61
|
+
into: CommonSchemas.into,
|
|
62
|
+
},
|
|
63
|
+
required: ["database"],
|
|
64
|
+
},
|
|
65
|
+
outputSchema: {
|
|
66
|
+
type: "array",
|
|
67
|
+
items: { type: "string" },
|
|
68
|
+
},
|
|
69
|
+
riskDefault: "low",
|
|
70
|
+
isWrite: false,
|
|
71
|
+
isConnector: true,
|
|
72
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
73
|
+
const { listCollections } = await import("../../connectors/mongodb.js");
|
|
74
|
+
return JSON.stringify(await listCollections(params.database));
|
|
75
|
+
}),
|
|
76
|
+
});
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// mongodb.describe_collection
|
|
79
|
+
// ============================================================================
|
|
80
|
+
registerTool({
|
|
81
|
+
id: "mongodb.describe_collection",
|
|
82
|
+
namespace: "mongodb",
|
|
83
|
+
description: "Describe a MongoDB collection: a sample document plus its index list.",
|
|
84
|
+
paramsSchema: {
|
|
85
|
+
type: "object",
|
|
86
|
+
properties: {
|
|
87
|
+
database: { type: "string", description: "Database name" },
|
|
88
|
+
collection: { type: "string", description: "Collection name" },
|
|
89
|
+
into: CommonSchemas.into,
|
|
90
|
+
},
|
|
91
|
+
required: ["database", "collection"],
|
|
92
|
+
},
|
|
93
|
+
outputSchema: {
|
|
94
|
+
type: "object",
|
|
95
|
+
properties: {
|
|
96
|
+
sample: {},
|
|
97
|
+
indexes: { type: "array" },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
riskDefault: "low",
|
|
101
|
+
isWrite: false,
|
|
102
|
+
isConnector: true,
|
|
103
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
104
|
+
const { describeCollection } = await import("../../connectors/mongodb.js");
|
|
105
|
+
return JSON.stringify(await describeCollection(params.database, params.collection));
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
// ============================================================================
|
|
109
|
+
// mongodb.find
|
|
110
|
+
// ============================================================================
|
|
111
|
+
registerTool({
|
|
112
|
+
id: "mongodb.find",
|
|
113
|
+
namespace: "mongodb",
|
|
114
|
+
description: "Run a read-only find() against a MongoDB collection. The filter and " +
|
|
115
|
+
"projection are guarded against query operators that execute server-side " +
|
|
116
|
+
"code; results are limit-capped (default 100, hard cap 1000).",
|
|
117
|
+
paramsSchema: {
|
|
118
|
+
type: "object",
|
|
119
|
+
properties: {
|
|
120
|
+
database: { type: "string", description: "Database name" },
|
|
121
|
+
collection: { type: "string", description: "Collection name" },
|
|
122
|
+
filter: {
|
|
123
|
+
type: "object",
|
|
124
|
+
description: "MongoDB query filter (read-only operators only)",
|
|
125
|
+
},
|
|
126
|
+
projection: {
|
|
127
|
+
type: "object",
|
|
128
|
+
description: "Optional field projection",
|
|
129
|
+
},
|
|
130
|
+
limit: {
|
|
131
|
+
type: "number",
|
|
132
|
+
description: "Max documents (default 100, hard cap 1000)",
|
|
133
|
+
},
|
|
134
|
+
into: CommonSchemas.into,
|
|
135
|
+
},
|
|
136
|
+
required: ["database", "collection"],
|
|
137
|
+
},
|
|
138
|
+
outputSchema: {
|
|
139
|
+
type: "array",
|
|
140
|
+
items: { type: "object" },
|
|
141
|
+
},
|
|
142
|
+
riskDefault: "low",
|
|
143
|
+
isWrite: false,
|
|
144
|
+
isConnector: true,
|
|
145
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
146
|
+
const { find } = await import("../../connectors/mongodb.js");
|
|
147
|
+
const result = await find(params.database, params.collection, params.filter ?? {}, {
|
|
148
|
+
projection: params.projection,
|
|
149
|
+
limit: typeof params.limit === "number" ? params.limit : undefined,
|
|
150
|
+
});
|
|
151
|
+
return JSON.stringify(result);
|
|
152
|
+
}),
|
|
153
|
+
});
|
|
154
|
+
// ============================================================================
|
|
155
|
+
// mongodb.aggregate
|
|
156
|
+
// ============================================================================
|
|
157
|
+
registerTool({
|
|
158
|
+
id: "mongodb.aggregate",
|
|
159
|
+
namespace: "mongodb",
|
|
160
|
+
description: "Run a read-only aggregation pipeline against a MongoDB collection. " +
|
|
161
|
+
"Mutating stages ($out/$merge/$function/$where/$accumulator) are rejected " +
|
|
162
|
+
"and a $limit stage is appended (default 100, hard cap 1000).",
|
|
163
|
+
paramsSchema: {
|
|
164
|
+
type: "object",
|
|
165
|
+
properties: {
|
|
166
|
+
database: { type: "string", description: "Database name" },
|
|
167
|
+
collection: { type: "string", description: "Collection name" },
|
|
168
|
+
pipeline: {
|
|
169
|
+
type: "array",
|
|
170
|
+
items: { type: "object" },
|
|
171
|
+
description: "Aggregation pipeline stages (read-only)",
|
|
172
|
+
},
|
|
173
|
+
limit: {
|
|
174
|
+
type: "number",
|
|
175
|
+
description: "Max documents (default 100, hard cap 1000)",
|
|
176
|
+
},
|
|
177
|
+
into: CommonSchemas.into,
|
|
178
|
+
},
|
|
179
|
+
required: ["database", "collection", "pipeline"],
|
|
180
|
+
},
|
|
181
|
+
outputSchema: {
|
|
182
|
+
type: "array",
|
|
183
|
+
items: { type: "object" },
|
|
184
|
+
},
|
|
185
|
+
riskDefault: "low",
|
|
186
|
+
isWrite: false,
|
|
187
|
+
isConnector: true,
|
|
188
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
189
|
+
const { aggregate } = await import("../../connectors/mongodb.js");
|
|
190
|
+
const result = await aggregate(params.database, params.collection, params.pipeline, typeof params.limit === "number" ? params.limit : undefined);
|
|
191
|
+
return JSON.stringify(result);
|
|
192
|
+
}),
|
|
193
|
+
});
|
|
194
|
+
//# sourceMappingURL=mongodb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../../src/recipes/tools/mongodb.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { assertWriteAllowed } from "../../featureFlags.js";
|
|
7
7
|
import { CommonSchemas, registerTool } from "../toolRegistry.js";
|
|
8
|
+
import { wrapConnectorExecute } from "./wrapConnectorExecute.js";
|
|
8
9
|
// ============================================================================
|
|
9
10
|
// notion.queryDatabase
|
|
10
11
|
// ============================================================================
|
|
@@ -56,12 +57,12 @@ registerTool({
|
|
|
56
57
|
riskDefault: "low",
|
|
57
58
|
isWrite: false,
|
|
58
59
|
isConnector: true,
|
|
59
|
-
execute: async ({ params }) => {
|
|
60
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
60
61
|
const { getNotionConnector } = await import("../../connectors/notion.js");
|
|
61
62
|
const connector = getNotionConnector();
|
|
62
63
|
const result = await connector.queryDatabase(params.databaseId, params.filter, params.sorts, typeof params.pageSize === "number" ? params.pageSize : 20);
|
|
63
64
|
return JSON.stringify({ ...result, count: result.results.length });
|
|
64
|
-
},
|
|
65
|
+
}),
|
|
65
66
|
});
|
|
66
67
|
// ============================================================================
|
|
67
68
|
// notion.getPage
|
|
@@ -95,12 +96,12 @@ registerTool({
|
|
|
95
96
|
riskDefault: "low",
|
|
96
97
|
isWrite: false,
|
|
97
98
|
isConnector: true,
|
|
98
|
-
execute: async ({ params }) => {
|
|
99
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
99
100
|
const { getNotionConnector } = await import("../../connectors/notion.js");
|
|
100
101
|
const connector = getNotionConnector();
|
|
101
102
|
const page = await connector.getPage(params.pageId);
|
|
102
103
|
return JSON.stringify(page);
|
|
103
|
-
},
|
|
104
|
+
}),
|
|
104
105
|
});
|
|
105
106
|
// ============================================================================
|
|
106
107
|
// notion.search
|
|
@@ -142,12 +143,12 @@ registerTool({
|
|
|
142
143
|
riskDefault: "low",
|
|
143
144
|
isWrite: false,
|
|
144
145
|
isConnector: true,
|
|
145
|
-
execute: async ({ params }) => {
|
|
146
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
146
147
|
const { getNotionConnector } = await import("../../connectors/notion.js");
|
|
147
148
|
const connector = getNotionConnector();
|
|
148
149
|
const result = await connector.search(params.query, params.filterType, typeof params.pageSize === "number" ? params.pageSize : 10);
|
|
149
150
|
return JSON.stringify({ ...result, count: result.results.length });
|
|
150
|
-
},
|
|
151
|
+
}),
|
|
151
152
|
});
|
|
152
153
|
// ============================================================================
|
|
153
154
|
// notion.createPage (write-gated)
|
|
@@ -197,7 +198,7 @@ registerTool({
|
|
|
197
198
|
riskDefault: "medium",
|
|
198
199
|
isWrite: true,
|
|
199
200
|
isConnector: true,
|
|
200
|
-
execute: async ({ params }) => {
|
|
201
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
201
202
|
assertWriteAllowed("notion.createPage");
|
|
202
203
|
const { getNotionConnector } = await import("../../connectors/notion.js");
|
|
203
204
|
const connector = getNotionConnector();
|
|
@@ -214,7 +215,7 @@ registerTool({
|
|
|
214
215
|
created_time: page.created_time,
|
|
215
216
|
ok: true,
|
|
216
217
|
});
|
|
217
|
-
},
|
|
218
|
+
}),
|
|
218
219
|
});
|
|
219
220
|
// ============================================================================
|
|
220
221
|
// notion.appendBlock (write-gated)
|
|
@@ -263,7 +264,7 @@ registerTool({
|
|
|
263
264
|
riskDefault: "medium",
|
|
264
265
|
isWrite: true,
|
|
265
266
|
isConnector: true,
|
|
266
|
-
execute: async ({ params }) => {
|
|
267
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
267
268
|
assertWriteAllowed("notion.appendBlock");
|
|
268
269
|
const { getNotionConnector } = await import("../../connectors/notion.js");
|
|
269
270
|
const connector = getNotionConnector();
|
|
@@ -273,6 +274,6 @@ registerTool({
|
|
|
273
274
|
blockType: params.blockType,
|
|
274
275
|
});
|
|
275
276
|
return JSON.stringify({ ok: true, blockCount: result.results.length });
|
|
276
|
-
},
|
|
277
|
+
}),
|
|
277
278
|
});
|
|
278
279
|
//# sourceMappingURL=notion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notion.js","sourceRoot":"","sources":["../../../src/recipes/tools/notion.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,sBAAsB;IAC1B,SAAS,EAAE,QAAQ;IACnB,WAAW,EACT,uFAAuF;IACzF,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,sEAAsE;aACzE;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,gDAAgD;gBAC7D,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC5B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE;qBACjE;oBACD,QAAQ,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;iBACpC;aACF;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0CAA0C;gBACvD,OAAO,EAAE,EAAE;aACZ;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,YAAY,CAAC;KACzB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACrD,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACzC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B;KACF;IACD,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"notion.js","sourceRoot":"","sources":["../../../src/recipes/tools/notion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Obsidian tools — read/write notes via the Obsidian Local REST API plugin.
|
|
3
|
+
*
|
|
4
|
+
* Self-registering tool module for the recipe tool registry. Read tools wrap
|
|
5
|
+
* the connector's array/string returns; the write tool (`write_note`) declares
|
|
6
|
+
* `isWrite: true` so the approval queue gates it. Note `deleteNote` and
|
|
7
|
+
* `executeCommand` are intentionally NOT exposed as recipe-step tools.
|
|
8
|
+
*
|
|
9
|
+
* Connector signatures mirrored (src/connectors/obsidian.ts):
|
|
10
|
+
* listVault(vaultPath?: string): Promise<ObsidianVaultEntry[]>
|
|
11
|
+
* readNote(notePath: string): Promise<string>
|
|
12
|
+
* writeNote(notePath: string, content: string, append?: boolean): Promise<void>
|
|
13
|
+
* searchVault(query: string): Promise<ObsidianSearchMatch[]>
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Obsidian tools — read/write notes via the Obsidian Local REST API plugin.
|
|
3
|
+
*
|
|
4
|
+
* Self-registering tool module for the recipe tool registry. Read tools wrap
|
|
5
|
+
* the connector's array/string returns; the write tool (`write_note`) declares
|
|
6
|
+
* `isWrite: true` so the approval queue gates it. Note `deleteNote` and
|
|
7
|
+
* `executeCommand` are intentionally NOT exposed as recipe-step tools.
|
|
8
|
+
*
|
|
9
|
+
* Connector signatures mirrored (src/connectors/obsidian.ts):
|
|
10
|
+
* listVault(vaultPath?: string): Promise<ObsidianVaultEntry[]>
|
|
11
|
+
* readNote(notePath: string): Promise<string>
|
|
12
|
+
* writeNote(notePath: string, content: string, append?: boolean): Promise<void>
|
|
13
|
+
* searchVault(query: string): Promise<ObsidianSearchMatch[]>
|
|
14
|
+
*/
|
|
15
|
+
import { CommonSchemas, registerTool } from "../toolRegistry.js";
|
|
16
|
+
import { wrapConnectorExecute } from "./wrapConnectorExecute.js";
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// obsidian.list_vault
|
|
19
|
+
// ============================================================================
|
|
20
|
+
registerTool({
|
|
21
|
+
id: "obsidian.list_vault",
|
|
22
|
+
namespace: "obsidian",
|
|
23
|
+
description: "List files and directories in the Obsidian vault, optionally scoped to a sub-path.",
|
|
24
|
+
paramsSchema: {
|
|
25
|
+
type: "object",
|
|
26
|
+
properties: {
|
|
27
|
+
vaultPath: {
|
|
28
|
+
type: "string",
|
|
29
|
+
description: "Optional vault-relative directory path to list (omit for vault root)",
|
|
30
|
+
},
|
|
31
|
+
into: CommonSchemas.into,
|
|
32
|
+
},
|
|
33
|
+
required: [],
|
|
34
|
+
},
|
|
35
|
+
outputSchema: {
|
|
36
|
+
type: "array",
|
|
37
|
+
items: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
path: { type: "string" },
|
|
41
|
+
type: { type: "string", enum: ["file", "directory"] },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
riskDefault: "low",
|
|
46
|
+
isWrite: false,
|
|
47
|
+
isConnector: true,
|
|
48
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
49
|
+
const { getObsidianConnector } = await import("../../connectors/obsidian.js");
|
|
50
|
+
const connector = getObsidianConnector();
|
|
51
|
+
const result = await connector.listVault(typeof params.vaultPath === "string" ? params.vaultPath : undefined);
|
|
52
|
+
return JSON.stringify(result);
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// obsidian.read_note
|
|
57
|
+
// ============================================================================
|
|
58
|
+
registerTool({
|
|
59
|
+
id: "obsidian.read_note",
|
|
60
|
+
namespace: "obsidian",
|
|
61
|
+
description: "Read the markdown content of a note from the Obsidian vault.",
|
|
62
|
+
paramsSchema: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: {
|
|
65
|
+
notePath: {
|
|
66
|
+
type: "string",
|
|
67
|
+
description: "Vault-relative path to the note (e.g. 'Notes/idea.md')",
|
|
68
|
+
},
|
|
69
|
+
into: CommonSchemas.into,
|
|
70
|
+
},
|
|
71
|
+
required: ["notePath"],
|
|
72
|
+
},
|
|
73
|
+
outputSchema: {
|
|
74
|
+
type: "string",
|
|
75
|
+
description: "Note content as markdown text",
|
|
76
|
+
},
|
|
77
|
+
riskDefault: "low",
|
|
78
|
+
isWrite: false,
|
|
79
|
+
isConnector: true,
|
|
80
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
81
|
+
const { getObsidianConnector } = await import("../../connectors/obsidian.js");
|
|
82
|
+
const connector = getObsidianConnector();
|
|
83
|
+
const result = await connector.readNote(params.notePath);
|
|
84
|
+
return JSON.stringify(result);
|
|
85
|
+
}),
|
|
86
|
+
});
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// obsidian.write_note (write-gated)
|
|
89
|
+
// ============================================================================
|
|
90
|
+
registerTool({
|
|
91
|
+
id: "obsidian.write_note",
|
|
92
|
+
namespace: "obsidian",
|
|
93
|
+
description: "Write markdown content to a note in the Obsidian vault, creating or replacing it. Set append: true to append instead of replace.",
|
|
94
|
+
paramsSchema: {
|
|
95
|
+
type: "object",
|
|
96
|
+
properties: {
|
|
97
|
+
notePath: {
|
|
98
|
+
type: "string",
|
|
99
|
+
description: "Vault-relative path to the note (e.g. 'Notes/idea.md')",
|
|
100
|
+
},
|
|
101
|
+
content: {
|
|
102
|
+
type: "string",
|
|
103
|
+
description: "Markdown content to write",
|
|
104
|
+
},
|
|
105
|
+
append: {
|
|
106
|
+
type: "boolean",
|
|
107
|
+
description: "If true, append to the note instead of replacing it",
|
|
108
|
+
default: false,
|
|
109
|
+
},
|
|
110
|
+
into: CommonSchemas.into,
|
|
111
|
+
},
|
|
112
|
+
required: ["notePath", "content"],
|
|
113
|
+
},
|
|
114
|
+
outputSchema: {
|
|
115
|
+
type: "object",
|
|
116
|
+
properties: {
|
|
117
|
+
ok: { type: "boolean" },
|
|
118
|
+
path: { type: "string" },
|
|
119
|
+
append: { type: "boolean" },
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
riskDefault: "medium",
|
|
123
|
+
isWrite: true,
|
|
124
|
+
isConnector: true,
|
|
125
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
126
|
+
const { getObsidianConnector } = await import("../../connectors/obsidian.js");
|
|
127
|
+
const connector = getObsidianConnector();
|
|
128
|
+
const notePath = params.notePath;
|
|
129
|
+
const append = params.append === true;
|
|
130
|
+
await connector.writeNote(notePath, params.content, append);
|
|
131
|
+
return JSON.stringify({ ok: true, path: notePath, append });
|
|
132
|
+
}),
|
|
133
|
+
});
|
|
134
|
+
// ============================================================================
|
|
135
|
+
// obsidian.search_vault
|
|
136
|
+
// ============================================================================
|
|
137
|
+
registerTool({
|
|
138
|
+
id: "obsidian.search_vault",
|
|
139
|
+
namespace: "obsidian",
|
|
140
|
+
description: "Search the Obsidian vault for notes matching a query string. Returns matching filenames with relevance scores.",
|
|
141
|
+
paramsSchema: {
|
|
142
|
+
type: "object",
|
|
143
|
+
properties: {
|
|
144
|
+
query: {
|
|
145
|
+
type: "string",
|
|
146
|
+
description: "Search query string",
|
|
147
|
+
},
|
|
148
|
+
into: CommonSchemas.into,
|
|
149
|
+
},
|
|
150
|
+
required: ["query"],
|
|
151
|
+
},
|
|
152
|
+
outputSchema: {
|
|
153
|
+
type: "array",
|
|
154
|
+
items: {
|
|
155
|
+
type: "object",
|
|
156
|
+
properties: {
|
|
157
|
+
filename: { type: "string" },
|
|
158
|
+
score: { type: "number" },
|
|
159
|
+
matches: { type: "array", items: { type: "string" } },
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
riskDefault: "low",
|
|
164
|
+
isWrite: false,
|
|
165
|
+
isConnector: true,
|
|
166
|
+
execute: wrapConnectorExecute(async ({ params }) => {
|
|
167
|
+
const { getObsidianConnector } = await import("../../connectors/obsidian.js");
|
|
168
|
+
const connector = getObsidianConnector();
|
|
169
|
+
const result = await connector.searchVault(params.query);
|
|
170
|
+
return JSON.stringify(result);
|
|
171
|
+
}),
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=obsidian.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"obsidian.js","sourceRoot":"","sources":["../../../src/recipes/tools/obsidian.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* outcomes.classify_issues — deterministic disposition classification for
|
|
3
|
+
* the outcome-ingester recipe, replacing an earlier LLM-judge agent step.
|
|
4
|
+
*
|
|
5
|
+
* The agent step read raw issue JSON and freehanded a disposition +
|
|
6
|
+
* checkedAt epoch per-issue. In production cron runs it flipped the SAME
|
|
7
|
+
* closed/COMPLETED issues between "confirmed" and "unknown" on alternating
|
|
8
|
+
* fires, and hallucinated checkedAt values spanning 2023–2027. Trust-replay
|
|
9
|
+
* reads this log to decide good:true/false, so non-deterministic
|
|
10
|
+
* classification directly corrupts the trust signal.
|
|
11
|
+
*
|
|
12
|
+
* This tool has no LLM in the loop: classifyIssueDisposition() is a pure
|
|
13
|
+
* function of state/labels, and checkedAt is the real clock.
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* outcomes.classify_issues — deterministic disposition classification for
|
|
3
|
+
* the outcome-ingester recipe, replacing an earlier LLM-judge agent step.
|
|
4
|
+
*
|
|
5
|
+
* The agent step read raw issue JSON and freehanded a disposition +
|
|
6
|
+
* checkedAt epoch per-issue. In production cron runs it flipped the SAME
|
|
7
|
+
* closed/COMPLETED issues between "confirmed" and "unknown" on alternating
|
|
8
|
+
* fires, and hallucinated checkedAt values spanning 2023–2027. Trust-replay
|
|
9
|
+
* reads this log to decide good:true/false, so non-deterministic
|
|
10
|
+
* classification directly corrupts the trust signal.
|
|
11
|
+
*
|
|
12
|
+
* This tool has no LLM in the loop: classifyIssueDisposition() is a pure
|
|
13
|
+
* function of state/labels, and checkedAt is the real clock.
|
|
14
|
+
*/
|
|
15
|
+
import { assertWriteAllowed } from "../../featureFlags.js";
|
|
16
|
+
import { classifyIssueDisposition, OutcomeStore, resolveOutcomeLogDir, } from "../../workers/outcomeStore.js";
|
|
17
|
+
import { registerTool } from "../toolRegistry.js";
|
|
18
|
+
registerTool({
|
|
19
|
+
id: "outcomes.classify_issues",
|
|
20
|
+
namespace: "outcomes",
|
|
21
|
+
description: "Deterministically classify a batch of GitHub issues (from github.list_issues / github.search_issues output) as confirmed/junk/unknown and persist to the outcome-log for trust-replay. No LLM judgment — pure function of state/stateReason/labels.",
|
|
22
|
+
paramsSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {
|
|
25
|
+
issues: {
|
|
26
|
+
type: "string",
|
|
27
|
+
description: "JSON array of issue objects (each with url/state/stateReason/labels), typically piped in as {{issues}} from a prior list_issues/search_issues step.",
|
|
28
|
+
},
|
|
29
|
+
recipeName: {
|
|
30
|
+
type: "string",
|
|
31
|
+
description: "Optional recipe name to stamp on each outcome record.",
|
|
32
|
+
},
|
|
33
|
+
workerClass: {
|
|
34
|
+
type: "string",
|
|
35
|
+
description: "Optional worker action-class to stamp on each record.",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
required: ["issues"],
|
|
39
|
+
},
|
|
40
|
+
outputSchema: {
|
|
41
|
+
type: "object",
|
|
42
|
+
properties: {
|
|
43
|
+
count: { type: "number" },
|
|
44
|
+
confirmed: { type: "number" },
|
|
45
|
+
junk: { type: "number" },
|
|
46
|
+
unknown: { type: "number" },
|
|
47
|
+
error: { type: "string" },
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
riskDefault: "medium",
|
|
51
|
+
isWrite: true,
|
|
52
|
+
execute: async ({ params }) => {
|
|
53
|
+
assertWriteAllowed("outcomes.classify_issues");
|
|
54
|
+
let issues;
|
|
55
|
+
try {
|
|
56
|
+
const raw = params.issues ? String(params.issues) : "[]";
|
|
57
|
+
const parsed = JSON.parse(raw);
|
|
58
|
+
issues = Array.isArray(parsed) ? parsed : [];
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
return JSON.stringify({
|
|
62
|
+
count: 0,
|
|
63
|
+
confirmed: 0,
|
|
64
|
+
junk: 0,
|
|
65
|
+
unknown: 0,
|
|
66
|
+
error: `outcomes.classify_issues: invalid issues JSON — ${err instanceof Error ? err.message : String(err)}`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const store = new OutcomeStore(resolveOutcomeLogDir());
|
|
70
|
+
const recipeName = params.recipeName
|
|
71
|
+
? String(params.recipeName)
|
|
72
|
+
: undefined;
|
|
73
|
+
const workerClass = params.workerClass
|
|
74
|
+
? String(params.workerClass)
|
|
75
|
+
: undefined;
|
|
76
|
+
let confirmed = 0;
|
|
77
|
+
let junk = 0;
|
|
78
|
+
let unknown = 0;
|
|
79
|
+
const checkedAt = Date.now();
|
|
80
|
+
for (const issue of issues) {
|
|
81
|
+
const issueUrl = issue.url ?? issue.html_url;
|
|
82
|
+
if (!issueUrl)
|
|
83
|
+
continue;
|
|
84
|
+
const disposition = classifyIssueDisposition({
|
|
85
|
+
state: issue.state,
|
|
86
|
+
state_reason: issue.stateReason,
|
|
87
|
+
labels: issue.labels,
|
|
88
|
+
});
|
|
89
|
+
if (disposition === "confirmed")
|
|
90
|
+
confirmed++;
|
|
91
|
+
else if (disposition === "junk")
|
|
92
|
+
junk++;
|
|
93
|
+
else
|
|
94
|
+
unknown++;
|
|
95
|
+
store.upsert({
|
|
96
|
+
issueUrl,
|
|
97
|
+
disposition,
|
|
98
|
+
checkedAt,
|
|
99
|
+
...(recipeName && { recipeName }),
|
|
100
|
+
...(workerClass && { workerClass }),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return JSON.stringify({
|
|
104
|
+
count: confirmed + junk + unknown,
|
|
105
|
+
confirmed,
|
|
106
|
+
junk,
|
|
107
|
+
unknown,
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=outcomes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcomes.js","sourceRoot":"","sources":["../../../src/recipes/tools/outcomes.ts"],"names":[],"mappings":"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"}
|