@elevasis/core 0.7.1 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/test-utils/index.d.ts +3122 -0
- package/dist/test-utils/index.js +386 -0
- package/package.json +6 -1
- package/src/README.md +39 -36
- package/src/__tests__/publish.test.ts +18 -13
- package/src/__tests__/{template-foundations-compatibility.test.ts → template-core-compatibility.test.ts} +99 -99
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +1135 -1131
- package/src/_gen/__tests__/scaffold-contracts.test.ts +47 -36
- package/src/_gen/scaffold-contracts.ts +45 -45
- package/src/auth/multi-tenancy/credentials/README.md +38 -38
- package/src/auth/multi-tenancy/credentials/index.ts +6 -6
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -39
- package/src/auth/multi-tenancy/credentials/server/service.ts +60 -60
- package/src/auth/multi-tenancy/index.ts +17 -17
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -107
- package/src/auth/multi-tenancy/invitations/index.ts +37 -37
- package/src/auth/multi-tenancy/invitations/invitation.ts +86 -86
- package/src/auth/multi-tenancy/invitations/server/index.ts +25 -25
- package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -24
- package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -24
- package/src/auth/multi-tenancy/invitations/supabase.ts +50 -50
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -126
- package/src/auth/multi-tenancy/memberships/index.ts +21 -21
- package/src/auth/multi-tenancy/memberships/membership.ts +138 -138
- package/src/auth/multi-tenancy/memberships/server/index.ts +15 -15
- package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -32
- package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -21
- package/src/auth/multi-tenancy/memberships/supabase.ts +46 -46
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -128
- package/src/auth/multi-tenancy/organizations/index.ts +23 -23
- package/src/auth/multi-tenancy/organizations/organization.ts +24 -24
- package/src/auth/multi-tenancy/organizations/server/index.ts +10 -10
- package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -35
- package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -20
- package/src/auth/multi-tenancy/types.ts +83 -83
- package/src/auth/multi-tenancy/users/api-schemas.ts +194 -194
- package/src/auth/multi-tenancy/users/index.ts +27 -27
- package/src/auth/multi-tenancy/users/server/index.ts +19 -19
- package/src/auth/multi-tenancy/users/server/transforms.ts +21 -21
- package/src/auth/multi-tenancy/users/server/workos.ts +16 -16
- package/src/auth/multi-tenancy/users/user.ts +65 -65
- package/src/business/README.md +52 -52
- package/src/business/__tests__/entities-published.test.ts +33 -33
- package/src/business/acquisition/api-schemas.ts +759 -759
- package/src/business/acquisition/index.ts +109 -109
- package/src/business/acquisition/types.ts +402 -402
- package/src/business/base-entities.test.ts +481 -481
- package/src/business/base-entities.ts +241 -241
- package/src/business/entities-published.ts +24 -24
- package/src/business/index.ts +15 -15
- package/src/business/pdf/browser/pdfmake-browser.ts +229 -229
- package/src/business/pdf/index.ts +10 -10
- package/src/business/pdf/server/index.ts +21 -21
- package/src/business/pdf/server/themes/default.ts +8 -8
- package/src/business/pdf/server/themes/index.ts +9 -9
- package/src/business/pdf/server/themes/types.ts +8 -8
- package/src/business/pdf/types.ts +272 -272
- package/src/business/projects/index.ts +2 -2
- package/src/business/projects/sse-events.ts +21 -21
- package/src/business/projects/types.ts +89 -89
- package/src/business/sales/api-schemas.ts +75 -75
- package/src/business/seo/__tests__/linking.test.ts +549 -549
- package/src/business/seo/__tests__/types.test.ts +404 -404
- package/src/business/seo/index.ts +2 -2
- package/src/business/seo/linking.ts +281 -281
- package/src/business/seo/types.ts +199 -199
- package/src/commands/queue/index.ts +3 -3
- package/src/commands/queue/schemas.test.ts +593 -593
- package/src/commands/queue/schemas.ts +125 -125
- package/src/commands/queue/sse-events.ts +61 -61
- package/src/commands/queue/types/action.ts +52 -52
- package/src/commands/queue/types/checkpoint.ts +44 -44
- package/src/commands/queue/types/index.ts +7 -7
- package/src/commands/queue/types/task.ts +116 -116
- package/src/commands/queue/types.ts +14 -14
- package/src/content/distribution-metadata.ts +61 -61
- package/src/content/index.ts +10 -10
- package/src/deployments/index.ts +22 -22
- package/src/execution/core/__tests__/archived-logs.test.ts +72 -72
- package/src/execution/core/index.ts +11 -11
- package/src/execution/core/runner-types.ts +80 -80
- package/src/execution/core/server/environment.ts +31 -31
- package/src/execution/core/sse-executions.ts +119 -119
- package/src/execution/core/types.ts +29 -29
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +4 -4
- package/src/execution/engine/__tests__/timeout.test.ts +565 -565
- package/src/execution/engine/agent/__tests__/errors.test.ts +508 -508
- package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -531
- package/src/execution/engine/agent/actions/executor.ts +205 -205
- package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -230
- package/src/execution/engine/agent/actions/processor.ts +116 -116
- package/src/execution/engine/agent/actions/types.ts +70 -70
- package/src/execution/engine/agent/core/agent.ts +810 -810
- package/src/execution/engine/agent/core/types.ts +155 -155
- package/src/execution/engine/agent/errors.ts +251 -251
- package/src/execution/engine/agent/index.ts +78 -78
- package/src/execution/engine/agent/knowledge-map/types.ts +106 -106
- package/src/execution/engine/agent/knowledge-map/utils.ts +101 -101
- package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -754
- package/src/execution/engine/agent/memory/domains.ts +99 -99
- package/src/execution/engine/agent/memory/manager.ts +365 -365
- package/src/execution/engine/agent/memory/processor.ts +66 -66
- package/src/execution/engine/agent/memory/types.ts +90 -90
- package/src/execution/engine/agent/memory/utils.ts +134 -134
- package/src/execution/engine/agent/observability/logging.ts +467 -467
- package/src/execution/engine/agent/observability/types.ts +64 -64
- package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -349
- package/src/execution/engine/agent/reasoning/processor.ts +92 -92
- package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -134
- package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -49
- package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -93
- package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -65
- package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -44
- package/src/execution/engine/agent/reasoning/request-builder.ts +169 -169
- package/src/execution/engine/agent/reasoning/types.ts +18 -18
- package/src/execution/engine/base/errors.ts +118 -118
- package/src/execution/engine/base/index.ts +2 -2
- package/src/execution/engine/base/logging.ts +31 -31
- package/src/execution/engine/base/serialization.ts +324 -324
- package/src/execution/engine/base/types.ts +126 -126
- package/src/execution/engine/base/utils.ts +41 -41
- package/src/execution/engine/index.ts +434 -434
- package/src/execution/engine/interface/index.ts +1 -1
- package/src/execution/engine/interface/types.ts +62 -62
- package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -50
- package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -321
- package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -115
- package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -375
- package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -463
- package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -177
- package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -722
- package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -376
- package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -551
- package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -563
- package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -105
- package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -537
- package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -147
- package/src/execution/engine/llm/adapters/index.ts +17 -17
- package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -116
- package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -130
- package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -137
- package/src/execution/engine/llm/adapters/server/google.ts +283 -283
- package/src/execution/engine/llm/adapters/server/index.ts +12 -12
- package/src/execution/engine/llm/adapters/server/openai.ts +206 -206
- package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -235
- package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -230
- package/src/execution/engine/llm/errors.ts +186 -186
- package/src/execution/engine/llm/model-info.ts +332 -332
- package/src/execution/engine/llm/response-schema-validator.ts +113 -113
- package/src/execution/engine/llm/types.ts +86 -86
- package/src/execution/engine/test-utils/index.ts +6 -6
- package/src/execution/engine/test-utils/mocks.ts +56 -56
- package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -50
- package/src/execution/engine/tools/integration/index.ts +53 -53
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -73
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -209
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -82
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -89
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -16
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -293
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -100
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -217
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -218
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +361 -361
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -162
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -594
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -214
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -152
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -141
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -105
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -118
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -165
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -96
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -156
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -220
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -140
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +146 -146
- package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -31
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -1189
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -641
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -18
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -289
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -154
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -325
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -153
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -107
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -85
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -91
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -195
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -113
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -155
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -196
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -189
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -112
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -76
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -98
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -126
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -193
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -99
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -621
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -29
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -178
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -1473
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -59
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -17
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -80
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -134
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -75
- package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -27
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -108
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -132
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -274
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -230
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -90
- package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -517
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -309
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -111
- package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -78
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -222
- package/src/execution/engine/tools/integration/server/index.ts +61 -61
- package/src/execution/engine/tools/integration/service.ts +161 -161
- package/src/execution/engine/tools/integration/tool.ts +253 -253
- package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -74
- package/src/execution/engine/tools/integration/types/apify.ts +92 -92
- package/src/execution/engine/tools/integration/types/index.ts +19 -19
- package/src/execution/engine/tools/integration/types/instantly.ts +557 -557
- package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -56
- package/src/execution/engine/tools/integration/types/stripe.ts +162 -162
- package/src/execution/engine/tools/integration/types/tomba.ts +94 -94
- package/src/execution/engine/tools/lead-service-types.ts +884 -884
- package/src/execution/engine/tools/llm/index.ts +11 -11
- package/src/execution/engine/tools/llm/server/index.ts +8 -8
- package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -118
- package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -441
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -248
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -319
- package/src/execution/engine/tools/platform/acquisition/index.ts +43 -43
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -148
- package/src/execution/engine/tools/platform/acquisition/types.ts +260 -260
- package/src/execution/engine/tools/platform/email/index.ts +122 -122
- package/src/execution/engine/tools/platform/email/types.ts +96 -96
- package/src/execution/engine/tools/platform/index.ts +157 -157
- package/src/execution/engine/tools/platform/notification.ts +81 -81
- package/src/execution/engine/tools/platform/pdf/index.ts +110 -110
- package/src/execution/engine/tools/platform/pdf/types.ts +77 -77
- package/src/execution/engine/tools/platform/scheduler.ts +87 -87
- package/src/execution/engine/tools/platform/storage/index.ts +370 -370
- package/src/execution/engine/tools/platform/types.ts +148 -148
- package/src/execution/engine/tools/registry.ts +700 -700
- package/src/execution/engine/tools/tool-maps.ts +786 -786
- package/src/execution/engine/tools/types.ts +233 -233
- package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -139
- package/src/execution/engine/workflow/errors.ts +63 -63
- package/src/execution/engine/workflow/helpers/index.ts +11 -11
- package/src/execution/engine/workflow/helpers/server/index.ts +8 -8
- package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -93
- package/src/execution/engine/workflow/index.ts +19 -19
- package/src/execution/engine/workflow/log-truncate.ts +26 -26
- package/src/execution/engine/workflow/logging.ts +191 -191
- package/src/execution/engine/workflow/types.ts +182 -182
- package/src/execution/engine/workflow/utils.ts +280 -280
- package/src/execution/engine/workflow/workflow.ts +168 -168
- package/src/execution/index.ts +3 -3
- package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -733
- package/src/execution/scheduler/__tests__/utils.test.ts +1009 -1009
- package/src/execution/scheduler/api-schemas.ts +296 -296
- package/src/execution/scheduler/index.ts +50 -50
- package/src/execution/scheduler/schemas.ts +264 -264
- package/src/execution/scheduler/types.ts +111 -111
- package/src/execution/scheduler/utils.ts +364 -364
- package/src/forms/index.ts +7 -7
- package/src/forms/schemas.ts +69 -69
- package/src/forms/types.ts +70 -70
- package/src/index.ts +71 -60
- package/src/integrations/credentials/__tests__/schemas.test.ts +82 -82
- package/src/integrations/credentials/__tests__/utils.test.ts +144 -144
- package/src/integrations/credentials/api-schemas.ts +143 -143
- package/src/integrations/credentials/index.ts +32 -32
- package/src/integrations/credentials/schemas.ts +164 -164
- package/src/integrations/credentials/utils.ts +59 -59
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -59
- package/src/integrations/oauth/api-schemas.ts +92 -92
- package/src/integrations/oauth/index.ts +19 -19
- package/src/integrations/oauth/provider-registry.ts +61 -61
- package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -183
- package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -577
- package/src/integrations/oauth/server/credentials.ts +39 -39
- package/src/integrations/oauth/server/refresh.ts +214 -214
- package/src/integrations/oauth/types.ts +34 -34
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -318
- package/src/integrations/webhook-endpoints/api-schemas.ts +102 -102
- package/src/integrations/webhook-endpoints/index.ts +28 -28
- package/src/integrations/webhook-endpoints/types.ts +51 -51
- package/src/operations/activities/api-schemas.ts +79 -79
- package/src/operations/activities/index.ts +9 -9
- package/src/operations/activities/sse-events.ts +30 -30
- package/src/operations/activities/types.ts +63 -63
- package/src/operations/debug-logs/client.ts +60 -60
- package/src/operations/debug-logs/debug-logger.ts +83 -83
- package/src/operations/debug-logs/index.ts +8 -8
- package/src/operations/debug-logs/server.ts +19 -19
- package/src/operations/debug-logs/types.ts +33 -33
- package/src/operations/index.ts +50 -50
- package/src/operations/notifications/api-schemas.ts +91 -91
- package/src/operations/notifications/index.ts +3 -3
- package/src/operations/notifications/sse-events.ts +21 -21
- package/src/operations/notifications/types.ts +47 -47
- package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -297
- package/src/operations/observability/__tests__/utils.test.ts +54 -54
- package/src/operations/observability/ai-usage-collector.ts +64 -64
- package/src/operations/observability/index.ts +13 -13
- package/src/operations/observability/metrics-collector.ts +49 -49
- package/src/operations/observability/schemas.ts +39 -39
- package/src/operations/observability/types.ts +463 -463
- package/src/operations/observability/utils.ts +77 -77
- package/src/operations/sessions/__tests__/manager.test.ts +821 -821
- package/src/operations/sessions/index.ts +26 -26
- package/src/operations/sessions/server/manager.ts +90 -90
- package/src/operations/sessions/server/session.ts +180 -180
- package/src/operations/sessions/types.ts +98 -98
- package/src/operations/triggers/index.ts +12 -12
- package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -44
- package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -51
- package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -49
- package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -54
- package/src/operations/triggers/webhook/index.ts +35 -35
- package/src/operations/triggers/webhook/types.ts +74 -74
- package/src/organization-model/README.md +97 -97
- package/src/organization-model/__tests__/defaults.test.ts +175 -175
- package/src/organization-model/__tests__/domains/customers.test.ts +295 -295
- package/src/organization-model/__tests__/domains/goals.test.ts +479 -479
- package/src/organization-model/__tests__/domains/identity.test.ts +279 -279
- package/src/organization-model/__tests__/domains/navigation.test.ts +212 -212
- package/src/organization-model/__tests__/domains/offerings.test.ts +419 -419
- package/src/organization-model/__tests__/domains/operations.test.ts +203 -203
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +362 -362
- package/src/organization-model/__tests__/domains/roles.test.ts +347 -347
- package/src/organization-model/__tests__/domains/statuses.test.ts +243 -243
- package/src/organization-model/__tests__/foundation.test.ts +105 -105
- package/src/organization-model/__tests__/graph.test.ts +894 -894
- package/src/organization-model/__tests__/resolve.test.ts +690 -690
- package/src/organization-model/__tests__/schema.test.ts +407 -407
- package/src/organization-model/contracts.ts +14 -14
- package/src/organization-model/defaults.ts +148 -148
- package/src/organization-model/domains/branding.ts +22 -22
- package/src/organization-model/domains/customers.ts +75 -75
- package/src/organization-model/domains/features.ts +22 -22
- package/src/organization-model/domains/goals.ts +80 -80
- package/src/organization-model/domains/identity.ts +94 -94
- package/src/organization-model/domains/navigation.ts +391 -391
- package/src/organization-model/domains/offerings.ts +66 -66
- package/src/organization-model/domains/operations.ts +85 -85
- package/src/organization-model/domains/projects.ts +48 -48
- package/src/organization-model/domains/prospecting.ts +33 -33
- package/src/organization-model/domains/roles.ts +55 -55
- package/src/organization-model/domains/sales.ts +94 -94
- package/src/organization-model/domains/shared.ts +62 -62
- package/src/organization-model/domains/statuses.ts +130 -130
- package/src/organization-model/foundation.ts +97 -97
- package/src/organization-model/graph/build.ts +399 -399
- package/src/organization-model/graph/index.ts +4 -4
- package/src/organization-model/graph/schema.ts +48 -48
- package/src/organization-model/graph/types.ts +40 -40
- package/src/organization-model/index.ts +13 -13
- package/src/organization-model/organization-graph.mdx +272 -272
- package/src/organization-model/organization-model.mdx +320 -320
- package/src/organization-model/published.ts +85 -85
- package/src/organization-model/resolve.ts +66 -66
- package/src/organization-model/schema.ts +287 -287
- package/src/organization-model/types.ts +46 -46
- package/src/platform/api/index.ts +1 -1
- package/src/platform/api/types.ts +35 -35
- package/src/platform/constants/http.ts +37 -37
- package/src/platform/constants/index.ts +5 -5
- package/src/platform/constants/limits.ts +32 -32
- package/src/platform/constants/resilience.ts +51 -51
- package/src/platform/constants/timeouts.ts +20 -20
- package/src/platform/constants/versions.ts +3 -3
- package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -347
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1028 -1028
- package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -393
- package/src/platform/registry/__tests__/resource-registry.test.ts +2005 -2005
- package/src/platform/registry/__tests__/serialization.test.ts +1127 -1127
- package/src/platform/registry/command-view.ts +180 -180
- package/src/platform/registry/domains.ts +165 -165
- package/src/platform/registry/index.ts +93 -93
- package/src/platform/registry/reserved.ts +24 -24
- package/src/platform/registry/resource-metadata.ts +59 -59
- package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -129
- package/src/platform/registry/resource-registry.ts +876 -876
- package/src/platform/registry/serialization.ts +273 -273
- package/src/platform/registry/serialized-types.ts +231 -231
- package/src/platform/registry/stats-types.ts +66 -66
- package/src/platform/registry/types.ts +404 -404
- package/src/platform/registry/validation.ts +513 -513
- package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -471
- package/src/platform/resilience/circuit-breaker.ts +164 -164
- package/src/platform/resilience/errors.ts +68 -68
- package/src/platform/resilience/http-error-mapper.ts +129 -129
- package/src/platform/resilience/index.ts +93 -93
- package/src/platform/resilience/rate-limiter-types.ts +46 -46
- package/src/platform/resilience/rate-limiter.ts +140 -140
- package/src/platform/resilience/retry.ts +89 -89
- package/src/platform/resilience/timeout.ts +63 -63
- package/src/platform/sse/events.ts +37 -37
- package/src/platform/sse/index.ts +7 -7
- package/src/platform/utils/__tests__/validation.test.ts +1083 -1083
- package/src/platform/utils/currency.ts +96 -96
- package/src/platform/utils/debounce.ts +52 -52
- package/src/platform/utils/error.ts +41 -41
- package/src/platform/utils/hmac.test.ts +97 -97
- package/src/platform/utils/index.ts +32 -32
- package/src/platform/utils/server/betterstack-logger.ts +210 -210
- package/src/platform/utils/server/hmac.ts +44 -44
- package/src/platform/utils/server/unsubscribe.ts +111 -111
- package/src/platform/utils/token-counter.ts +96 -96
- package/src/platform/utils/validation.ts +425 -425
- package/src/projects/api-schemas.ts +268 -268
- package/src/published.ts +1 -1
- package/src/reference/_generated/contracts.md +607 -607
- package/src/reference/glossary.md +105 -105
- package/src/requests/__tests__/api-schemas.test.ts +277 -277
- package/src/requests/api-schemas.ts +83 -83
- package/src/requests/index.ts +1 -1
- package/src/scaffold-registry/__tests__/index.test.ts +17 -0
- package/src/scaffold-registry/__tests__/schema.test.ts +329 -230
- package/src/scaffold-registry/index.ts +205 -189
- package/src/scaffold-registry/schema.ts +196 -128
- package/src/server.ts +272 -272
- package/src/supabase/database.types.ts +2719 -2719
- package/src/supabase/helpers.ts +20 -20
- package/src/supabase/index.ts +52 -52
- package/src/supabase/server/client.ts +58 -58
- package/src/test-utils/README.md +30 -138
- package/src/test-utils/browser-mocks.ts +54 -54
- package/src/test-utils/fixtures/api-keys.ts +52 -52
- package/src/test-utils/fixtures/index.ts +4 -4
- package/src/test-utils/fixtures/memberships.ts +80 -80
- package/src/test-utils/fixtures/organizations.ts +69 -69
- package/src/test-utils/fixtures/users.ts +79 -79
- package/src/test-utils/index.ts +7 -8
- package/src/test-utils/mocks/index.ts +2 -2
- package/src/test-utils/mocks/supabase.ts +142 -142
- package/src/test-utils/mocks/workos.ts +108 -108
- package/src/test-utils/published.ts +4 -0
- package/src/test-utils/rls/RLSTestContext.ts +554 -554
- package/src/test-utils/rls/index.ts +1 -1
|
@@ -1,370 +1,370 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Platform Storage Tools
|
|
3
|
-
*
|
|
4
|
-
* Factory functions for creating storage tools that interact with
|
|
5
|
-
* Supabase Storage for org-scoped file management.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* ```typescript
|
|
9
|
-
* const uploadTool = createStorageUploadTool({
|
|
10
|
-
* name: 'save_proposal',
|
|
11
|
-
* description: 'Save generated proposal PDF to storage'
|
|
12
|
-
* })
|
|
13
|
-
*
|
|
14
|
-
* const signedUrlTool = createStorageSignedUrlTool({
|
|
15
|
-
* name: 'get_proposal_url',
|
|
16
|
-
* description: 'Get signed URL for proposal download'
|
|
17
|
-
* })
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
import type { Tool, ToolExecutionOptions } from '../../types'
|
|
22
|
-
import { serviceUnavailable } from '../../types'
|
|
23
|
-
import { getToolServices } from '../../registry'
|
|
24
|
-
import {
|
|
25
|
-
StorageUploadInputSchema,
|
|
26
|
-
StorageUploadOutputSchema,
|
|
27
|
-
StorageSignedUrlInputSchema,
|
|
28
|
-
StorageSignedUrlOutputSchema,
|
|
29
|
-
StorageDownloadInputSchema,
|
|
30
|
-
StorageDownloadOutputSchema,
|
|
31
|
-
StorageDeleteInputSchema,
|
|
32
|
-
StorageDeleteOutputSchema,
|
|
33
|
-
StorageListInputSchema,
|
|
34
|
-
StorageListOutputSchema,
|
|
35
|
-
type StorageUploadInput,
|
|
36
|
-
type StorageUploadOutput,
|
|
37
|
-
type StorageSignedUrlInput,
|
|
38
|
-
type StorageSignedUrlOutput,
|
|
39
|
-
type StorageDownloadInput,
|
|
40
|
-
type StorageDownloadOutput,
|
|
41
|
-
type StorageDeleteInput,
|
|
42
|
-
type StorageDeleteOutput,
|
|
43
|
-
type StorageListInput,
|
|
44
|
-
type StorageListOutput,
|
|
45
|
-
type StorageToolConfig
|
|
46
|
-
} from './types'
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Create storage upload tool for workflows/agents
|
|
50
|
-
*
|
|
51
|
-
* @param config - Tool configuration (name, description)
|
|
52
|
-
* @returns Tool that uploads files to org-scoped storage
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* const uploadTool = createStorageUploadTool({
|
|
56
|
-
* name: 'save_proposal',
|
|
57
|
-
* description: 'Save generated proposal PDF to storage'
|
|
58
|
-
* })
|
|
59
|
-
*
|
|
60
|
-
* // In agent execution:
|
|
61
|
-
* await uploadTool.execute({
|
|
62
|
-
* input: {
|
|
63
|
-
* bucket: 'acquisition',
|
|
64
|
-
* path: 'proposals/deal-123/proposal.pdf',
|
|
65
|
-
* content: base64EncodedPdf,
|
|
66
|
-
* contentType: 'application/pdf'
|
|
67
|
-
* },
|
|
68
|
-
* executionContext: context
|
|
69
|
-
* })
|
|
70
|
-
*/
|
|
71
|
-
export function createStorageUploadTool(config: StorageToolConfig): Tool {
|
|
72
|
-
return {
|
|
73
|
-
name: config.name,
|
|
74
|
-
description: config.description,
|
|
75
|
-
inputSchema: StorageUploadInputSchema,
|
|
76
|
-
outputSchema: StorageUploadOutputSchema,
|
|
77
|
-
|
|
78
|
-
async execute(options: ToolExecutionOptions): Promise<StorageUploadOutput> {
|
|
79
|
-
if (!options.executionContext) {
|
|
80
|
-
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const { storageService } = getToolServices()
|
|
84
|
-
if (!storageService) {
|
|
85
|
-
throw serviceUnavailable('StorageService', {
|
|
86
|
-
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
87
|
-
tool: config.name
|
|
88
|
-
})
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const input = options.input as StorageUploadInput
|
|
92
|
-
const buffer = Buffer.from(input.content, 'base64')
|
|
93
|
-
|
|
94
|
-
const result = await storageService.upload({
|
|
95
|
-
organizationId: options.executionContext.organizationId,
|
|
96
|
-
bucket: input.bucket,
|
|
97
|
-
path: input.path,
|
|
98
|
-
file: buffer,
|
|
99
|
-
contentType: input.contentType,
|
|
100
|
-
upsert: input.upsert
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
return {
|
|
104
|
-
success: true,
|
|
105
|
-
path: result.path,
|
|
106
|
-
fullPath: result.fullPath
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Create storage signed URL tool for workflows/agents
|
|
114
|
-
*
|
|
115
|
-
* @param config - Tool configuration (name, description)
|
|
116
|
-
* @returns Tool that creates signed URLs for temporary file access
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* const signedUrlTool = createStorageSignedUrlTool({
|
|
120
|
-
* name: 'get_proposal_url',
|
|
121
|
-
* description: 'Get signed URL for proposal download'
|
|
122
|
-
* })
|
|
123
|
-
*
|
|
124
|
-
* // In agent execution:
|
|
125
|
-
* await signedUrlTool.execute({
|
|
126
|
-
* input: {
|
|
127
|
-
* bucket: 'acquisition',
|
|
128
|
-
* path: 'proposals/deal-123/proposal.pdf',
|
|
129
|
-
* expiresIn: 604800 // 7 days
|
|
130
|
-
* },
|
|
131
|
-
* executionContext: context
|
|
132
|
-
* })
|
|
133
|
-
*/
|
|
134
|
-
export function createStorageSignedUrlTool(config: StorageToolConfig): Tool {
|
|
135
|
-
return {
|
|
136
|
-
name: config.name,
|
|
137
|
-
description: config.description,
|
|
138
|
-
inputSchema: StorageSignedUrlInputSchema,
|
|
139
|
-
outputSchema: StorageSignedUrlOutputSchema,
|
|
140
|
-
|
|
141
|
-
async execute(options: ToolExecutionOptions): Promise<StorageSignedUrlOutput> {
|
|
142
|
-
if (!options.executionContext) {
|
|
143
|
-
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
const { storageService } = getToolServices()
|
|
147
|
-
if (!storageService) {
|
|
148
|
-
throw serviceUnavailable('StorageService', {
|
|
149
|
-
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
150
|
-
tool: config.name
|
|
151
|
-
})
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
const input = options.input as StorageSignedUrlInput
|
|
155
|
-
|
|
156
|
-
const result = await storageService.createSignedUrl({
|
|
157
|
-
organizationId: options.executionContext.organizationId,
|
|
158
|
-
bucket: input.bucket,
|
|
159
|
-
path: input.path,
|
|
160
|
-
expiresIn: input.expiresIn
|
|
161
|
-
})
|
|
162
|
-
|
|
163
|
-
return {
|
|
164
|
-
success: true,
|
|
165
|
-
signedUrl: result.signedUrl,
|
|
166
|
-
expiresAt: result.expiresAt.toISOString()
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Create storage download tool for workflows/agents
|
|
174
|
-
*
|
|
175
|
-
* @param config - Tool configuration (name, description)
|
|
176
|
-
* @returns Tool that downloads files from org-scoped storage
|
|
177
|
-
*
|
|
178
|
-
* @example
|
|
179
|
-
* const downloadTool = createStorageDownloadTool({
|
|
180
|
-
* name: 'get_proposal_content',
|
|
181
|
-
* description: 'Download proposal PDF content'
|
|
182
|
-
* })
|
|
183
|
-
*
|
|
184
|
-
* // In agent execution:
|
|
185
|
-
* await downloadTool.execute({
|
|
186
|
-
* input: {
|
|
187
|
-
* bucket: 'acquisition',
|
|
188
|
-
* path: 'proposals/deal-123/proposal.pdf'
|
|
189
|
-
* },
|
|
190
|
-
* executionContext: context
|
|
191
|
-
* })
|
|
192
|
-
*/
|
|
193
|
-
export function createStorageDownloadTool(config: StorageToolConfig): Tool {
|
|
194
|
-
return {
|
|
195
|
-
name: config.name,
|
|
196
|
-
description: config.description,
|
|
197
|
-
inputSchema: StorageDownloadInputSchema,
|
|
198
|
-
outputSchema: StorageDownloadOutputSchema,
|
|
199
|
-
|
|
200
|
-
async execute(options: ToolExecutionOptions): Promise<StorageDownloadOutput> {
|
|
201
|
-
if (!options.executionContext) {
|
|
202
|
-
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
const { storageService } = getToolServices()
|
|
206
|
-
if (!storageService) {
|
|
207
|
-
throw serviceUnavailable('StorageService', {
|
|
208
|
-
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
209
|
-
tool: config.name
|
|
210
|
-
})
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const input = options.input as StorageDownloadInput
|
|
214
|
-
|
|
215
|
-
const blob = await storageService.download({
|
|
216
|
-
organizationId: options.executionContext.organizationId,
|
|
217
|
-
bucket: input.bucket,
|
|
218
|
-
path: input.path
|
|
219
|
-
})
|
|
220
|
-
|
|
221
|
-
// Convert blob to base64
|
|
222
|
-
const arrayBuffer = await blob.arrayBuffer()
|
|
223
|
-
const content = Buffer.from(arrayBuffer).toString('base64')
|
|
224
|
-
|
|
225
|
-
return {
|
|
226
|
-
success: true,
|
|
227
|
-
content,
|
|
228
|
-
contentType: blob.type || undefined
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* Create storage delete tool for workflows/agents
|
|
236
|
-
*
|
|
237
|
-
* @param config - Tool configuration (name, description)
|
|
238
|
-
* @returns Tool that deletes files from org-scoped storage
|
|
239
|
-
*
|
|
240
|
-
* @example
|
|
241
|
-
* const deleteTool = createStorageDeleteTool({
|
|
242
|
-
* name: 'remove_draft',
|
|
243
|
-
* description: 'Delete draft proposal file'
|
|
244
|
-
* })
|
|
245
|
-
*
|
|
246
|
-
* // In agent execution:
|
|
247
|
-
* await deleteTool.execute({
|
|
248
|
-
* input: {
|
|
249
|
-
* bucket: 'acquisition',
|
|
250
|
-
* path: 'proposals/deal-123/draft.pdf'
|
|
251
|
-
* },
|
|
252
|
-
* executionContext: context
|
|
253
|
-
* })
|
|
254
|
-
*/
|
|
255
|
-
export function createStorageDeleteTool(config: StorageToolConfig): Tool {
|
|
256
|
-
return {
|
|
257
|
-
name: config.name,
|
|
258
|
-
description: config.description,
|
|
259
|
-
inputSchema: StorageDeleteInputSchema,
|
|
260
|
-
outputSchema: StorageDeleteOutputSchema,
|
|
261
|
-
|
|
262
|
-
async execute(options: ToolExecutionOptions): Promise<StorageDeleteOutput> {
|
|
263
|
-
if (!options.executionContext) {
|
|
264
|
-
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
const { storageService } = getToolServices()
|
|
268
|
-
if (!storageService) {
|
|
269
|
-
throw serviceUnavailable('StorageService', {
|
|
270
|
-
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
271
|
-
tool: config.name
|
|
272
|
-
})
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
const input = options.input as StorageDeleteInput
|
|
276
|
-
|
|
277
|
-
await storageService.delete({
|
|
278
|
-
organizationId: options.executionContext.organizationId,
|
|
279
|
-
bucket: input.bucket,
|
|
280
|
-
path: input.path
|
|
281
|
-
})
|
|
282
|
-
|
|
283
|
-
return {
|
|
284
|
-
success: true
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Create storage list tool for workflows/agents
|
|
292
|
-
*
|
|
293
|
-
* @param config - Tool configuration (name, description)
|
|
294
|
-
* @returns Tool that lists files in org-scoped storage
|
|
295
|
-
*
|
|
296
|
-
* @example
|
|
297
|
-
* const listTool = createStorageListTool({
|
|
298
|
-
* name: 'list_proposals',
|
|
299
|
-
* description: 'List all proposals for a deal'
|
|
300
|
-
* })
|
|
301
|
-
*
|
|
302
|
-
* // In agent execution:
|
|
303
|
-
* await listTool.execute({
|
|
304
|
-
* input: {
|
|
305
|
-
* bucket: 'acquisition',
|
|
306
|
-
* prefix: 'proposals/deal-123/'
|
|
307
|
-
* },
|
|
308
|
-
* executionContext: context
|
|
309
|
-
* })
|
|
310
|
-
*/
|
|
311
|
-
export function createStorageListTool(config: StorageToolConfig): Tool {
|
|
312
|
-
return {
|
|
313
|
-
name: config.name,
|
|
314
|
-
description: config.description,
|
|
315
|
-
inputSchema: StorageListInputSchema,
|
|
316
|
-
outputSchema: StorageListOutputSchema,
|
|
317
|
-
|
|
318
|
-
async execute(options: ToolExecutionOptions): Promise<StorageListOutput> {
|
|
319
|
-
if (!options.executionContext) {
|
|
320
|
-
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
const { storageService } = getToolServices()
|
|
324
|
-
if (!storageService) {
|
|
325
|
-
throw serviceUnavailable('StorageService', {
|
|
326
|
-
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
327
|
-
tool: config.name
|
|
328
|
-
})
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
const input = options.input as StorageListInput
|
|
332
|
-
|
|
333
|
-
const files = await storageService.list({
|
|
334
|
-
organizationId: options.executionContext.organizationId,
|
|
335
|
-
bucket: input.bucket,
|
|
336
|
-
prefix: input.prefix
|
|
337
|
-
})
|
|
338
|
-
|
|
339
|
-
return {
|
|
340
|
-
success: true,
|
|
341
|
-
files
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
// Re-export types for consumers
|
|
348
|
-
export {
|
|
349
|
-
StorageUploadInputSchema,
|
|
350
|
-
StorageUploadOutputSchema,
|
|
351
|
-
StorageSignedUrlInputSchema,
|
|
352
|
-
StorageSignedUrlOutputSchema,
|
|
353
|
-
StorageDownloadInputSchema,
|
|
354
|
-
StorageDownloadOutputSchema,
|
|
355
|
-
StorageDeleteInputSchema,
|
|
356
|
-
StorageDeleteOutputSchema,
|
|
357
|
-
StorageListInputSchema,
|
|
358
|
-
StorageListOutputSchema,
|
|
359
|
-
type StorageUploadInput,
|
|
360
|
-
type StorageUploadOutput,
|
|
361
|
-
type StorageSignedUrlInput,
|
|
362
|
-
type StorageSignedUrlOutput,
|
|
363
|
-
type StorageDownloadInput,
|
|
364
|
-
type StorageDownloadOutput,
|
|
365
|
-
type StorageDeleteInput,
|
|
366
|
-
type StorageDeleteOutput,
|
|
367
|
-
type StorageListInput,
|
|
368
|
-
type StorageListOutput,
|
|
369
|
-
type StorageToolConfig
|
|
370
|
-
} from './types'
|
|
1
|
+
/**
|
|
2
|
+
* Platform Storage Tools
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating storage tools that interact with
|
|
5
|
+
* Supabase Storage for org-scoped file management.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const uploadTool = createStorageUploadTool({
|
|
10
|
+
* name: 'save_proposal',
|
|
11
|
+
* description: 'Save generated proposal PDF to storage'
|
|
12
|
+
* })
|
|
13
|
+
*
|
|
14
|
+
* const signedUrlTool = createStorageSignedUrlTool({
|
|
15
|
+
* name: 'get_proposal_url',
|
|
16
|
+
* description: 'Get signed URL for proposal download'
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { Tool, ToolExecutionOptions } from '../../types'
|
|
22
|
+
import { serviceUnavailable } from '../../types'
|
|
23
|
+
import { getToolServices } from '../../registry'
|
|
24
|
+
import {
|
|
25
|
+
StorageUploadInputSchema,
|
|
26
|
+
StorageUploadOutputSchema,
|
|
27
|
+
StorageSignedUrlInputSchema,
|
|
28
|
+
StorageSignedUrlOutputSchema,
|
|
29
|
+
StorageDownloadInputSchema,
|
|
30
|
+
StorageDownloadOutputSchema,
|
|
31
|
+
StorageDeleteInputSchema,
|
|
32
|
+
StorageDeleteOutputSchema,
|
|
33
|
+
StorageListInputSchema,
|
|
34
|
+
StorageListOutputSchema,
|
|
35
|
+
type StorageUploadInput,
|
|
36
|
+
type StorageUploadOutput,
|
|
37
|
+
type StorageSignedUrlInput,
|
|
38
|
+
type StorageSignedUrlOutput,
|
|
39
|
+
type StorageDownloadInput,
|
|
40
|
+
type StorageDownloadOutput,
|
|
41
|
+
type StorageDeleteInput,
|
|
42
|
+
type StorageDeleteOutput,
|
|
43
|
+
type StorageListInput,
|
|
44
|
+
type StorageListOutput,
|
|
45
|
+
type StorageToolConfig
|
|
46
|
+
} from './types'
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create storage upload tool for workflows/agents
|
|
50
|
+
*
|
|
51
|
+
* @param config - Tool configuration (name, description)
|
|
52
|
+
* @returns Tool that uploads files to org-scoped storage
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* const uploadTool = createStorageUploadTool({
|
|
56
|
+
* name: 'save_proposal',
|
|
57
|
+
* description: 'Save generated proposal PDF to storage'
|
|
58
|
+
* })
|
|
59
|
+
*
|
|
60
|
+
* // In agent execution:
|
|
61
|
+
* await uploadTool.execute({
|
|
62
|
+
* input: {
|
|
63
|
+
* bucket: 'acquisition',
|
|
64
|
+
* path: 'proposals/deal-123/proposal.pdf',
|
|
65
|
+
* content: base64EncodedPdf,
|
|
66
|
+
* contentType: 'application/pdf'
|
|
67
|
+
* },
|
|
68
|
+
* executionContext: context
|
|
69
|
+
* })
|
|
70
|
+
*/
|
|
71
|
+
export function createStorageUploadTool(config: StorageToolConfig): Tool {
|
|
72
|
+
return {
|
|
73
|
+
name: config.name,
|
|
74
|
+
description: config.description,
|
|
75
|
+
inputSchema: StorageUploadInputSchema,
|
|
76
|
+
outputSchema: StorageUploadOutputSchema,
|
|
77
|
+
|
|
78
|
+
async execute(options: ToolExecutionOptions): Promise<StorageUploadOutput> {
|
|
79
|
+
if (!options.executionContext) {
|
|
80
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const { storageService } = getToolServices()
|
|
84
|
+
if (!storageService) {
|
|
85
|
+
throw serviceUnavailable('StorageService', {
|
|
86
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
87
|
+
tool: config.name
|
|
88
|
+
})
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const input = options.input as StorageUploadInput
|
|
92
|
+
const buffer = Buffer.from(input.content, 'base64')
|
|
93
|
+
|
|
94
|
+
const result = await storageService.upload({
|
|
95
|
+
organizationId: options.executionContext.organizationId,
|
|
96
|
+
bucket: input.bucket,
|
|
97
|
+
path: input.path,
|
|
98
|
+
file: buffer,
|
|
99
|
+
contentType: input.contentType,
|
|
100
|
+
upsert: input.upsert
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
path: result.path,
|
|
106
|
+
fullPath: result.fullPath
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Create storage signed URL tool for workflows/agents
|
|
114
|
+
*
|
|
115
|
+
* @param config - Tool configuration (name, description)
|
|
116
|
+
* @returns Tool that creates signed URLs for temporary file access
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* const signedUrlTool = createStorageSignedUrlTool({
|
|
120
|
+
* name: 'get_proposal_url',
|
|
121
|
+
* description: 'Get signed URL for proposal download'
|
|
122
|
+
* })
|
|
123
|
+
*
|
|
124
|
+
* // In agent execution:
|
|
125
|
+
* await signedUrlTool.execute({
|
|
126
|
+
* input: {
|
|
127
|
+
* bucket: 'acquisition',
|
|
128
|
+
* path: 'proposals/deal-123/proposal.pdf',
|
|
129
|
+
* expiresIn: 604800 // 7 days
|
|
130
|
+
* },
|
|
131
|
+
* executionContext: context
|
|
132
|
+
* })
|
|
133
|
+
*/
|
|
134
|
+
export function createStorageSignedUrlTool(config: StorageToolConfig): Tool {
|
|
135
|
+
return {
|
|
136
|
+
name: config.name,
|
|
137
|
+
description: config.description,
|
|
138
|
+
inputSchema: StorageSignedUrlInputSchema,
|
|
139
|
+
outputSchema: StorageSignedUrlOutputSchema,
|
|
140
|
+
|
|
141
|
+
async execute(options: ToolExecutionOptions): Promise<StorageSignedUrlOutput> {
|
|
142
|
+
if (!options.executionContext) {
|
|
143
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const { storageService } = getToolServices()
|
|
147
|
+
if (!storageService) {
|
|
148
|
+
throw serviceUnavailable('StorageService', {
|
|
149
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
150
|
+
tool: config.name
|
|
151
|
+
})
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const input = options.input as StorageSignedUrlInput
|
|
155
|
+
|
|
156
|
+
const result = await storageService.createSignedUrl({
|
|
157
|
+
organizationId: options.executionContext.organizationId,
|
|
158
|
+
bucket: input.bucket,
|
|
159
|
+
path: input.path,
|
|
160
|
+
expiresIn: input.expiresIn
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
success: true,
|
|
165
|
+
signedUrl: result.signedUrl,
|
|
166
|
+
expiresAt: result.expiresAt.toISOString()
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Create storage download tool for workflows/agents
|
|
174
|
+
*
|
|
175
|
+
* @param config - Tool configuration (name, description)
|
|
176
|
+
* @returns Tool that downloads files from org-scoped storage
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* const downloadTool = createStorageDownloadTool({
|
|
180
|
+
* name: 'get_proposal_content',
|
|
181
|
+
* description: 'Download proposal PDF content'
|
|
182
|
+
* })
|
|
183
|
+
*
|
|
184
|
+
* // In agent execution:
|
|
185
|
+
* await downloadTool.execute({
|
|
186
|
+
* input: {
|
|
187
|
+
* bucket: 'acquisition',
|
|
188
|
+
* path: 'proposals/deal-123/proposal.pdf'
|
|
189
|
+
* },
|
|
190
|
+
* executionContext: context
|
|
191
|
+
* })
|
|
192
|
+
*/
|
|
193
|
+
export function createStorageDownloadTool(config: StorageToolConfig): Tool {
|
|
194
|
+
return {
|
|
195
|
+
name: config.name,
|
|
196
|
+
description: config.description,
|
|
197
|
+
inputSchema: StorageDownloadInputSchema,
|
|
198
|
+
outputSchema: StorageDownloadOutputSchema,
|
|
199
|
+
|
|
200
|
+
async execute(options: ToolExecutionOptions): Promise<StorageDownloadOutput> {
|
|
201
|
+
if (!options.executionContext) {
|
|
202
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const { storageService } = getToolServices()
|
|
206
|
+
if (!storageService) {
|
|
207
|
+
throw serviceUnavailable('StorageService', {
|
|
208
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
209
|
+
tool: config.name
|
|
210
|
+
})
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const input = options.input as StorageDownloadInput
|
|
214
|
+
|
|
215
|
+
const blob = await storageService.download({
|
|
216
|
+
organizationId: options.executionContext.organizationId,
|
|
217
|
+
bucket: input.bucket,
|
|
218
|
+
path: input.path
|
|
219
|
+
})
|
|
220
|
+
|
|
221
|
+
// Convert blob to base64
|
|
222
|
+
const arrayBuffer = await blob.arrayBuffer()
|
|
223
|
+
const content = Buffer.from(arrayBuffer).toString('base64')
|
|
224
|
+
|
|
225
|
+
return {
|
|
226
|
+
success: true,
|
|
227
|
+
content,
|
|
228
|
+
contentType: blob.type || undefined
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Create storage delete tool for workflows/agents
|
|
236
|
+
*
|
|
237
|
+
* @param config - Tool configuration (name, description)
|
|
238
|
+
* @returns Tool that deletes files from org-scoped storage
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* const deleteTool = createStorageDeleteTool({
|
|
242
|
+
* name: 'remove_draft',
|
|
243
|
+
* description: 'Delete draft proposal file'
|
|
244
|
+
* })
|
|
245
|
+
*
|
|
246
|
+
* // In agent execution:
|
|
247
|
+
* await deleteTool.execute({
|
|
248
|
+
* input: {
|
|
249
|
+
* bucket: 'acquisition',
|
|
250
|
+
* path: 'proposals/deal-123/draft.pdf'
|
|
251
|
+
* },
|
|
252
|
+
* executionContext: context
|
|
253
|
+
* })
|
|
254
|
+
*/
|
|
255
|
+
export function createStorageDeleteTool(config: StorageToolConfig): Tool {
|
|
256
|
+
return {
|
|
257
|
+
name: config.name,
|
|
258
|
+
description: config.description,
|
|
259
|
+
inputSchema: StorageDeleteInputSchema,
|
|
260
|
+
outputSchema: StorageDeleteOutputSchema,
|
|
261
|
+
|
|
262
|
+
async execute(options: ToolExecutionOptions): Promise<StorageDeleteOutput> {
|
|
263
|
+
if (!options.executionContext) {
|
|
264
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const { storageService } = getToolServices()
|
|
268
|
+
if (!storageService) {
|
|
269
|
+
throw serviceUnavailable('StorageService', {
|
|
270
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
271
|
+
tool: config.name
|
|
272
|
+
})
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const input = options.input as StorageDeleteInput
|
|
276
|
+
|
|
277
|
+
await storageService.delete({
|
|
278
|
+
organizationId: options.executionContext.organizationId,
|
|
279
|
+
bucket: input.bucket,
|
|
280
|
+
path: input.path
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
return {
|
|
284
|
+
success: true
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Create storage list tool for workflows/agents
|
|
292
|
+
*
|
|
293
|
+
* @param config - Tool configuration (name, description)
|
|
294
|
+
* @returns Tool that lists files in org-scoped storage
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* const listTool = createStorageListTool({
|
|
298
|
+
* name: 'list_proposals',
|
|
299
|
+
* description: 'List all proposals for a deal'
|
|
300
|
+
* })
|
|
301
|
+
*
|
|
302
|
+
* // In agent execution:
|
|
303
|
+
* await listTool.execute({
|
|
304
|
+
* input: {
|
|
305
|
+
* bucket: 'acquisition',
|
|
306
|
+
* prefix: 'proposals/deal-123/'
|
|
307
|
+
* },
|
|
308
|
+
* executionContext: context
|
|
309
|
+
* })
|
|
310
|
+
*/
|
|
311
|
+
export function createStorageListTool(config: StorageToolConfig): Tool {
|
|
312
|
+
return {
|
|
313
|
+
name: config.name,
|
|
314
|
+
description: config.description,
|
|
315
|
+
inputSchema: StorageListInputSchema,
|
|
316
|
+
outputSchema: StorageListOutputSchema,
|
|
317
|
+
|
|
318
|
+
async execute(options: ToolExecutionOptions): Promise<StorageListOutput> {
|
|
319
|
+
if (!options.executionContext) {
|
|
320
|
+
throw serviceUnavailable('ExecutionContext', { tool: config.name, reason: 'organizationId required for multi-tenant isolation' })
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
const { storageService } = getToolServices()
|
|
324
|
+
if (!storageService) {
|
|
325
|
+
throw serviceUnavailable('StorageService', {
|
|
326
|
+
message: 'Ensure toolServicesRegistry.initialize() was called in apps/api/src/main.ts',
|
|
327
|
+
tool: config.name
|
|
328
|
+
})
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
const input = options.input as StorageListInput
|
|
332
|
+
|
|
333
|
+
const files = await storageService.list({
|
|
334
|
+
organizationId: options.executionContext.organizationId,
|
|
335
|
+
bucket: input.bucket,
|
|
336
|
+
prefix: input.prefix
|
|
337
|
+
})
|
|
338
|
+
|
|
339
|
+
return {
|
|
340
|
+
success: true,
|
|
341
|
+
files
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Re-export types for consumers
|
|
348
|
+
export {
|
|
349
|
+
StorageUploadInputSchema,
|
|
350
|
+
StorageUploadOutputSchema,
|
|
351
|
+
StorageSignedUrlInputSchema,
|
|
352
|
+
StorageSignedUrlOutputSchema,
|
|
353
|
+
StorageDownloadInputSchema,
|
|
354
|
+
StorageDownloadOutputSchema,
|
|
355
|
+
StorageDeleteInputSchema,
|
|
356
|
+
StorageDeleteOutputSchema,
|
|
357
|
+
StorageListInputSchema,
|
|
358
|
+
StorageListOutputSchema,
|
|
359
|
+
type StorageUploadInput,
|
|
360
|
+
type StorageUploadOutput,
|
|
361
|
+
type StorageSignedUrlInput,
|
|
362
|
+
type StorageSignedUrlOutput,
|
|
363
|
+
type StorageDownloadInput,
|
|
364
|
+
type StorageDownloadOutput,
|
|
365
|
+
type StorageDeleteInput,
|
|
366
|
+
type StorageDeleteOutput,
|
|
367
|
+
type StorageListInput,
|
|
368
|
+
type StorageListOutput,
|
|
369
|
+
type StorageToolConfig
|
|
370
|
+
} from './types'
|