@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,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow error classes
|
|
3
|
+
* Errors specific to workflow execution
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { ExecutionError } from '../base/errors'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Thrown when a workflow step fails during execution
|
|
10
|
+
*
|
|
11
|
+
* Severity: error (step failure — errors always take precedence over warnings)
|
|
12
|
+
* Category: workflow
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* throw new WorkflowStepError(
|
|
17
|
+
* 'Step "send_email" failed: SMTP server unavailable',
|
|
18
|
+
* {
|
|
19
|
+
* workflowId: 'wf-123',
|
|
20
|
+
* stepIndex: 2,
|
|
21
|
+
* stepName: 'send_email',
|
|
22
|
+
* attemptCount: 1
|
|
23
|
+
* }
|
|
24
|
+
* )
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export class WorkflowStepError extends ExecutionError {
|
|
28
|
+
readonly type = 'workflow_step_error' as const
|
|
29
|
+
readonly severity = 'critical' as const
|
|
30
|
+
readonly category = 'workflow' as const
|
|
31
|
+
|
|
32
|
+
constructor(message: string, context?: Record<string, unknown>) {
|
|
33
|
+
super(message, context)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Thrown when workflow validation fails
|
|
39
|
+
*
|
|
40
|
+
* Severity: info (validation failure indicating user/developer configuration error)
|
|
41
|
+
* Category: validation
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* throw new WorkflowValidationError(
|
|
46
|
+
* 'Invalid workflow: Step "approval" has no approver configured',
|
|
47
|
+
* {
|
|
48
|
+
* workflowId: 'wf-123',
|
|
49
|
+
* stepIndex: 3,
|
|
50
|
+
* field: 'approver'
|
|
51
|
+
* }
|
|
52
|
+
* )
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export class WorkflowValidationError extends ExecutionError {
|
|
56
|
+
readonly type = 'workflow_validation_error' as const
|
|
57
|
+
readonly severity = 'info' as const
|
|
58
|
+
readonly category = 'validation' as const
|
|
59
|
+
|
|
60
|
+
constructor(message: string, context?: Record<string, unknown>) {
|
|
61
|
+
super(message, context)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Step Helpers - Browser-safe exports
|
|
3
|
+
*
|
|
4
|
+
* NOTE: Server-only helper (llmCall) is exported from @repo/core/server
|
|
5
|
+
* to prevent browser build failures (depends on server-only LLM adapters).
|
|
6
|
+
*
|
|
7
|
+
* This file exports only browser-safe types.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
// Type-only exports (safe for browser - types are erased at runtime)
|
|
11
|
+
export type { LLMCallOptions } from './server/llm-call'
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Call Helper
|
|
3
|
+
* Helper function for making LLM calls within workflow step handlers
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { createLLMAdapter } from '../../../llm/adapters/server/adapter-factory'
|
|
7
|
+
import type { ModelConfig } from '../../../llm/model-info'
|
|
8
|
+
import type { ExecutionContext } from '../../../base/types'
|
|
9
|
+
import type { LLMMessage } from '../../../llm/types'
|
|
10
|
+
|
|
11
|
+
export interface LLMCallOptions {
|
|
12
|
+
/** Model configuration (provider, model, API key) */
|
|
13
|
+
modelConfig: ModelConfig
|
|
14
|
+
/** Chat messages (system/user/assistant) */
|
|
15
|
+
messages: LLMMessage[]
|
|
16
|
+
/** JSON Schema for structured output */
|
|
17
|
+
responseSchema: Record<string, unknown>
|
|
18
|
+
/** Optional temperature override */
|
|
19
|
+
temperature?: number
|
|
20
|
+
/** Optional max output tokens override */
|
|
21
|
+
maxOutputTokens?: number
|
|
22
|
+
/** Optional step ID for observability context */
|
|
23
|
+
stepId?: string
|
|
24
|
+
/** Optional step name for observability context */
|
|
25
|
+
stepName?: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Make an LLM call within a workflow step handler
|
|
30
|
+
*
|
|
31
|
+
* Automatically integrates with observability tracking via ExecutionContext.
|
|
32
|
+
* Tracks calls with `callType: 'workflow-step'` in AI usage metrics.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const summarizeStep: WorkflowStep = {
|
|
37
|
+
* id: 'summarize',
|
|
38
|
+
* name: 'Summarize Data',
|
|
39
|
+
* handler: async (input, context) => {
|
|
40
|
+
* const result = await llmCall(context, {
|
|
41
|
+
* modelConfig: {
|
|
42
|
+
* provider: 'openrouter',
|
|
43
|
+
* model: 'openrouter/anthropic/claude-sonnet-4.5',
|
|
44
|
+
* apiKey: process.env.OPENROUTER_API_KEY!
|
|
45
|
+
* },
|
|
46
|
+
* messages: [
|
|
47
|
+
* { role: 'system', content: 'You are a summarization expert.' },
|
|
48
|
+
* { role: 'user', content: `Summarize: ${input.data}` }
|
|
49
|
+
* ],
|
|
50
|
+
* responseSchema: {
|
|
51
|
+
* type: 'object',
|
|
52
|
+
* properties: { summary: { type: 'string' } },
|
|
53
|
+
* required: ['summary']
|
|
54
|
+
* },
|
|
55
|
+
* stepId: 'summarize',
|
|
56
|
+
* stepName: 'Summarize Data'
|
|
57
|
+
* })
|
|
58
|
+
*
|
|
59
|
+
* return { summary: result.summary }
|
|
60
|
+
* },
|
|
61
|
+
* inputSchema: z.object({ data: z.string() }),
|
|
62
|
+
* outputSchema: z.object({ summary: z.string() }),
|
|
63
|
+
* next: { type: StepType.LINEAR, target: 'next-step' }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export async function llmCall<T = unknown>(context: ExecutionContext, options: LLMCallOptions): Promise<T> {
|
|
68
|
+
const { modelConfig, messages, responseSchema, temperature, maxOutputTokens, stepId, stepName } = options
|
|
69
|
+
|
|
70
|
+
const adapter = createLLMAdapter(
|
|
71
|
+
{
|
|
72
|
+
...modelConfig,
|
|
73
|
+
...(temperature !== undefined && { temperature }),
|
|
74
|
+
...(maxOutputTokens !== undefined && { maxOutputTokens })
|
|
75
|
+
},
|
|
76
|
+
context.aiUsageCollector,
|
|
77
|
+
'workflow-step',
|
|
78
|
+
{
|
|
79
|
+
type: 'workflow-step',
|
|
80
|
+
stepId: stepId ?? 'unknown',
|
|
81
|
+
stepName
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
const response = await adapter.generate<T>({
|
|
86
|
+
messages,
|
|
87
|
+
responseSchema,
|
|
88
|
+
temperature,
|
|
89
|
+
maxOutputTokens
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
return response.output
|
|
93
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow module exports
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Export workflow implementation
|
|
6
|
+
export { Workflow } from './workflow'
|
|
7
|
+
|
|
8
|
+
// Export workflow types
|
|
9
|
+
export * from './types'
|
|
10
|
+
|
|
11
|
+
// Export workflow logger types
|
|
12
|
+
export * from './logging'
|
|
13
|
+
|
|
14
|
+
// Export workflow errors
|
|
15
|
+
export * from './errors'
|
|
16
|
+
|
|
17
|
+
// Export workflow step helper types (browser-safe - types only)
|
|
18
|
+
// NOTE: llmCall implementation is server-only - import from @repo/core/server
|
|
19
|
+
export { type LLMCallOptions } from './helpers'
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Max characters for string values in logged step input/output contexts */
|
|
2
|
+
const LOG_STRING_TRUNCATE_LIMIT = 200
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Deep-clone an object, truncating string values that exceed the limit.
|
|
6
|
+
* Keeps the structure intact so the UI timeline can display field names and short previews.
|
|
7
|
+
*/
|
|
8
|
+
export function truncateForLogging(value: unknown): unknown {
|
|
9
|
+
if (value === null || value === undefined) return value
|
|
10
|
+
if (typeof value === 'string') {
|
|
11
|
+
return value.length > LOG_STRING_TRUNCATE_LIMIT
|
|
12
|
+
? value.slice(0, LOG_STRING_TRUNCATE_LIMIT) + `… [${value.length} chars]`
|
|
13
|
+
: value
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(value)) {
|
|
16
|
+
return value.map(truncateForLogging)
|
|
17
|
+
}
|
|
18
|
+
if (typeof value === 'object') {
|
|
19
|
+
const result: Record<string, unknown> = {}
|
|
20
|
+
for (const [k, v] of Object.entries(value)) {
|
|
21
|
+
result[k] = truncateForLogging(v)
|
|
22
|
+
}
|
|
23
|
+
return result
|
|
24
|
+
}
|
|
25
|
+
return value
|
|
26
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow-specific logging types and utilities
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { ExecutionLogLevel, ExecutionLogMessage } from '../base/logging'
|
|
6
|
+
|
|
7
|
+
// Workflow start/end log context
|
|
8
|
+
export interface WorkflowExecutionContext {
|
|
9
|
+
type: 'workflow'
|
|
10
|
+
contextType: 'workflow-execution'
|
|
11
|
+
executionId: string
|
|
12
|
+
workflowId: string
|
|
13
|
+
workflowName?: string
|
|
14
|
+
organizationId: string
|
|
15
|
+
executionPath?: string[]
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Workflow failure log context
|
|
19
|
+
export interface WorkflowFailureContext {
|
|
20
|
+
type: 'workflow'
|
|
21
|
+
contextType: 'workflow-failure'
|
|
22
|
+
executionId: string
|
|
23
|
+
workflowId: string
|
|
24
|
+
error: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Step started log context
|
|
28
|
+
export interface StepStartedContext {
|
|
29
|
+
type: 'workflow'
|
|
30
|
+
contextType: 'step-started'
|
|
31
|
+
stepId: string
|
|
32
|
+
stepStatus: 'started'
|
|
33
|
+
input: unknown
|
|
34
|
+
startTime: number // Explicit start timestamp for timeline
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Step completed log context
|
|
38
|
+
export interface StepCompletedContext {
|
|
39
|
+
type: 'workflow'
|
|
40
|
+
contextType: 'step-completed'
|
|
41
|
+
stepId: string
|
|
42
|
+
stepStatus: 'completed'
|
|
43
|
+
output: unknown
|
|
44
|
+
duration: number
|
|
45
|
+
isTerminal: boolean
|
|
46
|
+
startTime: number // Explicit start timestamp for timeline
|
|
47
|
+
endTime: number // Explicit end timestamp for timeline
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Step failed log context
|
|
51
|
+
export interface StepFailedContext {
|
|
52
|
+
type: 'workflow'
|
|
53
|
+
contextType: 'step-failed'
|
|
54
|
+
stepId: string
|
|
55
|
+
stepStatus: 'failed'
|
|
56
|
+
error: string
|
|
57
|
+
duration: number
|
|
58
|
+
startTime: number // Explicit start timestamp for timeline
|
|
59
|
+
endTime: number // Explicit end timestamp for timeline
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Conditional routing log context
|
|
63
|
+
export interface ConditionalRouteContext {
|
|
64
|
+
type: 'workflow'
|
|
65
|
+
contextType: 'conditional-route'
|
|
66
|
+
stepId: string
|
|
67
|
+
target: string
|
|
68
|
+
error?: string
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Execution path log context
|
|
72
|
+
export interface ExecutionPathContext {
|
|
73
|
+
type: 'workflow'
|
|
74
|
+
contextType: 'execution-path'
|
|
75
|
+
executionPath: string[]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Union of step contexts with stepStatus field
|
|
79
|
+
export type StepStatusContext = StepStartedContext | StepCompletedContext | StepFailedContext
|
|
80
|
+
|
|
81
|
+
// Union of all workflow log contexts
|
|
82
|
+
export type WorkflowLogContext =
|
|
83
|
+
| WorkflowExecutionContext
|
|
84
|
+
| WorkflowFailureContext
|
|
85
|
+
| StepStartedContext
|
|
86
|
+
| StepCompletedContext
|
|
87
|
+
| StepFailedContext
|
|
88
|
+
| ConditionalRouteContext
|
|
89
|
+
| ExecutionPathContext
|
|
90
|
+
|
|
91
|
+
// Workflow execution log message (UI-specific interface)
|
|
92
|
+
export interface WorkflowLogMessage {
|
|
93
|
+
level: ExecutionLogLevel
|
|
94
|
+
message: string
|
|
95
|
+
timestamp: number
|
|
96
|
+
context?: WorkflowLogContext
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Type guard helper functions for context discrimination
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
export function isWorkflowExecutionContext(ctx: WorkflowLogContext): ctx is WorkflowExecutionContext {
|
|
104
|
+
return ctx.contextType === 'workflow-execution'
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function isWorkflowFailureContext(ctx: WorkflowLogContext): ctx is WorkflowFailureContext {
|
|
108
|
+
return ctx.contextType === 'workflow-failure'
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function isStepStartedContext(ctx: WorkflowLogContext): ctx is StepStartedContext {
|
|
112
|
+
// Check new contextType field or fall back to old stepStatus pattern for backwards compatibility
|
|
113
|
+
return (
|
|
114
|
+
ctx.contextType === 'step-started' ||
|
|
115
|
+
('stepStatus' in ctx && (ctx as StepStatusContext).stepStatus === 'started')
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export function isStepCompletedContext(ctx: WorkflowLogContext): ctx is StepCompletedContext {
|
|
120
|
+
// Check new contextType field or fall back to old stepStatus pattern for backwards compatibility
|
|
121
|
+
return (
|
|
122
|
+
ctx.contextType === 'step-completed' ||
|
|
123
|
+
('stepStatus' in ctx && (ctx as StepStatusContext).stepStatus === 'completed')
|
|
124
|
+
)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function isStepFailedContext(ctx: WorkflowLogContext): ctx is StepFailedContext {
|
|
128
|
+
// Check new contextType field or fall back to old stepStatus pattern for backwards compatibility
|
|
129
|
+
return (
|
|
130
|
+
ctx.contextType === 'step-failed' ||
|
|
131
|
+
('stepStatus' in ctx && (ctx as StepStatusContext).stepStatus === 'failed')
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export function isConditionalRouteContext(ctx: WorkflowLogContext): ctx is ConditionalRouteContext {
|
|
136
|
+
// Check new contextType field or fall back to checking for target field for backwards compatibility
|
|
137
|
+
return ctx.contextType === 'conditional-route' || ('target' in ctx && 'stepId' in ctx && !('stepStatus' in ctx))
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export function isExecutionPathContext(ctx: WorkflowLogContext): ctx is ExecutionPathContext {
|
|
141
|
+
return ctx.contextType === 'execution-path'
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Helper to check if context has step-related information
|
|
146
|
+
*/
|
|
147
|
+
export function isStepContext(
|
|
148
|
+
ctx: WorkflowLogContext
|
|
149
|
+
): ctx is StepStartedContext | StepCompletedContext | StepFailedContext | ConditionalRouteContext {
|
|
150
|
+
return (
|
|
151
|
+
ctx.contextType === 'step-started' ||
|
|
152
|
+
ctx.contextType === 'step-completed' ||
|
|
153
|
+
ctx.contextType === 'step-failed' ||
|
|
154
|
+
ctx.contextType === 'conditional-route'
|
|
155
|
+
)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Convert ExecutionLogMessage to WorkflowLogMessage for workflow context
|
|
160
|
+
* Returns null for non-workflow logs
|
|
161
|
+
*/
|
|
162
|
+
export function toWorkflowLogMessage(log: ExecutionLogMessage): WorkflowLogMessage | null {
|
|
163
|
+
// Convert logs with workflow context
|
|
164
|
+
if (log.context?.type === 'workflow') {
|
|
165
|
+
return {
|
|
166
|
+
level: log.level,
|
|
167
|
+
message: log.message,
|
|
168
|
+
timestamp: log.timestamp,
|
|
169
|
+
context: log.context as WorkflowLogContext
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Convert user-level logs (no context or non-workflow context from step handlers)
|
|
174
|
+
// Cast is safe: LogEntry renders any context object as expandable JSON
|
|
175
|
+
return {
|
|
176
|
+
level: log.level,
|
|
177
|
+
message: log.message,
|
|
178
|
+
timestamp: log.timestamp,
|
|
179
|
+
context: log.context as WorkflowLogContext | undefined
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Convert array of ExecutionLogMessages to WorkflowLogMessages
|
|
185
|
+
* Filters out non-workflow logs
|
|
186
|
+
*/
|
|
187
|
+
export function toWorkflowLogMessages(logs: ExecutionLogMessage[]): WorkflowLogMessage[] {
|
|
188
|
+
return logs
|
|
189
|
+
.map(toWorkflowLogMessage)
|
|
190
|
+
.filter((log): log is WorkflowLogMessage => log !== null)
|
|
191
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// Import z for schema types
|
|
2
|
+
import type { z } from 'zod'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Workflow-specific type definitions
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ExecutionContext } from '../base/types'
|
|
9
|
+
import type { ResourceDefinition } from '../../../platform/registry/types'
|
|
10
|
+
import type { ResourceMetricsConfig } from '../../../operations/observability/types'
|
|
11
|
+
import type { ExecutionInterface } from '../interface/types'
|
|
12
|
+
|
|
13
|
+
// Workflow configuration
|
|
14
|
+
export interface WorkflowConfig extends ResourceDefinition {
|
|
15
|
+
type: 'workflow'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Workflow step definition
|
|
19
|
+
export interface WorkflowStepDefinition {
|
|
20
|
+
id: string
|
|
21
|
+
name: string
|
|
22
|
+
description: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Step handler function type
|
|
26
|
+
export type StepHandler = (input: unknown, context: ExecutionContext) => Promise<unknown>
|
|
27
|
+
|
|
28
|
+
// Step type for flow control
|
|
29
|
+
export const StepType = {
|
|
30
|
+
LINEAR: 'linear',
|
|
31
|
+
CONDITIONAL: 'conditional',
|
|
32
|
+
} as const
|
|
33
|
+
// eslint-disable-next-line no-redeclare -- intentional const+type pattern (enum-like)
|
|
34
|
+
export type StepType = typeof StepType[keyof typeof StepType]
|
|
35
|
+
|
|
36
|
+
// Next step configuration types
|
|
37
|
+
export interface LinearNext {
|
|
38
|
+
type: 'linear'
|
|
39
|
+
target: string
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface ConditionalNext {
|
|
43
|
+
type: 'conditional'
|
|
44
|
+
routes: Array<{
|
|
45
|
+
condition: (data: unknown) => boolean
|
|
46
|
+
target: string
|
|
47
|
+
}>
|
|
48
|
+
default: string // Required to avoid ambiguity
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export type NextConfig =
|
|
52
|
+
| LinearNext // Go to specific step
|
|
53
|
+
| ConditionalNext // Conditional routing
|
|
54
|
+
| null // Explicitly end workflow
|
|
55
|
+
|
|
56
|
+
// Workflow step with graph-based flow
|
|
57
|
+
export interface WorkflowStep extends WorkflowStepDefinition {
|
|
58
|
+
handler: StepHandler
|
|
59
|
+
|
|
60
|
+
// I/O validation (BOTH REQUIRED for complete type safety)
|
|
61
|
+
inputSchema: z.ZodSchema // Validates input from previous step or workflow
|
|
62
|
+
outputSchema: z.ZodSchema // Validates output before next step
|
|
63
|
+
|
|
64
|
+
next: NextConfig // Required - explicit flow decision for every step
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Workflow definition - pure configuration without instance state
|
|
68
|
+
// Used by registry to define workflows that can be instantiated
|
|
69
|
+
export interface WorkflowDefinition {
|
|
70
|
+
config: WorkflowConfig
|
|
71
|
+
contract: import('../base/types').Contract
|
|
72
|
+
steps: Record<string, WorkflowStep>
|
|
73
|
+
entryPoint: string
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Metrics configuration for ROI calculations
|
|
77
|
+
* Optional: Only needed if tracking automation savings
|
|
78
|
+
*/
|
|
79
|
+
metricsConfig?: ResourceMetricsConfig
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Execution interface configuration (optional)
|
|
83
|
+
* If provided, workflow appears in Execution Runner UI
|
|
84
|
+
*/
|
|
85
|
+
interface?: ExecutionInterface
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Workflow timeline and observability types
|
|
90
|
+
* Used for UI timeline visualization and backend processing
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
import type { WorkflowLogMessage } from './logging'
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Workflow step state
|
|
97
|
+
* Aggregates step context events with timing and logs
|
|
98
|
+
*/
|
|
99
|
+
export interface StepState {
|
|
100
|
+
stepId: string
|
|
101
|
+
stepName: string
|
|
102
|
+
status: 'pending' | 'running' | 'completed' | 'failed'
|
|
103
|
+
|
|
104
|
+
// Timeline visualization timing
|
|
105
|
+
startTime?: number // From step-started context
|
|
106
|
+
endTime?: number // From step-completed/failed context
|
|
107
|
+
duration?: number // From step-completed/failed context
|
|
108
|
+
|
|
109
|
+
// Step data
|
|
110
|
+
input?: unknown
|
|
111
|
+
output?: unknown
|
|
112
|
+
error?: unknown
|
|
113
|
+
logs: WorkflowLogMessage[]
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Complete workflow execution data for node visualization
|
|
118
|
+
* Parsed from execution logs
|
|
119
|
+
*/
|
|
120
|
+
export interface WorkflowNodeVisualizerData {
|
|
121
|
+
steps: StepState[]
|
|
122
|
+
totalDuration: number
|
|
123
|
+
isRunning: boolean
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Step data extracted from execution logs
|
|
128
|
+
* Used to provide detailed step information in unified graph nodes
|
|
129
|
+
*/
|
|
130
|
+
export interface StepExecutionData {
|
|
131
|
+
/** Final execution status for this step */
|
|
132
|
+
status: 'pending' | 'running' | 'completed' | 'failed'
|
|
133
|
+
|
|
134
|
+
/** Step execution duration in milliseconds */
|
|
135
|
+
duration?: number
|
|
136
|
+
|
|
137
|
+
/** Step input data */
|
|
138
|
+
input?: unknown
|
|
139
|
+
|
|
140
|
+
/** Step output data */
|
|
141
|
+
output?: unknown
|
|
142
|
+
|
|
143
|
+
/** Error data if step failed */
|
|
144
|
+
error?: unknown
|
|
145
|
+
|
|
146
|
+
/** Log messages from this step (reserved for future use) */
|
|
147
|
+
logs?: unknown[]
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Execution path tracking state
|
|
152
|
+
*
|
|
153
|
+
* Tracks which steps have been executed and which edges were taken during workflow
|
|
154
|
+
* execution. This state is built from SSE execution log events and used to compute
|
|
155
|
+
* the visual dimming/highlighting of nodes and edges.
|
|
156
|
+
*
|
|
157
|
+
* Algorithm:
|
|
158
|
+
* - `executedSteps` provides O(1) lookup for "has this step been reached?"
|
|
159
|
+
* - `executedStepsOrdered` preserves execution order for edge inference
|
|
160
|
+
* - `takenEdges` comes from `conditional-route` SSE events + linear step inference
|
|
161
|
+
* - `currentStepId` tracks the actively running step for animation
|
|
162
|
+
* - `stepStatusMap` provides final status for each executed step
|
|
163
|
+
* - `stepDataMap` provides detailed execution data (duration, input, output, error)
|
|
164
|
+
*/
|
|
165
|
+
export interface ExecutionPathState {
|
|
166
|
+
/** Set of step IDs that have been executed (O(1) lookup) */
|
|
167
|
+
executedSteps: Set<string>
|
|
168
|
+
|
|
169
|
+
/** Step IDs in execution order (for inferring linear edges) */
|
|
170
|
+
executedStepsOrdered: string[]
|
|
171
|
+
|
|
172
|
+
/** Set of edge IDs that were traversed (format: "edge-{source}-{target}") */
|
|
173
|
+
takenEdges: Set<string>
|
|
174
|
+
|
|
175
|
+
/** Currently running step ID (undefined if no step is running) */
|
|
176
|
+
currentStepId?: string
|
|
177
|
+
|
|
178
|
+
/** Map of step IDs to their final execution status */
|
|
179
|
+
stepStatusMap?: Map<string, 'pending' | 'running' | 'completed' | 'failed'>
|
|
180
|
+
|
|
181
|
+
/** Map of step IDs to their execution data (duration, input, output, error) */
|
|
182
|
+
stepDataMap?: Map<string, StepExecutionData>
|
|
183
|
+
}
|