@elevasis/core 0.7.1 → 0.8.2
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/test-utils/index.d.ts +3122 -0
- package/dist/test-utils/index.js +386 -0
- package/package.json +6 -1
- package/src/README.md +39 -36
- package/src/__tests__/publish.test.ts +18 -13
- package/src/__tests__/{template-foundations-compatibility.test.ts → template-core-compatibility.test.ts} +99 -99
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +1135 -1131
- package/src/_gen/__tests__/scaffold-contracts.test.ts +47 -36
- package/src/_gen/scaffold-contracts.ts +45 -45
- package/src/auth/multi-tenancy/credentials/README.md +38 -38
- package/src/auth/multi-tenancy/credentials/index.ts +6 -6
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -39
- package/src/auth/multi-tenancy/credentials/server/service.ts +60 -60
- package/src/auth/multi-tenancy/index.ts +17 -17
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -107
- package/src/auth/multi-tenancy/invitations/index.ts +37 -37
- package/src/auth/multi-tenancy/invitations/invitation.ts +86 -86
- package/src/auth/multi-tenancy/invitations/server/index.ts +25 -25
- package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -24
- package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -24
- package/src/auth/multi-tenancy/invitations/supabase.ts +50 -50
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -126
- package/src/auth/multi-tenancy/memberships/index.ts +21 -21
- package/src/auth/multi-tenancy/memberships/membership.ts +138 -138
- package/src/auth/multi-tenancy/memberships/server/index.ts +15 -15
- package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -32
- package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -21
- package/src/auth/multi-tenancy/memberships/supabase.ts +46 -46
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -128
- package/src/auth/multi-tenancy/organizations/index.ts +23 -23
- package/src/auth/multi-tenancy/organizations/organization.ts +24 -24
- package/src/auth/multi-tenancy/organizations/server/index.ts +10 -10
- package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -35
- package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -20
- package/src/auth/multi-tenancy/types.ts +83 -83
- package/src/auth/multi-tenancy/users/api-schemas.ts +194 -194
- package/src/auth/multi-tenancy/users/index.ts +27 -27
- package/src/auth/multi-tenancy/users/server/index.ts +19 -19
- package/src/auth/multi-tenancy/users/server/transforms.ts +21 -21
- package/src/auth/multi-tenancy/users/server/workos.ts +16 -16
- package/src/auth/multi-tenancy/users/user.ts +65 -65
- package/src/business/README.md +52 -52
- package/src/business/__tests__/entities-published.test.ts +33 -33
- package/src/business/acquisition/api-schemas.ts +759 -759
- package/src/business/acquisition/index.ts +109 -109
- package/src/business/acquisition/types.ts +402 -402
- package/src/business/base-entities.test.ts +481 -481
- package/src/business/base-entities.ts +241 -241
- package/src/business/entities-published.ts +24 -24
- package/src/business/index.ts +15 -15
- package/src/business/pdf/browser/pdfmake-browser.ts +229 -229
- package/src/business/pdf/index.ts +10 -10
- package/src/business/pdf/server/index.ts +21 -21
- package/src/business/pdf/server/themes/default.ts +8 -8
- package/src/business/pdf/server/themes/index.ts +9 -9
- package/src/business/pdf/server/themes/types.ts +8 -8
- package/src/business/pdf/types.ts +272 -272
- package/src/business/projects/index.ts +2 -2
- package/src/business/projects/sse-events.ts +21 -21
- package/src/business/projects/types.ts +89 -89
- package/src/business/sales/api-schemas.ts +75 -75
- package/src/business/seo/__tests__/linking.test.ts +549 -549
- package/src/business/seo/__tests__/types.test.ts +404 -404
- package/src/business/seo/index.ts +2 -2
- package/src/business/seo/linking.ts +281 -281
- package/src/business/seo/types.ts +199 -199
- package/src/commands/queue/index.ts +3 -3
- package/src/commands/queue/schemas.test.ts +593 -593
- package/src/commands/queue/schemas.ts +125 -125
- package/src/commands/queue/sse-events.ts +61 -61
- package/src/commands/queue/types/action.ts +52 -52
- package/src/commands/queue/types/checkpoint.ts +44 -44
- package/src/commands/queue/types/index.ts +7 -7
- package/src/commands/queue/types/task.ts +116 -116
- package/src/commands/queue/types.ts +14 -14
- package/src/content/distribution-metadata.ts +61 -61
- package/src/content/index.ts +10 -10
- package/src/deployments/index.ts +22 -22
- package/src/execution/core/__tests__/archived-logs.test.ts +72 -72
- package/src/execution/core/index.ts +11 -11
- package/src/execution/core/runner-types.ts +80 -80
- package/src/execution/core/server/environment.ts +31 -31
- package/src/execution/core/sse-executions.ts +119 -119
- package/src/execution/core/types.ts +29 -29
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +4 -4
- package/src/execution/engine/__tests__/timeout.test.ts +565 -565
- package/src/execution/engine/agent/__tests__/errors.test.ts +508 -508
- package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -531
- package/src/execution/engine/agent/actions/executor.ts +205 -205
- package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -230
- package/src/execution/engine/agent/actions/processor.ts +116 -116
- package/src/execution/engine/agent/actions/types.ts +70 -70
- package/src/execution/engine/agent/core/agent.ts +810 -810
- package/src/execution/engine/agent/core/types.ts +155 -155
- package/src/execution/engine/agent/errors.ts +251 -251
- package/src/execution/engine/agent/index.ts +78 -78
- package/src/execution/engine/agent/knowledge-map/types.ts +106 -106
- package/src/execution/engine/agent/knowledge-map/utils.ts +101 -101
- package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -754
- package/src/execution/engine/agent/memory/domains.ts +99 -99
- package/src/execution/engine/agent/memory/manager.ts +365 -365
- package/src/execution/engine/agent/memory/processor.ts +66 -66
- package/src/execution/engine/agent/memory/types.ts +90 -90
- package/src/execution/engine/agent/memory/utils.ts +134 -134
- package/src/execution/engine/agent/observability/logging.ts +467 -467
- package/src/execution/engine/agent/observability/types.ts +64 -64
- package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -349
- package/src/execution/engine/agent/reasoning/processor.ts +92 -92
- package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -134
- package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -49
- package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -93
- package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -65
- package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -44
- package/src/execution/engine/agent/reasoning/request-builder.ts +169 -169
- package/src/execution/engine/agent/reasoning/types.ts +18 -18
- package/src/execution/engine/base/errors.ts +118 -118
- package/src/execution/engine/base/index.ts +2 -2
- package/src/execution/engine/base/logging.ts +31 -31
- package/src/execution/engine/base/serialization.ts +324 -324
- package/src/execution/engine/base/types.ts +126 -126
- package/src/execution/engine/base/utils.ts +41 -41
- package/src/execution/engine/index.ts +434 -434
- package/src/execution/engine/interface/index.ts +1 -1
- package/src/execution/engine/interface/types.ts +62 -62
- package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -50
- package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -321
- package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -115
- package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -375
- package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -463
- package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -177
- package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -722
- package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -376
- package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -551
- package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -563
- package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -105
- package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -537
- package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -147
- package/src/execution/engine/llm/adapters/index.ts +17 -17
- package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -116
- package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -130
- package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -137
- package/src/execution/engine/llm/adapters/server/google.ts +283 -283
- package/src/execution/engine/llm/adapters/server/index.ts +12 -12
- package/src/execution/engine/llm/adapters/server/openai.ts +206 -206
- package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -235
- package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -230
- package/src/execution/engine/llm/errors.ts +186 -186
- package/src/execution/engine/llm/model-info.ts +332 -332
- package/src/execution/engine/llm/response-schema-validator.ts +113 -113
- package/src/execution/engine/llm/types.ts +86 -86
- package/src/execution/engine/test-utils/index.ts +6 -6
- package/src/execution/engine/test-utils/mocks.ts +56 -56
- package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -50
- package/src/execution/engine/tools/integration/index.ts +53 -53
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -73
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -209
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -82
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -89
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -16
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -293
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -100
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -217
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -218
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +361 -361
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -162
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -594
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -214
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -152
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -141
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -105
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -118
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -165
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -96
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -156
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -220
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -140
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +146 -146
- package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -31
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -1189
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -641
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -18
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -289
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -154
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -325
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -153
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -107
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -85
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -91
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -195
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -113
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -155
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -196
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -189
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -112
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -76
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -98
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -126
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -193
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -99
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -621
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -29
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -178
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -1473
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -59
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -17
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -80
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -134
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -75
- package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -27
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -108
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -132
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -274
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -230
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -90
- package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -517
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -309
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -111
- package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -78
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -222
- package/src/execution/engine/tools/integration/server/index.ts +61 -61
- package/src/execution/engine/tools/integration/service.ts +161 -161
- package/src/execution/engine/tools/integration/tool.ts +253 -253
- package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -74
- package/src/execution/engine/tools/integration/types/apify.ts +92 -92
- package/src/execution/engine/tools/integration/types/index.ts +19 -19
- package/src/execution/engine/tools/integration/types/instantly.ts +557 -557
- package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -56
- package/src/execution/engine/tools/integration/types/stripe.ts +162 -162
- package/src/execution/engine/tools/integration/types/tomba.ts +94 -94
- package/src/execution/engine/tools/lead-service-types.ts +884 -884
- package/src/execution/engine/tools/llm/index.ts +11 -11
- package/src/execution/engine/tools/llm/server/index.ts +8 -8
- package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -118
- package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -441
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -248
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -319
- package/src/execution/engine/tools/platform/acquisition/index.ts +43 -43
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -148
- package/src/execution/engine/tools/platform/acquisition/types.ts +260 -260
- package/src/execution/engine/tools/platform/email/index.ts +122 -122
- package/src/execution/engine/tools/platform/email/types.ts +96 -96
- package/src/execution/engine/tools/platform/index.ts +157 -157
- package/src/execution/engine/tools/platform/notification.ts +81 -81
- package/src/execution/engine/tools/platform/pdf/index.ts +110 -110
- package/src/execution/engine/tools/platform/pdf/types.ts +77 -77
- package/src/execution/engine/tools/platform/scheduler.ts +87 -87
- package/src/execution/engine/tools/platform/storage/index.ts +370 -370
- package/src/execution/engine/tools/platform/types.ts +148 -148
- package/src/execution/engine/tools/registry.ts +700 -700
- package/src/execution/engine/tools/tool-maps.ts +786 -786
- package/src/execution/engine/tools/types.ts +233 -233
- package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -139
- package/src/execution/engine/workflow/errors.ts +63 -63
- package/src/execution/engine/workflow/helpers/index.ts +11 -11
- package/src/execution/engine/workflow/helpers/server/index.ts +8 -8
- package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -93
- package/src/execution/engine/workflow/index.ts +19 -19
- package/src/execution/engine/workflow/log-truncate.ts +26 -26
- package/src/execution/engine/workflow/logging.ts +191 -191
- package/src/execution/engine/workflow/types.ts +182 -182
- package/src/execution/engine/workflow/utils.ts +280 -280
- package/src/execution/engine/workflow/workflow.ts +168 -168
- package/src/execution/index.ts +3 -3
- package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -733
- package/src/execution/scheduler/__tests__/utils.test.ts +1009 -1009
- package/src/execution/scheduler/api-schemas.ts +296 -296
- package/src/execution/scheduler/index.ts +50 -50
- package/src/execution/scheduler/schemas.ts +264 -264
- package/src/execution/scheduler/types.ts +111 -111
- package/src/execution/scheduler/utils.ts +364 -364
- package/src/forms/index.ts +7 -7
- package/src/forms/schemas.ts +69 -69
- package/src/forms/types.ts +70 -70
- package/src/index.ts +71 -60
- package/src/integrations/credentials/__tests__/schemas.test.ts +82 -82
- package/src/integrations/credentials/__tests__/utils.test.ts +144 -144
- package/src/integrations/credentials/api-schemas.ts +143 -143
- package/src/integrations/credentials/index.ts +32 -32
- package/src/integrations/credentials/schemas.ts +164 -164
- package/src/integrations/credentials/utils.ts +59 -59
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -59
- package/src/integrations/oauth/api-schemas.ts +92 -92
- package/src/integrations/oauth/index.ts +19 -19
- package/src/integrations/oauth/provider-registry.ts +61 -61
- package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -183
- package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -577
- package/src/integrations/oauth/server/credentials.ts +39 -39
- package/src/integrations/oauth/server/refresh.ts +214 -214
- package/src/integrations/oauth/types.ts +34 -34
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -318
- package/src/integrations/webhook-endpoints/api-schemas.ts +102 -102
- package/src/integrations/webhook-endpoints/index.ts +28 -28
- package/src/integrations/webhook-endpoints/types.ts +51 -51
- package/src/operations/activities/api-schemas.ts +79 -79
- package/src/operations/activities/index.ts +9 -9
- package/src/operations/activities/sse-events.ts +30 -30
- package/src/operations/activities/types.ts +63 -63
- package/src/operations/debug-logs/client.ts +60 -60
- package/src/operations/debug-logs/debug-logger.ts +83 -83
- package/src/operations/debug-logs/index.ts +8 -8
- package/src/operations/debug-logs/server.ts +19 -19
- package/src/operations/debug-logs/types.ts +33 -33
- package/src/operations/index.ts +50 -50
- package/src/operations/notifications/api-schemas.ts +91 -91
- package/src/operations/notifications/index.ts +3 -3
- package/src/operations/notifications/sse-events.ts +21 -21
- package/src/operations/notifications/types.ts +47 -47
- package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -297
- package/src/operations/observability/__tests__/utils.test.ts +54 -54
- package/src/operations/observability/ai-usage-collector.ts +64 -64
- package/src/operations/observability/index.ts +13 -13
- package/src/operations/observability/metrics-collector.ts +49 -49
- package/src/operations/observability/schemas.ts +39 -39
- package/src/operations/observability/types.ts +463 -463
- package/src/operations/observability/utils.ts +77 -77
- package/src/operations/sessions/__tests__/manager.test.ts +821 -821
- package/src/operations/sessions/index.ts +26 -26
- package/src/operations/sessions/server/manager.ts +90 -90
- package/src/operations/sessions/server/session.ts +180 -180
- package/src/operations/sessions/types.ts +98 -98
- package/src/operations/triggers/index.ts +12 -12
- package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -44
- package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -51
- package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -49
- package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -54
- package/src/operations/triggers/webhook/index.ts +35 -35
- package/src/operations/triggers/webhook/types.ts +74 -74
- package/src/organization-model/README.md +97 -97
- package/src/organization-model/__tests__/defaults.test.ts +175 -175
- package/src/organization-model/__tests__/domains/customers.test.ts +295 -295
- package/src/organization-model/__tests__/domains/goals.test.ts +479 -479
- package/src/organization-model/__tests__/domains/identity.test.ts +279 -279
- package/src/organization-model/__tests__/domains/navigation.test.ts +212 -212
- package/src/organization-model/__tests__/domains/offerings.test.ts +419 -419
- package/src/organization-model/__tests__/domains/operations.test.ts +203 -203
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +362 -362
- package/src/organization-model/__tests__/domains/roles.test.ts +347 -347
- package/src/organization-model/__tests__/domains/statuses.test.ts +243 -243
- package/src/organization-model/__tests__/foundation.test.ts +105 -105
- package/src/organization-model/__tests__/graph.test.ts +894 -894
- package/src/organization-model/__tests__/resolve.test.ts +690 -690
- package/src/organization-model/__tests__/schema.test.ts +407 -407
- package/src/organization-model/contracts.ts +14 -14
- package/src/organization-model/defaults.ts +148 -148
- package/src/organization-model/domains/branding.ts +22 -22
- package/src/organization-model/domains/customers.ts +75 -75
- package/src/organization-model/domains/features.ts +22 -22
- package/src/organization-model/domains/goals.ts +80 -80
- package/src/organization-model/domains/identity.ts +94 -94
- package/src/organization-model/domains/navigation.ts +391 -391
- package/src/organization-model/domains/offerings.ts +66 -66
- package/src/organization-model/domains/operations.ts +85 -85
- package/src/organization-model/domains/projects.ts +48 -48
- package/src/organization-model/domains/prospecting.ts +33 -33
- package/src/organization-model/domains/roles.ts +55 -55
- package/src/organization-model/domains/sales.ts +94 -94
- package/src/organization-model/domains/shared.ts +62 -62
- package/src/organization-model/domains/statuses.ts +130 -130
- package/src/organization-model/foundation.ts +97 -97
- package/src/organization-model/graph/build.ts +399 -399
- package/src/organization-model/graph/index.ts +4 -4
- package/src/organization-model/graph/schema.ts +48 -48
- package/src/organization-model/graph/types.ts +40 -40
- package/src/organization-model/index.ts +13 -13
- package/src/organization-model/organization-graph.mdx +272 -272
- package/src/organization-model/organization-model.mdx +320 -320
- package/src/organization-model/published.ts +85 -85
- package/src/organization-model/resolve.ts +66 -66
- package/src/organization-model/schema.ts +287 -287
- package/src/organization-model/types.ts +46 -46
- package/src/platform/api/index.ts +1 -1
- package/src/platform/api/types.ts +35 -35
- package/src/platform/constants/http.ts +37 -37
- package/src/platform/constants/index.ts +5 -5
- package/src/platform/constants/limits.ts +32 -32
- package/src/platform/constants/resilience.ts +51 -51
- package/src/platform/constants/timeouts.ts +20 -20
- package/src/platform/constants/versions.ts +3 -3
- package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -347
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1028 -1028
- package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -393
- package/src/platform/registry/__tests__/resource-registry.test.ts +2005 -2005
- package/src/platform/registry/__tests__/serialization.test.ts +1127 -1127
- package/src/platform/registry/command-view.ts +180 -180
- package/src/platform/registry/domains.ts +165 -165
- package/src/platform/registry/index.ts +93 -93
- package/src/platform/registry/reserved.ts +24 -24
- package/src/platform/registry/resource-metadata.ts +59 -59
- package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -129
- package/src/platform/registry/resource-registry.ts +876 -876
- package/src/platform/registry/serialization.ts +273 -273
- package/src/platform/registry/serialized-types.ts +231 -231
- package/src/platform/registry/stats-types.ts +66 -66
- package/src/platform/registry/types.ts +404 -404
- package/src/platform/registry/validation.ts +513 -513
- package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -471
- package/src/platform/resilience/circuit-breaker.ts +164 -164
- package/src/platform/resilience/errors.ts +68 -68
- package/src/platform/resilience/http-error-mapper.ts +129 -129
- package/src/platform/resilience/index.ts +93 -93
- package/src/platform/resilience/rate-limiter-types.ts +46 -46
- package/src/platform/resilience/rate-limiter.ts +140 -140
- package/src/platform/resilience/retry.ts +89 -89
- package/src/platform/resilience/timeout.ts +63 -63
- package/src/platform/sse/events.ts +37 -37
- package/src/platform/sse/index.ts +7 -7
- package/src/platform/utils/__tests__/validation.test.ts +1083 -1083
- package/src/platform/utils/currency.ts +96 -96
- package/src/platform/utils/debounce.ts +52 -52
- package/src/platform/utils/error.ts +41 -41
- package/src/platform/utils/hmac.test.ts +97 -97
- package/src/platform/utils/index.ts +32 -32
- package/src/platform/utils/server/betterstack-logger.ts +210 -210
- package/src/platform/utils/server/hmac.ts +44 -44
- package/src/platform/utils/server/unsubscribe.ts +111 -111
- package/src/platform/utils/token-counter.ts +96 -96
- package/src/platform/utils/validation.ts +425 -425
- package/src/projects/api-schemas.ts +268 -268
- package/src/published.ts +1 -1
- package/src/reference/_generated/contracts.md +607 -607
- package/src/reference/glossary.md +105 -105
- package/src/requests/__tests__/api-schemas.test.ts +277 -277
- package/src/requests/api-schemas.ts +83 -83
- package/src/requests/index.ts +1 -1
- package/src/scaffold-registry/__tests__/index.test.ts +17 -0
- package/src/scaffold-registry/__tests__/schema.test.ts +329 -230
- package/src/scaffold-registry/index.ts +205 -189
- package/src/scaffold-registry/schema.ts +196 -128
- package/src/server.ts +272 -272
- package/src/supabase/database.types.ts +2719 -2719
- package/src/supabase/helpers.ts +20 -20
- package/src/supabase/index.ts +52 -52
- package/src/supabase/server/client.ts +58 -58
- package/src/test-utils/README.md +30 -138
- package/src/test-utils/browser-mocks.ts +54 -54
- package/src/test-utils/fixtures/api-keys.ts +52 -52
- package/src/test-utils/fixtures/index.ts +4 -4
- package/src/test-utils/fixtures/memberships.ts +80 -80
- package/src/test-utils/fixtures/organizations.ts +69 -69
- package/src/test-utils/fixtures/users.ts +79 -79
- package/src/test-utils/index.ts +7 -8
- package/src/test-utils/mocks/index.ts +2 -2
- package/src/test-utils/mocks/supabase.ts +142 -142
- package/src/test-utils/mocks/workos.ts +108 -108
- package/src/test-utils/published.ts +4 -0
- package/src/test-utils/rls/RLSTestContext.ts +554 -554
- package/src/test-utils/rls/index.ts +1 -1
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest'
|
|
2
|
-
import { WorkflowStepError, WorkflowValidationError } from '../errors'
|
|
3
|
-
import { ExecutionError } from '../../base/errors'
|
|
4
|
-
|
|
5
|
-
describe('Workflow Errors', () => {
|
|
6
|
-
describe('WorkflowStepError', () => {
|
|
7
|
-
it('extends ExecutionError', () => {
|
|
8
|
-
const error = new WorkflowStepError('Step failed')
|
|
9
|
-
expect(error).toBeInstanceOf(ExecutionError)
|
|
10
|
-
expect(error).toBeInstanceOf(Error)
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
it('has critical severity', () => {
|
|
14
|
-
const error = new WorkflowStepError('Step failed')
|
|
15
|
-
expect(error.severity).toBe('critical')
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
it('has workflow category', () => {
|
|
19
|
-
const error = new WorkflowStepError('Step failed')
|
|
20
|
-
expect(error.category).toBe('workflow')
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it('is not retryable by default', () => {
|
|
24
|
-
const error = new WorkflowStepError('Step failed')
|
|
25
|
-
expect(error.isRetryable()).toBe(false)
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
it('sets message correctly', () => {
|
|
29
|
-
const error = new WorkflowStepError('Step "send_email" failed: SMTP unavailable')
|
|
30
|
-
expect(error.message).toBe('Step "send_email" failed: SMTP unavailable')
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
it('sets name to WorkflowStepError', () => {
|
|
34
|
-
const error = new WorkflowStepError('Step failed')
|
|
35
|
-
expect(error.name).toBe('WorkflowStepError')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
it('returns correct error type', () => {
|
|
39
|
-
const error = new WorkflowStepError('Step failed')
|
|
40
|
-
expect(error.name).toBe('WorkflowStepError')
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
it('stores context with workflow details', () => {
|
|
44
|
-
const context = {
|
|
45
|
-
workflowId: 'wf-123',
|
|
46
|
-
stepIndex: 2,
|
|
47
|
-
stepName: 'send_email',
|
|
48
|
-
attemptCount: 1
|
|
49
|
-
}
|
|
50
|
-
const error = new WorkflowStepError('Step failed', context)
|
|
51
|
-
expect(error.context).toEqual(context)
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
it('captures stack trace', () => {
|
|
55
|
-
const error = new WorkflowStepError('Step failed')
|
|
56
|
-
expect(error.stack).toBeDefined()
|
|
57
|
-
expect(error.stack).toContain('WorkflowStepError')
|
|
58
|
-
})
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
describe('WorkflowValidationError', () => {
|
|
62
|
-
it('extends ExecutionError', () => {
|
|
63
|
-
const error = new WorkflowValidationError('Validation failed')
|
|
64
|
-
expect(error).toBeInstanceOf(ExecutionError)
|
|
65
|
-
expect(error).toBeInstanceOf(Error)
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
it('has info severity', () => {
|
|
69
|
-
const error = new WorkflowValidationError('Validation failed')
|
|
70
|
-
expect(error.severity).toBe('info')
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
it('has validation category', () => {
|
|
74
|
-
const error = new WorkflowValidationError('Validation failed')
|
|
75
|
-
expect(error.category).toBe('validation')
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
it('is not retryable by default', () => {
|
|
79
|
-
const error = new WorkflowValidationError('Validation failed')
|
|
80
|
-
expect(error.isRetryable()).toBe(false)
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
it('sets message correctly', () => {
|
|
84
|
-
const error = new WorkflowValidationError('Invalid workflow: Missing approver')
|
|
85
|
-
expect(error.message).toBe('Invalid workflow: Missing approver')
|
|
86
|
-
})
|
|
87
|
-
|
|
88
|
-
it('sets name to WorkflowValidationError', () => {
|
|
89
|
-
const error = new WorkflowValidationError('Validation failed')
|
|
90
|
-
expect(error.name).toBe('WorkflowValidationError')
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
it('returns correct error type', () => {
|
|
94
|
-
const error = new WorkflowValidationError('Validation failed')
|
|
95
|
-
expect(error.name).toBe('WorkflowValidationError')
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
it('stores context with validation details', () => {
|
|
99
|
-
const context = {
|
|
100
|
-
workflowId: 'wf-123',
|
|
101
|
-
stepIndex: 3,
|
|
102
|
-
field: 'approver',
|
|
103
|
-
expectedType: 'string'
|
|
104
|
-
}
|
|
105
|
-
const error = new WorkflowValidationError('Validation failed', context)
|
|
106
|
-
expect(error.context).toEqual(context)
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
it('captures stack trace', () => {
|
|
110
|
-
const error = new WorkflowValidationError('Validation failed')
|
|
111
|
-
expect(error.stack).toBeDefined()
|
|
112
|
-
expect(error.stack).toContain('WorkflowValidationError')
|
|
113
|
-
})
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
describe('instanceof checks', () => {
|
|
117
|
-
it('WorkflowStepError maintains inheritance chain', () => {
|
|
118
|
-
const error = new WorkflowStepError('test')
|
|
119
|
-
expect(error instanceof WorkflowStepError).toBe(true)
|
|
120
|
-
expect(error instanceof ExecutionError).toBe(true)
|
|
121
|
-
expect(error instanceof Error).toBe(true)
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
it('WorkflowValidationError maintains inheritance chain', () => {
|
|
125
|
-
const error = new WorkflowValidationError('test')
|
|
126
|
-
expect(error instanceof WorkflowValidationError).toBe(true)
|
|
127
|
-
expect(error instanceof ExecutionError).toBe(true)
|
|
128
|
-
expect(error instanceof Error).toBe(true)
|
|
129
|
-
})
|
|
130
|
-
|
|
131
|
-
it('workflow errors are distinct types', () => {
|
|
132
|
-
const stepError = new WorkflowStepError('test')
|
|
133
|
-
const validationError = new WorkflowValidationError('test')
|
|
134
|
-
|
|
135
|
-
expect(stepError instanceof WorkflowValidationError).toBe(false)
|
|
136
|
-
expect(validationError instanceof WorkflowStepError).toBe(false)
|
|
137
|
-
})
|
|
138
|
-
})
|
|
139
|
-
})
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { WorkflowStepError, WorkflowValidationError } from '../errors'
|
|
3
|
+
import { ExecutionError } from '../../base/errors'
|
|
4
|
+
|
|
5
|
+
describe('Workflow Errors', () => {
|
|
6
|
+
describe('WorkflowStepError', () => {
|
|
7
|
+
it('extends ExecutionError', () => {
|
|
8
|
+
const error = new WorkflowStepError('Step failed')
|
|
9
|
+
expect(error).toBeInstanceOf(ExecutionError)
|
|
10
|
+
expect(error).toBeInstanceOf(Error)
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
it('has critical severity', () => {
|
|
14
|
+
const error = new WorkflowStepError('Step failed')
|
|
15
|
+
expect(error.severity).toBe('critical')
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
it('has workflow category', () => {
|
|
19
|
+
const error = new WorkflowStepError('Step failed')
|
|
20
|
+
expect(error.category).toBe('workflow')
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('is not retryable by default', () => {
|
|
24
|
+
const error = new WorkflowStepError('Step failed')
|
|
25
|
+
expect(error.isRetryable()).toBe(false)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it('sets message correctly', () => {
|
|
29
|
+
const error = new WorkflowStepError('Step "send_email" failed: SMTP unavailable')
|
|
30
|
+
expect(error.message).toBe('Step "send_email" failed: SMTP unavailable')
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
it('sets name to WorkflowStepError', () => {
|
|
34
|
+
const error = new WorkflowStepError('Step failed')
|
|
35
|
+
expect(error.name).toBe('WorkflowStepError')
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('returns correct error type', () => {
|
|
39
|
+
const error = new WorkflowStepError('Step failed')
|
|
40
|
+
expect(error.name).toBe('WorkflowStepError')
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('stores context with workflow details', () => {
|
|
44
|
+
const context = {
|
|
45
|
+
workflowId: 'wf-123',
|
|
46
|
+
stepIndex: 2,
|
|
47
|
+
stepName: 'send_email',
|
|
48
|
+
attemptCount: 1
|
|
49
|
+
}
|
|
50
|
+
const error = new WorkflowStepError('Step failed', context)
|
|
51
|
+
expect(error.context).toEqual(context)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('captures stack trace', () => {
|
|
55
|
+
const error = new WorkflowStepError('Step failed')
|
|
56
|
+
expect(error.stack).toBeDefined()
|
|
57
|
+
expect(error.stack).toContain('WorkflowStepError')
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
describe('WorkflowValidationError', () => {
|
|
62
|
+
it('extends ExecutionError', () => {
|
|
63
|
+
const error = new WorkflowValidationError('Validation failed')
|
|
64
|
+
expect(error).toBeInstanceOf(ExecutionError)
|
|
65
|
+
expect(error).toBeInstanceOf(Error)
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('has info severity', () => {
|
|
69
|
+
const error = new WorkflowValidationError('Validation failed')
|
|
70
|
+
expect(error.severity).toBe('info')
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
it('has validation category', () => {
|
|
74
|
+
const error = new WorkflowValidationError('Validation failed')
|
|
75
|
+
expect(error.category).toBe('validation')
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
it('is not retryable by default', () => {
|
|
79
|
+
const error = new WorkflowValidationError('Validation failed')
|
|
80
|
+
expect(error.isRetryable()).toBe(false)
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
it('sets message correctly', () => {
|
|
84
|
+
const error = new WorkflowValidationError('Invalid workflow: Missing approver')
|
|
85
|
+
expect(error.message).toBe('Invalid workflow: Missing approver')
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
it('sets name to WorkflowValidationError', () => {
|
|
89
|
+
const error = new WorkflowValidationError('Validation failed')
|
|
90
|
+
expect(error.name).toBe('WorkflowValidationError')
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
it('returns correct error type', () => {
|
|
94
|
+
const error = new WorkflowValidationError('Validation failed')
|
|
95
|
+
expect(error.name).toBe('WorkflowValidationError')
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
it('stores context with validation details', () => {
|
|
99
|
+
const context = {
|
|
100
|
+
workflowId: 'wf-123',
|
|
101
|
+
stepIndex: 3,
|
|
102
|
+
field: 'approver',
|
|
103
|
+
expectedType: 'string'
|
|
104
|
+
}
|
|
105
|
+
const error = new WorkflowValidationError('Validation failed', context)
|
|
106
|
+
expect(error.context).toEqual(context)
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
it('captures stack trace', () => {
|
|
110
|
+
const error = new WorkflowValidationError('Validation failed')
|
|
111
|
+
expect(error.stack).toBeDefined()
|
|
112
|
+
expect(error.stack).toContain('WorkflowValidationError')
|
|
113
|
+
})
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
describe('instanceof checks', () => {
|
|
117
|
+
it('WorkflowStepError maintains inheritance chain', () => {
|
|
118
|
+
const error = new WorkflowStepError('test')
|
|
119
|
+
expect(error instanceof WorkflowStepError).toBe(true)
|
|
120
|
+
expect(error instanceof ExecutionError).toBe(true)
|
|
121
|
+
expect(error instanceof Error).toBe(true)
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
it('WorkflowValidationError maintains inheritance chain', () => {
|
|
125
|
+
const error = new WorkflowValidationError('test')
|
|
126
|
+
expect(error instanceof WorkflowValidationError).toBe(true)
|
|
127
|
+
expect(error instanceof ExecutionError).toBe(true)
|
|
128
|
+
expect(error instanceof Error).toBe(true)
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
it('workflow errors are distinct types', () => {
|
|
132
|
+
const stepError = new WorkflowStepError('test')
|
|
133
|
+
const validationError = new WorkflowValidationError('test')
|
|
134
|
+
|
|
135
|
+
expect(stepError instanceof WorkflowValidationError).toBe(false)
|
|
136
|
+
expect(validationError instanceof WorkflowStepError).toBe(false)
|
|
137
|
+
})
|
|
138
|
+
})
|
|
139
|
+
})
|
|
@@ -1,63 +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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,11 +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'
|
|
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'
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server-only Workflow Helpers
|
|
3
|
-
*
|
|
4
|
-
* These helpers use server-only adapters (createLLMAdapter)
|
|
5
|
-
* and should only be imported from @repo/core/server
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export { llmCall, type LLMCallOptions } from './llm-call'
|
|
1
|
+
/**
|
|
2
|
+
* Server-only Workflow Helpers
|
|
3
|
+
*
|
|
4
|
+
* These helpers use server-only adapters (createLLMAdapter)
|
|
5
|
+
* and should only be imported from @repo/core/server
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export { llmCall, type LLMCallOptions } from './llm-call'
|
|
@@ -1,93 +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
|
-
}
|
|
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
|
+
}
|