@elevasis/core 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/README.md +41 -41
- package/src/__tests__/publish.test.ts +18 -18
- 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 +53 -53
- 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 -1
- package/src/business/projects/sse-events.ts +21 -0
- 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 -699
- 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 -34
- 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 +611 -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 +38 -38
- 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 +11 -11
- 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/rls/RLSTestContext.ts +556 -556
- package/src/test-utils/rls/index.ts +1 -1
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
// Export all types from types.ts (domain interfaces)
|
|
2
|
-
// These are the canonical TypeScript interfaces for schedule config types
|
|
3
|
-
export * from './types'
|
|
4
|
-
|
|
5
|
-
// Export schemas from schemas.ts (domain-level Zod schemas)
|
|
6
|
-
// Note: Type aliases from schemas.ts (e.g., RecurringScheduleConfigInput) are suffixed
|
|
7
|
-
// with "Input" to distinguish from the interface types in types.ts
|
|
8
|
-
export * from './schemas'
|
|
9
|
-
|
|
10
|
-
// Export API schemas from api-schemas.ts
|
|
11
|
-
// Only export schemas and types that are unique to api-schemas.ts
|
|
12
|
-
// Schedule config schemas are re-exported from schemas.ts, so we skip those
|
|
13
|
-
export {
|
|
14
|
-
// Request schemas
|
|
15
|
-
CreateScheduleRequestSchema,
|
|
16
|
-
ListSchedulesQuerySchema,
|
|
17
|
-
GetScheduleParamsSchema,
|
|
18
|
-
UpdateAnchorRequestSchema,
|
|
19
|
-
UpdateScheduleRequestSchema,
|
|
20
|
-
ProcessSchedulesBatchRequestSchema,
|
|
21
|
-
GetExecutionHistoryParamsSchema,
|
|
22
|
-
GetExecutionHistoryQuerySchema,
|
|
23
|
-
|
|
24
|
-
// Response schemas
|
|
25
|
-
ScheduleResponseSchema,
|
|
26
|
-
ListSchedulesResponseSchema,
|
|
27
|
-
ExecutionHistoryItemSchema,
|
|
28
|
-
ExecutionHistoryResponseSchema,
|
|
29
|
-
ProcessBatchResponseSchema,
|
|
30
|
-
|
|
31
|
-
// Request types
|
|
32
|
-
type CreateScheduleRequest,
|
|
33
|
-
type ListSchedulesQuery,
|
|
34
|
-
type GetScheduleParams,
|
|
35
|
-
type UpdateAnchorRequest,
|
|
36
|
-
type UpdateScheduleRequest,
|
|
37
|
-
type ProcessSchedulesBatchRequest,
|
|
38
|
-
type GetExecutionHistoryParams,
|
|
39
|
-
type GetExecutionHistoryQuery,
|
|
40
|
-
|
|
41
|
-
// Response types
|
|
42
|
-
type ScheduleResponse,
|
|
43
|
-
type ListSchedulesResponse,
|
|
44
|
-
type ExecutionHistoryItem,
|
|
45
|
-
type ExecutionHistoryResponse,
|
|
46
|
-
type ProcessBatchResponse
|
|
47
|
-
} from './api-schemas'
|
|
48
|
-
|
|
49
|
-
// Export utilities
|
|
50
|
-
export * from './utils'
|
|
1
|
+
// Export all types from types.ts (domain interfaces)
|
|
2
|
+
// These are the canonical TypeScript interfaces for schedule config types
|
|
3
|
+
export * from './types'
|
|
4
|
+
|
|
5
|
+
// Export schemas from schemas.ts (domain-level Zod schemas)
|
|
6
|
+
// Note: Type aliases from schemas.ts (e.g., RecurringScheduleConfigInput) are suffixed
|
|
7
|
+
// with "Input" to distinguish from the interface types in types.ts
|
|
8
|
+
export * from './schemas'
|
|
9
|
+
|
|
10
|
+
// Export API schemas from api-schemas.ts
|
|
11
|
+
// Only export schemas and types that are unique to api-schemas.ts
|
|
12
|
+
// Schedule config schemas are re-exported from schemas.ts, so we skip those
|
|
13
|
+
export {
|
|
14
|
+
// Request schemas
|
|
15
|
+
CreateScheduleRequestSchema,
|
|
16
|
+
ListSchedulesQuerySchema,
|
|
17
|
+
GetScheduleParamsSchema,
|
|
18
|
+
UpdateAnchorRequestSchema,
|
|
19
|
+
UpdateScheduleRequestSchema,
|
|
20
|
+
ProcessSchedulesBatchRequestSchema,
|
|
21
|
+
GetExecutionHistoryParamsSchema,
|
|
22
|
+
GetExecutionHistoryQuerySchema,
|
|
23
|
+
|
|
24
|
+
// Response schemas
|
|
25
|
+
ScheduleResponseSchema,
|
|
26
|
+
ListSchedulesResponseSchema,
|
|
27
|
+
ExecutionHistoryItemSchema,
|
|
28
|
+
ExecutionHistoryResponseSchema,
|
|
29
|
+
ProcessBatchResponseSchema,
|
|
30
|
+
|
|
31
|
+
// Request types
|
|
32
|
+
type CreateScheduleRequest,
|
|
33
|
+
type ListSchedulesQuery,
|
|
34
|
+
type GetScheduleParams,
|
|
35
|
+
type UpdateAnchorRequest,
|
|
36
|
+
type UpdateScheduleRequest,
|
|
37
|
+
type ProcessSchedulesBatchRequest,
|
|
38
|
+
type GetExecutionHistoryParams,
|
|
39
|
+
type GetExecutionHistoryQuery,
|
|
40
|
+
|
|
41
|
+
// Response types
|
|
42
|
+
type ScheduleResponse,
|
|
43
|
+
type ListSchedulesResponse,
|
|
44
|
+
type ExecutionHistoryItem,
|
|
45
|
+
type ExecutionHistoryResponse,
|
|
46
|
+
type ProcessBatchResponse
|
|
47
|
+
} from './api-schemas'
|
|
48
|
+
|
|
49
|
+
// Export utilities
|
|
50
|
+
export * from './utils'
|
|
@@ -1,264 +1,264 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
import { ExecutionTargetSchema, OriginTrackingSchema } from '../core/api-schemas'
|
|
3
|
-
import {
|
|
4
|
-
UuidSchema,
|
|
5
|
-
NonEmptyStringSchema,
|
|
6
|
-
ResourceTypeSchema,
|
|
7
|
-
OriginResourceTypeSchema
|
|
8
|
-
} from '../../platform/utils/validation'
|
|
9
|
-
|
|
10
|
-
// Note: ExecutionTargetSchema and OriginTrackingSchema are now imported from api-schemas.ts
|
|
11
|
-
// This ensures consistent validation across all execution endpoints
|
|
12
|
-
|
|
13
|
-
// Re-export for backward compatibility
|
|
14
|
-
export { ExecutionTargetSchema, OriginTrackingSchema }
|
|
15
|
-
|
|
16
|
-
// ============================================================================
|
|
17
|
-
// SCHEDULE ITEM SCHEMAS
|
|
18
|
-
// Note: These are canonical domain schemas. API-level schemas with additional
|
|
19
|
-
// validation constraints are in api-schemas.ts
|
|
20
|
-
// ============================================================================
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Relative schedule item validation
|
|
24
|
-
* Used for schedule items with offsets from an anchor date
|
|
25
|
-
*
|
|
26
|
-
* Offset format: [+/-][number][unit]
|
|
27
|
-
* - Units: d (days), h (hours), m (minutes)
|
|
28
|
-
* - Examples: '-7d', '+3d', '-2h', '+30m'
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```typescript
|
|
32
|
-
* {
|
|
33
|
-
* offset: '-7d', // 7 days before anchor
|
|
34
|
-
* payload: { reminder: 'one week before' },
|
|
35
|
-
* label: 'Week before reminder'
|
|
36
|
-
* }
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export const RelativeScheduleItemSchema = z.object({
|
|
40
|
-
offset: z.string().regex(/^[+-]\d+[dhm]$/, 'Invalid offset format. Use +3d, -2h, +30m, etc.'),
|
|
41
|
-
payload: z.record(z.string(), z.unknown()),
|
|
42
|
-
label: z.string().optional()
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Absolute schedule item validation
|
|
47
|
-
* Used for schedule items with fixed datetime
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```typescript
|
|
51
|
-
* {
|
|
52
|
-
* runAt: '2025-03-15T09:00:00Z',
|
|
53
|
-
* payload: { event: 'launch' },
|
|
54
|
-
* label: 'Product launch notification'
|
|
55
|
-
* }
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
export const AbsoluteScheduleItemSchema = z.object({
|
|
59
|
-
runAt: z.string().datetime({ message: 'Invalid datetime format' }),
|
|
60
|
-
payload: z.record(z.string(), z.unknown()),
|
|
61
|
-
label: z.string().optional()
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
// ============================================================================
|
|
65
|
-
// SCHEDULE CONFIG SCHEMAS (DISCRIMINATED UNION)
|
|
66
|
-
// ============================================================================
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Recurring schedule configuration
|
|
70
|
-
* Supports cron expressions or predefined intervals with timezone
|
|
71
|
-
*
|
|
72
|
-
* Security:
|
|
73
|
-
* - timezone validated as string (IANA timezone validation at service layer)
|
|
74
|
-
* - endAt prevents infinite schedules
|
|
75
|
-
*
|
|
76
|
-
* @example
|
|
77
|
-
* ```typescript
|
|
78
|
-
* // Cron-based (every Monday at 9am)
|
|
79
|
-
* {
|
|
80
|
-
* type: 'recurring',
|
|
81
|
-
* cron: '0 9 * * 1',
|
|
82
|
-
* timezone: 'America/New_York',
|
|
83
|
-
* payload: { report: 'weekly' }
|
|
84
|
-
* }
|
|
85
|
-
*
|
|
86
|
-
* // Interval-based (daily at 10:30)
|
|
87
|
-
* {
|
|
88
|
-
* type: 'recurring',
|
|
89
|
-
* interval: 'daily',
|
|
90
|
-
* time: '10:30',
|
|
91
|
-
* timezone: 'Europe/London',
|
|
92
|
-
* payload: { check: 'daily' }
|
|
93
|
-
* }
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
export const RecurringScheduleConfigSchema = z
|
|
97
|
-
.object({
|
|
98
|
-
type: z.literal('recurring'),
|
|
99
|
-
cron: z.string().optional(),
|
|
100
|
-
interval: z.enum(['daily', 'weekly', 'monthly']).optional(),
|
|
101
|
-
time: z
|
|
102
|
-
.string()
|
|
103
|
-
.regex(/^\d{2}:\d{2}$/, 'Time must be in HH:MM format')
|
|
104
|
-
.optional(),
|
|
105
|
-
timezone: z.string().min(1, 'Timezone is required'),
|
|
106
|
-
payload: z.record(z.string(), z.unknown()),
|
|
107
|
-
endAt: z.string().datetime().nullable().optional(),
|
|
108
|
-
overduePolicy: z.enum(['skip', 'execute']).optional()
|
|
109
|
-
})
|
|
110
|
-
.refine((data) => data.cron || data.interval, { message: 'Either cron or interval must be provided' })
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Relative schedule configuration
|
|
114
|
-
* Schedule items relative to an anchor date (e.g., event countdown)
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
* ```typescript
|
|
118
|
-
* {
|
|
119
|
-
* type: 'relative',
|
|
120
|
-
* anchorAt: '2025-06-01T00:00:00Z',
|
|
121
|
-
* anchorLabel: 'Product Launch',
|
|
122
|
-
* items: [
|
|
123
|
-
* { offset: '-30d', payload: { reminder: '30 days out' } },
|
|
124
|
-
* { offset: '-7d', payload: { reminder: '1 week out' } },
|
|
125
|
-
* { offset: '-1d', payload: { reminder: 'tomorrow' } }
|
|
126
|
-
* ]
|
|
127
|
-
* }
|
|
128
|
-
* ```
|
|
129
|
-
*/
|
|
130
|
-
export const RelativeScheduleConfigSchema = z.object({
|
|
131
|
-
type: z.literal('relative'),
|
|
132
|
-
anchorAt: z.string().datetime({ message: 'Invalid anchor datetime' }),
|
|
133
|
-
anchorLabel: z.string().optional(),
|
|
134
|
-
items: z.array(RelativeScheduleItemSchema).min(1, 'At least one item required'),
|
|
135
|
-
overduePolicy: z.enum(['skip', 'execute']).optional()
|
|
136
|
-
})
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Absolute schedule configuration
|
|
140
|
-
* Schedule items at specific fixed datetimes
|
|
141
|
-
*
|
|
142
|
-
* @example
|
|
143
|
-
* ```typescript
|
|
144
|
-
* {
|
|
145
|
-
* type: 'absolute',
|
|
146
|
-
* items: [
|
|
147
|
-
* { runAt: '2025-01-15T10:00:00Z', payload: { event: 'first' } },
|
|
148
|
-
* { runAt: '2025-02-15T10:00:00Z', payload: { event: 'second' } }
|
|
149
|
-
* ]
|
|
150
|
-
* }
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
export const AbsoluteScheduleConfigSchema = z.object({
|
|
154
|
-
type: z.literal('absolute'),
|
|
155
|
-
items: z.array(AbsoluteScheduleItemSchema).min(1, 'At least one item required'),
|
|
156
|
-
overduePolicy: z.enum(['skip', 'execute']).optional()
|
|
157
|
-
})
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Task schedule configuration discriminated union
|
|
161
|
-
* Efficiently validates one of three schedule types based on 'type' field
|
|
162
|
-
*
|
|
163
|
-
* Uses Zod's discriminatedUnion for optimal parsing performance
|
|
164
|
-
*/
|
|
165
|
-
export const TaskScheduleConfigSchema = z.discriminatedUnion('type', [
|
|
166
|
-
RecurringScheduleConfigSchema,
|
|
167
|
-
RelativeScheduleConfigSchema,
|
|
168
|
-
AbsoluteScheduleConfigSchema
|
|
169
|
-
])
|
|
170
|
-
|
|
171
|
-
// ============================================================================
|
|
172
|
-
// CREATE SCHEDULE INPUT SCHEMA
|
|
173
|
-
// ============================================================================
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Target schema for schedule creation
|
|
177
|
-
* Simplified version without payload (payload is in schedule config)
|
|
178
|
-
*/
|
|
179
|
-
const ScheduleTargetSchema = z.object({
|
|
180
|
-
resourceType: ResourceTypeSchema,
|
|
181
|
-
resourceId: NonEmptyStringSchema.max(255)
|
|
182
|
-
})
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Optional origin tracking for schedule creation
|
|
186
|
-
* All fields are optional for schedules created via API
|
|
187
|
-
*/
|
|
188
|
-
const OptionalOriginTrackingSchema = z.object({
|
|
189
|
-
originExecutionId: UuidSchema.optional(),
|
|
190
|
-
originResourceType: OriginResourceTypeSchema.optional(),
|
|
191
|
-
originResourceId: z.string().max(100).optional()
|
|
192
|
-
})
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Create schedule input validation
|
|
196
|
-
* Complete input schema for creating a new task schedule
|
|
197
|
-
*
|
|
198
|
-
* Security Features:
|
|
199
|
-
* - organizationId validated as UUID (multi-tenancy)
|
|
200
|
-
* - name length limited (prevents DoS)
|
|
201
|
-
* - target validated with resource type enum
|
|
202
|
-
* - schedule config validated with discriminated union
|
|
203
|
-
* - maxRetries bounded (0-10)
|
|
204
|
-
*
|
|
205
|
-
* @example
|
|
206
|
-
* ```typescript
|
|
207
|
-
* {
|
|
208
|
-
* organizationId: '550e8400-e29b-41d4-a716-446655440000',
|
|
209
|
-
* name: 'Weekly Report Schedule',
|
|
210
|
-
* description: 'Sends weekly analytics report',
|
|
211
|
-
* target: {
|
|
212
|
-
* resourceType: 'workflow',
|
|
213
|
-
* resourceId: 'weekly-report-workflow'
|
|
214
|
-
* },
|
|
215
|
-
* scheduleConfig: {
|
|
216
|
-
* type: 'recurring',
|
|
217
|
-
* interval: 'weekly',
|
|
218
|
-
* time: '09:00',
|
|
219
|
-
* timezone: 'America/New_York',
|
|
220
|
-
* payload: { reportType: 'analytics' }
|
|
221
|
-
* },
|
|
222
|
-
* maxRetries: 3
|
|
223
|
-
* }
|
|
224
|
-
* ```
|
|
225
|
-
*/
|
|
226
|
-
export const CreateScheduleInputSchema = z
|
|
227
|
-
.object({
|
|
228
|
-
organizationId: UuidSchema,
|
|
229
|
-
name: NonEmptyStringSchema.max(255),
|
|
230
|
-
description: z.string().max(1000).optional(),
|
|
231
|
-
|
|
232
|
-
target: ScheduleTargetSchema,
|
|
233
|
-
scheduleConfig: TaskScheduleConfigSchema,
|
|
234
|
-
|
|
235
|
-
maxRetries: z.number().int().min(0).max(10).optional().default(3),
|
|
236
|
-
idempotencyKey: z.string().max(255).optional(),
|
|
237
|
-
metadata: z.record(z.string(), z.unknown()).optional()
|
|
238
|
-
})
|
|
239
|
-
.merge(OptionalOriginTrackingSchema)
|
|
240
|
-
|
|
241
|
-
// ============================================================================
|
|
242
|
-
// INFERRED TYPES
|
|
243
|
-
// ============================================================================
|
|
244
|
-
|
|
245
|
-
/** Validated relative schedule item input */
|
|
246
|
-
export type RelativeScheduleItemInput = z.infer<typeof RelativeScheduleItemSchema>
|
|
247
|
-
|
|
248
|
-
/** Validated absolute schedule item input */
|
|
249
|
-
export type AbsoluteScheduleItemInput = z.infer<typeof AbsoluteScheduleItemSchema>
|
|
250
|
-
|
|
251
|
-
/** Validated recurring schedule config input */
|
|
252
|
-
export type RecurringScheduleConfigInput = z.infer<typeof RecurringScheduleConfigSchema>
|
|
253
|
-
|
|
254
|
-
/** Validated relative schedule config input */
|
|
255
|
-
export type RelativeScheduleConfigInput = z.infer<typeof RelativeScheduleConfigSchema>
|
|
256
|
-
|
|
257
|
-
/** Validated absolute schedule config input */
|
|
258
|
-
export type AbsoluteScheduleConfigInput = z.infer<typeof AbsoluteScheduleConfigSchema>
|
|
259
|
-
|
|
260
|
-
/** Validated task schedule config (union of all config types) */
|
|
261
|
-
export type TaskScheduleConfigInput = z.infer<typeof TaskScheduleConfigSchema>
|
|
262
|
-
|
|
263
|
-
/** Validated create schedule input */
|
|
264
|
-
export type CreateScheduleInputValidated = z.infer<typeof CreateScheduleInputSchema>
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { ExecutionTargetSchema, OriginTrackingSchema } from '../core/api-schemas'
|
|
3
|
+
import {
|
|
4
|
+
UuidSchema,
|
|
5
|
+
NonEmptyStringSchema,
|
|
6
|
+
ResourceTypeSchema,
|
|
7
|
+
OriginResourceTypeSchema
|
|
8
|
+
} from '../../platform/utils/validation'
|
|
9
|
+
|
|
10
|
+
// Note: ExecutionTargetSchema and OriginTrackingSchema are now imported from api-schemas.ts
|
|
11
|
+
// This ensures consistent validation across all execution endpoints
|
|
12
|
+
|
|
13
|
+
// Re-export for backward compatibility
|
|
14
|
+
export { ExecutionTargetSchema, OriginTrackingSchema }
|
|
15
|
+
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// SCHEDULE ITEM SCHEMAS
|
|
18
|
+
// Note: These are canonical domain schemas. API-level schemas with additional
|
|
19
|
+
// validation constraints are in api-schemas.ts
|
|
20
|
+
// ============================================================================
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Relative schedule item validation
|
|
24
|
+
* Used for schedule items with offsets from an anchor date
|
|
25
|
+
*
|
|
26
|
+
* Offset format: [+/-][number][unit]
|
|
27
|
+
* - Units: d (days), h (hours), m (minutes)
|
|
28
|
+
* - Examples: '-7d', '+3d', '-2h', '+30m'
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* {
|
|
33
|
+
* offset: '-7d', // 7 days before anchor
|
|
34
|
+
* payload: { reminder: 'one week before' },
|
|
35
|
+
* label: 'Week before reminder'
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export const RelativeScheduleItemSchema = z.object({
|
|
40
|
+
offset: z.string().regex(/^[+-]\d+[dhm]$/, 'Invalid offset format. Use +3d, -2h, +30m, etc.'),
|
|
41
|
+
payload: z.record(z.string(), z.unknown()),
|
|
42
|
+
label: z.string().optional()
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Absolute schedule item validation
|
|
47
|
+
* Used for schedule items with fixed datetime
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* {
|
|
52
|
+
* runAt: '2025-03-15T09:00:00Z',
|
|
53
|
+
* payload: { event: 'launch' },
|
|
54
|
+
* label: 'Product launch notification'
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export const AbsoluteScheduleItemSchema = z.object({
|
|
59
|
+
runAt: z.string().datetime({ message: 'Invalid datetime format' }),
|
|
60
|
+
payload: z.record(z.string(), z.unknown()),
|
|
61
|
+
label: z.string().optional()
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// SCHEDULE CONFIG SCHEMAS (DISCRIMINATED UNION)
|
|
66
|
+
// ============================================================================
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Recurring schedule configuration
|
|
70
|
+
* Supports cron expressions or predefined intervals with timezone
|
|
71
|
+
*
|
|
72
|
+
* Security:
|
|
73
|
+
* - timezone validated as string (IANA timezone validation at service layer)
|
|
74
|
+
* - endAt prevents infinite schedules
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* // Cron-based (every Monday at 9am)
|
|
79
|
+
* {
|
|
80
|
+
* type: 'recurring',
|
|
81
|
+
* cron: '0 9 * * 1',
|
|
82
|
+
* timezone: 'America/New_York',
|
|
83
|
+
* payload: { report: 'weekly' }
|
|
84
|
+
* }
|
|
85
|
+
*
|
|
86
|
+
* // Interval-based (daily at 10:30)
|
|
87
|
+
* {
|
|
88
|
+
* type: 'recurring',
|
|
89
|
+
* interval: 'daily',
|
|
90
|
+
* time: '10:30',
|
|
91
|
+
* timezone: 'Europe/London',
|
|
92
|
+
* payload: { check: 'daily' }
|
|
93
|
+
* }
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export const RecurringScheduleConfigSchema = z
|
|
97
|
+
.object({
|
|
98
|
+
type: z.literal('recurring'),
|
|
99
|
+
cron: z.string().optional(),
|
|
100
|
+
interval: z.enum(['daily', 'weekly', 'monthly']).optional(),
|
|
101
|
+
time: z
|
|
102
|
+
.string()
|
|
103
|
+
.regex(/^\d{2}:\d{2}$/, 'Time must be in HH:MM format')
|
|
104
|
+
.optional(),
|
|
105
|
+
timezone: z.string().min(1, 'Timezone is required'),
|
|
106
|
+
payload: z.record(z.string(), z.unknown()),
|
|
107
|
+
endAt: z.string().datetime().nullable().optional(),
|
|
108
|
+
overduePolicy: z.enum(['skip', 'execute']).optional()
|
|
109
|
+
})
|
|
110
|
+
.refine((data) => data.cron || data.interval, { message: 'Either cron or interval must be provided' })
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Relative schedule configuration
|
|
114
|
+
* Schedule items relative to an anchor date (e.g., event countdown)
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* {
|
|
119
|
+
* type: 'relative',
|
|
120
|
+
* anchorAt: '2025-06-01T00:00:00Z',
|
|
121
|
+
* anchorLabel: 'Product Launch',
|
|
122
|
+
* items: [
|
|
123
|
+
* { offset: '-30d', payload: { reminder: '30 days out' } },
|
|
124
|
+
* { offset: '-7d', payload: { reminder: '1 week out' } },
|
|
125
|
+
* { offset: '-1d', payload: { reminder: 'tomorrow' } }
|
|
126
|
+
* ]
|
|
127
|
+
* }
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export const RelativeScheduleConfigSchema = z.object({
|
|
131
|
+
type: z.literal('relative'),
|
|
132
|
+
anchorAt: z.string().datetime({ message: 'Invalid anchor datetime' }),
|
|
133
|
+
anchorLabel: z.string().optional(),
|
|
134
|
+
items: z.array(RelativeScheduleItemSchema).min(1, 'At least one item required'),
|
|
135
|
+
overduePolicy: z.enum(['skip', 'execute']).optional()
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Absolute schedule configuration
|
|
140
|
+
* Schedule items at specific fixed datetimes
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* {
|
|
145
|
+
* type: 'absolute',
|
|
146
|
+
* items: [
|
|
147
|
+
* { runAt: '2025-01-15T10:00:00Z', payload: { event: 'first' } },
|
|
148
|
+
* { runAt: '2025-02-15T10:00:00Z', payload: { event: 'second' } }
|
|
149
|
+
* ]
|
|
150
|
+
* }
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export const AbsoluteScheduleConfigSchema = z.object({
|
|
154
|
+
type: z.literal('absolute'),
|
|
155
|
+
items: z.array(AbsoluteScheduleItemSchema).min(1, 'At least one item required'),
|
|
156
|
+
overduePolicy: z.enum(['skip', 'execute']).optional()
|
|
157
|
+
})
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Task schedule configuration discriminated union
|
|
161
|
+
* Efficiently validates one of three schedule types based on 'type' field
|
|
162
|
+
*
|
|
163
|
+
* Uses Zod's discriminatedUnion for optimal parsing performance
|
|
164
|
+
*/
|
|
165
|
+
export const TaskScheduleConfigSchema = z.discriminatedUnion('type', [
|
|
166
|
+
RecurringScheduleConfigSchema,
|
|
167
|
+
RelativeScheduleConfigSchema,
|
|
168
|
+
AbsoluteScheduleConfigSchema
|
|
169
|
+
])
|
|
170
|
+
|
|
171
|
+
// ============================================================================
|
|
172
|
+
// CREATE SCHEDULE INPUT SCHEMA
|
|
173
|
+
// ============================================================================
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Target schema for schedule creation
|
|
177
|
+
* Simplified version without payload (payload is in schedule config)
|
|
178
|
+
*/
|
|
179
|
+
const ScheduleTargetSchema = z.object({
|
|
180
|
+
resourceType: ResourceTypeSchema,
|
|
181
|
+
resourceId: NonEmptyStringSchema.max(255)
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Optional origin tracking for schedule creation
|
|
186
|
+
* All fields are optional for schedules created via API
|
|
187
|
+
*/
|
|
188
|
+
const OptionalOriginTrackingSchema = z.object({
|
|
189
|
+
originExecutionId: UuidSchema.optional(),
|
|
190
|
+
originResourceType: OriginResourceTypeSchema.optional(),
|
|
191
|
+
originResourceId: z.string().max(100).optional()
|
|
192
|
+
})
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Create schedule input validation
|
|
196
|
+
* Complete input schema for creating a new task schedule
|
|
197
|
+
*
|
|
198
|
+
* Security Features:
|
|
199
|
+
* - organizationId validated as UUID (multi-tenancy)
|
|
200
|
+
* - name length limited (prevents DoS)
|
|
201
|
+
* - target validated with resource type enum
|
|
202
|
+
* - schedule config validated with discriminated union
|
|
203
|
+
* - maxRetries bounded (0-10)
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* {
|
|
208
|
+
* organizationId: '550e8400-e29b-41d4-a716-446655440000',
|
|
209
|
+
* name: 'Weekly Report Schedule',
|
|
210
|
+
* description: 'Sends weekly analytics report',
|
|
211
|
+
* target: {
|
|
212
|
+
* resourceType: 'workflow',
|
|
213
|
+
* resourceId: 'weekly-report-workflow'
|
|
214
|
+
* },
|
|
215
|
+
* scheduleConfig: {
|
|
216
|
+
* type: 'recurring',
|
|
217
|
+
* interval: 'weekly',
|
|
218
|
+
* time: '09:00',
|
|
219
|
+
* timezone: 'America/New_York',
|
|
220
|
+
* payload: { reportType: 'analytics' }
|
|
221
|
+
* },
|
|
222
|
+
* maxRetries: 3
|
|
223
|
+
* }
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
export const CreateScheduleInputSchema = z
|
|
227
|
+
.object({
|
|
228
|
+
organizationId: UuidSchema,
|
|
229
|
+
name: NonEmptyStringSchema.max(255),
|
|
230
|
+
description: z.string().max(1000).optional(),
|
|
231
|
+
|
|
232
|
+
target: ScheduleTargetSchema,
|
|
233
|
+
scheduleConfig: TaskScheduleConfigSchema,
|
|
234
|
+
|
|
235
|
+
maxRetries: z.number().int().min(0).max(10).optional().default(3),
|
|
236
|
+
idempotencyKey: z.string().max(255).optional(),
|
|
237
|
+
metadata: z.record(z.string(), z.unknown()).optional()
|
|
238
|
+
})
|
|
239
|
+
.merge(OptionalOriginTrackingSchema)
|
|
240
|
+
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// INFERRED TYPES
|
|
243
|
+
// ============================================================================
|
|
244
|
+
|
|
245
|
+
/** Validated relative schedule item input */
|
|
246
|
+
export type RelativeScheduleItemInput = z.infer<typeof RelativeScheduleItemSchema>
|
|
247
|
+
|
|
248
|
+
/** Validated absolute schedule item input */
|
|
249
|
+
export type AbsoluteScheduleItemInput = z.infer<typeof AbsoluteScheduleItemSchema>
|
|
250
|
+
|
|
251
|
+
/** Validated recurring schedule config input */
|
|
252
|
+
export type RecurringScheduleConfigInput = z.infer<typeof RecurringScheduleConfigSchema>
|
|
253
|
+
|
|
254
|
+
/** Validated relative schedule config input */
|
|
255
|
+
export type RelativeScheduleConfigInput = z.infer<typeof RelativeScheduleConfigSchema>
|
|
256
|
+
|
|
257
|
+
/** Validated absolute schedule config input */
|
|
258
|
+
export type AbsoluteScheduleConfigInput = z.infer<typeof AbsoluteScheduleConfigSchema>
|
|
259
|
+
|
|
260
|
+
/** Validated task schedule config (union of all config types) */
|
|
261
|
+
export type TaskScheduleConfigInput = z.infer<typeof TaskScheduleConfigSchema>
|
|
262
|
+
|
|
263
|
+
/** Validated create schedule input */
|
|
264
|
+
export type CreateScheduleInputValidated = z.infer<typeof CreateScheduleInputSchema>
|