@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,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instantly Auto Reply Received Trigger Definition
|
|
3
|
+
*
|
|
4
|
+
* Webhook trigger for Instantly auto-reply email events.
|
|
5
|
+
* Uses Instantly's native snake_case format - no transformation needed.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { TriggerDefinition, WebhookTriggerConfig } from '../../../../platform/registry/types'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Instantly auto reply received webhook payload structure
|
|
12
|
+
*
|
|
13
|
+
* Uses snake_case matching Instantly's API. Workflows receive this directly.
|
|
14
|
+
*/
|
|
15
|
+
export interface InstantlyAutoReplyReceivedPayload {
|
|
16
|
+
timestamp: string
|
|
17
|
+
event_type: 'auto_reply_received'
|
|
18
|
+
workspace: string
|
|
19
|
+
campaign_id: string
|
|
20
|
+
campaign_name?: string
|
|
21
|
+
lead_email: string
|
|
22
|
+
email_account: string
|
|
23
|
+
reply_subject?: string
|
|
24
|
+
reply_text?: string
|
|
25
|
+
reply_text_snippet?: string
|
|
26
|
+
step?: number
|
|
27
|
+
variant?: number
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Instantly Auto Reply Received Trigger Definition
|
|
32
|
+
*
|
|
33
|
+
* Trigger type: webhook
|
|
34
|
+
* Provider: instantly
|
|
35
|
+
* Event: auto_reply_received
|
|
36
|
+
*/
|
|
37
|
+
export const instantlyAutoReplyReceivedTrigger: TriggerDefinition = {
|
|
38
|
+
resourceId: 'trigger-instantly-auto-reply-received',
|
|
39
|
+
type: 'trigger',
|
|
40
|
+
triggerType: 'webhook',
|
|
41
|
+
name: 'Instantly Auto Reply Received',
|
|
42
|
+
description:
|
|
43
|
+
'Webhook fired when an automated reply (out-of-office, auto-responder) is received for an Instantly campaign email',
|
|
44
|
+
version: '1.0.0',
|
|
45
|
+
status: 'dev',
|
|
46
|
+
webhookPath: '/webhooks/instantly/auto-reply-received',
|
|
47
|
+
config: {
|
|
48
|
+
provider: 'instantly',
|
|
49
|
+
event: 'auto_reply_received'
|
|
50
|
+
} as WebhookTriggerConfig
|
|
51
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instantly Campaign Completed Trigger Definition
|
|
3
|
+
*
|
|
4
|
+
* Webhook trigger for Instantly campaign completion events.
|
|
5
|
+
* Uses Instantly's native snake_case format - no transformation needed.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { TriggerDefinition, WebhookTriggerConfig } from '../../../../platform/registry/types'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Instantly campaign completed webhook payload structure
|
|
12
|
+
*
|
|
13
|
+
* Uses snake_case matching Instantly's API. Workflows receive this directly.
|
|
14
|
+
*/
|
|
15
|
+
export interface InstantlyCampaignCompletedPayload {
|
|
16
|
+
timestamp: string
|
|
17
|
+
event_type: 'campaign_completed'
|
|
18
|
+
workspace: string
|
|
19
|
+
campaign_id: string
|
|
20
|
+
campaign_name?: string
|
|
21
|
+
total_leads?: number
|
|
22
|
+
total_sent?: number
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Instantly Campaign Completed Trigger Definition
|
|
27
|
+
*
|
|
28
|
+
* Trigger type: webhook
|
|
29
|
+
* Provider: instantly
|
|
30
|
+
* Event: campaign_completed
|
|
31
|
+
*/
|
|
32
|
+
export const instantlyCampaignCompletedTrigger: TriggerDefinition = {
|
|
33
|
+
resourceId: 'trigger-instantly-campaign-completed',
|
|
34
|
+
type: 'trigger',
|
|
35
|
+
triggerType: 'webhook',
|
|
36
|
+
name: 'Instantly Campaign Completed',
|
|
37
|
+
description: 'Webhook fired when an Instantly email campaign finishes sending to all leads',
|
|
38
|
+
version: '1.0.0',
|
|
39
|
+
status: 'dev',
|
|
40
|
+
webhookPath: '/webhooks/instantly/campaign-completed',
|
|
41
|
+
config: {
|
|
42
|
+
provider: 'instantly',
|
|
43
|
+
event: 'campaign_completed'
|
|
44
|
+
} as WebhookTriggerConfig
|
|
45
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instantly Email Bounced Trigger Definition
|
|
3
|
+
*
|
|
4
|
+
* Webhook trigger for Instantly email bounce events.
|
|
5
|
+
* Uses Instantly's native snake_case format - no transformation needed.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { TriggerDefinition, WebhookTriggerConfig } from '../../../../platform/registry/types'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Instantly email bounced webhook payload structure
|
|
12
|
+
*
|
|
13
|
+
* Uses snake_case matching Instantly's API. Workflows receive this directly.
|
|
14
|
+
*/
|
|
15
|
+
export interface InstantlyEmailBouncedPayload {
|
|
16
|
+
timestamp: string
|
|
17
|
+
event_type: 'email_bounced'
|
|
18
|
+
workspace: string
|
|
19
|
+
campaign_id: string
|
|
20
|
+
campaign_name?: string
|
|
21
|
+
lead_email: string
|
|
22
|
+
email_account: string
|
|
23
|
+
bounce_type?: string
|
|
24
|
+
bounce_reason?: string
|
|
25
|
+
step?: number
|
|
26
|
+
variant?: number
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Instantly Email Bounced Trigger Definition
|
|
31
|
+
*
|
|
32
|
+
* Trigger type: webhook
|
|
33
|
+
* Provider: instantly
|
|
34
|
+
* Event: email_bounced
|
|
35
|
+
*/
|
|
36
|
+
export const instantlyEmailBouncedTrigger: TriggerDefinition = {
|
|
37
|
+
resourceId: 'trigger-instantly-email-bounced',
|
|
38
|
+
type: 'trigger',
|
|
39
|
+
triggerType: 'webhook',
|
|
40
|
+
name: 'Instantly Email Bounced',
|
|
41
|
+
description: 'Webhook fired when an email sent from an Instantly campaign bounces',
|
|
42
|
+
version: '1.0.0',
|
|
43
|
+
status: 'dev',
|
|
44
|
+
webhookPath: '/webhooks/instantly/email-bounced',
|
|
45
|
+
config: {
|
|
46
|
+
provider: 'instantly',
|
|
47
|
+
event: 'email_bounced'
|
|
48
|
+
} as WebhookTriggerConfig
|
|
49
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instantly Lead Unsubscribed Trigger Definition
|
|
3
|
+
*
|
|
4
|
+
* Webhook trigger for Instantly lead unsubscribe events.
|
|
5
|
+
* Uses Instantly's native snake_case format - no transformation needed.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { TriggerDefinition, WebhookTriggerConfig } from '../../../../platform/registry/types'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Instantly lead unsubscribed webhook payload structure
|
|
12
|
+
*
|
|
13
|
+
* Uses snake_case matching Instantly's API. Workflows receive this directly.
|
|
14
|
+
*/
|
|
15
|
+
export interface InstantlyLeadUnsubscribedPayload {
|
|
16
|
+
timestamp: string
|
|
17
|
+
event_type: 'lead_unsubscribed'
|
|
18
|
+
workspace: string
|
|
19
|
+
campaign_id: string
|
|
20
|
+
campaign_name?: string
|
|
21
|
+
lead_email: string
|
|
22
|
+
email_account: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Instantly Lead Unsubscribed Trigger Definition
|
|
27
|
+
*
|
|
28
|
+
* Trigger type: webhook
|
|
29
|
+
* Provider: instantly
|
|
30
|
+
* Event: lead_unsubscribed
|
|
31
|
+
*/
|
|
32
|
+
export const instantlyLeadUnsubscribedTrigger: TriggerDefinition = {
|
|
33
|
+
resourceId: 'trigger-instantly-lead-unsubscribed',
|
|
34
|
+
type: 'trigger',
|
|
35
|
+
triggerType: 'webhook',
|
|
36
|
+
name: 'Instantly Lead Unsubscribed',
|
|
37
|
+
description: 'Webhook fired when a lead unsubscribes from an Instantly email campaign',
|
|
38
|
+
version: '1.0.0',
|
|
39
|
+
status: 'dev',
|
|
40
|
+
webhookPath: '/webhooks/instantly/lead-unsubscribed',
|
|
41
|
+
config: {
|
|
42
|
+
provider: 'instantly',
|
|
43
|
+
event: 'lead_unsubscribed'
|
|
44
|
+
} as WebhookTriggerConfig
|
|
45
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instantly Reply Received Trigger Definition
|
|
3
|
+
*
|
|
4
|
+
* Webhook trigger for Instantly email reply events.
|
|
5
|
+
* Uses Instantly's native snake_case format - no transformation needed.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { TriggerDefinition, WebhookTriggerConfig } from '../../../../platform/registry/types'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Instantly webhook payload structure
|
|
12
|
+
*
|
|
13
|
+
* Uses snake_case matching Instantly's API. Workflows receive this directly.
|
|
14
|
+
*/
|
|
15
|
+
export interface InstantlyReplyWebhookPayload {
|
|
16
|
+
timestamp: string
|
|
17
|
+
event_type: 'reply_received'
|
|
18
|
+
workspace: string
|
|
19
|
+
campaign_id: string
|
|
20
|
+
campaign_name?: string
|
|
21
|
+
lead_email: string
|
|
22
|
+
email_account: string
|
|
23
|
+
unibox_url: string
|
|
24
|
+
reply_to_uuid: string
|
|
25
|
+
reply_subject: string
|
|
26
|
+
reply_text: string
|
|
27
|
+
reply_text_snippet: string
|
|
28
|
+
reply_html: string
|
|
29
|
+
step: number
|
|
30
|
+
variant: number
|
|
31
|
+
is_first: boolean
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Instantly Reply Received Trigger Definition
|
|
36
|
+
*
|
|
37
|
+
* Trigger type: webhook
|
|
38
|
+
* Provider: instantly
|
|
39
|
+
* Event: reply_received
|
|
40
|
+
*/
|
|
41
|
+
export const instantlyReplyReceivedTrigger: TriggerDefinition = {
|
|
42
|
+
resourceId: 'trigger-instantly-reply-received',
|
|
43
|
+
type: 'trigger',
|
|
44
|
+
triggerType: 'webhook',
|
|
45
|
+
name: 'Instantly Reply Received',
|
|
46
|
+
description: 'Webhook fired when a lead replies to an Instantly email campaign',
|
|
47
|
+
version: '1.0.0',
|
|
48
|
+
status: 'dev',
|
|
49
|
+
webhookPath: '/webhooks/instantly/reply-received',
|
|
50
|
+
config: {
|
|
51
|
+
provider: 'instantly',
|
|
52
|
+
event: 'reply_received'
|
|
53
|
+
} as WebhookTriggerConfig
|
|
54
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook Triggers Module
|
|
3
|
+
*
|
|
4
|
+
* Webhooks are a type of trigger that start workflow executions
|
|
5
|
+
* when external services send HTTP requests to Elevasis.
|
|
6
|
+
*
|
|
7
|
+
* This module contains:
|
|
8
|
+
* - Provider interface for webhook signature validation (types only)
|
|
9
|
+
* - Trigger definitions for specific webhook events
|
|
10
|
+
*
|
|
11
|
+
* Note: Provider IMPLEMENTATIONS live in apps/api/src/webhooks/providers/
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
// Provider interface and types (contract only - implementations in apps/api)
|
|
15
|
+
export type { WebhookProvider, WebhookValidationResult } from './types'
|
|
16
|
+
|
|
17
|
+
// Webhook trigger definitions
|
|
18
|
+
export {
|
|
19
|
+
instantlyReplyReceivedTrigger,
|
|
20
|
+
type InstantlyReplyWebhookPayload
|
|
21
|
+
} from './definitions/instantly-reply-received'
|
|
22
|
+
export { instantlyEmailBouncedTrigger, type InstantlyEmailBouncedPayload } from './definitions/instantly-email-bounced'
|
|
23
|
+
export {
|
|
24
|
+
instantlyLeadUnsubscribedTrigger,
|
|
25
|
+
type InstantlyLeadUnsubscribedPayload
|
|
26
|
+
} from './definitions/instantly-lead-unsubscribed'
|
|
27
|
+
export {
|
|
28
|
+
instantlyCampaignCompletedTrigger,
|
|
29
|
+
type InstantlyCampaignCompletedPayload
|
|
30
|
+
} from './definitions/instantly-campaign-completed'
|
|
31
|
+
export { instantlyAccountErrorTrigger, type InstantlyAccountErrorPayload } from './definitions/instantly-account-error'
|
|
32
|
+
export {
|
|
33
|
+
instantlyAutoReplyReceivedTrigger,
|
|
34
|
+
type InstantlyAutoReplyReceivedPayload
|
|
35
|
+
} from './definitions/instantly-auto-reply-received'
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook Trigger type definitions
|
|
3
|
+
*
|
|
4
|
+
* These types define the contract for webhook providers that validate
|
|
5
|
+
* signatures from external services (Cal.com, Fillout, Stripe, Instantly, etc.)
|
|
6
|
+
*
|
|
7
|
+
* Webhooks are a type of trigger - they start workflow executions
|
|
8
|
+
* when external services send HTTP requests to Elevasis.
|
|
9
|
+
*
|
|
10
|
+
* Note: Provider IMPLEMENTATIONS live in apps/api/src/webhooks/providers/
|
|
11
|
+
* This file only contains the interface contract.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { WebhookProviderType } from '../../../platform/registry/types'
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Result of webhook signature validation
|
|
18
|
+
*/
|
|
19
|
+
export interface WebhookValidationResult {
|
|
20
|
+
/** Whether the signature is valid */
|
|
21
|
+
isValid: boolean
|
|
22
|
+
/** Parsed payload if validation succeeded */
|
|
23
|
+
payload?: unknown
|
|
24
|
+
/** Error message if validation failed */
|
|
25
|
+
error?: string
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Webhook provider interface
|
|
30
|
+
*
|
|
31
|
+
* Each provider implements signature validation specific to their
|
|
32
|
+
* webhook format (e.g., HMAC-SHA256 for Cal.com and Fillout).
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* class CalComProvider implements WebhookProvider {
|
|
37
|
+
* readonly providerId = 'cal-com' as const
|
|
38
|
+
*
|
|
39
|
+
* async validateSignature(rawBody, headers, secret) {
|
|
40
|
+
* // HMAC-SHA256 validation
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* getEventType(payload) {
|
|
44
|
+
* return payload.triggerEvent // e.g., 'BOOKING_CREATED'
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export interface WebhookProvider {
|
|
50
|
+
/** Provider identifier (e.g., 'cal-com', 'fillout', 'stripe') */
|
|
51
|
+
readonly providerId: WebhookProviderType
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Validate webhook signature and return parsed payload
|
|
55
|
+
*
|
|
56
|
+
* @param rawBody - Raw request body as string (before JSON parsing)
|
|
57
|
+
* @param headers - Request headers (lowercase keys)
|
|
58
|
+
* @param secret - Webhook signing secret from credentials
|
|
59
|
+
* @returns Validation result with parsed payload or error
|
|
60
|
+
*/
|
|
61
|
+
validateSignature(
|
|
62
|
+
rawBody: string,
|
|
63
|
+
headers: Record<string, string>,
|
|
64
|
+
secret: string
|
|
65
|
+
): Promise<WebhookValidationResult>
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Extract event type from validated payload
|
|
69
|
+
*
|
|
70
|
+
* @param payload - Parsed webhook payload (from validateSignature)
|
|
71
|
+
* @returns Provider-specific event type (e.g., 'BOOKING_CREATED', 'invoice.paid')
|
|
72
|
+
*/
|
|
73
|
+
getEventType(payload: unknown): string
|
|
74
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Organization Model
|
|
2
|
+
|
|
3
|
+
The organization model is the published semantic contract that maps a tenant's product shape to domain surfaces, features, and navigation.
|
|
4
|
+
|
|
5
|
+
Use this module when you need to resolve or validate an organization's contract before wiring UI shells, routing, or domain-specific capability checks.
|
|
6
|
+
|
|
7
|
+
## Published Exports
|
|
8
|
+
|
|
9
|
+
The public entry point exposes:
|
|
10
|
+
|
|
11
|
+
- `OrganizationModelSchema`
|
|
12
|
+
- `DEFAULT_ORGANIZATION_MODEL`
|
|
13
|
+
- `defineOrganizationModel`
|
|
14
|
+
- `resolveOrganizationModel`
|
|
15
|
+
- `OrganizationModel` and the supporting domain types
|
|
16
|
+
|
|
17
|
+
Import it from the published subpath:
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
import {
|
|
21
|
+
DEFAULT_ORGANIZATION_MODEL,
|
|
22
|
+
defineOrganizationModel,
|
|
23
|
+
resolveOrganizationModel,
|
|
24
|
+
type OrganizationModel
|
|
25
|
+
} from '@elevasis/core/organization-model'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Contract Shape
|
|
29
|
+
|
|
30
|
+
The model is versioned and currently validates against `version: 1`.
|
|
31
|
+
|
|
32
|
+
Top-level fields:
|
|
33
|
+
|
|
34
|
+
- `domains` - semantic domain entries that bind entity IDs, surface IDs, resource IDs, and capability IDs.
|
|
35
|
+
- `branding` - organization branding defaults and overrides.
|
|
36
|
+
- `features` - feature flags and labels for the shell.
|
|
37
|
+
- `navigation` - navigation model for the product shell.
|
|
38
|
+
- `crm` - CRM-specific contract data.
|
|
39
|
+
- `leadGen` - lead generation contract data.
|
|
40
|
+
- `delivery` - delivery and project contract data.
|
|
41
|
+
- `resourceMappings` - cross-surface resource mappings.
|
|
42
|
+
|
|
43
|
+
## Default Domain Set
|
|
44
|
+
|
|
45
|
+
The default model includes four semantic domains:
|
|
46
|
+
|
|
47
|
+
- `crm` - deal pipeline and relationship management.
|
|
48
|
+
- `lead-gen` - lists, companies, and contacts.
|
|
49
|
+
- `delivery` - projects, milestones, and tasks.
|
|
50
|
+
- `operations` - organization graph and command-view surfaces.
|
|
51
|
+
|
|
52
|
+
## Feature Keys
|
|
53
|
+
|
|
54
|
+
The current feature keys are:
|
|
55
|
+
|
|
56
|
+
- `acquisition`
|
|
57
|
+
- `delivery`
|
|
58
|
+
- `operations`
|
|
59
|
+
- `monitoring`
|
|
60
|
+
- `settings`
|
|
61
|
+
- `seo`
|
|
62
|
+
- `calibration`
|
|
63
|
+
|
|
64
|
+
Each feature can carry an enabled flag and an optional label override.
|
|
65
|
+
|
|
66
|
+
## Resolution Semantics
|
|
67
|
+
|
|
68
|
+
- `defineOrganizationModel()` is a typed helper. It does not validate or merge anything by itself.
|
|
69
|
+
- `resolveOrganizationModel()` deep-merges a partial override into the default model, then validates the result with `OrganizationModelSchema`.
|
|
70
|
+
- Plain objects merge recursively.
|
|
71
|
+
- Arrays replace the default value instead of merging element-by-element.
|
|
72
|
+
- Missing fields fall back to `DEFAULT_ORGANIZATION_MODEL`.
|
|
73
|
+
|
|
74
|
+
## Practical Guidance
|
|
75
|
+
|
|
76
|
+
- Use `resolveOrganizationModel()` when you need a runtime-safe model for rendering or policy checks.
|
|
77
|
+
- Use `defineOrganizationModel()` when authoring a static partial model in source.
|
|
78
|
+
- Keep domain IDs, surface IDs, and capability IDs stable because downstream UI and policy code depend on them.
|
|
79
|
+
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import { buildOrganizationGraph } from '../graph'
|
|
3
|
+
import { defineOrganizationModel, resolveOrganizationModel } from '../resolve'
|
|
4
|
+
|
|
5
|
+
describe('organization-graph', () => {
|
|
6
|
+
it('derives semantic graph nodes and edges from the organization model', () => {
|
|
7
|
+
const model = resolveOrganizationModel(
|
|
8
|
+
defineOrganizationModel({
|
|
9
|
+
branding: {
|
|
10
|
+
organizationName: 'Acme',
|
|
11
|
+
productName: 'Acme OS',
|
|
12
|
+
shortName: 'Acme'
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
const graph = buildOrganizationGraph({ organizationModel: model })
|
|
18
|
+
|
|
19
|
+
expect(graph.version).toBe(1)
|
|
20
|
+
expect(graph.organizationModelVersion).toBe(1)
|
|
21
|
+
|
|
22
|
+
const feature = graph.nodes.find((node) => node.id === 'feature:operations')
|
|
23
|
+
expect(feature).toMatchObject({
|
|
24
|
+
kind: 'feature',
|
|
25
|
+
sourceId: 'operations',
|
|
26
|
+
label: 'Operations',
|
|
27
|
+
enabled: true,
|
|
28
|
+
featureKey: 'operations'
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
const disabledFeature = graph.nodes.find((node) => node.id === 'feature:seo')
|
|
32
|
+
expect(disabledFeature).toMatchObject({
|
|
33
|
+
kind: 'feature',
|
|
34
|
+
sourceId: 'seo',
|
|
35
|
+
enabled: false
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
expect(graph.nodes.find((node) => node.id === 'domain:crm')).toMatchObject({
|
|
39
|
+
kind: 'domain',
|
|
40
|
+
sourceId: 'crm',
|
|
41
|
+
label: 'CRM'
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
expect(graph.nodes.find((node) => node.id === 'surface:crm.pipeline')).toMatchObject({
|
|
45
|
+
kind: 'surface',
|
|
46
|
+
sourceId: 'crm.pipeline',
|
|
47
|
+
surfaceType: 'graph'
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
expect(graph.nodes.find((node) => node.id === 'entity:crm.deal')).toMatchObject({
|
|
51
|
+
kind: 'entity',
|
|
52
|
+
sourceId: 'crm.deal',
|
|
53
|
+
label: 'crm.deal'
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
expect(graph.nodes.find((node) => node.id === 'capability:crm.pipeline.manage')).toMatchObject({
|
|
57
|
+
kind: 'capability',
|
|
58
|
+
sourceId: 'crm.pipeline.manage',
|
|
59
|
+
label: 'crm.pipeline.manage'
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
expect(graph.edges).toEqual(
|
|
63
|
+
expect.arrayContaining([
|
|
64
|
+
expect.objectContaining({
|
|
65
|
+
kind: 'contains',
|
|
66
|
+
sourceId: 'organization-model',
|
|
67
|
+
targetId: 'domain:crm'
|
|
68
|
+
}),
|
|
69
|
+
expect.objectContaining({
|
|
70
|
+
kind: 'exposes',
|
|
71
|
+
sourceId: 'feature:acquisition',
|
|
72
|
+
targetId: 'surface:crm.pipeline'
|
|
73
|
+
}),
|
|
74
|
+
expect.objectContaining({
|
|
75
|
+
kind: 'references',
|
|
76
|
+
sourceId: 'surface:crm.pipeline',
|
|
77
|
+
targetId: 'domain:crm'
|
|
78
|
+
})
|
|
79
|
+
])
|
|
80
|
+
)
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
it('bridges command view topology into resource nodes and labeled relationship edges', () => {
|
|
84
|
+
const model = resolveOrganizationModel(
|
|
85
|
+
defineOrganizationModel({
|
|
86
|
+
resourceMappings: [
|
|
87
|
+
{
|
|
88
|
+
id: 'workflow-order-model',
|
|
89
|
+
label: 'Order Workflow Model',
|
|
90
|
+
resourceId: 'workflow-order',
|
|
91
|
+
resourceType: 'workflow',
|
|
92
|
+
domainIds: ['operations'],
|
|
93
|
+
entityIds: [],
|
|
94
|
+
surfaceIds: ['operations.command-view'],
|
|
95
|
+
capabilityIds: []
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
})
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
const graph = buildOrganizationGraph({
|
|
102
|
+
organizationModel: model,
|
|
103
|
+
commandViewData: {
|
|
104
|
+
workflows: [
|
|
105
|
+
{
|
|
106
|
+
resourceId: 'workflow-order',
|
|
107
|
+
name: 'Order Workflow Runtime',
|
|
108
|
+
description: 'Runtime workflow surfaced by Command View',
|
|
109
|
+
version: '1.0.0',
|
|
110
|
+
type: 'workflow',
|
|
111
|
+
status: 'prod',
|
|
112
|
+
domains: ['operations'],
|
|
113
|
+
stepCount: 3,
|
|
114
|
+
entryPoint: 'start'
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
agents: [
|
|
118
|
+
{
|
|
119
|
+
resourceId: 'agent-order',
|
|
120
|
+
name: 'Order Agent Runtime',
|
|
121
|
+
description: 'Runtime agent surfaced by Command View',
|
|
122
|
+
version: '1.0.0',
|
|
123
|
+
type: 'agent',
|
|
124
|
+
status: 'prod',
|
|
125
|
+
domains: ['operations'],
|
|
126
|
+
modelProvider: 'openai',
|
|
127
|
+
modelId: 'gpt-4.1',
|
|
128
|
+
toolCount: 2,
|
|
129
|
+
hasKnowledgeMap: true,
|
|
130
|
+
hasMemory: false,
|
|
131
|
+
sessionCapable: true
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
triggers: [],
|
|
135
|
+
integrations: [
|
|
136
|
+
{
|
|
137
|
+
resourceId: 'integration-stripe',
|
|
138
|
+
name: 'Stripe Runtime',
|
|
139
|
+
description: 'Runtime integration surfaced by Command View',
|
|
140
|
+
version: '1.0.0',
|
|
141
|
+
type: 'integration',
|
|
142
|
+
status: 'prod',
|
|
143
|
+
domains: ['operations'],
|
|
144
|
+
provider: 'stripe',
|
|
145
|
+
credentialName: 'stripe-prod'
|
|
146
|
+
}
|
|
147
|
+
],
|
|
148
|
+
externalResources: [],
|
|
149
|
+
humanCheckpoints: [
|
|
150
|
+
{
|
|
151
|
+
resourceId: 'approval-high-value',
|
|
152
|
+
name: 'High Value Approval',
|
|
153
|
+
description: 'Runtime human checkpoint surfaced by Command View',
|
|
154
|
+
version: '1.0.0',
|
|
155
|
+
type: 'human',
|
|
156
|
+
status: 'prod',
|
|
157
|
+
domains: ['operations']
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
edges: [
|
|
161
|
+
{
|
|
162
|
+
id: 'edge-runtime-triggers',
|
|
163
|
+
source: 'agent-order',
|
|
164
|
+
target: 'workflow-order',
|
|
165
|
+
relationship: 'triggers'
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: 'edge-runtime-uses',
|
|
169
|
+
source: 'workflow-order',
|
|
170
|
+
target: 'integration-stripe',
|
|
171
|
+
relationship: 'uses'
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 'edge-runtime-approval',
|
|
175
|
+
source: 'workflow-order',
|
|
176
|
+
target: 'approval-high-value',
|
|
177
|
+
relationship: 'approval'
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
expect(graph.nodes.find((node) => node.id === 'resource:workflow-order')).toMatchObject({
|
|
184
|
+
kind: 'resource',
|
|
185
|
+
sourceId: 'workflow-order',
|
|
186
|
+
resourceType: 'workflow',
|
|
187
|
+
label: 'Order Workflow Model'
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
expect(graph.nodes.find((node) => node.id === 'resource:agent-order')).toMatchObject({
|
|
191
|
+
kind: 'resource',
|
|
192
|
+
sourceId: 'agent-order',
|
|
193
|
+
resourceType: 'agent',
|
|
194
|
+
label: 'Order Agent Runtime'
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
expect(graph.nodes.find((node) => node.id === 'resource:approval-high-value')).toMatchObject({
|
|
198
|
+
kind: 'resource',
|
|
199
|
+
sourceId: 'approval-high-value',
|
|
200
|
+
resourceType: 'human_checkpoint',
|
|
201
|
+
label: 'High Value Approval'
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
expect(graph.edges).toEqual(
|
|
205
|
+
expect.arrayContaining([
|
|
206
|
+
expect.objectContaining({
|
|
207
|
+
kind: 'contains',
|
|
208
|
+
sourceId: 'organization-model',
|
|
209
|
+
targetId: 'resource:agent-order'
|
|
210
|
+
}),
|
|
211
|
+
expect.objectContaining({
|
|
212
|
+
kind: 'references',
|
|
213
|
+
sourceId: 'resource:agent-order',
|
|
214
|
+
targetId: 'domain:operations'
|
|
215
|
+
}),
|
|
216
|
+
expect.objectContaining({
|
|
217
|
+
kind: 'references',
|
|
218
|
+
sourceId: 'resource:agent-order',
|
|
219
|
+
targetId: 'resource:workflow-order',
|
|
220
|
+
label: 'triggers',
|
|
221
|
+
relationshipType: 'triggers'
|
|
222
|
+
}),
|
|
223
|
+
expect.objectContaining({
|
|
224
|
+
kind: 'references',
|
|
225
|
+
sourceId: 'resource:workflow-order',
|
|
226
|
+
targetId: 'resource:integration-stripe',
|
|
227
|
+
label: 'uses',
|
|
228
|
+
relationshipType: 'uses'
|
|
229
|
+
}),
|
|
230
|
+
expect.objectContaining({
|
|
231
|
+
kind: 'references',
|
|
232
|
+
sourceId: 'resource:workflow-order',
|
|
233
|
+
targetId: 'resource:approval-high-value',
|
|
234
|
+
label: 'approval',
|
|
235
|
+
relationshipType: 'approval'
|
|
236
|
+
}),
|
|
237
|
+
expect.objectContaining({
|
|
238
|
+
kind: 'maps_to',
|
|
239
|
+
sourceId: 'resource:workflow-order',
|
|
240
|
+
targetId: 'domain:operations'
|
|
241
|
+
}),
|
|
242
|
+
expect.objectContaining({
|
|
243
|
+
kind: 'maps_to',
|
|
244
|
+
sourceId: 'resource:workflow-order',
|
|
245
|
+
targetId: 'surface:operations.command-view'
|
|
246
|
+
})
|
|
247
|
+
])
|
|
248
|
+
)
|
|
249
|
+
})
|
|
250
|
+
})
|