@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,129 +1,129 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Error Mapper
|
|
3
|
-
*
|
|
4
|
-
* Shared utility for mapping HTTP status codes to ToolingError types.
|
|
5
|
-
* Used by all integration adapters for consistent error handling.
|
|
6
|
-
*
|
|
7
|
-
* Standard mapping:
|
|
8
|
-
* - 401/403 -> credentials_invalid (authentication failed)
|
|
9
|
-
* - 400/404/409 -> validation_error (non-retryable client errors)
|
|
10
|
-
* - 429 -> rate_limit_exceeded (retryable)
|
|
11
|
-
* - 500+ -> server_unavailable (retryable)
|
|
12
|
-
* - Other 4xx -> validation_error (non-retryable)
|
|
13
|
-
* - Other -> api_error (retryable)
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import { ToolingError, type ToolingErrorType } from '../../execution/engine/tools/types'
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Context for HTTP error creation
|
|
20
|
-
*/
|
|
21
|
-
export interface HttpErrorContext {
|
|
22
|
-
integration: string
|
|
23
|
-
method: string
|
|
24
|
-
statusCode?: number
|
|
25
|
-
organizationId?: string
|
|
26
|
-
[key: string]: unknown
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Custom error parser function type
|
|
31
|
-
* Allows adapters to extract error messages from API-specific response formats
|
|
32
|
-
*/
|
|
33
|
-
export type ErrorParser = (responseBody: string) => string | undefined
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Map HTTP status code to ToolingError type
|
|
37
|
-
*
|
|
38
|
-
* Standard mapping used by all integration adapters:
|
|
39
|
-
* - 401/403 -> credentials_invalid (authentication failed)
|
|
40
|
-
* - 400/404/409 -> validation_error (non-retryable client errors)
|
|
41
|
-
* - 429 -> rate_limit_exceeded (retryable)
|
|
42
|
-
* - 500+ -> server_unavailable (retryable)
|
|
43
|
-
* - Other 4xx -> validation_error (non-retryable)
|
|
44
|
-
* - Other -> api_error (retryable)
|
|
45
|
-
*
|
|
46
|
-
* @param status - HTTP status code
|
|
47
|
-
* @returns ToolingErrorType for the status code
|
|
48
|
-
*/
|
|
49
|
-
export function mapHttpStatusToErrorType(status: number): ToolingErrorType {
|
|
50
|
-
if (status === 401 || status === 403) return 'credentials_invalid'
|
|
51
|
-
if (status === 404 || status === 400 || status === 409) return 'validation_error'
|
|
52
|
-
if (status === 429) return 'rate_limit_exceeded'
|
|
53
|
-
if (status >= 500) return 'server_unavailable'
|
|
54
|
-
if (status >= 400) return 'validation_error'
|
|
55
|
-
return 'api_error'
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Create ToolingError from HTTP response
|
|
60
|
-
*
|
|
61
|
-
* Reads response body, parses error message, and creates appropriate ToolingError.
|
|
62
|
-
* Supports custom error parser for API-specific response formats.
|
|
63
|
-
*
|
|
64
|
-
* @param response - Fetch Response object
|
|
65
|
-
* @param context - Error context (integration name, method, etc.)
|
|
66
|
-
* @param parseError - Optional custom parser for API-specific error formats
|
|
67
|
-
* @returns ToolingError with appropriate type and message
|
|
68
|
-
*
|
|
69
|
-
* @example
|
|
70
|
-
* // Basic usage
|
|
71
|
-
* if (!response.ok) {
|
|
72
|
-
* throw await createHttpError(response, {
|
|
73
|
-
* integration: 'attio',
|
|
74
|
-
* method: 'listRecords',
|
|
75
|
-
* listId
|
|
76
|
-
* })
|
|
77
|
-
* }
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* // With custom error parser
|
|
81
|
-
* if (!response.ok) {
|
|
82
|
-
* throw await createHttpError(
|
|
83
|
-
* response,
|
|
84
|
-
* { integration: 'attio', method: 'createRecord' },
|
|
85
|
-
* (body) => {
|
|
86
|
-
* const json = JSON.parse(body)
|
|
87
|
-
* return json.message
|
|
88
|
-
* }
|
|
89
|
-
* )
|
|
90
|
-
* }
|
|
91
|
-
*/
|
|
92
|
-
export async function createHttpError(
|
|
93
|
-
response: Response,
|
|
94
|
-
context: HttpErrorContext,
|
|
95
|
-
parseError?: ErrorParser
|
|
96
|
-
): Promise<ToolingError> {
|
|
97
|
-
const errorText = await response.text()
|
|
98
|
-
let message = `${context.integration} API error: ${response.status} ${response.statusText}`
|
|
99
|
-
|
|
100
|
-
// Try custom parser first, then generic JSON parsing
|
|
101
|
-
if (parseError) {
|
|
102
|
-
try {
|
|
103
|
-
const parsed = parseError(errorText)
|
|
104
|
-
if (parsed) message = parsed
|
|
105
|
-
} catch {
|
|
106
|
-
// Custom parser failed, fall through to generic parsing
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Generic JSON parsing if no custom parser or custom parser didn't return a message
|
|
111
|
-
if (!parseError || message.includes('API error:')) {
|
|
112
|
-
try {
|
|
113
|
-
const json = JSON.parse(errorText)
|
|
114
|
-
const parsedMessage = json.message || json.error?.message
|
|
115
|
-
if (parsedMessage) message = parsedMessage
|
|
116
|
-
} catch {
|
|
117
|
-
// Response is not JSON, use raw text if available
|
|
118
|
-
if (errorText && errorText.length < 500) {
|
|
119
|
-
message = errorText
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return new ToolingError(
|
|
125
|
-
mapHttpStatusToErrorType(response.status),
|
|
126
|
-
message,
|
|
127
|
-
{ ...context, statusCode: response.status }
|
|
128
|
-
)
|
|
129
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Error Mapper
|
|
3
|
+
*
|
|
4
|
+
* Shared utility for mapping HTTP status codes to ToolingError types.
|
|
5
|
+
* Used by all integration adapters for consistent error handling.
|
|
6
|
+
*
|
|
7
|
+
* Standard mapping:
|
|
8
|
+
* - 401/403 -> credentials_invalid (authentication failed)
|
|
9
|
+
* - 400/404/409 -> validation_error (non-retryable client errors)
|
|
10
|
+
* - 429 -> rate_limit_exceeded (retryable)
|
|
11
|
+
* - 500+ -> server_unavailable (retryable)
|
|
12
|
+
* - Other 4xx -> validation_error (non-retryable)
|
|
13
|
+
* - Other -> api_error (retryable)
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { ToolingError, type ToolingErrorType } from '../../execution/engine/tools/types'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Context for HTTP error creation
|
|
20
|
+
*/
|
|
21
|
+
export interface HttpErrorContext {
|
|
22
|
+
integration: string
|
|
23
|
+
method: string
|
|
24
|
+
statusCode?: number
|
|
25
|
+
organizationId?: string
|
|
26
|
+
[key: string]: unknown
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Custom error parser function type
|
|
31
|
+
* Allows adapters to extract error messages from API-specific response formats
|
|
32
|
+
*/
|
|
33
|
+
export type ErrorParser = (responseBody: string) => string | undefined
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Map HTTP status code to ToolingError type
|
|
37
|
+
*
|
|
38
|
+
* Standard mapping used by all integration adapters:
|
|
39
|
+
* - 401/403 -> credentials_invalid (authentication failed)
|
|
40
|
+
* - 400/404/409 -> validation_error (non-retryable client errors)
|
|
41
|
+
* - 429 -> rate_limit_exceeded (retryable)
|
|
42
|
+
* - 500+ -> server_unavailable (retryable)
|
|
43
|
+
* - Other 4xx -> validation_error (non-retryable)
|
|
44
|
+
* - Other -> api_error (retryable)
|
|
45
|
+
*
|
|
46
|
+
* @param status - HTTP status code
|
|
47
|
+
* @returns ToolingErrorType for the status code
|
|
48
|
+
*/
|
|
49
|
+
export function mapHttpStatusToErrorType(status: number): ToolingErrorType {
|
|
50
|
+
if (status === 401 || status === 403) return 'credentials_invalid'
|
|
51
|
+
if (status === 404 || status === 400 || status === 409) return 'validation_error'
|
|
52
|
+
if (status === 429) return 'rate_limit_exceeded'
|
|
53
|
+
if (status >= 500) return 'server_unavailable'
|
|
54
|
+
if (status >= 400) return 'validation_error'
|
|
55
|
+
return 'api_error'
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Create ToolingError from HTTP response
|
|
60
|
+
*
|
|
61
|
+
* Reads response body, parses error message, and creates appropriate ToolingError.
|
|
62
|
+
* Supports custom error parser for API-specific response formats.
|
|
63
|
+
*
|
|
64
|
+
* @param response - Fetch Response object
|
|
65
|
+
* @param context - Error context (integration name, method, etc.)
|
|
66
|
+
* @param parseError - Optional custom parser for API-specific error formats
|
|
67
|
+
* @returns ToolingError with appropriate type and message
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* // Basic usage
|
|
71
|
+
* if (!response.ok) {
|
|
72
|
+
* throw await createHttpError(response, {
|
|
73
|
+
* integration: 'attio',
|
|
74
|
+
* method: 'listRecords',
|
|
75
|
+
* listId
|
|
76
|
+
* })
|
|
77
|
+
* }
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* // With custom error parser
|
|
81
|
+
* if (!response.ok) {
|
|
82
|
+
* throw await createHttpError(
|
|
83
|
+
* response,
|
|
84
|
+
* { integration: 'attio', method: 'createRecord' },
|
|
85
|
+
* (body) => {
|
|
86
|
+
* const json = JSON.parse(body)
|
|
87
|
+
* return json.message
|
|
88
|
+
* }
|
|
89
|
+
* )
|
|
90
|
+
* }
|
|
91
|
+
*/
|
|
92
|
+
export async function createHttpError(
|
|
93
|
+
response: Response,
|
|
94
|
+
context: HttpErrorContext,
|
|
95
|
+
parseError?: ErrorParser
|
|
96
|
+
): Promise<ToolingError> {
|
|
97
|
+
const errorText = await response.text()
|
|
98
|
+
let message = `${context.integration} API error: ${response.status} ${response.statusText}`
|
|
99
|
+
|
|
100
|
+
// Try custom parser first, then generic JSON parsing
|
|
101
|
+
if (parseError) {
|
|
102
|
+
try {
|
|
103
|
+
const parsed = parseError(errorText)
|
|
104
|
+
if (parsed) message = parsed
|
|
105
|
+
} catch {
|
|
106
|
+
// Custom parser failed, fall through to generic parsing
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Generic JSON parsing if no custom parser or custom parser didn't return a message
|
|
111
|
+
if (!parseError || message.includes('API error:')) {
|
|
112
|
+
try {
|
|
113
|
+
const json = JSON.parse(errorText)
|
|
114
|
+
const parsedMessage = json.message || json.error?.message
|
|
115
|
+
if (parsedMessage) message = parsedMessage
|
|
116
|
+
} catch {
|
|
117
|
+
// Response is not JSON, use raw text if available
|
|
118
|
+
if (errorText && errorText.length < 500) {
|
|
119
|
+
message = errorText
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return new ToolingError(
|
|
125
|
+
mapHttpStatusToErrorType(response.status),
|
|
126
|
+
message,
|
|
127
|
+
{ ...context, statusCode: response.status }
|
|
128
|
+
)
|
|
129
|
+
}
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resilience utilities for protecting against external service failures.
|
|
3
|
-
*
|
|
4
|
-
* This module provides:
|
|
5
|
-
* - Timeout wrappers for external service calls
|
|
6
|
-
* - Circuit breaker pattern for preventing cascading failures
|
|
7
|
-
* - Infrastructure error types for proper error classification
|
|
8
|
-
* - Rate limiting (token bucket algorithm)
|
|
9
|
-
* - Retry with exponential backoff
|
|
10
|
-
* - HTTP error mapping
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* import {
|
|
15
|
-
* withTimeout,
|
|
16
|
-
* SERVICE_TIMEOUTS,
|
|
17
|
-
* createCircuitBreaker,
|
|
18
|
-
* ServiceTimeoutError,
|
|
19
|
-
* ServiceUnavailableError,
|
|
20
|
-
* isInfrastructureError,
|
|
21
|
-
* withRetry,
|
|
22
|
-
* DEFAULT_RETRY_POLICY,
|
|
23
|
-
* createRateLimiter,
|
|
24
|
-
* createHttpError
|
|
25
|
-
* } from '@repo/core/resilience'
|
|
26
|
-
*
|
|
27
|
-
* // Wrap external calls with timeout
|
|
28
|
-
* const result = await withTimeout(
|
|
29
|
-
* externalService.call(),
|
|
30
|
-
* SERVICE_TIMEOUTS.WORKOS_JWT,
|
|
31
|
-
* 'ServiceName',
|
|
32
|
-
* 'operation'
|
|
33
|
-
* )
|
|
34
|
-
*
|
|
35
|
-
* // Use circuit breaker for services with repeated failures
|
|
36
|
-
* const breaker = createCircuitBreaker('my-service')
|
|
37
|
-
* const data = await breaker.execute(() => myService.fetch())
|
|
38
|
-
*
|
|
39
|
-
* // Use retry with exponential backoff
|
|
40
|
-
* const response = await withRetry(
|
|
41
|
-
* () => fetch('/api/data'),
|
|
42
|
-
* DEFAULT_RETRY_POLICY
|
|
43
|
-
* )
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
// Error types
|
|
48
|
-
export {
|
|
49
|
-
ServiceTimeoutError,
|
|
50
|
-
ServiceUnavailableError,
|
|
51
|
-
isInfrastructureError
|
|
52
|
-
} from './errors'
|
|
53
|
-
|
|
54
|
-
// Timeout utility
|
|
55
|
-
export { withTimeout, SERVICE_TIMEOUTS } from './timeout'
|
|
56
|
-
|
|
57
|
-
// Circuit breaker
|
|
58
|
-
export {
|
|
59
|
-
createCircuitBreaker,
|
|
60
|
-
CircuitState,
|
|
61
|
-
type CircuitBreaker,
|
|
62
|
-
type CircuitBreakerConfig
|
|
63
|
-
} from './circuit-breaker'
|
|
64
|
-
|
|
65
|
-
// Rate limiting
|
|
66
|
-
export {
|
|
67
|
-
InMemoryRateLimiter,
|
|
68
|
-
createRateLimiter
|
|
69
|
-
} from './rate-limiter'
|
|
70
|
-
|
|
71
|
-
// Retry logic
|
|
72
|
-
export {
|
|
73
|
-
withRetry,
|
|
74
|
-
calculateRetryDelay,
|
|
75
|
-
sleep
|
|
76
|
-
} from './retry'
|
|
77
|
-
|
|
78
|
-
// Rate limiter types
|
|
79
|
-
export {
|
|
80
|
-
type RateLimiter,
|
|
81
|
-
type RetryPolicy
|
|
82
|
-
} from './rate-limiter-types'
|
|
83
|
-
|
|
84
|
-
// Retry policy constant (canonical source: constants/resilience)
|
|
85
|
-
export { DEFAULT_RETRY_POLICY } from '../constants/resilience'
|
|
86
|
-
|
|
87
|
-
// HTTP error mapping
|
|
88
|
-
export {
|
|
89
|
-
createHttpError,
|
|
90
|
-
mapHttpStatusToErrorType,
|
|
91
|
-
type HttpErrorContext,
|
|
92
|
-
type ErrorParser
|
|
93
|
-
} from './http-error-mapper'
|
|
1
|
+
/**
|
|
2
|
+
* Resilience utilities for protecting against external service failures.
|
|
3
|
+
*
|
|
4
|
+
* This module provides:
|
|
5
|
+
* - Timeout wrappers for external service calls
|
|
6
|
+
* - Circuit breaker pattern for preventing cascading failures
|
|
7
|
+
* - Infrastructure error types for proper error classification
|
|
8
|
+
* - Rate limiting (token bucket algorithm)
|
|
9
|
+
* - Retry with exponential backoff
|
|
10
|
+
* - HTTP error mapping
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import {
|
|
15
|
+
* withTimeout,
|
|
16
|
+
* SERVICE_TIMEOUTS,
|
|
17
|
+
* createCircuitBreaker,
|
|
18
|
+
* ServiceTimeoutError,
|
|
19
|
+
* ServiceUnavailableError,
|
|
20
|
+
* isInfrastructureError,
|
|
21
|
+
* withRetry,
|
|
22
|
+
* DEFAULT_RETRY_POLICY,
|
|
23
|
+
* createRateLimiter,
|
|
24
|
+
* createHttpError
|
|
25
|
+
* } from '@repo/core/resilience'
|
|
26
|
+
*
|
|
27
|
+
* // Wrap external calls with timeout
|
|
28
|
+
* const result = await withTimeout(
|
|
29
|
+
* externalService.call(),
|
|
30
|
+
* SERVICE_TIMEOUTS.WORKOS_JWT,
|
|
31
|
+
* 'ServiceName',
|
|
32
|
+
* 'operation'
|
|
33
|
+
* )
|
|
34
|
+
*
|
|
35
|
+
* // Use circuit breaker for services with repeated failures
|
|
36
|
+
* const breaker = createCircuitBreaker('my-service')
|
|
37
|
+
* const data = await breaker.execute(() => myService.fetch())
|
|
38
|
+
*
|
|
39
|
+
* // Use retry with exponential backoff
|
|
40
|
+
* const response = await withRetry(
|
|
41
|
+
* () => fetch('/api/data'),
|
|
42
|
+
* DEFAULT_RETRY_POLICY
|
|
43
|
+
* )
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
// Error types
|
|
48
|
+
export {
|
|
49
|
+
ServiceTimeoutError,
|
|
50
|
+
ServiceUnavailableError,
|
|
51
|
+
isInfrastructureError
|
|
52
|
+
} from './errors'
|
|
53
|
+
|
|
54
|
+
// Timeout utility
|
|
55
|
+
export { withTimeout, SERVICE_TIMEOUTS } from './timeout'
|
|
56
|
+
|
|
57
|
+
// Circuit breaker
|
|
58
|
+
export {
|
|
59
|
+
createCircuitBreaker,
|
|
60
|
+
CircuitState,
|
|
61
|
+
type CircuitBreaker,
|
|
62
|
+
type CircuitBreakerConfig
|
|
63
|
+
} from './circuit-breaker'
|
|
64
|
+
|
|
65
|
+
// Rate limiting
|
|
66
|
+
export {
|
|
67
|
+
InMemoryRateLimiter,
|
|
68
|
+
createRateLimiter
|
|
69
|
+
} from './rate-limiter'
|
|
70
|
+
|
|
71
|
+
// Retry logic
|
|
72
|
+
export {
|
|
73
|
+
withRetry,
|
|
74
|
+
calculateRetryDelay,
|
|
75
|
+
sleep
|
|
76
|
+
} from './retry'
|
|
77
|
+
|
|
78
|
+
// Rate limiter types
|
|
79
|
+
export {
|
|
80
|
+
type RateLimiter,
|
|
81
|
+
type RetryPolicy
|
|
82
|
+
} from './rate-limiter-types'
|
|
83
|
+
|
|
84
|
+
// Retry policy constant (canonical source: constants/resilience)
|
|
85
|
+
export { DEFAULT_RETRY_POLICY } from '../constants/resilience'
|
|
86
|
+
|
|
87
|
+
// HTTP error mapping
|
|
88
|
+
export {
|
|
89
|
+
createHttpError,
|
|
90
|
+
mapHttpStatusToErrorType,
|
|
91
|
+
type HttpErrorContext,
|
|
92
|
+
type ErrorParser
|
|
93
|
+
} from './http-error-mapper'
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utility types for integration tools
|
|
3
|
-
*
|
|
4
|
-
* These types define the interfaces for rate limiting and retry logic
|
|
5
|
-
* that are used by integration tools.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Rate limiter interface
|
|
10
|
-
* Implements token bucket algorithm for rate limiting
|
|
11
|
-
*/
|
|
12
|
-
export interface RateLimiter {
|
|
13
|
-
/**
|
|
14
|
-
* Check if request is allowed
|
|
15
|
-
* @param key - Rate limit key (e.g., '${organizationId}:${integration}')
|
|
16
|
-
* @returns true if allowed, false if rate limited
|
|
17
|
-
*/
|
|
18
|
-
allow(key: string): Promise<boolean>
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Get remaining tokens for key
|
|
22
|
-
* @param key - Rate limit key
|
|
23
|
-
* @returns Number of tokens remaining
|
|
24
|
-
*/
|
|
25
|
-
remaining(key: string): Promise<number>
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Reset rate limit for key
|
|
29
|
-
* @param key - Rate limit key
|
|
30
|
-
*/
|
|
31
|
-
reset(key: string): Promise<void>
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Retry policy configuration
|
|
36
|
-
*/
|
|
37
|
-
export interface RetryPolicy {
|
|
38
|
-
/** Maximum number of retry attempts */
|
|
39
|
-
maxRetries: number
|
|
40
|
-
/** Initial delay in ms (exponential backoff) */
|
|
41
|
-
initialDelayMs: number
|
|
42
|
-
/** Maximum delay in ms (cap for exponential backoff) */
|
|
43
|
-
maxDelayMs: number
|
|
44
|
-
/** Jitter factor (0-1, adds randomness to prevent thundering herd) */
|
|
45
|
-
jitterFactor: number
|
|
46
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility types for integration tools
|
|
3
|
+
*
|
|
4
|
+
* These types define the interfaces for rate limiting and retry logic
|
|
5
|
+
* that are used by integration tools.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Rate limiter interface
|
|
10
|
+
* Implements token bucket algorithm for rate limiting
|
|
11
|
+
*/
|
|
12
|
+
export interface RateLimiter {
|
|
13
|
+
/**
|
|
14
|
+
* Check if request is allowed
|
|
15
|
+
* @param key - Rate limit key (e.g., '${organizationId}:${integration}')
|
|
16
|
+
* @returns true if allowed, false if rate limited
|
|
17
|
+
*/
|
|
18
|
+
allow(key: string): Promise<boolean>
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Get remaining tokens for key
|
|
22
|
+
* @param key - Rate limit key
|
|
23
|
+
* @returns Number of tokens remaining
|
|
24
|
+
*/
|
|
25
|
+
remaining(key: string): Promise<number>
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Reset rate limit for key
|
|
29
|
+
* @param key - Rate limit key
|
|
30
|
+
*/
|
|
31
|
+
reset(key: string): Promise<void>
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Retry policy configuration
|
|
36
|
+
*/
|
|
37
|
+
export interface RetryPolicy {
|
|
38
|
+
/** Maximum number of retry attempts */
|
|
39
|
+
maxRetries: number
|
|
40
|
+
/** Initial delay in ms (exponential backoff) */
|
|
41
|
+
initialDelayMs: number
|
|
42
|
+
/** Maximum delay in ms (cap for exponential backoff) */
|
|
43
|
+
maxDelayMs: number
|
|
44
|
+
/** Jitter factor (0-1, adds randomness to prevent thundering herd) */
|
|
45
|
+
jitterFactor: number
|
|
46
|
+
}
|