@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,248 +1,248 @@
|
|
|
1
|
-
import { getToolServices } from '../../registry'
|
|
2
|
-
import { serviceUnavailable } from '../../types'
|
|
3
|
-
import type { Tool } from '../../types'
|
|
4
|
-
import {
|
|
5
|
-
CreateCompanyInputSchema,
|
|
6
|
-
UpdateCompanyInputSchema,
|
|
7
|
-
UpsertCompanyInputSchema,
|
|
8
|
-
GetCompanyInputSchema,
|
|
9
|
-
ListCompaniesInputSchema,
|
|
10
|
-
DeleteCompanyInputSchema,
|
|
11
|
-
CompanyOutputSchema,
|
|
12
|
-
CompanyArrayOutputSchema,
|
|
13
|
-
DeleteResultSchema,
|
|
14
|
-
type CreateCompanyInput,
|
|
15
|
-
type UpdateCompanyInput,
|
|
16
|
-
type UpsertCompanyInput,
|
|
17
|
-
type GetCompanyInput,
|
|
18
|
-
type ListCompaniesInput,
|
|
19
|
-
type DeleteCompanyInput
|
|
20
|
-
} from './types'
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Helper to transform company result to output format
|
|
24
|
-
* Converts Date objects to ISO strings for consistent API responses
|
|
25
|
-
*/
|
|
26
|
-
function toCompanyOutput(result: any) {
|
|
27
|
-
return {
|
|
28
|
-
id: result.id,
|
|
29
|
-
organizationId: result.organizationId,
|
|
30
|
-
name: result.name,
|
|
31
|
-
domain: result.domain,
|
|
32
|
-
linkedinUrl: result.linkedinUrl,
|
|
33
|
-
website: result.website,
|
|
34
|
-
numEmployees: result.numEmployees,
|
|
35
|
-
foundedYear: result.foundedYear,
|
|
36
|
-
locationCity: result.locationCity,
|
|
37
|
-
locationState: result.locationState,
|
|
38
|
-
category: result.category,
|
|
39
|
-
categoryPain: result.categoryPain ?? null,
|
|
40
|
-
segment: result.segment,
|
|
41
|
-
pipelineStatus: result.pipelineStatus,
|
|
42
|
-
enrichmentData: result.enrichmentData,
|
|
43
|
-
tags: result.tags,
|
|
44
|
-
source: result.source,
|
|
45
|
-
batchId: result.batchId ?? null,
|
|
46
|
-
status: result.status,
|
|
47
|
-
createdAt: result.createdAt instanceof Date ? result.createdAt.toISOString() : result.createdAt,
|
|
48
|
-
updatedAt: result.updatedAt instanceof Date ? result.updatedAt.toISOString() : result.updatedAt
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Create a tool for creating new company records
|
|
54
|
-
*
|
|
55
|
-
* @returns Tool that creates a company
|
|
56
|
-
*
|
|
57
|
-
* @example
|
|
58
|
-
* const tool = createAcqCompanyCreateTool()
|
|
59
|
-
* const result = await tool.execute({
|
|
60
|
-
* input: { name: 'Acme Corp', domain: 'acme.com' },
|
|
61
|
-
* executionContext: { organizationId: 'org-123', ... }
|
|
62
|
-
* })
|
|
63
|
-
*/
|
|
64
|
-
export function createAcqCompanyCreateTool(): Tool {
|
|
65
|
-
return {
|
|
66
|
-
name: 'acq_company_create',
|
|
67
|
-
description: 'Create a new company record for lead tracking.',
|
|
68
|
-
inputSchema: CreateCompanyInputSchema,
|
|
69
|
-
outputSchema: CompanyOutputSchema,
|
|
70
|
-
execute: async ({ input, executionContext }) => {
|
|
71
|
-
const leadService = getToolServices().leadService
|
|
72
|
-
if (!leadService) throw serviceUnavailable('LeadService')
|
|
73
|
-
if (!executionContext?.organizationId)
|
|
74
|
-
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
75
|
-
|
|
76
|
-
const typedInput = input as CreateCompanyInput
|
|
77
|
-
const result = await leadService.createCompany({
|
|
78
|
-
organizationId: executionContext.organizationId,
|
|
79
|
-
...typedInput
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
return toCompanyOutput(result)
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Create a tool for updating existing company records
|
|
89
|
-
*
|
|
90
|
-
* @returns Tool that updates a company
|
|
91
|
-
*
|
|
92
|
-
* @example
|
|
93
|
-
* const tool = createAcqCompanyUpdateTool()
|
|
94
|
-
* const result = await tool.execute({
|
|
95
|
-
* input: { id: 'company-123', numEmployees: 500 },
|
|
96
|
-
* executionContext: { organizationId: 'org-123', ... }
|
|
97
|
-
* })
|
|
98
|
-
*/
|
|
99
|
-
export function createAcqCompanyUpdateTool(): Tool {
|
|
100
|
-
return {
|
|
101
|
-
name: 'acq_company_update',
|
|
102
|
-
description: 'Update an existing company record with new data (e.g., enrichment data, firmographics).',
|
|
103
|
-
inputSchema: UpdateCompanyInputSchema,
|
|
104
|
-
outputSchema: CompanyOutputSchema,
|
|
105
|
-
execute: async ({ input, executionContext }) => {
|
|
106
|
-
const leadService = getToolServices().leadService
|
|
107
|
-
if (!leadService) throw serviceUnavailable('LeadService')
|
|
108
|
-
if (!executionContext?.organizationId)
|
|
109
|
-
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
110
|
-
|
|
111
|
-
const typedInput = input as UpdateCompanyInput
|
|
112
|
-
const { id, ...params } = typedInput
|
|
113
|
-
const result = await leadService.updateCompany(id, params)
|
|
114
|
-
|
|
115
|
-
return toCompanyOutput(result)
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Create a tool for upserting companies by domain
|
|
122
|
-
* Creates new record if domain does not exist, otherwise updates existing
|
|
123
|
-
*
|
|
124
|
-
* @returns Tool that upserts a company
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* const tool = createAcqCompanyUpsertTool()
|
|
128
|
-
* const result = await tool.execute({
|
|
129
|
-
* input: { name: 'Acme Corp', domain: 'acme.com' },
|
|
130
|
-
* executionContext: { organizationId: 'org-123', ... }
|
|
131
|
-
* })
|
|
132
|
-
*/
|
|
133
|
-
export function createAcqCompanyUpsertTool(): Tool {
|
|
134
|
-
return {
|
|
135
|
-
name: 'acq_company_upsert',
|
|
136
|
-
description: 'Upsert a company by domain. Creates new record if domain does not exist, otherwise updates existing.',
|
|
137
|
-
inputSchema: UpsertCompanyInputSchema,
|
|
138
|
-
outputSchema: CompanyOutputSchema,
|
|
139
|
-
execute: async ({ input, executionContext }) => {
|
|
140
|
-
const leadService = getToolServices().leadService
|
|
141
|
-
if (!leadService) throw serviceUnavailable('LeadService')
|
|
142
|
-
if (!executionContext?.organizationId)
|
|
143
|
-
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
144
|
-
|
|
145
|
-
const typedInput = input as UpsertCompanyInput
|
|
146
|
-
const result = await leadService.upsertCompany({
|
|
147
|
-
organizationId: executionContext.organizationId,
|
|
148
|
-
...typedInput
|
|
149
|
-
})
|
|
150
|
-
|
|
151
|
-
return toCompanyOutput(result)
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Create a tool for getting a single company by ID
|
|
158
|
-
*
|
|
159
|
-
* @returns Tool that retrieves a company
|
|
160
|
-
*
|
|
161
|
-
* @example
|
|
162
|
-
* const tool = createAcqCompanyGetTool()
|
|
163
|
-
* const result = await tool.execute({
|
|
164
|
-
* input: { id: 'company-123' },
|
|
165
|
-
* executionContext: { organizationId: 'org-123', ... }
|
|
166
|
-
* })
|
|
167
|
-
*/
|
|
168
|
-
export function createAcqCompanyGetTool(): Tool {
|
|
169
|
-
return {
|
|
170
|
-
name: 'acq_company_get',
|
|
171
|
-
description: 'Get a single company by ID.',
|
|
172
|
-
inputSchema: GetCompanyInputSchema,
|
|
173
|
-
outputSchema: CompanyOutputSchema.nullable(),
|
|
174
|
-
execute: async ({ input, executionContext }) => {
|
|
175
|
-
const leadService = getToolServices().leadService
|
|
176
|
-
if (!leadService) throw serviceUnavailable('LeadService')
|
|
177
|
-
if (!executionContext?.organizationId)
|
|
178
|
-
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
179
|
-
|
|
180
|
-
const typedInput = input as GetCompanyInput
|
|
181
|
-
const result = await leadService.getCompany(typedInput.id, executionContext.organizationId)
|
|
182
|
-
return result ? toCompanyOutput(result) : null
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Create a tool for listing companies with optional filters
|
|
189
|
-
*
|
|
190
|
-
* @returns Tool that lists companies
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* const tool = createAcqCompanyListTool()
|
|
194
|
-
* const result = await tool.execute({
|
|
195
|
-
* input: { segment: 'smb', category: 'saas' },
|
|
196
|
-
* executionContext: { organizationId: 'org-123', ... }
|
|
197
|
-
* })
|
|
198
|
-
*/
|
|
199
|
-
export function createAcqCompanyListTool(): Tool {
|
|
200
|
-
return {
|
|
201
|
-
name: 'acq_company_list',
|
|
202
|
-
description: 'List companies with optional filters for category, segment, or pipeline status.',
|
|
203
|
-
inputSchema: ListCompaniesInputSchema,
|
|
204
|
-
outputSchema: CompanyArrayOutputSchema,
|
|
205
|
-
execute: async ({ input, executionContext }) => {
|
|
206
|
-
const leadService = getToolServices().leadService
|
|
207
|
-
if (!leadService) throw serviceUnavailable('LeadService')
|
|
208
|
-
if (!executionContext?.organizationId)
|
|
209
|
-
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
210
|
-
|
|
211
|
-
const typedInput = input as ListCompaniesInput
|
|
212
|
-
const results = await leadService.listCompanies(executionContext.organizationId, typedInput)
|
|
213
|
-
return results.map(toCompanyOutput)
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Create a tool for deleting company records
|
|
220
|
-
* Associated contacts will have their company_id set to null
|
|
221
|
-
*
|
|
222
|
-
* @returns Tool that deletes a company
|
|
223
|
-
*
|
|
224
|
-
* @example
|
|
225
|
-
* const tool = createAcqCompanyDeleteTool()
|
|
226
|
-
* const result = await tool.execute({
|
|
227
|
-
* input: { id: 'company-123' },
|
|
228
|
-
* executionContext: { organizationId: 'org-123', ... }
|
|
229
|
-
* })
|
|
230
|
-
*/
|
|
231
|
-
export function createAcqCompanyDeleteTool(): Tool {
|
|
232
|
-
return {
|
|
233
|
-
name: 'acq_company_delete',
|
|
234
|
-
description: 'Delete a company record. Associated contacts will have their company_id set to null.',
|
|
235
|
-
inputSchema: DeleteCompanyInputSchema,
|
|
236
|
-
outputSchema: DeleteResultSchema,
|
|
237
|
-
execute: async ({ input, executionContext }) => {
|
|
238
|
-
const leadService = getToolServices().leadService
|
|
239
|
-
if (!leadService) throw serviceUnavailable('LeadService')
|
|
240
|
-
if (!executionContext?.organizationId)
|
|
241
|
-
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
242
|
-
|
|
243
|
-
const typedInput = input as DeleteCompanyInput
|
|
244
|
-
await leadService.deleteCompany(typedInput.id, executionContext.organizationId)
|
|
245
|
-
return { success: true }
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
1
|
+
import { getToolServices } from '../../registry'
|
|
2
|
+
import { serviceUnavailable } from '../../types'
|
|
3
|
+
import type { Tool } from '../../types'
|
|
4
|
+
import {
|
|
5
|
+
CreateCompanyInputSchema,
|
|
6
|
+
UpdateCompanyInputSchema,
|
|
7
|
+
UpsertCompanyInputSchema,
|
|
8
|
+
GetCompanyInputSchema,
|
|
9
|
+
ListCompaniesInputSchema,
|
|
10
|
+
DeleteCompanyInputSchema,
|
|
11
|
+
CompanyOutputSchema,
|
|
12
|
+
CompanyArrayOutputSchema,
|
|
13
|
+
DeleteResultSchema,
|
|
14
|
+
type CreateCompanyInput,
|
|
15
|
+
type UpdateCompanyInput,
|
|
16
|
+
type UpsertCompanyInput,
|
|
17
|
+
type GetCompanyInput,
|
|
18
|
+
type ListCompaniesInput,
|
|
19
|
+
type DeleteCompanyInput
|
|
20
|
+
} from './types'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Helper to transform company result to output format
|
|
24
|
+
* Converts Date objects to ISO strings for consistent API responses
|
|
25
|
+
*/
|
|
26
|
+
function toCompanyOutput(result: any) {
|
|
27
|
+
return {
|
|
28
|
+
id: result.id,
|
|
29
|
+
organizationId: result.organizationId,
|
|
30
|
+
name: result.name,
|
|
31
|
+
domain: result.domain,
|
|
32
|
+
linkedinUrl: result.linkedinUrl,
|
|
33
|
+
website: result.website,
|
|
34
|
+
numEmployees: result.numEmployees,
|
|
35
|
+
foundedYear: result.foundedYear,
|
|
36
|
+
locationCity: result.locationCity,
|
|
37
|
+
locationState: result.locationState,
|
|
38
|
+
category: result.category,
|
|
39
|
+
categoryPain: result.categoryPain ?? null,
|
|
40
|
+
segment: result.segment,
|
|
41
|
+
pipelineStatus: result.pipelineStatus,
|
|
42
|
+
enrichmentData: result.enrichmentData,
|
|
43
|
+
tags: result.tags,
|
|
44
|
+
source: result.source,
|
|
45
|
+
batchId: result.batchId ?? null,
|
|
46
|
+
status: result.status,
|
|
47
|
+
createdAt: result.createdAt instanceof Date ? result.createdAt.toISOString() : result.createdAt,
|
|
48
|
+
updatedAt: result.updatedAt instanceof Date ? result.updatedAt.toISOString() : result.updatedAt
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Create a tool for creating new company records
|
|
54
|
+
*
|
|
55
|
+
* @returns Tool that creates a company
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* const tool = createAcqCompanyCreateTool()
|
|
59
|
+
* const result = await tool.execute({
|
|
60
|
+
* input: { name: 'Acme Corp', domain: 'acme.com' },
|
|
61
|
+
* executionContext: { organizationId: 'org-123', ... }
|
|
62
|
+
* })
|
|
63
|
+
*/
|
|
64
|
+
export function createAcqCompanyCreateTool(): Tool {
|
|
65
|
+
return {
|
|
66
|
+
name: 'acq_company_create',
|
|
67
|
+
description: 'Create a new company record for lead tracking.',
|
|
68
|
+
inputSchema: CreateCompanyInputSchema,
|
|
69
|
+
outputSchema: CompanyOutputSchema,
|
|
70
|
+
execute: async ({ input, executionContext }) => {
|
|
71
|
+
const leadService = getToolServices().leadService
|
|
72
|
+
if (!leadService) throw serviceUnavailable('LeadService')
|
|
73
|
+
if (!executionContext?.organizationId)
|
|
74
|
+
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
75
|
+
|
|
76
|
+
const typedInput = input as CreateCompanyInput
|
|
77
|
+
const result = await leadService.createCompany({
|
|
78
|
+
organizationId: executionContext.organizationId,
|
|
79
|
+
...typedInput
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
return toCompanyOutput(result)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Create a tool for updating existing company records
|
|
89
|
+
*
|
|
90
|
+
* @returns Tool that updates a company
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* const tool = createAcqCompanyUpdateTool()
|
|
94
|
+
* const result = await tool.execute({
|
|
95
|
+
* input: { id: 'company-123', numEmployees: 500 },
|
|
96
|
+
* executionContext: { organizationId: 'org-123', ... }
|
|
97
|
+
* })
|
|
98
|
+
*/
|
|
99
|
+
export function createAcqCompanyUpdateTool(): Tool {
|
|
100
|
+
return {
|
|
101
|
+
name: 'acq_company_update',
|
|
102
|
+
description: 'Update an existing company record with new data (e.g., enrichment data, firmographics).',
|
|
103
|
+
inputSchema: UpdateCompanyInputSchema,
|
|
104
|
+
outputSchema: CompanyOutputSchema,
|
|
105
|
+
execute: async ({ input, executionContext }) => {
|
|
106
|
+
const leadService = getToolServices().leadService
|
|
107
|
+
if (!leadService) throw serviceUnavailable('LeadService')
|
|
108
|
+
if (!executionContext?.organizationId)
|
|
109
|
+
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
110
|
+
|
|
111
|
+
const typedInput = input as UpdateCompanyInput
|
|
112
|
+
const { id, ...params } = typedInput
|
|
113
|
+
const result = await leadService.updateCompany(id, params)
|
|
114
|
+
|
|
115
|
+
return toCompanyOutput(result)
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Create a tool for upserting companies by domain
|
|
122
|
+
* Creates new record if domain does not exist, otherwise updates existing
|
|
123
|
+
*
|
|
124
|
+
* @returns Tool that upserts a company
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* const tool = createAcqCompanyUpsertTool()
|
|
128
|
+
* const result = await tool.execute({
|
|
129
|
+
* input: { name: 'Acme Corp', domain: 'acme.com' },
|
|
130
|
+
* executionContext: { organizationId: 'org-123', ... }
|
|
131
|
+
* })
|
|
132
|
+
*/
|
|
133
|
+
export function createAcqCompanyUpsertTool(): Tool {
|
|
134
|
+
return {
|
|
135
|
+
name: 'acq_company_upsert',
|
|
136
|
+
description: 'Upsert a company by domain. Creates new record if domain does not exist, otherwise updates existing.',
|
|
137
|
+
inputSchema: UpsertCompanyInputSchema,
|
|
138
|
+
outputSchema: CompanyOutputSchema,
|
|
139
|
+
execute: async ({ input, executionContext }) => {
|
|
140
|
+
const leadService = getToolServices().leadService
|
|
141
|
+
if (!leadService) throw serviceUnavailable('LeadService')
|
|
142
|
+
if (!executionContext?.organizationId)
|
|
143
|
+
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
144
|
+
|
|
145
|
+
const typedInput = input as UpsertCompanyInput
|
|
146
|
+
const result = await leadService.upsertCompany({
|
|
147
|
+
organizationId: executionContext.organizationId,
|
|
148
|
+
...typedInput
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
return toCompanyOutput(result)
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Create a tool for getting a single company by ID
|
|
158
|
+
*
|
|
159
|
+
* @returns Tool that retrieves a company
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* const tool = createAcqCompanyGetTool()
|
|
163
|
+
* const result = await tool.execute({
|
|
164
|
+
* input: { id: 'company-123' },
|
|
165
|
+
* executionContext: { organizationId: 'org-123', ... }
|
|
166
|
+
* })
|
|
167
|
+
*/
|
|
168
|
+
export function createAcqCompanyGetTool(): Tool {
|
|
169
|
+
return {
|
|
170
|
+
name: 'acq_company_get',
|
|
171
|
+
description: 'Get a single company by ID.',
|
|
172
|
+
inputSchema: GetCompanyInputSchema,
|
|
173
|
+
outputSchema: CompanyOutputSchema.nullable(),
|
|
174
|
+
execute: async ({ input, executionContext }) => {
|
|
175
|
+
const leadService = getToolServices().leadService
|
|
176
|
+
if (!leadService) throw serviceUnavailable('LeadService')
|
|
177
|
+
if (!executionContext?.organizationId)
|
|
178
|
+
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
179
|
+
|
|
180
|
+
const typedInput = input as GetCompanyInput
|
|
181
|
+
const result = await leadService.getCompany(typedInput.id, executionContext.organizationId)
|
|
182
|
+
return result ? toCompanyOutput(result) : null
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Create a tool for listing companies with optional filters
|
|
189
|
+
*
|
|
190
|
+
* @returns Tool that lists companies
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* const tool = createAcqCompanyListTool()
|
|
194
|
+
* const result = await tool.execute({
|
|
195
|
+
* input: { segment: 'smb', category: 'saas' },
|
|
196
|
+
* executionContext: { organizationId: 'org-123', ... }
|
|
197
|
+
* })
|
|
198
|
+
*/
|
|
199
|
+
export function createAcqCompanyListTool(): Tool {
|
|
200
|
+
return {
|
|
201
|
+
name: 'acq_company_list',
|
|
202
|
+
description: 'List companies with optional filters for category, segment, or pipeline status.',
|
|
203
|
+
inputSchema: ListCompaniesInputSchema,
|
|
204
|
+
outputSchema: CompanyArrayOutputSchema,
|
|
205
|
+
execute: async ({ input, executionContext }) => {
|
|
206
|
+
const leadService = getToolServices().leadService
|
|
207
|
+
if (!leadService) throw serviceUnavailable('LeadService')
|
|
208
|
+
if (!executionContext?.organizationId)
|
|
209
|
+
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
210
|
+
|
|
211
|
+
const typedInput = input as ListCompaniesInput
|
|
212
|
+
const results = await leadService.listCompanies(executionContext.organizationId, typedInput)
|
|
213
|
+
return results.map(toCompanyOutput)
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Create a tool for deleting company records
|
|
220
|
+
* Associated contacts will have their company_id set to null
|
|
221
|
+
*
|
|
222
|
+
* @returns Tool that deletes a company
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* const tool = createAcqCompanyDeleteTool()
|
|
226
|
+
* const result = await tool.execute({
|
|
227
|
+
* input: { id: 'company-123' },
|
|
228
|
+
* executionContext: { organizationId: 'org-123', ... }
|
|
229
|
+
* })
|
|
230
|
+
*/
|
|
231
|
+
export function createAcqCompanyDeleteTool(): Tool {
|
|
232
|
+
return {
|
|
233
|
+
name: 'acq_company_delete',
|
|
234
|
+
description: 'Delete a company record. Associated contacts will have their company_id set to null.',
|
|
235
|
+
inputSchema: DeleteCompanyInputSchema,
|
|
236
|
+
outputSchema: DeleteResultSchema,
|
|
237
|
+
execute: async ({ input, executionContext }) => {
|
|
238
|
+
const leadService = getToolServices().leadService
|
|
239
|
+
if (!leadService) throw serviceUnavailable('LeadService')
|
|
240
|
+
if (!executionContext?.organizationId)
|
|
241
|
+
throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
|
|
242
|
+
|
|
243
|
+
const typedInput = input as DeleteCompanyInput
|
|
244
|
+
await leadService.deleteCompany(typedInput.id, executionContext.organizationId)
|
|
245
|
+
return { success: true }
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|