@elevasis/core 0.1.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/dist/index.d.ts +435 -0
- package/dist/index.js +403 -0
- package/dist/organization-model/index.d.ts +435 -0
- package/dist/organization-model/index.js +403 -0
- package/package.json +62 -0
- package/src/README.md +34 -0
- package/src/__tests__/observability-exports.test.ts +36 -0
- package/src/__tests__/publish.test.ts +18 -0
- package/src/__tests__/template-foundations-compatibility.test.ts +34 -0
- package/src/auth/index.ts +8 -0
- package/src/auth/multi-tenancy/credentials/README.md +38 -0
- package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +216 -0
- package/src/auth/multi-tenancy/credentials/__tests__/service.test.ts +174 -0
- package/src/auth/multi-tenancy/credentials/index.ts +6 -0
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -0
- package/src/auth/multi-tenancy/credentials/server/service.ts +60 -0
- package/src/auth/multi-tenancy/index.ts +17 -0
- package/src/auth/multi-tenancy/invitations/__tests__/invitation.test.ts +237 -0
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -0
- package/src/auth/multi-tenancy/invitations/index.ts +38 -0
- package/src/auth/multi-tenancy/invitations/invitation.ts +86 -0
- package/src/auth/multi-tenancy/invitations/server/index.ts +25 -0
- package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -0
- package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -0
- package/src/auth/multi-tenancy/invitations/supabase.ts +50 -0
- package/src/auth/multi-tenancy/memberships/__tests__/membership.test.ts +227 -0
- package/src/auth/multi-tenancy/memberships/__tests__/supabase-transforms.test.ts +88 -0
- package/src/auth/multi-tenancy/memberships/__tests__/workos-transforms.test.ts +139 -0
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -0
- package/src/auth/multi-tenancy/memberships/index.ts +22 -0
- package/src/auth/multi-tenancy/memberships/membership.ts +138 -0
- package/src/auth/multi-tenancy/memberships/server/index.ts +15 -0
- package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -0
- package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -0
- package/src/auth/multi-tenancy/memberships/supabase.ts +46 -0
- package/src/auth/multi-tenancy/organizations/__tests__/organization.test.ts +249 -0
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -0
- package/src/auth/multi-tenancy/organizations/index.ts +23 -0
- package/src/auth/multi-tenancy/organizations/organization.ts +25 -0
- package/src/auth/multi-tenancy/organizations/server/index.ts +10 -0
- package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -0
- package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -0
- package/src/auth/multi-tenancy/types.ts +89 -0
- package/src/auth/multi-tenancy/users/__tests__/user.test.ts +208 -0
- package/src/auth/multi-tenancy/users/api-schemas.ts +194 -0
- package/src/auth/multi-tenancy/users/index.ts +28 -0
- package/src/auth/multi-tenancy/users/server/index.ts +19 -0
- package/src/auth/multi-tenancy/users/server/transforms.ts +21 -0
- package/src/auth/multi-tenancy/users/server/workos.ts +16 -0
- package/src/auth/multi-tenancy/users/user.ts +65 -0
- package/src/business/acquisition/api-schemas.ts +759 -0
- package/src/business/acquisition/index.ts +109 -0
- package/src/business/acquisition/types.ts +400 -0
- package/src/business/crm/api-schemas.ts +75 -0
- package/src/business/delivery/index.ts +1 -0
- package/src/business/delivery/types.ts +89 -0
- package/src/business/index.ts +12 -0
- package/src/business/pdf/assets/ElevasisLogo.png +0 -0
- package/src/business/pdf/browser/image-utils.ts +74 -0
- package/src/business/pdf/browser/index.ts +16 -0
- package/src/business/pdf/browser/pdfmake-browser.ts +229 -0
- package/src/business/pdf/index.ts +10 -0
- package/src/business/pdf/sections/acceptance.ts +112 -0
- package/src/business/pdf/sections/automation.ts +56 -0
- package/src/business/pdf/sections/cover.ts +51 -0
- package/src/business/pdf/sections/index.ts +57 -0
- package/src/business/pdf/sections/investment.ts +69 -0
- package/src/business/pdf/sections/proposal-document.ts +200 -0
- package/src/business/pdf/sections/summary-investment.ts +124 -0
- package/src/business/pdf/sections/summary.ts +55 -0
- package/src/business/pdf/sections/table-summary.ts +59 -0
- package/src/business/pdf/sections/types.ts +124 -0
- package/src/business/pdf/server/__tests__/pdfmake-test.ts +219 -0
- package/src/business/pdf/server/index.ts +21 -0
- package/src/business/pdf/server/pdfmake-service.ts +237 -0
- package/src/business/pdf/server/themes/default.ts +8 -0
- package/src/business/pdf/server/themes/index.ts +9 -0
- package/src/business/pdf/server/themes/types.ts +8 -0
- package/src/business/pdf/shared/convert.ts +514 -0
- package/src/business/pdf/shared/index.ts +12 -0
- package/src/business/pdf/themes.ts +78 -0
- package/src/business/pdf/types.ts +272 -0
- package/src/business/seo/__tests__/linking.test.ts +549 -0
- package/src/business/seo/__tests__/types.test.ts +404 -0
- package/src/business/seo/index.ts +2 -0
- package/src/business/seo/linking.ts +281 -0
- package/src/business/seo/types.ts +199 -0
- package/src/commands/index.ts +8 -0
- package/src/commands/queue/index.ts +3 -0
- package/src/commands/queue/schemas.test.ts +593 -0
- package/src/commands/queue/schemas.ts +125 -0
- package/src/commands/queue/sse-events.ts +61 -0
- package/src/commands/queue/types/action.ts +52 -0
- package/src/commands/queue/types/checkpoint.ts +44 -0
- package/src/commands/queue/types/index.ts +7 -0
- package/src/commands/queue/types/task.ts +116 -0
- package/src/commands/queue/types.ts +14 -0
- package/src/content/distribution-metadata.ts +61 -0
- package/src/content/index.ts +10 -0
- package/src/deployments/index.ts +22 -0
- package/src/execution/calibration/__tests__/schemas.test.ts +320 -0
- package/src/execution/calibration/index.ts +3 -0
- package/src/execution/calibration/schemas.ts +121 -0
- package/src/execution/calibration/sse-events.ts +125 -0
- package/src/execution/calibration/types.ts +190 -0
- package/src/execution/core/__tests__/api-schemas.test.ts +667 -0
- package/src/execution/core/__tests__/archived-logs.test.ts +72 -0
- package/src/execution/core/api-schemas.ts +312 -0
- package/src/execution/core/index.ts +11 -0
- package/src/execution/core/resource-validator.test.ts +63 -0
- package/src/execution/core/runner-types.ts +80 -0
- package/src/execution/core/server/environment.ts +31 -0
- package/src/execution/core/sse-executions.ts +119 -0
- package/src/execution/core/types.ts +29 -0
- package/src/execution/engine/__tests__/fixtures/index.ts +2 -0
- package/src/execution/engine/__tests__/fixtures/mock-scenarios.ts +60 -0
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +85 -0
- package/src/execution/engine/__tests__/integration/agent-framework.integration.test.ts +1031 -0
- package/src/execution/engine/__tests__/timeout.test.ts +565 -0
- package/src/execution/engine/agent/__tests__/errors.test.ts +508 -0
- package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -0
- package/src/execution/engine/agent/actions/executor.ts +205 -0
- package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -0
- package/src/execution/engine/agent/actions/processor.ts +116 -0
- package/src/execution/engine/agent/actions/types.ts +70 -0
- package/src/execution/engine/agent/core/__tests__/agent.test.ts +614 -0
- package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +134 -0
- package/src/execution/engine/agent/core/agent.ts +810 -0
- package/src/execution/engine/agent/core/types.ts +155 -0
- package/src/execution/engine/agent/errors.ts +251 -0
- package/src/execution/engine/agent/index.ts +78 -0
- package/src/execution/engine/agent/knowledge-map/__tests__/navigate-knowledge-executor.test.ts +580 -0
- package/src/execution/engine/agent/knowledge-map/__tests__/utils.test.ts +622 -0
- package/src/execution/engine/agent/knowledge-map/types.ts +106 -0
- package/src/execution/engine/agent/knowledge-map/utils.ts +101 -0
- package/src/execution/engine/agent/memory/__tests__/domains.test.ts +72 -0
- package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -0
- package/src/execution/engine/agent/memory/__tests__/utils.test.ts +285 -0
- package/src/execution/engine/agent/memory/domains.ts +99 -0
- package/src/execution/engine/agent/memory/manager.ts +365 -0
- package/src/execution/engine/agent/memory/processor.ts +66 -0
- package/src/execution/engine/agent/memory/types.ts +90 -0
- package/src/execution/engine/agent/memory/utils.ts +134 -0
- package/src/execution/engine/agent/observability/logging.ts +467 -0
- package/src/execution/engine/agent/observability/types.ts +64 -0
- package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +209 -0
- package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -0
- package/src/execution/engine/agent/reasoning/processor.ts +92 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/security.ts +32 -0
- package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -0
- package/src/execution/engine/agent/reasoning/request-builder.ts +169 -0
- package/src/execution/engine/agent/reasoning/types.ts +18 -0
- package/src/execution/engine/base/__tests__/errors.test.ts +246 -0
- package/src/execution/engine/base/__tests__/serialization.test.ts +670 -0
- package/src/execution/engine/base/__tests__/utils.test.ts +45 -0
- package/src/execution/engine/base/errors.ts +118 -0
- package/src/execution/engine/base/index.ts +2 -0
- package/src/execution/engine/base/logging.ts +31 -0
- package/src/execution/engine/base/serialization.ts +324 -0
- package/src/execution/engine/base/types.ts +126 -0
- package/src/execution/engine/base/utils.ts +41 -0
- package/src/execution/engine/index.ts +440 -0
- package/src/execution/engine/interface/index.ts +1 -0
- package/src/execution/engine/interface/types.ts +62 -0
- package/src/execution/engine/llm/__tests__/errors.test.ts +318 -0
- package/src/execution/engine/llm/__tests__/input-sanitizer.test.ts +286 -0
- package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -0
- package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -0
- package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -0
- package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -0
- package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -0
- package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -0
- package/src/execution/engine/llm/adapters/__tests__/circuit-breaker-error.test.ts +94 -0
- package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -0
- package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -0
- package/src/execution/engine/llm/adapters/__tests__/mock-adapter.test.ts +432 -0
- package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -0
- package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -0
- package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -0
- package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -0
- package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -0
- package/src/execution/engine/llm/adapters/index.ts +17 -0
- package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -0
- package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -0
- package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -0
- package/src/execution/engine/llm/adapters/server/compose-signal.ts +18 -0
- package/src/execution/engine/llm/adapters/server/google.ts +283 -0
- package/src/execution/engine/llm/adapters/server/index.ts +12 -0
- package/src/execution/engine/llm/adapters/server/openai.ts +206 -0
- package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -0
- package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -0
- package/src/execution/engine/llm/errors.ts +186 -0
- package/src/execution/engine/llm/input-sanitizer.ts +129 -0
- package/src/execution/engine/llm/model-info.ts +332 -0
- package/src/execution/engine/llm/response-schema-validator.ts +113 -0
- package/src/execution/engine/llm/types.ts +86 -0
- package/src/execution/engine/test-utils/index.ts +6 -0
- package/src/execution/engine/test-utils/mocks.ts +56 -0
- package/src/execution/engine/tools/__tests__/tooling-error.test.ts +265 -0
- package/src/execution/engine/tools/__tests__/types.test.ts +47 -0
- package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -0
- package/src/execution/engine/tools/integration/index.ts +53 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -0
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -0
- package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +362 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/README.md +632 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +186 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +338 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +147 -0
- package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/__tests__/dropbox-adapter.test.ts +409 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/dropbox-adapter.ts +281 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/dropbox-tools.ts +106 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/create-folder/__tests__/index.test.ts +451 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/create-folder/index.ts +114 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/upload-file/__tests__/index.test.ts +415 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/upload-file/index.ts +111 -0
- package/src/execution/engine/tools/integration/server/adapters/dropbox/index.ts +25 -0
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -0
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -0
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -0
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -0
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -0
- package/src/execution/engine/tools/integration/server/adapters/resend/types.ts +44 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/utils/types.ts +246 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/index.ts +38 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-adapter.ts +87 -0
- package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +179 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/index.ts +44 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -0
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -0
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -0
- package/src/execution/engine/tools/integration/server/index.ts +61 -0
- package/src/execution/engine/tools/integration/service.ts +161 -0
- package/src/execution/engine/tools/integration/tool.ts +253 -0
- package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -0
- package/src/execution/engine/tools/integration/types/apify.ts +92 -0
- package/src/execution/engine/tools/integration/types/attio.ts +354 -0
- package/src/execution/engine/tools/integration/types/dropbox.ts +64 -0
- package/src/execution/engine/tools/integration/types/gmail.ts +35 -0
- package/src/execution/engine/tools/integration/types/google-sheets.ts +303 -0
- package/src/execution/engine/tools/integration/types/index.ts +19 -0
- package/src/execution/engine/tools/integration/types/instantly.ts +557 -0
- package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -0
- package/src/execution/engine/tools/integration/types/resend.ts +63 -0
- package/src/execution/engine/tools/integration/types/signature-api.ts +164 -0
- package/src/execution/engine/tools/integration/types/stripe.ts +162 -0
- package/src/execution/engine/tools/integration/types/tomba.ts +94 -0
- package/src/execution/engine/tools/lead-service-types.ts +884 -0
- package/src/execution/engine/tools/llm/index.ts +11 -0
- package/src/execution/engine/tools/llm/server/index.ts +8 -0
- package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -0
- package/src/execution/engine/tools/platform/__tests__/approval.test.ts +242 -0
- package/src/execution/engine/tools/platform/__tests__/email.test.ts +482 -0
- package/src/execution/engine/tools/platform/__tests__/hitl-cancel.test.ts +97 -0
- package/src/execution/engine/tools/platform/__tests__/notification.test.ts +208 -0
- package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -0
- package/src/execution/engine/tools/platform/__tests__/scheduler.test.ts +189 -0
- package/src/execution/engine/tools/platform/__tests__/schedules.test.ts +336 -0
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -0
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -0
- package/src/execution/engine/tools/platform/acquisition/index.ts +43 -0
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -0
- package/src/execution/engine/tools/platform/acquisition/types.ts +260 -0
- package/src/execution/engine/tools/platform/approval/cancel-by-metadata.ts +65 -0
- package/src/execution/engine/tools/platform/approval/index.ts +4 -0
- package/src/execution/engine/tools/platform/approval/tool.ts +99 -0
- package/src/execution/engine/tools/platform/email/index.ts +122 -0
- package/src/execution/engine/tools/platform/email/types.ts +96 -0
- package/src/execution/engine/tools/platform/index.ts +181 -0
- package/src/execution/engine/tools/platform/notification.ts +81 -0
- package/src/execution/engine/tools/platform/pdf/index.ts +110 -0
- package/src/execution/engine/tools/platform/pdf/types.ts +77 -0
- package/src/execution/engine/tools/platform/resource-invocation/__tests__/edge-cases.test.ts +507 -0
- package/src/execution/engine/tools/platform/resource-invocation/__tests__/resource-invocation-service.test.ts +500 -0
- package/src/execution/engine/tools/platform/resource-invocation/__tests__/tool.test.ts +555 -0
- package/src/execution/engine/tools/platform/resource-invocation/dynamic-tool.ts +94 -0
- package/src/execution/engine/tools/platform/resource-invocation/index.ts +14 -0
- package/src/execution/engine/tools/platform/resource-invocation/resource-invocation-service.ts +147 -0
- package/src/execution/engine/tools/platform/resource-invocation/tool.ts +115 -0
- package/src/execution/engine/tools/platform/resource-invocation/types.ts +31 -0
- package/src/execution/engine/tools/platform/scheduler.ts +87 -0
- package/src/execution/engine/tools/platform/schedules/cancel-by-key-tool.ts +48 -0
- package/src/execution/engine/tools/platform/schedules/cancel-by-metadata-tool.ts +42 -0
- package/src/execution/engine/tools/platform/schedules/delete-by-key-tool.ts +43 -0
- package/src/execution/engine/tools/platform/schedules/index.ts +13 -0
- package/src/execution/engine/tools/platform/schedules/list-tool.ts +56 -0
- package/src/execution/engine/tools/platform/schedules/types.ts +88 -0
- package/src/execution/engine/tools/platform/storage/__tests__/storage.test.ts +998 -0
- package/src/execution/engine/tools/platform/storage/index.ts +370 -0
- package/src/execution/engine/tools/platform/storage/types.ts +128 -0
- package/src/execution/engine/tools/platform/types.ts +148 -0
- package/src/execution/engine/tools/registry.ts +590 -0
- package/src/execution/engine/tools/tool-maps.ts +694 -0
- package/src/execution/engine/tools/types.ts +233 -0
- package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -0
- package/src/execution/engine/workflow/__tests__/utils.test.ts +645 -0
- package/src/execution/engine/workflow/__tests__/workflow.test.ts +818 -0
- package/src/execution/engine/workflow/errors.ts +63 -0
- package/src/execution/engine/workflow/helpers/index.ts +11 -0
- package/src/execution/engine/workflow/helpers/server/index.ts +8 -0
- package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -0
- package/src/execution/engine/workflow/index.ts +19 -0
- package/src/execution/engine/workflow/log-truncate.ts +26 -0
- package/src/execution/engine/workflow/logging.ts +191 -0
- package/src/execution/engine/workflow/types.ts +183 -0
- package/src/execution/engine/workflow/utils.ts +280 -0
- package/src/execution/engine/workflow/workflow.ts +168 -0
- package/src/execution/index.ts +20 -0
- package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -0
- package/src/execution/scheduler/__tests__/retry.test.ts +37 -0
- package/src/execution/scheduler/__tests__/utils.test.ts +1009 -0
- package/src/execution/scheduler/api-schemas.ts +296 -0
- package/src/execution/scheduler/index.ts +50 -0
- package/src/execution/scheduler/schemas.ts +264 -0
- package/src/execution/scheduler/types.ts +111 -0
- package/src/execution/scheduler/utils.ts +364 -0
- package/src/forms/index.ts +7 -0
- package/src/forms/schemas.test.ts +113 -0
- package/src/forms/schemas.ts +69 -0
- package/src/forms/types.ts +70 -0
- package/src/index.ts +54 -0
- package/src/integrations/credentials/__tests__/api-schemas.test.ts +496 -0
- package/src/integrations/credentials/__tests__/schemas.test.ts +82 -0
- package/src/integrations/credentials/__tests__/utils.test.ts +144 -0
- package/src/integrations/credentials/api-schemas.ts +143 -0
- package/src/integrations/credentials/index.ts +32 -0
- package/src/integrations/credentials/schemas.ts +164 -0
- package/src/integrations/credentials/utils.ts +59 -0
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -0
- package/src/integrations/oauth/api-schemas.ts +92 -0
- package/src/integrations/oauth/index.ts +19 -0
- package/src/integrations/oauth/provider-registry.ts +61 -0
- package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -0
- package/src/integrations/oauth/server/__tests__/refresh.integration.test.ts +257 -0
- package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -0
- package/src/integrations/oauth/server/credentials.ts +39 -0
- package/src/integrations/oauth/server/refresh.ts +214 -0
- package/src/integrations/oauth/types.ts +34 -0
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -0
- package/src/integrations/webhook-endpoints/api-schemas.ts +102 -0
- package/src/integrations/webhook-endpoints/index.ts +28 -0
- package/src/integrations/webhook-endpoints/types.ts +51 -0
- package/src/operations/activities/api-schemas.ts +79 -0
- package/src/operations/activities/index.ts +9 -0
- package/src/operations/activities/sse-events.ts +30 -0
- package/src/operations/activities/types.ts +63 -0
- package/src/operations/debug-logs/client.ts +60 -0
- package/src/operations/debug-logs/debug-logger.ts +83 -0
- package/src/operations/debug-logs/index.ts +8 -0
- package/src/operations/debug-logs/server.ts +19 -0
- package/src/operations/debug-logs/types.ts +33 -0
- package/src/operations/index.ts +50 -0
- package/src/operations/notifications/__tests__/api-schemas.test.ts +216 -0
- package/src/operations/notifications/api-schemas.ts +91 -0
- package/src/operations/notifications/index.ts +3 -0
- package/src/operations/notifications/sse-events.ts +21 -0
- package/src/operations/notifications/types.ts +47 -0
- package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -0
- package/src/operations/observability/__tests__/schemas.test.ts +151 -0
- package/src/operations/observability/__tests__/types.test.ts +109 -0
- package/src/operations/observability/__tests__/utils.test.ts +54 -0
- package/src/operations/observability/ai-usage-collector.ts +64 -0
- package/src/operations/observability/index.ts +13 -0
- package/src/operations/observability/metrics-collector.ts +49 -0
- package/src/operations/observability/schemas.ts +39 -0
- package/src/operations/observability/types.ts +463 -0
- package/src/operations/observability/utils.ts +77 -0
- package/src/operations/sessions/__tests__/api-schemas.test.ts +361 -0
- package/src/operations/sessions/__tests__/manager.test.ts +821 -0
- package/src/operations/sessions/api-schemas.ts +166 -0
- package/src/operations/sessions/index.ts +26 -0
- package/src/operations/sessions/server/manager.ts +90 -0
- package/src/operations/sessions/server/session.ts +180 -0
- package/src/operations/sessions/types.ts +98 -0
- package/src/operations/triggers/index.ts +12 -0
- package/src/operations/triggers/webhook/definitions/__tests__/instantly-reply-received.test.ts +72 -0
- package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -0
- package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -0
- package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -0
- package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -0
- package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -0
- package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -0
- package/src/operations/triggers/webhook/index.ts +35 -0
- package/src/operations/triggers/webhook/types.ts +74 -0
- package/src/organization-model/README.md +79 -0
- package/src/organization-model/__tests__/graph.test.ts +250 -0
- package/src/organization-model/__tests__/resolve.test.ts +47 -0
- package/src/organization-model/defaults.ts +60 -0
- package/src/organization-model/domains/branding.ts +22 -0
- package/src/organization-model/domains/crm.ts +46 -0
- package/src/organization-model/domains/delivery.ts +48 -0
- package/src/organization-model/domains/features.ts +57 -0
- package/src/organization-model/domains/lead-gen.ts +33 -0
- package/src/organization-model/domains/navigation.ts +103 -0
- package/src/organization-model/domains/shared.ts +42 -0
- package/src/organization-model/graph/build.ts +432 -0
- package/src/organization-model/graph/index.ts +4 -0
- package/src/organization-model/graph/schema.ts +50 -0
- package/src/organization-model/graph/types.ts +52 -0
- package/src/organization-model/index.ts +11 -0
- package/src/organization-model/published.ts +18 -0
- package/src/organization-model/resolve.ts +42 -0
- package/src/organization-model/schema.ts +21 -0
- package/src/organization-model/types.ts +27 -0
- package/src/platform/api/index.ts +1 -0
- package/src/platform/api/types.ts +35 -0
- package/src/platform/constants/http.ts +37 -0
- package/src/platform/constants/index.ts +5 -0
- package/src/platform/constants/limits.ts +32 -0
- package/src/platform/constants/resilience.ts +51 -0
- package/src/platform/constants/timeouts.ts +20 -0
- package/src/platform/constants/versions.ts +3 -0
- package/src/platform/index.ts +27 -0
- package/src/platform/registry/__tests__/command-view.test.ts +410 -0
- package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -0
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1004 -0
- package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -0
- package/src/platform/registry/__tests__/resource-registry.test.ts +1942 -0
- package/src/platform/registry/__tests__/serialization.test.ts +1127 -0
- package/src/platform/registry/__tests__/validation.test.ts +1086 -0
- package/src/platform/registry/command-view.ts +180 -0
- package/src/platform/registry/domains.ts +165 -0
- package/src/platform/registry/index.ts +93 -0
- package/src/platform/registry/reserved.ts +24 -0
- package/src/platform/registry/resource-metadata.ts +59 -0
- package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -0
- package/src/platform/registry/resource-registry.ts +788 -0
- package/src/platform/registry/serialization.ts +273 -0
- package/src/platform/registry/serialized-types.ts +231 -0
- package/src/platform/registry/stats-types.ts +66 -0
- package/src/platform/registry/types.ts +404 -0
- package/src/platform/registry/validation.ts +513 -0
- package/src/platform/resilience/__tests__/circuit-breaker.test.ts +291 -0
- package/src/platform/resilience/__tests__/http-error-mapper.test.ts +173 -0
- package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -0
- package/src/platform/resilience/__tests__/retry.test.ts +380 -0
- package/src/platform/resilience/__tests__/timeout.test.ts +219 -0
- package/src/platform/resilience/circuit-breaker.ts +164 -0
- package/src/platform/resilience/errors.ts +68 -0
- package/src/platform/resilience/http-error-mapper.ts +129 -0
- package/src/platform/resilience/index.ts +93 -0
- package/src/platform/resilience/rate-limiter-types.ts +46 -0
- package/src/platform/resilience/rate-limiter.ts +140 -0
- package/src/platform/resilience/retry.ts +89 -0
- package/src/platform/resilience/timeout.ts +63 -0
- package/src/platform/sse/events.ts +67 -0
- package/src/platform/sse/index.ts +7 -0
- package/src/platform/utils/__tests__/currency.test.ts +77 -0
- package/src/platform/utils/__tests__/validation.test.ts +1083 -0
- package/src/platform/utils/currency.ts +96 -0
- package/src/platform/utils/debounce.ts +52 -0
- package/src/platform/utils/error.ts +42 -0
- package/src/platform/utils/hmac.test.ts +97 -0
- package/src/platform/utils/index.ts +32 -0
- package/src/platform/utils/server/betterstack-logger.ts +210 -0
- package/src/platform/utils/server/hmac.ts +44 -0
- package/src/platform/utils/server/unsubscribe.ts +111 -0
- package/src/platform/utils/token-counter.ts +96 -0
- package/src/platform/utils/validation.ts +425 -0
- package/src/projects/api-schemas.ts +265 -0
- package/src/published.ts +1 -0
- package/src/server.ts +273 -0
- package/src/supabase/__tests__/helpers.test.ts +51 -0
- package/src/supabase/database.types.ts +2674 -0
- package/src/supabase/helpers.ts +20 -0
- package/src/supabase/index.ts +52 -0
- package/src/supabase/server/client.ts +58 -0
- package/src/test-utils/README.md +150 -0
- package/src/test-utils/browser-mocks.ts +54 -0
- package/src/test-utils/fixtures/api-keys.ts +52 -0
- package/src/test-utils/fixtures/index.ts +4 -0
- package/src/test-utils/fixtures/memberships.ts +80 -0
- package/src/test-utils/fixtures/organizations.ts +69 -0
- package/src/test-utils/fixtures/users.ts +79 -0
- package/src/test-utils/index.ts +11 -0
- package/src/test-utils/mocks/index.ts +2 -0
- package/src/test-utils/mocks/supabase.ts +142 -0
- package/src/test-utils/mocks/workos.ts +108 -0
- package/src/test-utils/rls/RLSTestContext.ts +586 -0
- package/src/test-utils/rls/index.ts +1 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { z } from 'zod'
|
|
3
|
+
import { convertContractToJson } from '../utils'
|
|
4
|
+
import type { ContractStructure as _ContractStructure } from '../types'
|
|
5
|
+
|
|
6
|
+
describe('convertContractToJson', () => {
|
|
7
|
+
|
|
8
|
+
it('handles complex nested schemas', () => {
|
|
9
|
+
const inputSchema = z.object({
|
|
10
|
+
user: z.object({
|
|
11
|
+
name: z.string(),
|
|
12
|
+
age: z.number(),
|
|
13
|
+
tags: z.array(z.string())
|
|
14
|
+
}),
|
|
15
|
+
metadata: z.record(z.string(), z.unknown())
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const outputSchema = z.object({
|
|
19
|
+
success: z.boolean(),
|
|
20
|
+
data: z.object({
|
|
21
|
+
userId: z.string(),
|
|
22
|
+
createdAt: z.string()
|
|
23
|
+
}).optional()
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
const result = convertContractToJson(inputSchema, outputSchema, 'complex-workflow')
|
|
27
|
+
|
|
28
|
+
// Verify structure is created with correct definition names
|
|
29
|
+
const inputJsonSchema = result.inputSchema as Record<string, unknown>
|
|
30
|
+
const outputJsonSchema = result.outputSchema as Record<string, unknown>
|
|
31
|
+
|
|
32
|
+
expect((inputJsonSchema as { $ref: string }).$ref).toBe('#/definitions/complex-workflow-input')
|
|
33
|
+
expect((outputJsonSchema as { $ref: string }).$ref).toBe('#/definitions/complex-workflow-output')
|
|
34
|
+
|
|
35
|
+
// Verify nested properties exist in JSON Schema definitions
|
|
36
|
+
const inputDef = (inputJsonSchema.definitions as Record<string, unknown>)['complex-workflow-input'] as Record<string, unknown>
|
|
37
|
+
expect(inputDef.properties).toHaveProperty('user')
|
|
38
|
+
expect(inputDef.properties).toHaveProperty('metadata')
|
|
39
|
+
|
|
40
|
+
const outputDef = (outputJsonSchema.definitions as Record<string, unknown>)['complex-workflow-output'] as Record<string, unknown>
|
|
41
|
+
expect(outputDef.properties).toHaveProperty('success')
|
|
42
|
+
expect(outputDef.properties).toHaveProperty('data')
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
})
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error categories for observability grouping and classification.
|
|
3
|
+
* Used to categorize errors in the execution_errors table metadata.
|
|
4
|
+
*/
|
|
5
|
+
export type ExecutionErrorCategory = 'llm' | 'tool' | 'workflow' | 'agent' | 'validation' | 'system'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Abstract base class for all execution engine errors.
|
|
9
|
+
* Enforces contract for execution_errors table insertion with explicit type,
|
|
10
|
+
* severity, category, and context properties.
|
|
11
|
+
*
|
|
12
|
+
* All execution engine errors MUST extend this class to ensure proper error
|
|
13
|
+
* tracking and observability in the execution_errors table.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* export class MyExecutionError extends ExecutionError {
|
|
18
|
+
* readonly type = 'my_execution_error' as const
|
|
19
|
+
* readonly severity = 'warning' as const
|
|
20
|
+
* readonly category = 'workflow' as const
|
|
21
|
+
*
|
|
22
|
+
* constructor(message: string, context?: Record<string, unknown>) {
|
|
23
|
+
* super(message, context)
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export abstract class ExecutionError extends Error {
|
|
29
|
+
/**
|
|
30
|
+
* Error type identifier for execution_errors table.
|
|
31
|
+
* Should be a unique, snake_case string that identifies this specific error class.
|
|
32
|
+
* Used for filtering, aggregation, and error-specific handling in observability systems.
|
|
33
|
+
*/
|
|
34
|
+
abstract readonly type: string
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Error severity level for execution_errors table.
|
|
38
|
+
* - critical: System failures, auth issues, resource exhaustion - execution cannot continue
|
|
39
|
+
* - warning: Transient failures, configuration errors - execution may retry or requires user correction
|
|
40
|
+
* - info: Validation failures, expected user errors - user/developer action needed
|
|
41
|
+
*/
|
|
42
|
+
abstract readonly severity: 'critical' | 'warning' | 'info'
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Error category for observability grouping.
|
|
46
|
+
* Used to categorize errors in dashboards and analytics.
|
|
47
|
+
*/
|
|
48
|
+
abstract readonly category: ExecutionErrorCategory
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Additional context/metadata for the error.
|
|
52
|
+
* Stored in execution_errors.metadata JSONB column.
|
|
53
|
+
*/
|
|
54
|
+
public readonly context?: Record<string, unknown>
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @param message - Human-readable error message
|
|
58
|
+
* @param context - Additional context/metadata for observability
|
|
59
|
+
*/
|
|
60
|
+
constructor(message: string, context?: Record<string, unknown>) {
|
|
61
|
+
super(message)
|
|
62
|
+
this.name = this.constructor.name
|
|
63
|
+
this.context = context
|
|
64
|
+
|
|
65
|
+
// Maintain proper stack trace for where our error was thrown
|
|
66
|
+
if (Error.captureStackTrace) {
|
|
67
|
+
Error.captureStackTrace(this, this.constructor)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Indicates whether this error type is retryable.
|
|
73
|
+
* Default: false (safe default - only retry when explicitly safe to do so)
|
|
74
|
+
*
|
|
75
|
+
* Subclasses should override to return true for retryable scenarios:
|
|
76
|
+
* - Network/infrastructure errors (exponential backoff)
|
|
77
|
+
* - Rate limiting (linear backoff)
|
|
78
|
+
* - Service availability (exponential backoff)
|
|
79
|
+
* - Circuit breaker (circuit breaker's own delay)
|
|
80
|
+
*
|
|
81
|
+
* DO NOT retry:
|
|
82
|
+
* - Authentication/authorization errors
|
|
83
|
+
* - Validation errors
|
|
84
|
+
* - Configuration errors
|
|
85
|
+
* - Resource exhaustion errors
|
|
86
|
+
*/
|
|
87
|
+
isRetryable(): boolean {
|
|
88
|
+
return false
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Unknown execution error - fallback for untyped errors
|
|
94
|
+
*
|
|
95
|
+
* Used when catching errors that are not ExecutionError instances.
|
|
96
|
+
* Preserves original error context for debugging while ensuring
|
|
97
|
+
* consistent error tracking in the execution_errors table.
|
|
98
|
+
*
|
|
99
|
+
* Severity: critical (unknown errors should be treated seriously until investigated)
|
|
100
|
+
*/
|
|
101
|
+
export class UnknownExecutionError extends ExecutionError {
|
|
102
|
+
readonly type = 'unknown_execution_error' as const
|
|
103
|
+
readonly severity = 'critical' as const
|
|
104
|
+
readonly category = 'system' as const
|
|
105
|
+
|
|
106
|
+
constructor(
|
|
107
|
+
message: string,
|
|
108
|
+
public readonly originalError?: unknown
|
|
109
|
+
) {
|
|
110
|
+
super(message, {
|
|
111
|
+
originalError: originalError instanceof Error ? {
|
|
112
|
+
name: originalError.name,
|
|
113
|
+
message: originalError.message,
|
|
114
|
+
stack: originalError.stack
|
|
115
|
+
} : originalError
|
|
116
|
+
})
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base execution logger for Execution Engine
|
|
3
|
+
*/
|
|
4
|
+
export type ExecutionLogLevel = 'debug' | 'info' | 'warn' | 'error'
|
|
5
|
+
|
|
6
|
+
// Import resource-specific contexts for the union type
|
|
7
|
+
import type { WorkflowLogContext } from '../workflow/logging'
|
|
8
|
+
import type { AgentLogContext } from '../agent/observability/logging'
|
|
9
|
+
|
|
10
|
+
// Union type for all contexts
|
|
11
|
+
export type LogContext = WorkflowLogContext | AgentLogContext
|
|
12
|
+
|
|
13
|
+
// Updated interface with consolidated context
|
|
14
|
+
export interface ExecutionLogMessage {
|
|
15
|
+
level: ExecutionLogLevel
|
|
16
|
+
message: string
|
|
17
|
+
timestamp: number
|
|
18
|
+
context?: LogContext
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface ExecutionLoggerConfig {
|
|
22
|
+
context?: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Logger interface - any logger implementation must satisfy this
|
|
26
|
+
export interface IExecutionLogger {
|
|
27
|
+
debug(message: string, context?: LogContext): void
|
|
28
|
+
info(message: string, context?: LogContext): void
|
|
29
|
+
warn(message: string, context?: LogContext): void
|
|
30
|
+
error(message: string, context?: LogContext): void
|
|
31
|
+
}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic serialization system for resource definitions
|
|
3
|
+
* Automatically handles Zod schemas, Maps, Sets, functions, and special types (Tools, KnowledgeMap)
|
|
4
|
+
*
|
|
5
|
+
* Replaces manual field extraction with automatic type detection and conversion.
|
|
6
|
+
* Used for API responses, CLI exports, and testing fixtures.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { zodToJsonSchema } from '@alcyone-labs/zod-to-json-schema'
|
|
10
|
+
import type { AgentDefinition } from '../agent/core/types'
|
|
11
|
+
import type { WorkflowDefinition, NextConfig } from '../workflow/types'
|
|
12
|
+
import { StepType } from '../workflow/types'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Serialization options for different use cases
|
|
16
|
+
*/
|
|
17
|
+
export interface SerializationOptions {
|
|
18
|
+
/** Redact secrets (apiKey, tokens, passwords) - Default: true */
|
|
19
|
+
redactSecrets?: boolean
|
|
20
|
+
/** Include tool schemas in serialized tools - Default: true */
|
|
21
|
+
includeToolSchemas?: boolean
|
|
22
|
+
/** Include knowledge map metadata - Default: true */
|
|
23
|
+
includeKnowledgeMap?: boolean
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Internal serialization context (includes circular reference tracking)
|
|
28
|
+
*/
|
|
29
|
+
interface SerializationContext extends Required<SerializationOptions> {
|
|
30
|
+
/** Circular reference protection via WeakSet */
|
|
31
|
+
visited: WeakSet<object>
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Main entry point: Serialize any resource definition to JSON-safe format
|
|
36
|
+
*
|
|
37
|
+
* Automatically converts:
|
|
38
|
+
* - Zod schemas → JSON Schema
|
|
39
|
+
* - Maps → arrays with id field
|
|
40
|
+
* - Sets → arrays
|
|
41
|
+
* - Dates → ISO strings
|
|
42
|
+
* - Functions → removed
|
|
43
|
+
* - Secrets → redacted
|
|
44
|
+
*
|
|
45
|
+
* @param definition - Resource definition (AgentDefinition or WorkflowDefinition)
|
|
46
|
+
* @param options - Serialization options
|
|
47
|
+
* @returns JSON-serializable object
|
|
48
|
+
*/
|
|
49
|
+
export function serializeDefinition(
|
|
50
|
+
definition: AgentDefinition | WorkflowDefinition,
|
|
51
|
+
options?: SerializationOptions
|
|
52
|
+
): any {
|
|
53
|
+
const opts: Required<SerializationOptions> = {
|
|
54
|
+
redactSecrets: true,
|
|
55
|
+
includeToolSchemas: true,
|
|
56
|
+
includeKnowledgeMap: true,
|
|
57
|
+
...options
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const context: SerializationContext = {
|
|
61
|
+
...opts,
|
|
62
|
+
visited: new WeakSet()
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return deepSerialize(definition, context)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Recursive serialization with type detection
|
|
70
|
+
* Handles all special types and delegates to specialized handlers
|
|
71
|
+
*/
|
|
72
|
+
function deepSerialize(value: any, ctx: SerializationContext): any {
|
|
73
|
+
// Primitives & null/undefined
|
|
74
|
+
if (value === null || value === undefined) return value
|
|
75
|
+
if (typeof value !== 'object') return value
|
|
76
|
+
|
|
77
|
+
// Zod schemas are leaf values — always convert (no circular tracking needed)
|
|
78
|
+
if (isZodSchema(value)) return convertZodToJsonSchema(value)
|
|
79
|
+
|
|
80
|
+
// Circular reference check (for non-leaf objects only)
|
|
81
|
+
if (ctx.visited.has(value)) {
|
|
82
|
+
return { __circular: true }
|
|
83
|
+
}
|
|
84
|
+
ctx.visited.add(value)
|
|
85
|
+
if (value instanceof Map) return convertMapToArray(value, ctx)
|
|
86
|
+
if (value instanceof Set) return convertSetToArray(value, ctx)
|
|
87
|
+
if (value instanceof Date) return value.toISOString()
|
|
88
|
+
if (typeof value === 'function') return undefined // Remove functions
|
|
89
|
+
|
|
90
|
+
// Arrays
|
|
91
|
+
if (Array.isArray(value)) {
|
|
92
|
+
return value.map((item) => deepSerialize(item, ctx)).filter((item) => item !== undefined)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Objects - special handling for known types
|
|
96
|
+
if (isToolObject(value)) return serializeTool(value, ctx)
|
|
97
|
+
if (isKnowledgeMapObject(value)) return serializeKnowledgeMap(value, ctx)
|
|
98
|
+
if (isNextConfigObject(value)) return serializeNextConfig(value, ctx)
|
|
99
|
+
|
|
100
|
+
// Generic object recursion
|
|
101
|
+
return serializeObject(value, ctx)
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Serialize generic object (recursively process all properties)
|
|
106
|
+
* Handles secret redaction and function removal
|
|
107
|
+
*/
|
|
108
|
+
function serializeObject(obj: any, ctx: SerializationContext): any {
|
|
109
|
+
const result: any = {}
|
|
110
|
+
|
|
111
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
112
|
+
if (typeof val === 'function') continue
|
|
113
|
+
|
|
114
|
+
// Redact secrets
|
|
115
|
+
if (ctx.redactSecrets && isSecretKey(key)) {
|
|
116
|
+
result[key] = redactSecret(val)
|
|
117
|
+
continue
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Record-based steps → array format (backward compat with Map-based steps)
|
|
121
|
+
if (key === 'steps' && isWorkflowStepsRecord(val)) {
|
|
122
|
+
result[key] = convertRecordToArray(val as Record<string, any>, ctx)
|
|
123
|
+
continue
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Recurse
|
|
127
|
+
const serialized = deepSerialize(val, ctx)
|
|
128
|
+
if (serialized !== undefined) {
|
|
129
|
+
result[key] = serialized
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return result
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Serialize Tool object
|
|
138
|
+
* Extracts name, description, and optional schemas
|
|
139
|
+
*/
|
|
140
|
+
function serializeTool(tool: any, ctx: SerializationContext): any {
|
|
141
|
+
const result: any = {
|
|
142
|
+
name: tool.name,
|
|
143
|
+
description: tool.description
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Include schemas if requested
|
|
147
|
+
if (ctx.includeToolSchemas && tool.inputSchema) {
|
|
148
|
+
result.inputSchema = deepSerialize(tool.inputSchema, ctx)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (ctx.includeToolSchemas && tool.outputSchema) {
|
|
152
|
+
result.outputSchema = deepSerialize(tool.outputSchema, ctx)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// execute function automatically omitted (typeof === 'function')
|
|
156
|
+
|
|
157
|
+
return result
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Serialize KnowledgeMap object
|
|
162
|
+
* Extracts node metadata without content or file paths
|
|
163
|
+
*/
|
|
164
|
+
function serializeKnowledgeMap(km: any, ctx: SerializationContext): any {
|
|
165
|
+
if (!ctx.includeKnowledgeMap) return undefined
|
|
166
|
+
|
|
167
|
+
// Handle nodes field (Record<string, KnowledgeNode>)
|
|
168
|
+
const nodes = km.nodes || {}
|
|
169
|
+
const nodeEntries = Object.entries(nodes).map(([id, node]: [string, any]) => ({
|
|
170
|
+
id,
|
|
171
|
+
description: node.description,
|
|
172
|
+
loaded: node.loaded || false,
|
|
173
|
+
hasPrompt: Boolean(node.prompt)
|
|
174
|
+
// load function automatically omitted
|
|
175
|
+
// prompt content omitted (too large for structure metadata)
|
|
176
|
+
}))
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
nodeCount: nodeEntries.length,
|
|
180
|
+
nodes: nodeEntries
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Serialize NextConfig object
|
|
186
|
+
* Strips non-serializable condition functions while preserving route structure
|
|
187
|
+
*/
|
|
188
|
+
function serializeNextConfig(nextConfig: NextConfig, _context: SerializationContext): any {
|
|
189
|
+
if (!nextConfig) return null
|
|
190
|
+
|
|
191
|
+
// Handle linear next (simple target)
|
|
192
|
+
if (nextConfig.type === StepType.LINEAR) {
|
|
193
|
+
return {
|
|
194
|
+
type: nextConfig.type,
|
|
195
|
+
target: nextConfig.target
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Handle conditional next (strip condition functions)
|
|
200
|
+
if (nextConfig.type === StepType.CONDITIONAL) {
|
|
201
|
+
return {
|
|
202
|
+
type: nextConfig.type,
|
|
203
|
+
routes:
|
|
204
|
+
nextConfig.routes?.map((route) => ({
|
|
205
|
+
// Strip condition function, keep only target
|
|
206
|
+
target: route.target
|
|
207
|
+
})) ?? [],
|
|
208
|
+
default: nextConfig.default
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return null
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Convert Map to array with id field
|
|
217
|
+
*/
|
|
218
|
+
function convertMapToArray(map: Map<any, any>, ctx: SerializationContext): any[] {
|
|
219
|
+
return Array.from(map.entries()).map(([key, val]) => ({
|
|
220
|
+
id: key,
|
|
221
|
+
...deepSerialize(val, ctx)
|
|
222
|
+
}))
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Check if value is a Record of WorkflowStep objects (plain object with step-shaped values)
|
|
227
|
+
* Used to detect Record<string, WorkflowStep> after the Map-to-Record refactor
|
|
228
|
+
*/
|
|
229
|
+
function isWorkflowStepsRecord(value: any): boolean {
|
|
230
|
+
if (!value || typeof value !== 'object' || Array.isArray(value) || value instanceof Map || value instanceof Set) {
|
|
231
|
+
return false
|
|
232
|
+
}
|
|
233
|
+
const entries = Object.values(value)
|
|
234
|
+
if (entries.length === 0) return false
|
|
235
|
+
// Check that at least the first entry looks like a WorkflowStep (has name + handler)
|
|
236
|
+
const first = entries[0] as any
|
|
237
|
+
return first && typeof first === 'object' && 'name' in first && 'handler' in first
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Convert Record<string, WorkflowStep> to array with id field
|
|
242
|
+
* Produces the same format as convertMapToArray for backward compatibility
|
|
243
|
+
*/
|
|
244
|
+
function convertRecordToArray(record: Record<string, any>, ctx: SerializationContext): any[] {
|
|
245
|
+
return Object.entries(record).map(([key, val]) => ({
|
|
246
|
+
id: key,
|
|
247
|
+
...deepSerialize(val, ctx)
|
|
248
|
+
}))
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Convert Set to array
|
|
253
|
+
*/
|
|
254
|
+
function convertSetToArray(set: Set<any>, ctx: SerializationContext): any[] {
|
|
255
|
+
return Array.from(set).map((v) => deepSerialize(v, ctx))
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Convert Zod schema to JSON Schema
|
|
260
|
+
* Reuses existing utility function
|
|
261
|
+
*/
|
|
262
|
+
function convertZodToJsonSchema(schema: any): any {
|
|
263
|
+
return zodToJsonSchema(schema, {
|
|
264
|
+
$refStrategy: 'none',
|
|
265
|
+
errorMessages: true
|
|
266
|
+
})
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Type guard: Check if value is a Zod schema
|
|
271
|
+
*/
|
|
272
|
+
function isZodSchema(value: any): boolean {
|
|
273
|
+
return value && typeof value === 'object' && '_def' in value && 'parse' in value
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Type guard: Check if value is a Tool object
|
|
278
|
+
*/
|
|
279
|
+
function isToolObject(value: any): boolean {
|
|
280
|
+
return value && typeof value === 'object' && 'name' in value && 'description' in value && 'execute' in value
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Type guard: Check if value is a KnowledgeMap object
|
|
285
|
+
*/
|
|
286
|
+
function isKnowledgeMapObject(value: any): boolean {
|
|
287
|
+
return value && typeof value === 'object' && 'nodes' in value && typeof value.nodes === 'object'
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Type guard: Check if value is a NextConfig object
|
|
292
|
+
*/
|
|
293
|
+
function isNextConfigObject(value: any): boolean {
|
|
294
|
+
return (
|
|
295
|
+
value &&
|
|
296
|
+
typeof value === 'object' &&
|
|
297
|
+
'type' in value &&
|
|
298
|
+
(value.type === StepType.LINEAR || value.type === StepType.CONDITIONAL)
|
|
299
|
+
)
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Check if key name indicates secret data
|
|
304
|
+
*/
|
|
305
|
+
function isSecretKey(key: string): boolean {
|
|
306
|
+
const lower = key.toLowerCase()
|
|
307
|
+
|
|
308
|
+
// Whitelist: keys that contain "token" but are not secrets
|
|
309
|
+
const whitelist = ['maxtokens', 'memorytokens', 'inputtokens', 'outputtokens']
|
|
310
|
+
if (whitelist.some((w) => lower.includes(w))) return false
|
|
311
|
+
|
|
312
|
+
const patterns = ['apikey', 'secret', 'password', 'token', 'credential']
|
|
313
|
+
return patterns.some((p) => lower.includes(p))
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Redact secret value while preserving prefix
|
|
318
|
+
* Example: 'sk-proj-abc123...' → 'sk-proj...'
|
|
319
|
+
*/
|
|
320
|
+
function redactSecret(value: any): string {
|
|
321
|
+
if (typeof value !== 'string') return '[REDACTED]'
|
|
322
|
+
if (value.length <= 7) return '[REDACTED]'
|
|
323
|
+
return value.substring(0, 7) + '...'
|
|
324
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Execution Engine type definitions
|
|
3
|
+
* Core types shared across all Execution Engine resources
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { z } from 'zod'
|
|
7
|
+
import { IExecutionLogger } from './logging'
|
|
8
|
+
import type {
|
|
9
|
+
SerializedAgentDefinition,
|
|
10
|
+
SerializedWorkflowDefinition
|
|
11
|
+
} from '../../../platform/registry/serialized-types'
|
|
12
|
+
import type { AIUsageCollector } from '../../../operations/observability/ai-usage-collector'
|
|
13
|
+
import type { MetricsCollector } from '../../../operations/observability/metrics-collector'
|
|
14
|
+
import type { ResourceType, ResourceStatus, ExecutableResourceType } from '../../../platform/registry/types'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Immutable execution metadata
|
|
18
|
+
* Represents complete execution identity (who, what, when, where)
|
|
19
|
+
* Shared across ExecutionContext and ExecutionLoggerContext to eliminate field duplication
|
|
20
|
+
*/
|
|
21
|
+
export interface ExecutionMetadata {
|
|
22
|
+
executionId: string // Unique ID for this execution instance
|
|
23
|
+
organizationId: string // Required for multi-tenant isolation and security
|
|
24
|
+
organizationName: string // Required for resource lookup in registry
|
|
25
|
+
resourceId: string // Required for observability and audit trails
|
|
26
|
+
userId?: string // Optional: user context for audit trails (API keys, system executions may not have userId)
|
|
27
|
+
sessionId?: string // Optional: only for session executions
|
|
28
|
+
sessionTurnNumber?: number // Optional: only for session executions (maps to execution_logs.session_turn_number)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Unified message event type - covers all message types in sessions
|
|
33
|
+
* Replaces separate SessionTurnMessages and AgentActivityEvent mechanisms
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Structured action metadata attached to assistant messages.
|
|
37
|
+
* Frontend reads this instead of parsing text prefixes.
|
|
38
|
+
*/
|
|
39
|
+
export type AssistantAction =
|
|
40
|
+
| { kind: 'navigate'; path: string; reason: string }
|
|
41
|
+
| {
|
|
42
|
+
kind: 'update_filters'
|
|
43
|
+
timeRange: string | null
|
|
44
|
+
statusFilter: string | null
|
|
45
|
+
searchQuery: string | null
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export type MessageEvent =
|
|
49
|
+
// User/Assistant text messages
|
|
50
|
+
| { type: 'user_message'; text: string }
|
|
51
|
+
| { type: 'assistant_message'; text: string; _action?: AssistantAction }
|
|
52
|
+
|
|
53
|
+
// Agent lifecycle events
|
|
54
|
+
| { type: 'agent:started' }
|
|
55
|
+
| { type: 'agent:completed' }
|
|
56
|
+
| { type: 'agent:error'; error: string }
|
|
57
|
+
|
|
58
|
+
// Agent activity events (with metadata for UI)
|
|
59
|
+
| { type: 'agent:reasoning'; iteration: number; reasoning: string }
|
|
60
|
+
| { type: 'agent:tool_call'; toolName: string; args: Record<string, unknown> }
|
|
61
|
+
| { type: 'agent:tool_result'; toolName: string; success: boolean; result?: unknown; error?: string }
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Execution context for all resources
|
|
65
|
+
* Unified callback replaces SessionTurnMessages (removed)
|
|
66
|
+
*/
|
|
67
|
+
export interface ExecutionContext extends ExecutionMetadata {
|
|
68
|
+
// Inherited: executionId, organizationId, organizationName, resourceId, userId, sessionId, sessionTurnNumber
|
|
69
|
+
logger: IExecutionLogger // Required for observability and debugging
|
|
70
|
+
signal?: AbortSignal // Future: cancellation support for long-running operations
|
|
71
|
+
|
|
72
|
+
// Unified message event callback (immediate persistence + streaming)
|
|
73
|
+
onMessageEvent?: (event: MessageEvent) => Promise<void>
|
|
74
|
+
|
|
75
|
+
/** Called per iteration to write heartbeat + check stall status. Non-fatal if it throws. */
|
|
76
|
+
onHeartbeat?: () => Promise<void>
|
|
77
|
+
|
|
78
|
+
// Observability collectors (optional - injected by coordinators)
|
|
79
|
+
aiUsageCollector?: AIUsageCollector // Tracks AI token usage and costs
|
|
80
|
+
metricsCollector?: MetricsCollector // Tracks execution timing and ROI metrics
|
|
81
|
+
|
|
82
|
+
// Nested execution tracking (Wave 2c - Agent Resource Invocation)
|
|
83
|
+
parentExecutionId?: string // Parent execution ID for nested invocations
|
|
84
|
+
executionDepth: number // Nesting depth: 0 = top-level, 1+ = nested
|
|
85
|
+
|
|
86
|
+
// Integration credential tracking (for OAuth token refresh persistence)
|
|
87
|
+
credentialName?: string // Credential name used for current integration call
|
|
88
|
+
|
|
89
|
+
// Execution-scoped storage for large data (e.g., PDF buffers) that shouldn't be logged
|
|
90
|
+
// Automatically garbage collected when execution context ends
|
|
91
|
+
store: Map<string, unknown>
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Contract definition - validation schemas (Zod)
|
|
95
|
+
export interface Contract {
|
|
96
|
+
inputSchema: z.ZodSchema // Required - use z.object({}) for no input
|
|
97
|
+
outputSchema?: z.ZodSchema // Optional - if present, agent generates output
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Contract structure - serializable JSON Schema representation
|
|
101
|
+
export interface ContractStructure {
|
|
102
|
+
inputSchema: unknown // JSON Schema representation
|
|
103
|
+
outputSchema?: unknown // JSON Schema representation (optional for side-effect resources)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Re-export resource types from registry (canonical source)
|
|
107
|
+
export type { ResourceType, ResourceStatus, ExecutableResourceType }
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* NOTE: AIResource interface has been removed and replaced with ResourceDefinition
|
|
111
|
+
* from registry/types.ts. All resources (executable and non-executable) now extend
|
|
112
|
+
* the unified ResourceDefinition base interface.
|
|
113
|
+
*
|
|
114
|
+
* AgentConfig and WorkflowConfig now extend ResourceDefinition directly.
|
|
115
|
+
* See packages/core/src/registry/types.ts for the base interface definition.
|
|
116
|
+
*/
|
|
117
|
+
|
|
118
|
+
// Generic/Unified Resource Structure type
|
|
119
|
+
// Each resource type (workflow, agent) implements its own specific structure
|
|
120
|
+
export type AIResourceDefinition = SerializedWorkflowDefinition | SerializedAgentDefinition
|
|
121
|
+
|
|
122
|
+
// UI color constants for resource types and statuses
|
|
123
|
+
export const ResourceStatusColors = {
|
|
124
|
+
dev: 'var(--color-primary)',
|
|
125
|
+
prod: 'var(--color-success)'
|
|
126
|
+
} as const
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Execution Engine utility functions
|
|
3
|
+
* Shared utilities used across all Execution Engine resources
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { zodToJsonSchema } from '@alcyone-labs/zod-to-json-schema'
|
|
7
|
+
import type { z } from 'zod'
|
|
8
|
+
import type { ContractStructure } from './types'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Convert Zod schemas to JSON Schema for serialization
|
|
12
|
+
* Used by Workflow and Agent getStructure() methods
|
|
13
|
+
*
|
|
14
|
+
* @param inputSchema - Zod input schema
|
|
15
|
+
* @param outputSchema - Zod output schema (optional for side-effect resources)
|
|
16
|
+
* @param resourceId - Resource identifier for schema naming
|
|
17
|
+
* @returns JSON Schema representation of the contract
|
|
18
|
+
*/
|
|
19
|
+
export function convertContractToJson(
|
|
20
|
+
inputSchema: z.ZodSchema,
|
|
21
|
+
outputSchema: z.ZodSchema | undefined,
|
|
22
|
+
resourceId: string
|
|
23
|
+
): ContractStructure {
|
|
24
|
+
const options = {
|
|
25
|
+
$refStrategy: 'none' as const,
|
|
26
|
+
errorMessages: true
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
inputSchema: zodToJsonSchema(inputSchema, {
|
|
31
|
+
...options,
|
|
32
|
+
name: `${resourceId}-input`
|
|
33
|
+
}),
|
|
34
|
+
outputSchema: outputSchema
|
|
35
|
+
? zodToJsonSchema(outputSchema, {
|
|
36
|
+
...options,
|
|
37
|
+
name: `${resourceId}-output`
|
|
38
|
+
})
|
|
39
|
+
: undefined
|
|
40
|
+
}
|
|
41
|
+
}
|