@elevasis/core 0.7.1 → 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 +1 -1
- 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 -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 +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,35 +1,35 @@
|
|
|
1
|
-
import type { WorkOSOrganization } from './workos'
|
|
2
|
-
import type { Organization } from '../organization'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Transform WorkOS organization to our internal format
|
|
6
|
-
*/
|
|
7
|
-
export function transformWorkOSOrganization(
|
|
8
|
-
workosOrg: WorkOSOrganization
|
|
9
|
-
): Organization {
|
|
10
|
-
const verifiedDomains = workosOrg.domains
|
|
11
|
-
.filter(d => d.state === 'verified' || d.state === 'legacy_verified')
|
|
12
|
-
.map(d => d.domain)
|
|
13
|
-
|
|
14
|
-
const pendingDomains = workosOrg.domains
|
|
15
|
-
.filter(d => d.state === 'pending')
|
|
16
|
-
.map(d => d.domain)
|
|
17
|
-
|
|
18
|
-
const allDomains = workosOrg.domains.map(d => d.domain)
|
|
19
|
-
|
|
20
|
-
return {
|
|
21
|
-
workosId: workosOrg.id,
|
|
22
|
-
name: workosOrg.name,
|
|
23
|
-
domains: allDomains,
|
|
24
|
-
createdAt: workosOrg.createdAt,
|
|
25
|
-
updatedAt: workosOrg.updatedAt,
|
|
26
|
-
stripeCustomerId: workosOrg.stripeCustomerId,
|
|
27
|
-
externalId: workosOrg.externalId,
|
|
28
|
-
workosMetadata: workosOrg.metadata,
|
|
29
|
-
|
|
30
|
-
// Derived fields
|
|
31
|
-
primaryDomain: verifiedDomains[0] || allDomains[0],
|
|
32
|
-
verifiedDomains,
|
|
33
|
-
pendingDomains
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
import type { WorkOSOrganization } from './workos'
|
|
2
|
+
import type { Organization } from '../organization'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Transform WorkOS organization to our internal format
|
|
6
|
+
*/
|
|
7
|
+
export function transformWorkOSOrganization(
|
|
8
|
+
workosOrg: WorkOSOrganization
|
|
9
|
+
): Organization {
|
|
10
|
+
const verifiedDomains = workosOrg.domains
|
|
11
|
+
.filter(d => d.state === 'verified' || d.state === 'legacy_verified')
|
|
12
|
+
.map(d => d.domain)
|
|
13
|
+
|
|
14
|
+
const pendingDomains = workosOrg.domains
|
|
15
|
+
.filter(d => d.state === 'pending')
|
|
16
|
+
.map(d => d.domain)
|
|
17
|
+
|
|
18
|
+
const allDomains = workosOrg.domains.map(d => d.domain)
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
workosId: workosOrg.id,
|
|
22
|
+
name: workosOrg.name,
|
|
23
|
+
domains: allDomains,
|
|
24
|
+
createdAt: workosOrg.createdAt,
|
|
25
|
+
updatedAt: workosOrg.updatedAt,
|
|
26
|
+
stripeCustomerId: workosOrg.stripeCustomerId,
|
|
27
|
+
externalId: workosOrg.externalId,
|
|
28
|
+
workosMetadata: workosOrg.metadata,
|
|
29
|
+
|
|
30
|
+
// Derived fields
|
|
31
|
+
primaryDomain: verifiedDomains[0] || allDomains[0],
|
|
32
|
+
verifiedDomains,
|
|
33
|
+
pendingDomains
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WorkOS Organization API Types
|
|
3
|
-
* Re-exported from @workos-inc/node SDK v7.69.2 with consistent naming conventions
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type {
|
|
7
|
-
Organization,
|
|
8
|
-
OrganizationDomain,
|
|
9
|
-
List,
|
|
10
|
-
ListOrganizationsOptions
|
|
11
|
-
} from '@workos-inc/node'
|
|
12
|
-
|
|
13
|
-
// Consistent naming convention for the monorepo
|
|
14
|
-
export type WorkOSOrganization = Organization
|
|
15
|
-
export type WorkOSOrganizationDomain = OrganizationDomain
|
|
16
|
-
export type WorkOSOrganizationListResponse = List<Organization>
|
|
17
|
-
export type ListWorkOSOrganizationsParams = ListOrganizationsOptions
|
|
18
|
-
|
|
19
|
-
// For request types, import directly from SDK:
|
|
20
|
-
// import type { CreateOrganizationOptions, UpdateOrganizationOptions } from '@workos-inc/node'
|
|
1
|
+
/**
|
|
2
|
+
* WorkOS Organization API Types
|
|
3
|
+
* Re-exported from @workos-inc/node SDK v7.69.2 with consistent naming conventions
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type {
|
|
7
|
+
Organization,
|
|
8
|
+
OrganizationDomain,
|
|
9
|
+
List,
|
|
10
|
+
ListOrganizationsOptions
|
|
11
|
+
} from '@workos-inc/node'
|
|
12
|
+
|
|
13
|
+
// Consistent naming convention for the monorepo
|
|
14
|
+
export type WorkOSOrganization = Organization
|
|
15
|
+
export type WorkOSOrganizationDomain = OrganizationDomain
|
|
16
|
+
export type WorkOSOrganizationListResponse = List<Organization>
|
|
17
|
+
export type ListWorkOSOrganizationsParams = ListOrganizationsOptions
|
|
18
|
+
|
|
19
|
+
// For request types, import directly from SDK:
|
|
20
|
+
// import type { CreateOrganizationOptions, UpdateOrganizationOptions } from '@workos-inc/node'
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Multi-tenancy configuration types
|
|
3
|
-
*
|
|
4
|
-
* Config is stored in dedicated `config` columns (NOT nested in metadata):
|
|
5
|
-
* - organizations.config: Org-level config (no feature toggles -- all features available by default)
|
|
6
|
-
* - org_memberships.config: Per-user-per-org feature overrides
|
|
7
|
-
* - users.config: User-global config
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Per-user-per-org config (stored in org_memberships.config)
|
|
12
|
-
* Controls which features a specific member can access within their org.
|
|
13
|
-
* Keys are feature IDs from the organization model (e.g. crm, lead-gen, projects, seo).
|
|
14
|
-
*/
|
|
15
|
-
export interface MembershipFeatureConfig {
|
|
16
|
-
features?: Record<string, boolean>
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* User-global config (stored in users.config)
|
|
21
|
-
* Theme and onboarding are user-specific, NOT org-specific
|
|
22
|
-
*/
|
|
23
|
-
export interface UserConfig {
|
|
24
|
-
theme?: {
|
|
25
|
-
preset?:
|
|
26
|
-
| 'default'
|
|
27
|
-
| 'tactical'
|
|
28
|
-
| 'regal'
|
|
29
|
-
| 'cyber-volt'
|
|
30
|
-
| 'aurora'
|
|
31
|
-
| 'rose-gold'
|
|
32
|
-
| 'midnight'
|
|
33
|
-
| 'titanium'
|
|
34
|
-
| 'obsidian'
|
|
35
|
-
| 'honey'
|
|
36
|
-
| 'abyss'
|
|
37
|
-
| 'canopy'
|
|
38
|
-
| 'slate'
|
|
39
|
-
| 'cyber-strike'
|
|
40
|
-
| 'cyber-chrome'
|
|
41
|
-
| 'cyber-void'
|
|
42
|
-
| 'nirvana'
|
|
43
|
-
| 'wave'
|
|
44
|
-
| 'synapse'
|
|
45
|
-
| 'cortex'
|
|
46
|
-
| 'helios'
|
|
47
|
-
| 'graphite'
|
|
48
|
-
| 'quarry'
|
|
49
|
-
| 'canyon'
|
|
50
|
-
| 'nord'
|
|
51
|
-
| 'catppuccin'
|
|
52
|
-
| 'tokyo-night'
|
|
53
|
-
| 'gruvbox'
|
|
54
|
-
colorScheme?: 'light' | 'dark' | 'auto'
|
|
55
|
-
}
|
|
56
|
-
onboarding?: {
|
|
57
|
-
completed?: boolean
|
|
58
|
-
completedAt?: string // ISO date
|
|
59
|
-
role?: string
|
|
60
|
-
primaryUseCase?: string[]
|
|
61
|
-
experienceLevel?: string
|
|
62
|
-
/** Onboarding guide system state (set by checklist/tour system) */
|
|
63
|
-
guides?: {
|
|
64
|
-
completedIds?: string[] // e.g. ["explore-dashboard", "view-workflow"]
|
|
65
|
-
dismissed?: boolean // user manually dismissed checklist
|
|
66
|
-
completedAt?: string // ISO date — all guides finished
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* OrgMetadata - Contains WorkOS sync data only
|
|
73
|
-
* Note: This is kept separate from config for clarity
|
|
74
|
-
*/
|
|
75
|
-
export interface OrgMetadata {
|
|
76
|
-
domains?: {
|
|
77
|
-
verified: string[]
|
|
78
|
-
pending: string[]
|
|
79
|
-
all: string[]
|
|
80
|
-
}
|
|
81
|
-
workos_created_at?: string
|
|
82
|
-
workos_updated_at?: string
|
|
83
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Multi-tenancy configuration types
|
|
3
|
+
*
|
|
4
|
+
* Config is stored in dedicated `config` columns (NOT nested in metadata):
|
|
5
|
+
* - organizations.config: Org-level config (no feature toggles -- all features available by default)
|
|
6
|
+
* - org_memberships.config: Per-user-per-org feature overrides
|
|
7
|
+
* - users.config: User-global config
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Per-user-per-org config (stored in org_memberships.config)
|
|
12
|
+
* Controls which features a specific member can access within their org.
|
|
13
|
+
* Keys are feature IDs from the organization model (e.g. crm, lead-gen, projects, seo).
|
|
14
|
+
*/
|
|
15
|
+
export interface MembershipFeatureConfig {
|
|
16
|
+
features?: Record<string, boolean>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* User-global config (stored in users.config)
|
|
21
|
+
* Theme and onboarding are user-specific, NOT org-specific
|
|
22
|
+
*/
|
|
23
|
+
export interface UserConfig {
|
|
24
|
+
theme?: {
|
|
25
|
+
preset?:
|
|
26
|
+
| 'default'
|
|
27
|
+
| 'tactical'
|
|
28
|
+
| 'regal'
|
|
29
|
+
| 'cyber-volt'
|
|
30
|
+
| 'aurora'
|
|
31
|
+
| 'rose-gold'
|
|
32
|
+
| 'midnight'
|
|
33
|
+
| 'titanium'
|
|
34
|
+
| 'obsidian'
|
|
35
|
+
| 'honey'
|
|
36
|
+
| 'abyss'
|
|
37
|
+
| 'canopy'
|
|
38
|
+
| 'slate'
|
|
39
|
+
| 'cyber-strike'
|
|
40
|
+
| 'cyber-chrome'
|
|
41
|
+
| 'cyber-void'
|
|
42
|
+
| 'nirvana'
|
|
43
|
+
| 'wave'
|
|
44
|
+
| 'synapse'
|
|
45
|
+
| 'cortex'
|
|
46
|
+
| 'helios'
|
|
47
|
+
| 'graphite'
|
|
48
|
+
| 'quarry'
|
|
49
|
+
| 'canyon'
|
|
50
|
+
| 'nord'
|
|
51
|
+
| 'catppuccin'
|
|
52
|
+
| 'tokyo-night'
|
|
53
|
+
| 'gruvbox'
|
|
54
|
+
colorScheme?: 'light' | 'dark' | 'auto'
|
|
55
|
+
}
|
|
56
|
+
onboarding?: {
|
|
57
|
+
completed?: boolean
|
|
58
|
+
completedAt?: string // ISO date
|
|
59
|
+
role?: string
|
|
60
|
+
primaryUseCase?: string[]
|
|
61
|
+
experienceLevel?: string
|
|
62
|
+
/** Onboarding guide system state (set by checklist/tour system) */
|
|
63
|
+
guides?: {
|
|
64
|
+
completedIds?: string[] // e.g. ["explore-dashboard", "view-workflow"]
|
|
65
|
+
dismissed?: boolean // user manually dismissed checklist
|
|
66
|
+
completedAt?: string // ISO date — all guides finished
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* OrgMetadata - Contains WorkOS sync data only
|
|
73
|
+
* Note: This is kept separate from config for clarity
|
|
74
|
+
*/
|
|
75
|
+
export interface OrgMetadata {
|
|
76
|
+
domains?: {
|
|
77
|
+
verified: string[]
|
|
78
|
+
pending: string[]
|
|
79
|
+
all: string[]
|
|
80
|
+
}
|
|
81
|
+
workos_created_at?: string
|
|
82
|
+
workos_updated_at?: string
|
|
83
|
+
}
|
|
@@ -1,194 +1,194 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Users Domain - Zod Validation Schemas
|
|
3
|
-
*
|
|
4
|
-
* Validation schemas for user management endpoints.
|
|
5
|
-
* Includes request bodies, query params, and path params.
|
|
6
|
-
*
|
|
7
|
-
* Security:
|
|
8
|
-
* - All schemas use .strict() to prevent mass assignment attacks
|
|
9
|
-
* - UUID validation prevents invalid references
|
|
10
|
-
* - Email validation prevents email injection attacks
|
|
11
|
-
* - emailVerified field excluded from create/update (admin-only)
|
|
12
|
-
* - String length limits prevent DoS
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { z } from 'zod'
|
|
16
|
-
import { EmailSchema, createStringSchema } from '../../../platform/utils/validation'
|
|
17
|
-
|
|
18
|
-
// ============================================================================
|
|
19
|
-
// Path Parameters
|
|
20
|
-
// ============================================================================
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Validate user ID in URL path
|
|
24
|
-
* Used by: GET/PUT/DELETE /users/:id
|
|
25
|
-
*/
|
|
26
|
-
export const UserIdParamSchema = z
|
|
27
|
-
.object({
|
|
28
|
-
id: z.string().min(1) // WorkOS user IDs can be UUID or 'user_' prefixed strings
|
|
29
|
-
})
|
|
30
|
-
.strict()
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Validate external ID in URL path
|
|
34
|
-
* Used by: GET /users/external/:externalId
|
|
35
|
-
*/
|
|
36
|
-
export const ExternalIdParamSchema = z
|
|
37
|
-
.object({
|
|
38
|
-
externalId: z.string().min(1)
|
|
39
|
-
})
|
|
40
|
-
.strict()
|
|
41
|
-
|
|
42
|
-
// ============================================================================
|
|
43
|
-
// Request Bodies
|
|
44
|
-
// ============================================================================
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Update user profile
|
|
48
|
-
* PUT /users/:id
|
|
49
|
-
*
|
|
50
|
-
* Security:
|
|
51
|
-
* - All fields optional (partial update)
|
|
52
|
-
* - Email format validated
|
|
53
|
-
* - emailVerified NOT accepted (managed by WorkOS only)
|
|
54
|
-
* - Strict mode prevents unknown field injection
|
|
55
|
-
*/
|
|
56
|
-
export const UpdateUserSchema = z
|
|
57
|
-
.object({
|
|
58
|
-
email: EmailSchema.optional(),
|
|
59
|
-
firstName: createStringSchema(1, 100, 'First name').optional(),
|
|
60
|
-
lastName: createStringSchema(1, 100, 'Last name').optional()
|
|
61
|
-
})
|
|
62
|
-
.strict()
|
|
63
|
-
|
|
64
|
-
// ============================================================================
|
|
65
|
-
// Self-Service Profile
|
|
66
|
-
// ============================================================================
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Self-service profile update (subset of admin UpdateUserSchema)
|
|
70
|
-
* PATCH /users/me
|
|
71
|
-
*
|
|
72
|
-
* Security:
|
|
73
|
-
* - All fields optional (partial update)
|
|
74
|
-
* - Server identifies user from JWT (no user ID in body)
|
|
75
|
-
* - Config restricted to theme and onboarding only
|
|
76
|
-
* - Strict mode prevents unknown field injection
|
|
77
|
-
*/
|
|
78
|
-
export const UpdateMyProfileSchema = z
|
|
79
|
-
.object({
|
|
80
|
-
firstName: createStringSchema(1, 100, 'First name').optional(),
|
|
81
|
-
lastName: createStringSchema(1, 100, 'Last name').optional(),
|
|
82
|
-
profilePictureUrl: z
|
|
83
|
-
.string()
|
|
84
|
-
.url()
|
|
85
|
-
.refine((url) => url.startsWith('https://'), { message: 'Only HTTPS URLs are allowed' })
|
|
86
|
-
.optional(),
|
|
87
|
-
lastVisitedOrg: z.string().uuid().optional(),
|
|
88
|
-
config: z
|
|
89
|
-
.object({
|
|
90
|
-
theme: z
|
|
91
|
-
.object({
|
|
92
|
-
// `.catch('default')` makes the write path tolerant of stale/unknown preset strings.
|
|
93
|
-
// Any value that fails enum validation silently coerces to 'default' instead of 400ing.
|
|
94
|
-
// This protects against preset renames (e.g. cyber-punk → cyber-chrome) and drift between
|
|
95
|
-
// the enum and legacy DB values. Paired with a read-path sync-back in main.tsx that
|
|
96
|
-
// persists the corrected value back to DB on next profile load.
|
|
97
|
-
preset: z
|
|
98
|
-
.enum([
|
|
99
|
-
'default',
|
|
100
|
-
'tactical',
|
|
101
|
-
'regal',
|
|
102
|
-
'cyber-volt',
|
|
103
|
-
'aurora',
|
|
104
|
-
'rose-gold',
|
|
105
|
-
'midnight',
|
|
106
|
-
'titanium',
|
|
107
|
-
'obsidian',
|
|
108
|
-
'honey',
|
|
109
|
-
'abyss',
|
|
110
|
-
'canopy',
|
|
111
|
-
'slate',
|
|
112
|
-
'cyber-strike',
|
|
113
|
-
'cyber-chrome',
|
|
114
|
-
'cyber-void',
|
|
115
|
-
'nirvana',
|
|
116
|
-
'wave',
|
|
117
|
-
'synapse',
|
|
118
|
-
'cortex',
|
|
119
|
-
'helios',
|
|
120
|
-
'graphite',
|
|
121
|
-
'quarry',
|
|
122
|
-
'canyon',
|
|
123
|
-
'nord',
|
|
124
|
-
'catppuccin',
|
|
125
|
-
'tokyo-night',
|
|
126
|
-
'gruvbox'
|
|
127
|
-
])
|
|
128
|
-
.catch('default')
|
|
129
|
-
.optional(),
|
|
130
|
-
colorScheme: z.enum(['light', 'dark', 'auto']).catch('auto').optional()
|
|
131
|
-
})
|
|
132
|
-
.strict()
|
|
133
|
-
.optional(),
|
|
134
|
-
onboarding: z
|
|
135
|
-
.object({
|
|
136
|
-
completed: z.boolean().optional(),
|
|
137
|
-
completedAt: z.string().datetime().nullable().optional(),
|
|
138
|
-
role: z.string().max(100).nullable().optional(),
|
|
139
|
-
primaryUseCase: z.array(z.string().max(100)).max(10).nullable().optional(),
|
|
140
|
-
experienceLevel: z.string().max(100).nullable().optional(),
|
|
141
|
-
guides: z
|
|
142
|
-
.object({
|
|
143
|
-
completedIds: z.array(z.string().max(100)).max(20).optional(),
|
|
144
|
-
dismissed: z.boolean().optional(),
|
|
145
|
-
completedAt: z.string().datetime().nullable().optional()
|
|
146
|
-
})
|
|
147
|
-
.strict()
|
|
148
|
-
.optional()
|
|
149
|
-
})
|
|
150
|
-
.strict()
|
|
151
|
-
.optional()
|
|
152
|
-
})
|
|
153
|
-
.strict()
|
|
154
|
-
.optional()
|
|
155
|
-
})
|
|
156
|
-
.strict()
|
|
157
|
-
|
|
158
|
-
// ============================================================================
|
|
159
|
-
// Query Parameters
|
|
160
|
-
// ============================================================================
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* List users with filters
|
|
164
|
-
* GET /users
|
|
165
|
-
*
|
|
166
|
-
* Filters:
|
|
167
|
-
* - email: Filter by email
|
|
168
|
-
* - organizationId: Filter by organization
|
|
169
|
-
* - limit: Max results (pagination handled by WorkOS)
|
|
170
|
-
*
|
|
171
|
-
* Security:
|
|
172
|
-
* - Email validated (prevents injection)
|
|
173
|
-
* - organizationId validated (UUID format)
|
|
174
|
-
*/
|
|
175
|
-
export const ListUsersQuerySchema = z
|
|
176
|
-
.object({
|
|
177
|
-
email: EmailSchema.optional(),
|
|
178
|
-
organizationId: z.string().optional(), // WorkOS org IDs can be UUID or 'org_' prefixed
|
|
179
|
-
limit: z.coerce.number().int().min(1).max(100).optional(),
|
|
180
|
-
before: z.string().optional(), // WorkOS pagination cursor
|
|
181
|
-
after: z.string().optional() // WorkOS pagination cursor
|
|
182
|
-
})
|
|
183
|
-
.strict()
|
|
184
|
-
|
|
185
|
-
// ============================================================================
|
|
186
|
-
// TypeScript Type Exports
|
|
187
|
-
// ============================================================================
|
|
188
|
-
|
|
189
|
-
// Export inferred types for use in route handlers
|
|
190
|
-
export type UpdateUserInput = z.infer<typeof UpdateUserSchema>
|
|
191
|
-
export type UpdateMyProfileInput = z.infer<typeof UpdateMyProfileSchema>
|
|
192
|
-
export type ListUsersQuery = z.infer<typeof ListUsersQuerySchema>
|
|
193
|
-
export type UserIdParam = z.infer<typeof UserIdParamSchema>
|
|
194
|
-
export type ExternalIdParam = z.infer<typeof ExternalIdParamSchema>
|
|
1
|
+
/**
|
|
2
|
+
* Users Domain - Zod Validation Schemas
|
|
3
|
+
*
|
|
4
|
+
* Validation schemas for user management endpoints.
|
|
5
|
+
* Includes request bodies, query params, and path params.
|
|
6
|
+
*
|
|
7
|
+
* Security:
|
|
8
|
+
* - All schemas use .strict() to prevent mass assignment attacks
|
|
9
|
+
* - UUID validation prevents invalid references
|
|
10
|
+
* - Email validation prevents email injection attacks
|
|
11
|
+
* - emailVerified field excluded from create/update (admin-only)
|
|
12
|
+
* - String length limits prevent DoS
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { z } from 'zod'
|
|
16
|
+
import { EmailSchema, createStringSchema } from '../../../platform/utils/validation'
|
|
17
|
+
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Path Parameters
|
|
20
|
+
// ============================================================================
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Validate user ID in URL path
|
|
24
|
+
* Used by: GET/PUT/DELETE /users/:id
|
|
25
|
+
*/
|
|
26
|
+
export const UserIdParamSchema = z
|
|
27
|
+
.object({
|
|
28
|
+
id: z.string().min(1) // WorkOS user IDs can be UUID or 'user_' prefixed strings
|
|
29
|
+
})
|
|
30
|
+
.strict()
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Validate external ID in URL path
|
|
34
|
+
* Used by: GET /users/external/:externalId
|
|
35
|
+
*/
|
|
36
|
+
export const ExternalIdParamSchema = z
|
|
37
|
+
.object({
|
|
38
|
+
externalId: z.string().min(1)
|
|
39
|
+
})
|
|
40
|
+
.strict()
|
|
41
|
+
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Request Bodies
|
|
44
|
+
// ============================================================================
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Update user profile
|
|
48
|
+
* PUT /users/:id
|
|
49
|
+
*
|
|
50
|
+
* Security:
|
|
51
|
+
* - All fields optional (partial update)
|
|
52
|
+
* - Email format validated
|
|
53
|
+
* - emailVerified NOT accepted (managed by WorkOS only)
|
|
54
|
+
* - Strict mode prevents unknown field injection
|
|
55
|
+
*/
|
|
56
|
+
export const UpdateUserSchema = z
|
|
57
|
+
.object({
|
|
58
|
+
email: EmailSchema.optional(),
|
|
59
|
+
firstName: createStringSchema(1, 100, 'First name').optional(),
|
|
60
|
+
lastName: createStringSchema(1, 100, 'Last name').optional()
|
|
61
|
+
})
|
|
62
|
+
.strict()
|
|
63
|
+
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Self-Service Profile
|
|
66
|
+
// ============================================================================
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Self-service profile update (subset of admin UpdateUserSchema)
|
|
70
|
+
* PATCH /users/me
|
|
71
|
+
*
|
|
72
|
+
* Security:
|
|
73
|
+
* - All fields optional (partial update)
|
|
74
|
+
* - Server identifies user from JWT (no user ID in body)
|
|
75
|
+
* - Config restricted to theme and onboarding only
|
|
76
|
+
* - Strict mode prevents unknown field injection
|
|
77
|
+
*/
|
|
78
|
+
export const UpdateMyProfileSchema = z
|
|
79
|
+
.object({
|
|
80
|
+
firstName: createStringSchema(1, 100, 'First name').optional(),
|
|
81
|
+
lastName: createStringSchema(1, 100, 'Last name').optional(),
|
|
82
|
+
profilePictureUrl: z
|
|
83
|
+
.string()
|
|
84
|
+
.url()
|
|
85
|
+
.refine((url) => url.startsWith('https://'), { message: 'Only HTTPS URLs are allowed' })
|
|
86
|
+
.optional(),
|
|
87
|
+
lastVisitedOrg: z.string().uuid().optional(),
|
|
88
|
+
config: z
|
|
89
|
+
.object({
|
|
90
|
+
theme: z
|
|
91
|
+
.object({
|
|
92
|
+
// `.catch('default')` makes the write path tolerant of stale/unknown preset strings.
|
|
93
|
+
// Any value that fails enum validation silently coerces to 'default' instead of 400ing.
|
|
94
|
+
// This protects against preset renames (e.g. cyber-punk → cyber-chrome) and drift between
|
|
95
|
+
// the enum and legacy DB values. Paired with a read-path sync-back in main.tsx that
|
|
96
|
+
// persists the corrected value back to DB on next profile load.
|
|
97
|
+
preset: z
|
|
98
|
+
.enum([
|
|
99
|
+
'default',
|
|
100
|
+
'tactical',
|
|
101
|
+
'regal',
|
|
102
|
+
'cyber-volt',
|
|
103
|
+
'aurora',
|
|
104
|
+
'rose-gold',
|
|
105
|
+
'midnight',
|
|
106
|
+
'titanium',
|
|
107
|
+
'obsidian',
|
|
108
|
+
'honey',
|
|
109
|
+
'abyss',
|
|
110
|
+
'canopy',
|
|
111
|
+
'slate',
|
|
112
|
+
'cyber-strike',
|
|
113
|
+
'cyber-chrome',
|
|
114
|
+
'cyber-void',
|
|
115
|
+
'nirvana',
|
|
116
|
+
'wave',
|
|
117
|
+
'synapse',
|
|
118
|
+
'cortex',
|
|
119
|
+
'helios',
|
|
120
|
+
'graphite',
|
|
121
|
+
'quarry',
|
|
122
|
+
'canyon',
|
|
123
|
+
'nord',
|
|
124
|
+
'catppuccin',
|
|
125
|
+
'tokyo-night',
|
|
126
|
+
'gruvbox'
|
|
127
|
+
])
|
|
128
|
+
.catch('default')
|
|
129
|
+
.optional(),
|
|
130
|
+
colorScheme: z.enum(['light', 'dark', 'auto']).catch('auto').optional()
|
|
131
|
+
})
|
|
132
|
+
.strict()
|
|
133
|
+
.optional(),
|
|
134
|
+
onboarding: z
|
|
135
|
+
.object({
|
|
136
|
+
completed: z.boolean().optional(),
|
|
137
|
+
completedAt: z.string().datetime().nullable().optional(),
|
|
138
|
+
role: z.string().max(100).nullable().optional(),
|
|
139
|
+
primaryUseCase: z.array(z.string().max(100)).max(10).nullable().optional(),
|
|
140
|
+
experienceLevel: z.string().max(100).nullable().optional(),
|
|
141
|
+
guides: z
|
|
142
|
+
.object({
|
|
143
|
+
completedIds: z.array(z.string().max(100)).max(20).optional(),
|
|
144
|
+
dismissed: z.boolean().optional(),
|
|
145
|
+
completedAt: z.string().datetime().nullable().optional()
|
|
146
|
+
})
|
|
147
|
+
.strict()
|
|
148
|
+
.optional()
|
|
149
|
+
})
|
|
150
|
+
.strict()
|
|
151
|
+
.optional()
|
|
152
|
+
})
|
|
153
|
+
.strict()
|
|
154
|
+
.optional()
|
|
155
|
+
})
|
|
156
|
+
.strict()
|
|
157
|
+
|
|
158
|
+
// ============================================================================
|
|
159
|
+
// Query Parameters
|
|
160
|
+
// ============================================================================
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* List users with filters
|
|
164
|
+
* GET /users
|
|
165
|
+
*
|
|
166
|
+
* Filters:
|
|
167
|
+
* - email: Filter by email
|
|
168
|
+
* - organizationId: Filter by organization
|
|
169
|
+
* - limit: Max results (pagination handled by WorkOS)
|
|
170
|
+
*
|
|
171
|
+
* Security:
|
|
172
|
+
* - Email validated (prevents injection)
|
|
173
|
+
* - organizationId validated (UUID format)
|
|
174
|
+
*/
|
|
175
|
+
export const ListUsersQuerySchema = z
|
|
176
|
+
.object({
|
|
177
|
+
email: EmailSchema.optional(),
|
|
178
|
+
organizationId: z.string().optional(), // WorkOS org IDs can be UUID or 'org_' prefixed
|
|
179
|
+
limit: z.coerce.number().int().min(1).max(100).optional(),
|
|
180
|
+
before: z.string().optional(), // WorkOS pagination cursor
|
|
181
|
+
after: z.string().optional() // WorkOS pagination cursor
|
|
182
|
+
})
|
|
183
|
+
.strict()
|
|
184
|
+
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// TypeScript Type Exports
|
|
187
|
+
// ============================================================================
|
|
188
|
+
|
|
189
|
+
// Export inferred types for use in route handlers
|
|
190
|
+
export type UpdateUserInput = z.infer<typeof UpdateUserSchema>
|
|
191
|
+
export type UpdateMyProfileInput = z.infer<typeof UpdateMyProfileSchema>
|
|
192
|
+
export type ListUsersQuery = z.infer<typeof ListUsersQuerySchema>
|
|
193
|
+
export type UserIdParam = z.infer<typeof UserIdParamSchema>
|
|
194
|
+
export type ExternalIdParam = z.infer<typeof ExternalIdParamSchema>
|