@elevasis/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +435 -0
- package/dist/index.js +403 -0
- package/dist/organization-model/index.d.ts +435 -0
- package/dist/organization-model/index.js +403 -0
- package/package.json +62 -0
- package/src/README.md +34 -0
- package/src/__tests__/observability-exports.test.ts +36 -0
- package/src/__tests__/publish.test.ts +18 -0
- package/src/__tests__/template-foundations-compatibility.test.ts +34 -0
- package/src/auth/index.ts +8 -0
- package/src/auth/multi-tenancy/credentials/README.md +38 -0
- package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +216 -0
- package/src/auth/multi-tenancy/credentials/__tests__/service.test.ts +174 -0
- package/src/auth/multi-tenancy/credentials/index.ts +6 -0
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -0
- package/src/auth/multi-tenancy/credentials/server/service.ts +60 -0
- package/src/auth/multi-tenancy/index.ts +17 -0
- package/src/auth/multi-tenancy/invitations/__tests__/invitation.test.ts +237 -0
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -0
- package/src/auth/multi-tenancy/invitations/index.ts +38 -0
- package/src/auth/multi-tenancy/invitations/invitation.ts +86 -0
- package/src/auth/multi-tenancy/invitations/server/index.ts +25 -0
- package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -0
- package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -0
- package/src/auth/multi-tenancy/invitations/supabase.ts +50 -0
- package/src/auth/multi-tenancy/memberships/__tests__/membership.test.ts +227 -0
- package/src/auth/multi-tenancy/memberships/__tests__/supabase-transforms.test.ts +88 -0
- package/src/auth/multi-tenancy/memberships/__tests__/workos-transforms.test.ts +139 -0
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -0
- package/src/auth/multi-tenancy/memberships/index.ts +22 -0
- package/src/auth/multi-tenancy/memberships/membership.ts +138 -0
- package/src/auth/multi-tenancy/memberships/server/index.ts +15 -0
- package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -0
- package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -0
- package/src/auth/multi-tenancy/memberships/supabase.ts +46 -0
- package/src/auth/multi-tenancy/organizations/__tests__/organization.test.ts +249 -0
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -0
- package/src/auth/multi-tenancy/organizations/index.ts +23 -0
- package/src/auth/multi-tenancy/organizations/organization.ts +25 -0
- package/src/auth/multi-tenancy/organizations/server/index.ts +10 -0
- package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -0
- package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -0
- package/src/auth/multi-tenancy/types.ts +89 -0
- package/src/auth/multi-tenancy/users/__tests__/user.test.ts +208 -0
- package/src/auth/multi-tenancy/users/api-schemas.ts +194 -0
- package/src/auth/multi-tenancy/users/index.ts +28 -0
- package/src/auth/multi-tenancy/users/server/index.ts +19 -0
- package/src/auth/multi-tenancy/users/server/transforms.ts +21 -0
- package/src/auth/multi-tenancy/users/server/workos.ts +16 -0
- package/src/auth/multi-tenancy/users/user.ts +65 -0
- package/src/business/acquisition/api-schemas.ts +759 -0
- package/src/business/acquisition/index.ts +109 -0
- package/src/business/acquisition/types.ts +400 -0
- package/src/business/crm/api-schemas.ts +75 -0
- package/src/business/delivery/index.ts +1 -0
- package/src/business/delivery/types.ts +89 -0
- package/src/business/index.ts +12 -0
- package/src/business/pdf/assets/ElevasisLogo.png +0 -0
- package/src/business/pdf/browser/image-utils.ts +74 -0
- package/src/business/pdf/browser/index.ts +16 -0
- package/src/business/pdf/browser/pdfmake-browser.ts +229 -0
- package/src/business/pdf/index.ts +10 -0
- package/src/business/pdf/sections/acceptance.ts +112 -0
- package/src/business/pdf/sections/automation.ts +56 -0
- package/src/business/pdf/sections/cover.ts +51 -0
- package/src/business/pdf/sections/index.ts +57 -0
- package/src/business/pdf/sections/investment.ts +69 -0
- package/src/business/pdf/sections/proposal-document.ts +200 -0
- package/src/business/pdf/sections/summary-investment.ts +124 -0
- package/src/business/pdf/sections/summary.ts +55 -0
- package/src/business/pdf/sections/table-summary.ts +59 -0
- package/src/business/pdf/sections/types.ts +124 -0
- package/src/business/pdf/server/__tests__/pdfmake-test.ts +219 -0
- package/src/business/pdf/server/index.ts +21 -0
- package/src/business/pdf/server/pdfmake-service.ts +237 -0
- package/src/business/pdf/server/themes/default.ts +8 -0
- package/src/business/pdf/server/themes/index.ts +9 -0
- package/src/business/pdf/server/themes/types.ts +8 -0
- package/src/business/pdf/shared/convert.ts +514 -0
- package/src/business/pdf/shared/index.ts +12 -0
- package/src/business/pdf/themes.ts +78 -0
- package/src/business/pdf/types.ts +272 -0
- package/src/business/seo/__tests__/linking.test.ts +549 -0
- package/src/business/seo/__tests__/types.test.ts +404 -0
- package/src/business/seo/index.ts +2 -0
- package/src/business/seo/linking.ts +281 -0
- package/src/business/seo/types.ts +199 -0
- package/src/commands/index.ts +8 -0
- package/src/commands/queue/index.ts +3 -0
- package/src/commands/queue/schemas.test.ts +593 -0
- package/src/commands/queue/schemas.ts +125 -0
- package/src/commands/queue/sse-events.ts +61 -0
- package/src/commands/queue/types/action.ts +52 -0
- package/src/commands/queue/types/checkpoint.ts +44 -0
- package/src/commands/queue/types/index.ts +7 -0
- package/src/commands/queue/types/task.ts +116 -0
- package/src/commands/queue/types.ts +14 -0
- package/src/content/distribution-metadata.ts +61 -0
- package/src/content/index.ts +10 -0
- package/src/deployments/index.ts +22 -0
- package/src/execution/calibration/__tests__/schemas.test.ts +320 -0
- package/src/execution/calibration/index.ts +3 -0
- package/src/execution/calibration/schemas.ts +121 -0
- package/src/execution/calibration/sse-events.ts +125 -0
- package/src/execution/calibration/types.ts +190 -0
- package/src/execution/core/__tests__/api-schemas.test.ts +667 -0
- package/src/execution/core/__tests__/archived-logs.test.ts +72 -0
- package/src/execution/core/api-schemas.ts +312 -0
- package/src/execution/core/index.ts +11 -0
- package/src/execution/core/resource-validator.test.ts +63 -0
- package/src/execution/core/runner-types.ts +80 -0
- package/src/execution/core/server/environment.ts +31 -0
- package/src/execution/core/sse-executions.ts +119 -0
- package/src/execution/core/types.ts +29 -0
- package/src/execution/engine/__tests__/fixtures/index.ts +2 -0
- package/src/execution/engine/__tests__/fixtures/mock-scenarios.ts +60 -0
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +85 -0
- package/src/execution/engine/__tests__/integration/agent-framework.integration.test.ts +1031 -0
- package/src/execution/engine/__tests__/timeout.test.ts +565 -0
- package/src/execution/engine/agent/__tests__/errors.test.ts +508 -0
- package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -0
- package/src/execution/engine/agent/actions/executor.ts +205 -0
- package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -0
- package/src/execution/engine/agent/actions/processor.ts +116 -0
- package/src/execution/engine/agent/actions/types.ts +70 -0
- package/src/execution/engine/agent/core/__tests__/agent.test.ts +614 -0
- package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +134 -0
- package/src/execution/engine/agent/core/agent.ts +810 -0
- package/src/execution/engine/agent/core/types.ts +155 -0
- package/src/execution/engine/agent/errors.ts +251 -0
- package/src/execution/engine/agent/index.ts +78 -0
- package/src/execution/engine/agent/knowledge-map/__tests__/navigate-knowledge-executor.test.ts +580 -0
- package/src/execution/engine/agent/knowledge-map/__tests__/utils.test.ts +622 -0
- package/src/execution/engine/agent/knowledge-map/types.ts +106 -0
- package/src/execution/engine/agent/knowledge-map/utils.ts +101 -0
- package/src/execution/engine/agent/memory/__tests__/domains.test.ts +72 -0
- package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -0
- package/src/execution/engine/agent/memory/__tests__/utils.test.ts +285 -0
- package/src/execution/engine/agent/memory/domains.ts +99 -0
- package/src/execution/engine/agent/memory/manager.ts +365 -0
- package/src/execution/engine/agent/memory/processor.ts +66 -0
- package/src/execution/engine/agent/memory/types.ts +90 -0
- package/src/execution/engine/agent/memory/utils.ts +134 -0
- package/src/execution/engine/agent/observability/logging.ts +467 -0
- package/src/execution/engine/agent/observability/types.ts +64 -0
- package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +209 -0
- package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -0
- package/src/execution/engine/agent/reasoning/processor.ts +92 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/security.ts +32 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -0
- package/src/execution/engine/agent/reasoning/request-builder.ts +169 -0
- package/src/execution/engine/agent/reasoning/types.ts +18 -0
- package/src/execution/engine/base/__tests__/errors.test.ts +246 -0
- package/src/execution/engine/base/__tests__/serialization.test.ts +670 -0
- package/src/execution/engine/base/__tests__/utils.test.ts +45 -0
- package/src/execution/engine/base/errors.ts +118 -0
- package/src/execution/engine/base/index.ts +2 -0
- package/src/execution/engine/base/logging.ts +31 -0
- package/src/execution/engine/base/serialization.ts +324 -0
- package/src/execution/engine/base/types.ts +126 -0
- package/src/execution/engine/base/utils.ts +41 -0
- package/src/execution/engine/index.ts +440 -0
- package/src/execution/engine/interface/index.ts +1 -0
- package/src/execution/engine/interface/types.ts +62 -0
- package/src/execution/engine/llm/__tests__/errors.test.ts +318 -0
- package/src/execution/engine/llm/__tests__/input-sanitizer.test.ts +286 -0
- package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -0
- package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -0
- package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -0
- package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -0
- package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -0
- package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -0
- package/src/execution/engine/llm/adapters/__tests__/circuit-breaker-error.test.ts +94 -0
- package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -0
- package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -0
- package/src/execution/engine/llm/adapters/__tests__/mock-adapter.test.ts +432 -0
- package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -0
- package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -0
- package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -0
- package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -0
- package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -0
- package/src/execution/engine/llm/adapters/index.ts +17 -0
- package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -0
- package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -0
- package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -0
- package/src/execution/engine/llm/adapters/server/compose-signal.ts +18 -0
- package/src/execution/engine/llm/adapters/server/google.ts +283 -0
- package/src/execution/engine/llm/adapters/server/index.ts +12 -0
- package/src/execution/engine/llm/adapters/server/openai.ts +206 -0
- package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -0
- package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -0
- package/src/execution/engine/llm/errors.ts +186 -0
- package/src/execution/engine/llm/input-sanitizer.ts +129 -0
- package/src/execution/engine/llm/model-info.ts +332 -0
- package/src/execution/engine/llm/response-schema-validator.ts +113 -0
- package/src/execution/engine/llm/types.ts +86 -0
- package/src/execution/engine/test-utils/index.ts +6 -0
- package/src/execution/engine/test-utils/mocks.ts +56 -0
- package/src/execution/engine/tools/__tests__/tooling-error.test.ts +265 -0
- package/src/execution/engine/tools/__tests__/types.test.ts +47 -0
- package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -0
- package/src/execution/engine/tools/integration/index.ts +53 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +362 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/README.md +632 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +186 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +338 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +147 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/__tests__/dropbox-adapter.test.ts +409 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/dropbox-adapter.ts +281 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/dropbox-tools.ts +106 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/create-folder/__tests__/index.test.ts +451 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/create-folder/index.ts +114 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/upload-file/__tests__/index.test.ts +415 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/upload-file/index.ts +111 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/index.ts +25 -0
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -0
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/types.ts +44 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/utils/types.ts +246 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/index.ts +38 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-adapter.ts +87 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +179 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/index.ts +44 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -0
- package/src/execution/engine/tools/integration/server/index.ts +61 -0
- package/src/execution/engine/tools/integration/service.ts +161 -0
- package/src/execution/engine/tools/integration/tool.ts +253 -0
- package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -0
- package/src/execution/engine/tools/integration/types/apify.ts +92 -0
- package/src/execution/engine/tools/integration/types/attio.ts +354 -0
- package/src/execution/engine/tools/integration/types/dropbox.ts +64 -0
- package/src/execution/engine/tools/integration/types/gmail.ts +35 -0
- package/src/execution/engine/tools/integration/types/google-sheets.ts +303 -0
- package/src/execution/engine/tools/integration/types/index.ts +19 -0
- package/src/execution/engine/tools/integration/types/instantly.ts +557 -0
- package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -0
- package/src/execution/engine/tools/integration/types/resend.ts +63 -0
- package/src/execution/engine/tools/integration/types/signature-api.ts +164 -0
- package/src/execution/engine/tools/integration/types/stripe.ts +162 -0
- package/src/execution/engine/tools/integration/types/tomba.ts +94 -0
- package/src/execution/engine/tools/lead-service-types.ts +884 -0
- package/src/execution/engine/tools/llm/index.ts +11 -0
- package/src/execution/engine/tools/llm/server/index.ts +8 -0
- package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -0
- package/src/execution/engine/tools/platform/__tests__/approval.test.ts +242 -0
- package/src/execution/engine/tools/platform/__tests__/email.test.ts +482 -0
- package/src/execution/engine/tools/platform/__tests__/hitl-cancel.test.ts +97 -0
- package/src/execution/engine/tools/platform/__tests__/notification.test.ts +208 -0
- package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -0
- package/src/execution/engine/tools/platform/__tests__/scheduler.test.ts +189 -0
- package/src/execution/engine/tools/platform/__tests__/schedules.test.ts +336 -0
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -0
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -0
- package/src/execution/engine/tools/platform/acquisition/index.ts +43 -0
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -0
- package/src/execution/engine/tools/platform/acquisition/types.ts +260 -0
- package/src/execution/engine/tools/platform/approval/cancel-by-metadata.ts +65 -0
- package/src/execution/engine/tools/platform/approval/index.ts +4 -0
- package/src/execution/engine/tools/platform/approval/tool.ts +99 -0
- package/src/execution/engine/tools/platform/email/index.ts +122 -0
- package/src/execution/engine/tools/platform/email/types.ts +96 -0
- package/src/execution/engine/tools/platform/index.ts +181 -0
- package/src/execution/engine/tools/platform/notification.ts +81 -0
- package/src/execution/engine/tools/platform/pdf/index.ts +110 -0
- package/src/execution/engine/tools/platform/pdf/types.ts +77 -0
- package/src/execution/engine/tools/platform/resource-invocation/__tests__/edge-cases.test.ts +507 -0
- package/src/execution/engine/tools/platform/resource-invocation/__tests__/resource-invocation-service.test.ts +500 -0
- package/src/execution/engine/tools/platform/resource-invocation/__tests__/tool.test.ts +555 -0
- package/src/execution/engine/tools/platform/resource-invocation/dynamic-tool.ts +94 -0
- package/src/execution/engine/tools/platform/resource-invocation/index.ts +14 -0
- package/src/execution/engine/tools/platform/resource-invocation/resource-invocation-service.ts +147 -0
- package/src/execution/engine/tools/platform/resource-invocation/tool.ts +115 -0
- package/src/execution/engine/tools/platform/resource-invocation/types.ts +31 -0
- package/src/execution/engine/tools/platform/scheduler.ts +87 -0
- package/src/execution/engine/tools/platform/schedules/cancel-by-key-tool.ts +48 -0
- package/src/execution/engine/tools/platform/schedules/cancel-by-metadata-tool.ts +42 -0
- package/src/execution/engine/tools/platform/schedules/delete-by-key-tool.ts +43 -0
- package/src/execution/engine/tools/platform/schedules/index.ts +13 -0
- package/src/execution/engine/tools/platform/schedules/list-tool.ts +56 -0
- package/src/execution/engine/tools/platform/schedules/types.ts +88 -0
- package/src/execution/engine/tools/platform/storage/__tests__/storage.test.ts +998 -0
- package/src/execution/engine/tools/platform/storage/index.ts +370 -0
- package/src/execution/engine/tools/platform/storage/types.ts +128 -0
- package/src/execution/engine/tools/platform/types.ts +148 -0
- package/src/execution/engine/tools/registry.ts +590 -0
- package/src/execution/engine/tools/tool-maps.ts +694 -0
- package/src/execution/engine/tools/types.ts +233 -0
- package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -0
- package/src/execution/engine/workflow/__tests__/utils.test.ts +645 -0
- package/src/execution/engine/workflow/__tests__/workflow.test.ts +818 -0
- package/src/execution/engine/workflow/errors.ts +63 -0
- package/src/execution/engine/workflow/helpers/index.ts +11 -0
- package/src/execution/engine/workflow/helpers/server/index.ts +8 -0
- package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -0
- package/src/execution/engine/workflow/index.ts +19 -0
- package/src/execution/engine/workflow/log-truncate.ts +26 -0
- package/src/execution/engine/workflow/logging.ts +191 -0
- package/src/execution/engine/workflow/types.ts +183 -0
- package/src/execution/engine/workflow/utils.ts +280 -0
- package/src/execution/engine/workflow/workflow.ts +168 -0
- package/src/execution/index.ts +20 -0
- package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -0
- package/src/execution/scheduler/__tests__/retry.test.ts +37 -0
- package/src/execution/scheduler/__tests__/utils.test.ts +1009 -0
- package/src/execution/scheduler/api-schemas.ts +296 -0
- package/src/execution/scheduler/index.ts +50 -0
- package/src/execution/scheduler/schemas.ts +264 -0
- package/src/execution/scheduler/types.ts +111 -0
- package/src/execution/scheduler/utils.ts +364 -0
- package/src/forms/index.ts +7 -0
- package/src/forms/schemas.test.ts +113 -0
- package/src/forms/schemas.ts +69 -0
- package/src/forms/types.ts +70 -0
- package/src/index.ts +54 -0
- package/src/integrations/credentials/__tests__/api-schemas.test.ts +496 -0
- package/src/integrations/credentials/__tests__/schemas.test.ts +82 -0
- package/src/integrations/credentials/__tests__/utils.test.ts +144 -0
- package/src/integrations/credentials/api-schemas.ts +143 -0
- package/src/integrations/credentials/index.ts +32 -0
- package/src/integrations/credentials/schemas.ts +164 -0
- package/src/integrations/credentials/utils.ts +59 -0
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -0
- package/src/integrations/oauth/api-schemas.ts +92 -0
- package/src/integrations/oauth/index.ts +19 -0
- package/src/integrations/oauth/provider-registry.ts +61 -0
- package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -0
- package/src/integrations/oauth/server/__tests__/refresh.integration.test.ts +257 -0
- package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -0
- package/src/integrations/oauth/server/credentials.ts +39 -0
- package/src/integrations/oauth/server/refresh.ts +214 -0
- package/src/integrations/oauth/types.ts +34 -0
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -0
- package/src/integrations/webhook-endpoints/api-schemas.ts +102 -0
- package/src/integrations/webhook-endpoints/index.ts +28 -0
- package/src/integrations/webhook-endpoints/types.ts +51 -0
- package/src/operations/activities/api-schemas.ts +79 -0
- package/src/operations/activities/index.ts +9 -0
- package/src/operations/activities/sse-events.ts +30 -0
- package/src/operations/activities/types.ts +63 -0
- package/src/operations/debug-logs/client.ts +60 -0
- package/src/operations/debug-logs/debug-logger.ts +83 -0
- package/src/operations/debug-logs/index.ts +8 -0
- package/src/operations/debug-logs/server.ts +19 -0
- package/src/operations/debug-logs/types.ts +33 -0
- package/src/operations/index.ts +50 -0
- package/src/operations/notifications/__tests__/api-schemas.test.ts +216 -0
- package/src/operations/notifications/api-schemas.ts +91 -0
- package/src/operations/notifications/index.ts +3 -0
- package/src/operations/notifications/sse-events.ts +21 -0
- package/src/operations/notifications/types.ts +47 -0
- package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -0
- package/src/operations/observability/__tests__/schemas.test.ts +151 -0
- package/src/operations/observability/__tests__/types.test.ts +109 -0
- package/src/operations/observability/__tests__/utils.test.ts +54 -0
- package/src/operations/observability/ai-usage-collector.ts +64 -0
- package/src/operations/observability/index.ts +13 -0
- package/src/operations/observability/metrics-collector.ts +49 -0
- package/src/operations/observability/schemas.ts +39 -0
- package/src/operations/observability/types.ts +463 -0
- package/src/operations/observability/utils.ts +77 -0
- package/src/operations/sessions/__tests__/api-schemas.test.ts +361 -0
- package/src/operations/sessions/__tests__/manager.test.ts +821 -0
- package/src/operations/sessions/api-schemas.ts +166 -0
- package/src/operations/sessions/index.ts +26 -0
- package/src/operations/sessions/server/manager.ts +90 -0
- package/src/operations/sessions/server/session.ts +180 -0
- package/src/operations/sessions/types.ts +98 -0
- package/src/operations/triggers/index.ts +12 -0
- package/src/operations/triggers/webhook/definitions/__tests__/instantly-reply-received.test.ts +72 -0
- package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -0
- package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -0
- package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -0
- package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -0
- package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -0
- package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -0
- package/src/operations/triggers/webhook/index.ts +35 -0
- package/src/operations/triggers/webhook/types.ts +74 -0
- package/src/organization-model/README.md +79 -0
- package/src/organization-model/__tests__/graph.test.ts +250 -0
- package/src/organization-model/__tests__/resolve.test.ts +47 -0
- package/src/organization-model/defaults.ts +60 -0
- package/src/organization-model/domains/branding.ts +22 -0
- package/src/organization-model/domains/crm.ts +46 -0
- package/src/organization-model/domains/delivery.ts +48 -0
- package/src/organization-model/domains/features.ts +57 -0
- package/src/organization-model/domains/lead-gen.ts +33 -0
- package/src/organization-model/domains/navigation.ts +103 -0
- package/src/organization-model/domains/shared.ts +42 -0
- package/src/organization-model/graph/build.ts +432 -0
- package/src/organization-model/graph/index.ts +4 -0
- package/src/organization-model/graph/schema.ts +50 -0
- package/src/organization-model/graph/types.ts +52 -0
- package/src/organization-model/index.ts +11 -0
- package/src/organization-model/published.ts +18 -0
- package/src/organization-model/resolve.ts +42 -0
- package/src/organization-model/schema.ts +21 -0
- package/src/organization-model/types.ts +27 -0
- package/src/platform/api/index.ts +1 -0
- package/src/platform/api/types.ts +35 -0
- package/src/platform/constants/http.ts +37 -0
- package/src/platform/constants/index.ts +5 -0
- package/src/platform/constants/limits.ts +32 -0
- package/src/platform/constants/resilience.ts +51 -0
- package/src/platform/constants/timeouts.ts +20 -0
- package/src/platform/constants/versions.ts +3 -0
- package/src/platform/index.ts +27 -0
- package/src/platform/registry/__tests__/command-view.test.ts +410 -0
- package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -0
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1004 -0
- package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -0
- package/src/platform/registry/__tests__/resource-registry.test.ts +1942 -0
- package/src/platform/registry/__tests__/serialization.test.ts +1127 -0
- package/src/platform/registry/__tests__/validation.test.ts +1086 -0
- package/src/platform/registry/command-view.ts +180 -0
- package/src/platform/registry/domains.ts +165 -0
- package/src/platform/registry/index.ts +93 -0
- package/src/platform/registry/reserved.ts +24 -0
- package/src/platform/registry/resource-metadata.ts +59 -0
- package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -0
- package/src/platform/registry/resource-registry.ts +788 -0
- package/src/platform/registry/serialization.ts +273 -0
- package/src/platform/registry/serialized-types.ts +231 -0
- package/src/platform/registry/stats-types.ts +66 -0
- package/src/platform/registry/types.ts +404 -0
- package/src/platform/registry/validation.ts +513 -0
- package/src/platform/resilience/__tests__/circuit-breaker.test.ts +291 -0
- package/src/platform/resilience/__tests__/http-error-mapper.test.ts +173 -0
- package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -0
- package/src/platform/resilience/__tests__/retry.test.ts +380 -0
- package/src/platform/resilience/__tests__/timeout.test.ts +219 -0
- package/src/platform/resilience/circuit-breaker.ts +164 -0
- package/src/platform/resilience/errors.ts +68 -0
- package/src/platform/resilience/http-error-mapper.ts +129 -0
- package/src/platform/resilience/index.ts +93 -0
- package/src/platform/resilience/rate-limiter-types.ts +46 -0
- package/src/platform/resilience/rate-limiter.ts +140 -0
- package/src/platform/resilience/retry.ts +89 -0
- package/src/platform/resilience/timeout.ts +63 -0
- package/src/platform/sse/events.ts +67 -0
- package/src/platform/sse/index.ts +7 -0
- package/src/platform/utils/__tests__/currency.test.ts +77 -0
- package/src/platform/utils/__tests__/validation.test.ts +1083 -0
- package/src/platform/utils/currency.ts +96 -0
- package/src/platform/utils/debounce.ts +52 -0
- package/src/platform/utils/error.ts +42 -0
- package/src/platform/utils/hmac.test.ts +97 -0
- package/src/platform/utils/index.ts +32 -0
- package/src/platform/utils/server/betterstack-logger.ts +210 -0
- package/src/platform/utils/server/hmac.ts +44 -0
- package/src/platform/utils/server/unsubscribe.ts +111 -0
- package/src/platform/utils/token-counter.ts +96 -0
- package/src/platform/utils/validation.ts +425 -0
- package/src/projects/api-schemas.ts +265 -0
- package/src/published.ts +1 -0
- package/src/server.ts +273 -0
- package/src/supabase/__tests__/helpers.test.ts +51 -0
- package/src/supabase/database.types.ts +2674 -0
- package/src/supabase/helpers.ts +20 -0
- package/src/supabase/index.ts +52 -0
- package/src/supabase/server/client.ts +58 -0
- package/src/test-utils/README.md +150 -0
- package/src/test-utils/browser-mocks.ts +54 -0
- package/src/test-utils/fixtures/api-keys.ts +52 -0
- package/src/test-utils/fixtures/index.ts +4 -0
- package/src/test-utils/fixtures/memberships.ts +80 -0
- package/src/test-utils/fixtures/organizations.ts +69 -0
- package/src/test-utils/fixtures/users.ts +79 -0
- package/src/test-utils/index.ts +11 -0
- package/src/test-utils/mocks/index.ts +2 -0
- package/src/test-utils/mocks/supabase.ts +142 -0
- package/src/test-utils/mocks/workos.ts +108 -0
- package/src/test-utils/rls/RLSTestContext.ts +586 -0
- package/src/test-utils/rls/index.ts +1 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform Storage Tools
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating storage tools that interact with
|
|
5
|
+
* Supabase Storage for org-scoped file management.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const uploadTool = createStorageUploadTool({
|
|
10
|
+
* name: 'save_proposal',
|
|
11
|
+
* description: 'Save generated proposal PDF to storage'
|
|
12
|
+
* })
|
|
13
|
+
*
|
|
14
|
+
* const signedUrlTool = createStorageSignedUrlTool({
|
|
15
|
+
* name: 'get_proposal_url',
|
|
16
|
+
* description: 'Get signed URL for proposal download'
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { Tool, ToolExecutionOptions } from '../../types'
|
|
22
|
+
import { serviceUnavailable } from '../../types'
|
|
23
|
+
import { getToolServices } from '../../registry'
|
|
24
|
+
import {
|
|
25
|
+
StorageUploadInputSchema,
|
|
26
|
+
StorageUploadOutputSchema,
|
|
27
|
+
StorageSignedUrlInputSchema,
|
|
28
|
+
StorageSignedUrlOutputSchema,
|
|
29
|
+
StorageDownloadInputSchema,
|
|
30
|
+
StorageDownloadOutputSchema,
|
|
31
|
+
StorageDeleteInputSchema,
|
|
32
|
+
StorageDeleteOutputSchema,
|
|
33
|
+
StorageListInputSchema,
|
|
34
|
+
StorageListOutputSchema,
|
|
35
|
+
type StorageUploadInput,
|
|
36
|
+
type StorageUploadOutput,
|
|
37
|
+
type StorageSignedUrlInput,
|
|
38
|
+
type StorageSignedUrlOutput,
|
|
39
|
+
type StorageDownloadInput,
|
|
40
|
+
type StorageDownloadOutput,
|
|
41
|
+
type StorageDeleteInput,
|
|
42
|
+
type StorageDeleteOutput,
|
|
43
|
+
type StorageListInput,
|
|
44
|
+
type StorageListOutput,
|
|
45
|
+
type StorageToolConfig
|
|
46
|
+
} from './types'
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create storage upload tool for workflows/agents
|
|
50
|
+
*
|
|
51
|
+
* @param config - Tool configuration (name, description)
|
|
52
|
+
* @returns Tool that uploads files to org-scoped storage
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* const uploadTool = createStorageUploadTool({
|
|
56
|
+
* name: 'save_proposal',
|
|
57
|
+
* description: 'Save generated proposal PDF to storage'
|
|
58
|
+
* })
|
|
59
|
+
*
|
|
60
|
+
* // In agent execution:
|
|
61
|
+
* await uploadTool.execute({
|
|
62
|
+
* input: {
|
|
63
|
+
* bucket: 'acquisition',
|
|
64
|
+
* path: 'proposals/deal-123/proposal.pdf',
|
|
65
|
+
* content: base64EncodedPdf,
|
|
66
|
+
* contentType: 'application/pdf'
|
|
67
|
+
* },
|
|
68
|
+
* executionContext: context
|
|
69
|
+
* })
|
|
70
|
+
*/
|
|
71
|
+
export function createStorageUploadTool(config: StorageToolConfig): Tool {
|
|
72
|
+
return {
|
|
73
|
+
name: config.name,
|
|
74
|
+
description: config.description,
|
|
75
|
+
inputSchema: StorageUploadInputSchema,
|
|
76
|
+
outputSchema: StorageUploadOutputSchema,
|
|
77
|
+
|
|
78
|
+
async execute(options: ToolExecutionOptions): Promise<StorageUploadOutput> {
|
|
79
|
+
if (!options.executionContext) {
|
|
80
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const { storageService } = getToolServices()
|
|
84
|
+
if (!storageService) {
|
|
85
|
+
throw serviceUnavailable('StorageService', {
|
|
86
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
87
|
+
tool: config.name
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const input = options.input as StorageUploadInput
|
|
92
|
+
const buffer = Buffer.from(input.content, 'base64')
|
|
93
|
+
|
|
94
|
+
const result = await storageService.upload({
|
|
95
|
+
organizationId: options.executionContext.organizationId,
|
|
96
|
+
bucket: input.bucket,
|
|
97
|
+
path: input.path,
|
|
98
|
+
file: buffer,
|
|
99
|
+
contentType: input.contentType,
|
|
100
|
+
upsert: input.upsert
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
path: result.path,
|
|
106
|
+
fullPath: result.fullPath
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Create storage signed URL tool for workflows/agents
|
|
114
|
+
*
|
|
115
|
+
* @param config - Tool configuration (name, description)
|
|
116
|
+
* @returns Tool that creates signed URLs for temporary file access
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* const signedUrlTool = createStorageSignedUrlTool({
|
|
120
|
+
* name: 'get_proposal_url',
|
|
121
|
+
* description: 'Get signed URL for proposal download'
|
|
122
|
+
* })
|
|
123
|
+
*
|
|
124
|
+
* // In agent execution:
|
|
125
|
+
* await signedUrlTool.execute({
|
|
126
|
+
* input: {
|
|
127
|
+
* bucket: 'acquisition',
|
|
128
|
+
* path: 'proposals/deal-123/proposal.pdf',
|
|
129
|
+
* expiresIn: 604800 // 7 days
|
|
130
|
+
* },
|
|
131
|
+
* executionContext: context
|
|
132
|
+
* })
|
|
133
|
+
*/
|
|
134
|
+
export function createStorageSignedUrlTool(config: StorageToolConfig): Tool {
|
|
135
|
+
return {
|
|
136
|
+
name: config.name,
|
|
137
|
+
description: config.description,
|
|
138
|
+
inputSchema: StorageSignedUrlInputSchema,
|
|
139
|
+
outputSchema: StorageSignedUrlOutputSchema,
|
|
140
|
+
|
|
141
|
+
async execute(options: ToolExecutionOptions): Promise<StorageSignedUrlOutput> {
|
|
142
|
+
if (!options.executionContext) {
|
|
143
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const { storageService } = getToolServices()
|
|
147
|
+
if (!storageService) {
|
|
148
|
+
throw serviceUnavailable('StorageService', {
|
|
149
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
150
|
+
tool: config.name
|
|
151
|
+
})
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const input = options.input as StorageSignedUrlInput
|
|
155
|
+
|
|
156
|
+
const result = await storageService.createSignedUrl({
|
|
157
|
+
organizationId: options.executionContext.organizationId,
|
|
158
|
+
bucket: input.bucket,
|
|
159
|
+
path: input.path,
|
|
160
|
+
expiresIn: input.expiresIn
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
success: true,
|
|
165
|
+
signedUrl: result.signedUrl,
|
|
166
|
+
expiresAt: result.expiresAt.toISOString()
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Create storage download tool for workflows/agents
|
|
174
|
+
*
|
|
175
|
+
* @param config - Tool configuration (name, description)
|
|
176
|
+
* @returns Tool that downloads files from org-scoped storage
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* const downloadTool = createStorageDownloadTool({
|
|
180
|
+
* name: 'get_proposal_content',
|
|
181
|
+
* description: 'Download proposal PDF content'
|
|
182
|
+
* })
|
|
183
|
+
*
|
|
184
|
+
* // In agent execution:
|
|
185
|
+
* await downloadTool.execute({
|
|
186
|
+
* input: {
|
|
187
|
+
* bucket: 'acquisition',
|
|
188
|
+
* path: 'proposals/deal-123/proposal.pdf'
|
|
189
|
+
* },
|
|
190
|
+
* executionContext: context
|
|
191
|
+
* })
|
|
192
|
+
*/
|
|
193
|
+
export function createStorageDownloadTool(config: StorageToolConfig): Tool {
|
|
194
|
+
return {
|
|
195
|
+
name: config.name,
|
|
196
|
+
description: config.description,
|
|
197
|
+
inputSchema: StorageDownloadInputSchema,
|
|
198
|
+
outputSchema: StorageDownloadOutputSchema,
|
|
199
|
+
|
|
200
|
+
async execute(options: ToolExecutionOptions): Promise<StorageDownloadOutput> {
|
|
201
|
+
if (!options.executionContext) {
|
|
202
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const { storageService } = getToolServices()
|
|
206
|
+
if (!storageService) {
|
|
207
|
+
throw serviceUnavailable('StorageService', {
|
|
208
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
209
|
+
tool: config.name
|
|
210
|
+
})
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const input = options.input as StorageDownloadInput
|
|
214
|
+
|
|
215
|
+
const blob = await storageService.download({
|
|
216
|
+
organizationId: options.executionContext.organizationId,
|
|
217
|
+
bucket: input.bucket,
|
|
218
|
+
path: input.path
|
|
219
|
+
})
|
|
220
|
+
|
|
221
|
+
// Convert blob to base64
|
|
222
|
+
const arrayBuffer = await blob.arrayBuffer()
|
|
223
|
+
const content = Buffer.from(arrayBuffer).toString('base64')
|
|
224
|
+
|
|
225
|
+
return {
|
|
226
|
+
success: true,
|
|
227
|
+
content,
|
|
228
|
+
contentType: blob.type || undefined
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Create storage delete tool for workflows/agents
|
|
236
|
+
*
|
|
237
|
+
* @param config - Tool configuration (name, description)
|
|
238
|
+
* @returns Tool that deletes files from org-scoped storage
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* const deleteTool = createStorageDeleteTool({
|
|
242
|
+
* name: 'remove_draft',
|
|
243
|
+
* description: 'Delete draft proposal file'
|
|
244
|
+
* })
|
|
245
|
+
*
|
|
246
|
+
* // In agent execution:
|
|
247
|
+
* await deleteTool.execute({
|
|
248
|
+
* input: {
|
|
249
|
+
* bucket: 'acquisition',
|
|
250
|
+
* path: 'proposals/deal-123/draft.pdf'
|
|
251
|
+
* },
|
|
252
|
+
* executionContext: context
|
|
253
|
+
* })
|
|
254
|
+
*/
|
|
255
|
+
export function createStorageDeleteTool(config: StorageToolConfig): Tool {
|
|
256
|
+
return {
|
|
257
|
+
name: config.name,
|
|
258
|
+
description: config.description,
|
|
259
|
+
inputSchema: StorageDeleteInputSchema,
|
|
260
|
+
outputSchema: StorageDeleteOutputSchema,
|
|
261
|
+
|
|
262
|
+
async execute(options: ToolExecutionOptions): Promise<StorageDeleteOutput> {
|
|
263
|
+
if (!options.executionContext) {
|
|
264
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const { storageService } = getToolServices()
|
|
268
|
+
if (!storageService) {
|
|
269
|
+
throw serviceUnavailable('StorageService', {
|
|
270
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
271
|
+
tool: config.name
|
|
272
|
+
})
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const input = options.input as StorageDeleteInput
|
|
276
|
+
|
|
277
|
+
await storageService.delete({
|
|
278
|
+
organizationId: options.executionContext.organizationId,
|
|
279
|
+
bucket: input.bucket,
|
|
280
|
+
path: input.path
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
return {
|
|
284
|
+
success: true
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Create storage list tool for workflows/agents
|
|
292
|
+
*
|
|
293
|
+
* @param config - Tool configuration (name, description)
|
|
294
|
+
* @returns Tool that lists files in org-scoped storage
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* const listTool = createStorageListTool({
|
|
298
|
+
* name: 'list_proposals',
|
|
299
|
+
* description: 'List all proposals for a deal'
|
|
300
|
+
* })
|
|
301
|
+
*
|
|
302
|
+
* // In agent execution:
|
|
303
|
+
* await listTool.execute({
|
|
304
|
+
* input: {
|
|
305
|
+
* bucket: 'acquisition',
|
|
306
|
+
* prefix: 'proposals/deal-123/'
|
|
307
|
+
* },
|
|
308
|
+
* executionContext: context
|
|
309
|
+
* })
|
|
310
|
+
*/
|
|
311
|
+
export function createStorageListTool(config: StorageToolConfig): Tool {
|
|
312
|
+
return {
|
|
313
|
+
name: config.name,
|
|
314
|
+
description: config.description,
|
|
315
|
+
inputSchema: StorageListInputSchema,
|
|
316
|
+
outputSchema: StorageListOutputSchema,
|
|
317
|
+
|
|
318
|
+
async execute(options: ToolExecutionOptions): Promise<StorageListOutput> {
|
|
319
|
+
if (!options.executionContext) {
|
|
320
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
const { storageService } = getToolServices()
|
|
324
|
+
if (!storageService) {
|
|
325
|
+
throw serviceUnavailable('StorageService', {
|
|
326
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
327
|
+
tool: config.name
|
|
328
|
+
})
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
const input = options.input as StorageListInput
|
|
332
|
+
|
|
333
|
+
const files = await storageService.list({
|
|
334
|
+
organizationId: options.executionContext.organizationId,
|
|
335
|
+
bucket: input.bucket,
|
|
336
|
+
prefix: input.prefix
|
|
337
|
+
})
|
|
338
|
+
|
|
339
|
+
return {
|
|
340
|
+
success: true,
|
|
341
|
+
files
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Re-export types for consumers
|
|
348
|
+
export {
|
|
349
|
+
StorageUploadInputSchema,
|
|
350
|
+
StorageUploadOutputSchema,
|
|
351
|
+
StorageSignedUrlInputSchema,
|
|
352
|
+
StorageSignedUrlOutputSchema,
|
|
353
|
+
StorageDownloadInputSchema,
|
|
354
|
+
StorageDownloadOutputSchema,
|
|
355
|
+
StorageDeleteInputSchema,
|
|
356
|
+
StorageDeleteOutputSchema,
|
|
357
|
+
StorageListInputSchema,
|
|
358
|
+
StorageListOutputSchema,
|
|
359
|
+
type StorageUploadInput,
|
|
360
|
+
type StorageUploadOutput,
|
|
361
|
+
type StorageSignedUrlInput,
|
|
362
|
+
type StorageSignedUrlOutput,
|
|
363
|
+
type StorageDownloadInput,
|
|
364
|
+
type StorageDownloadOutput,
|
|
365
|
+
type StorageDeleteInput,
|
|
366
|
+
type StorageDeleteOutput,
|
|
367
|
+
type StorageListInput,
|
|
368
|
+
type StorageListOutput,
|
|
369
|
+
type StorageToolConfig
|
|
370
|
+
} from './types'
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform Storage Tool Types
|
|
3
|
+
* Zod schemas and TypeScript types for storage platform tools
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { z } from 'zod'
|
|
7
|
+
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Input Schemas
|
|
10
|
+
// =============================================================================
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Schema for storage upload tool input
|
|
14
|
+
*/
|
|
15
|
+
export const StorageUploadInputSchema = z.object({
|
|
16
|
+
bucket: z.string().describe('Storage bucket name (e.g., "acquisition", "org-files", "assets")'),
|
|
17
|
+
path: z.string().describe('File path within org folder (e.g., "proposals/deal-123/proposal.pdf")'),
|
|
18
|
+
content: z.string().describe('Base64 encoded file content'),
|
|
19
|
+
contentType: z.string().describe('MIME type (e.g., "application/pdf", "image/png")'),
|
|
20
|
+
upsert: z.boolean().optional().describe('Overwrite if file exists (default: false)')
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Schema for storage signed URL tool input
|
|
25
|
+
*/
|
|
26
|
+
export const StorageSignedUrlInputSchema = z.object({
|
|
27
|
+
bucket: z.string().describe('Storage bucket name'),
|
|
28
|
+
path: z.string().describe('File path within org folder'),
|
|
29
|
+
expiresIn: z.number().default(86400).describe('URL expiration in seconds (default: 86400 = 24 hours)')
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Schema for storage download tool input
|
|
34
|
+
*/
|
|
35
|
+
export const StorageDownloadInputSchema = z.object({
|
|
36
|
+
bucket: z.string().describe('Storage bucket name'),
|
|
37
|
+
path: z.string().describe('File path within org folder')
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Schema for storage delete tool input
|
|
42
|
+
*/
|
|
43
|
+
export const StorageDeleteInputSchema = z.object({
|
|
44
|
+
bucket: z.string().describe('Storage bucket name'),
|
|
45
|
+
path: z.string().describe('File path within org folder')
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Schema for storage list tool input
|
|
50
|
+
*/
|
|
51
|
+
export const StorageListInputSchema = z.object({
|
|
52
|
+
bucket: z.string().describe('Storage bucket name'),
|
|
53
|
+
prefix: z.string().optional().describe('Path prefix to filter files (e.g., "proposals/")')
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
// =============================================================================
|
|
57
|
+
// Output Schemas
|
|
58
|
+
// =============================================================================
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Schema for storage upload tool output
|
|
62
|
+
*/
|
|
63
|
+
export const StorageUploadOutputSchema = z.object({
|
|
64
|
+
success: z.boolean(),
|
|
65
|
+
path: z.string().describe('Relative file path'),
|
|
66
|
+
fullPath: z.string().describe('Full path including org prefix')
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Schema for storage signed URL tool output
|
|
71
|
+
*/
|
|
72
|
+
export const StorageSignedUrlOutputSchema = z.object({
|
|
73
|
+
success: z.boolean(),
|
|
74
|
+
signedUrl: z.string().describe('Temporary signed URL for file access'),
|
|
75
|
+
expiresAt: z.string().describe('ISO date when URL expires')
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Schema for storage download tool output
|
|
80
|
+
*/
|
|
81
|
+
export const StorageDownloadOutputSchema = z.object({
|
|
82
|
+
success: z.boolean(),
|
|
83
|
+
content: z.string().describe('Base64 encoded file content'),
|
|
84
|
+
contentType: z.string().optional().describe('MIME type if known')
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Schema for storage delete tool output
|
|
89
|
+
*/
|
|
90
|
+
export const StorageDeleteOutputSchema = z.object({
|
|
91
|
+
success: z.boolean()
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Schema for storage list tool output
|
|
96
|
+
*/
|
|
97
|
+
export const StorageListOutputSchema = z.object({
|
|
98
|
+
success: z.boolean(),
|
|
99
|
+
files: z.array(z.string()).describe('List of file names')
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
// =============================================================================
|
|
103
|
+
// TypeScript Types
|
|
104
|
+
// =============================================================================
|
|
105
|
+
|
|
106
|
+
export type StorageUploadInput = z.infer<typeof StorageUploadInputSchema>
|
|
107
|
+
export type StorageSignedUrlInput = z.infer<typeof StorageSignedUrlInputSchema>
|
|
108
|
+
export type StorageDownloadInput = z.infer<typeof StorageDownloadInputSchema>
|
|
109
|
+
export type StorageDeleteInput = z.infer<typeof StorageDeleteInputSchema>
|
|
110
|
+
export type StorageListInput = z.infer<typeof StorageListInputSchema>
|
|
111
|
+
|
|
112
|
+
export type StorageUploadOutput = z.infer<typeof StorageUploadOutputSchema>
|
|
113
|
+
export type StorageSignedUrlOutput = z.infer<typeof StorageSignedUrlOutputSchema>
|
|
114
|
+
export type StorageDownloadOutput = z.infer<typeof StorageDownloadOutputSchema>
|
|
115
|
+
export type StorageDeleteOutput = z.infer<typeof StorageDeleteOutputSchema>
|
|
116
|
+
export type StorageListOutput = z.infer<typeof StorageListOutputSchema>
|
|
117
|
+
|
|
118
|
+
// =============================================================================
|
|
119
|
+
// Tool Configuration Types
|
|
120
|
+
// =============================================================================
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Configuration for storage tool factories
|
|
124
|
+
*/
|
|
125
|
+
export interface StorageToolConfig {
|
|
126
|
+
name: string
|
|
127
|
+
description: string
|
|
128
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import type { z } from 'zod'
|
|
2
|
+
import type { CreateTaskParams, Task } from '../../../../commands/queue/types'
|
|
3
|
+
import type { CreateScheduleInput, TaskSchedule } from '../../../scheduler/types'
|
|
4
|
+
import type { CreateNotificationParams, Notification } from '../../../../operations/notifications/types'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Command Queue Service interface for platform tools.
|
|
8
|
+
* Matches the structure of CommandQueueService in apps/api.
|
|
9
|
+
*/
|
|
10
|
+
export interface ICommandQueueService {
|
|
11
|
+
createTask(params: CreateTaskParams): Promise<Task>
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Delete pending HITL tasks matching metadata filter
|
|
15
|
+
* Uses JSONB containment (.contains()) for metadata-based batch deletion
|
|
16
|
+
*/
|
|
17
|
+
deleteByMetadata(
|
|
18
|
+
organizationId: string,
|
|
19
|
+
metadata: Record<string, unknown>,
|
|
20
|
+
status?: string
|
|
21
|
+
): Promise<{ deleted: number }>
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Task Scheduler Service interface for platform tools.
|
|
26
|
+
* Matches the structure of TaskScheduleService in apps/api.
|
|
27
|
+
*/
|
|
28
|
+
export interface ITaskSchedulerService {
|
|
29
|
+
createSchedule(input: CreateScheduleInput): Promise<TaskSchedule>
|
|
30
|
+
deleteScheduleByIdempotencyKey(idempotencyKey: string, organizationId: string): Promise<void>
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* List schedules with optional metadata filtering
|
|
34
|
+
* Supports JSONB containment for metadata-based queries
|
|
35
|
+
*/
|
|
36
|
+
listSchedules(params: {
|
|
37
|
+
organizationId: string
|
|
38
|
+
targetResourceId?: string
|
|
39
|
+
status?: string
|
|
40
|
+
metadata?: Record<string, unknown>
|
|
41
|
+
limit?: number
|
|
42
|
+
offset?: number
|
|
43
|
+
}): Promise<{ schedules: TaskSchedule[]; total: number }>
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Get a single schedule by ID
|
|
47
|
+
*/
|
|
48
|
+
getSchedule(id: string, organizationId: string): Promise<TaskSchedule | null>
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Cancel a schedule (soft delete - sets status to 'cancelled')
|
|
52
|
+
*/
|
|
53
|
+
cancelSchedule(id: string, organizationId: string): Promise<TaskSchedule>
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Cancel all schedules matching metadata filter (batch soft delete)
|
|
57
|
+
* Uses JSONB containment (.contains()) for metadata-based filtering
|
|
58
|
+
*/
|
|
59
|
+
cancelSchedulesByMetadata(
|
|
60
|
+
organizationId: string,
|
|
61
|
+
metadata: Record<string, unknown>,
|
|
62
|
+
status?: string
|
|
63
|
+
): Promise<{ cancelled: number }>
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Cancel a schedule by idempotency key (soft delete)
|
|
67
|
+
* Finds schedule by key and cancels it. No-op if schedule not found.
|
|
68
|
+
* @see TaskScheduleService.cancelScheduleByIdempotencyKey (apps/api/src/execution/task-scheduler/service.ts)
|
|
69
|
+
*/
|
|
70
|
+
cancelScheduleByIdempotencyKey(idempotencyKey: string, organizationId: string): Promise<{ cancelled: boolean }>
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Notifications Service interface for platform tools.
|
|
75
|
+
* Matches the structure of NotificationService in apps/api.
|
|
76
|
+
*/
|
|
77
|
+
export interface INotificationsService {
|
|
78
|
+
create(params: CreateNotificationParams): Promise<Notification>
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Configuration for creating an approval tool.
|
|
83
|
+
* Approval tools create tasks in the command queue that require human approval.
|
|
84
|
+
*/
|
|
85
|
+
export interface ApprovalToolConfig {
|
|
86
|
+
/** Unique name for the tool */
|
|
87
|
+
name: string
|
|
88
|
+
/** Description of what the tool does */
|
|
89
|
+
description: string
|
|
90
|
+
/** Zod schema for validating input */
|
|
91
|
+
inputSchema: z.ZodSchema
|
|
92
|
+
/** Zod schema for validating output */
|
|
93
|
+
outputSchema: z.ZodSchema
|
|
94
|
+
/** Resource ID to execute when task is approved */
|
|
95
|
+
approveTargetResourceId: string
|
|
96
|
+
/** Optional resource ID to execute when task is rejected */
|
|
97
|
+
rejectTargetResourceId?: string
|
|
98
|
+
/** Task priority (1-10, default: 5) */
|
|
99
|
+
priority?: number
|
|
100
|
+
/** Optional expiration date for the task */
|
|
101
|
+
expiresAt?: Date
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Configuration for creating a scheduler tool.
|
|
106
|
+
* Scheduler tools create scheduled tasks that execute at a specific time.
|
|
107
|
+
*/
|
|
108
|
+
export interface SchedulerToolConfig {
|
|
109
|
+
/** Unique name for the tool */
|
|
110
|
+
name: string
|
|
111
|
+
/** Description of what the tool does (shown to LLM) */
|
|
112
|
+
description: string
|
|
113
|
+
/** Zod schema for validating input */
|
|
114
|
+
inputSchema: z.ZodSchema
|
|
115
|
+
/** Zod schema for validating output */
|
|
116
|
+
outputSchema: z.ZodSchema
|
|
117
|
+
/** Resource ID to execute */
|
|
118
|
+
targetResourceId: string
|
|
119
|
+
/** Type of resource to execute */
|
|
120
|
+
targetResourceType: 'agent' | 'workflow'
|
|
121
|
+
/** Maximum number of retry attempts (default: 3) */
|
|
122
|
+
maxRetries?: number
|
|
123
|
+
/** When to run the scheduled task */
|
|
124
|
+
runAt: Date
|
|
125
|
+
/** Optional task description (for internal tracking) */
|
|
126
|
+
taskDescription?: string
|
|
127
|
+
/** Optional idempotency key */
|
|
128
|
+
idempotencyKey?: string
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Configuration for creating a notification tool.
|
|
133
|
+
* Notification tools send platform notifications to users.
|
|
134
|
+
*/
|
|
135
|
+
export interface NotificationToolConfig {
|
|
136
|
+
/** Unique name for the tool */
|
|
137
|
+
name: string
|
|
138
|
+
/** Description of what the tool does (shown to LLM) */
|
|
139
|
+
description: string
|
|
140
|
+
/** Zod schema for validating input */
|
|
141
|
+
inputSchema: z.ZodSchema
|
|
142
|
+
/** Zod schema for validating output */
|
|
143
|
+
outputSchema: z.ZodSchema
|
|
144
|
+
/** User ID to send notification to (if static, otherwise from input) */
|
|
145
|
+
userId?: string
|
|
146
|
+
/** Notification category (if static, otherwise from input) */
|
|
147
|
+
category?: CreateNotificationParams['category']
|
|
148
|
+
}
|