@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,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command View Types
|
|
3
|
+
*
|
|
4
|
+
* Unified type definitions for the Command View graph visualization.
|
|
5
|
+
* These types are used by both backend serialization and frontend rendering.
|
|
6
|
+
*
|
|
7
|
+
* Command View shows the resource graph: agents, workflows, triggers, integrations,
|
|
8
|
+
* external resources, and human checkpoints with their relationships.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type {
|
|
12
|
+
ResourceDefinition,
|
|
13
|
+
TriggerDefinition,
|
|
14
|
+
IntegrationDefinition,
|
|
15
|
+
ExternalResourceDefinition,
|
|
16
|
+
HumanCheckpointDefinition,
|
|
17
|
+
DomainDefinition
|
|
18
|
+
} from './types'
|
|
19
|
+
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Node Types - Resources that appear in the graph
|
|
22
|
+
// ============================================================================
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Extended agent metadata for Command View
|
|
26
|
+
* Includes model and capability information for graph display
|
|
27
|
+
*/
|
|
28
|
+
export interface CommandViewAgent extends ResourceDefinition {
|
|
29
|
+
type: 'agent'
|
|
30
|
+
modelProvider: string // e.g., 'anthropic', 'openai'
|
|
31
|
+
modelId: string // e.g., 'claude-sonnet-4-20250514'
|
|
32
|
+
toolCount: number
|
|
33
|
+
hasKnowledgeMap: boolean
|
|
34
|
+
hasMemory: boolean
|
|
35
|
+
sessionCapable: boolean // Explicit session capability declaration
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Extended workflow metadata for Command View
|
|
40
|
+
* Includes step information for graph display
|
|
41
|
+
*/
|
|
42
|
+
export interface CommandViewWorkflow extends ResourceDefinition {
|
|
43
|
+
type: 'workflow'
|
|
44
|
+
stepCount: number
|
|
45
|
+
entryPoint: string
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Node type categories for Command View
|
|
50
|
+
* Simplified categorization for UI rendering and layout
|
|
51
|
+
*/
|
|
52
|
+
export type CommandViewNodeType = 'agent' | 'workflow' | 'trigger' | 'integration' | 'external' | 'human'
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Union type for all node types in Command View
|
|
56
|
+
* Frontend can use this for type-safe node handling
|
|
57
|
+
*/
|
|
58
|
+
export type CommandViewNode =
|
|
59
|
+
| CommandViewAgent
|
|
60
|
+
| CommandViewWorkflow
|
|
61
|
+
| TriggerDefinition
|
|
62
|
+
| IntegrationDefinition
|
|
63
|
+
| ExternalResourceDefinition
|
|
64
|
+
| HumanCheckpointDefinition
|
|
65
|
+
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// Edge Types - Relationships between resources
|
|
68
|
+
// ============================================================================
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Relationship types between resources
|
|
72
|
+
*
|
|
73
|
+
* - triggers: Resource initiates/starts another resource (orange)
|
|
74
|
+
* - uses: Resource uses an integration (teal)
|
|
75
|
+
* - approval: Resource requires human approval (yellow)
|
|
76
|
+
*/
|
|
77
|
+
export type RelationshipType = 'triggers' | 'uses' | 'approval'
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Command View edge (relationship between resources)
|
|
81
|
+
*/
|
|
82
|
+
export interface CommandViewEdge {
|
|
83
|
+
id: string
|
|
84
|
+
source: string // Source node ID
|
|
85
|
+
target: string // Target node ID
|
|
86
|
+
relationship: RelationshipType
|
|
87
|
+
label?: string // Optional label for the edge
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// Graph Data Structure
|
|
92
|
+
// ============================================================================
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Command View data structure
|
|
96
|
+
* Complete graph data for visualization
|
|
97
|
+
*
|
|
98
|
+
* Backend serializes this once at startup and serves it via /command-view endpoint.
|
|
99
|
+
* Frontend consumes this directly for graph rendering.
|
|
100
|
+
*/
|
|
101
|
+
export interface CommandViewData {
|
|
102
|
+
workflows: CommandViewWorkflow[]
|
|
103
|
+
agents: CommandViewAgent[]
|
|
104
|
+
triggers: TriggerDefinition[]
|
|
105
|
+
integrations: IntegrationDefinition[]
|
|
106
|
+
externalResources: ExternalResourceDefinition[]
|
|
107
|
+
humanCheckpoints: HumanCheckpointDefinition[]
|
|
108
|
+
edges: CommandViewEdge[]
|
|
109
|
+
domainDefinitions?: DomainDefinition[]
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// ============================================================================
|
|
113
|
+
// Type Guards
|
|
114
|
+
// ============================================================================
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Check if a node is an agent
|
|
118
|
+
*/
|
|
119
|
+
export function isAgent(node: CommandViewNode): node is CommandViewAgent {
|
|
120
|
+
return 'type' in node && node.type === 'agent'
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Check if a node is a workflow
|
|
125
|
+
*/
|
|
126
|
+
export function isWorkflow(node: CommandViewNode): node is CommandViewWorkflow {
|
|
127
|
+
return 'type' in node && node.type === 'workflow'
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Check if a node is a trigger
|
|
132
|
+
*/
|
|
133
|
+
export function isTrigger(node: CommandViewNode): node is TriggerDefinition {
|
|
134
|
+
return 'type' in node && node.type === 'trigger'
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Check if a node is an integration
|
|
139
|
+
*/
|
|
140
|
+
export function isIntegration(node: CommandViewNode): node is IntegrationDefinition {
|
|
141
|
+
return 'type' in node && node.type === 'integration'
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Check if a node is an external resource
|
|
146
|
+
*/
|
|
147
|
+
export function isExternalResource(node: CommandViewNode): node is ExternalResourceDefinition {
|
|
148
|
+
return 'type' in node && node.type === 'external'
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Check if a node is a human checkpoint
|
|
153
|
+
*/
|
|
154
|
+
export function isHumanCheckpoint(node: CommandViewNode): node is HumanCheckpointDefinition {
|
|
155
|
+
return 'type' in node && node.type === 'human'
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// ============================================================================
|
|
159
|
+
// Helper Functions
|
|
160
|
+
// ============================================================================
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Get node ID - all resources now use unified resourceId field
|
|
164
|
+
*/
|
|
165
|
+
export function getNodeId(node: CommandViewNode): string {
|
|
166
|
+
return node.resourceId
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Get node type for categorization
|
|
171
|
+
*/
|
|
172
|
+
export function getNodeType(node: CommandViewNode): CommandViewNodeType {
|
|
173
|
+
if (isAgent(node)) return 'agent'
|
|
174
|
+
if (isWorkflow(node)) return 'workflow'
|
|
175
|
+
if (isTrigger(node)) return 'trigger'
|
|
176
|
+
if (isIntegration(node)) return 'integration'
|
|
177
|
+
if (isExternalResource(node)) return 'external'
|
|
178
|
+
// isHumanCheckpoint is last fallback
|
|
179
|
+
return 'human'
|
|
180
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Domain Definitions
|
|
3
|
+
* Centralized domain constants and definitions for all organization resources.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { DomainDefinition } from './types'
|
|
7
|
+
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Standard Domain IDs
|
|
10
|
+
// ============================================================================
|
|
11
|
+
|
|
12
|
+
export const DOMAINS = {
|
|
13
|
+
// Business domains
|
|
14
|
+
INBOUND_PIPELINE: 'inbound-pipeline',
|
|
15
|
+
LEAD_GEN_PIPELINE: 'lead-gen-pipeline',
|
|
16
|
+
SUPPORT: 'support',
|
|
17
|
+
CLIENT_SUPPORT: 'client-support',
|
|
18
|
+
DELIVERY: 'delivery',
|
|
19
|
+
OPERATIONS: 'operations',
|
|
20
|
+
FINANCE: 'finance',
|
|
21
|
+
EXECUTIVE: 'executive',
|
|
22
|
+
INSTANTLY: 'instantly',
|
|
23
|
+
|
|
24
|
+
// Technical domains
|
|
25
|
+
TESTING: 'testing',
|
|
26
|
+
INTERNAL: 'internal',
|
|
27
|
+
INTEGRATION: 'integration',
|
|
28
|
+
UTILITY: 'utility',
|
|
29
|
+
DIAGNOSTIC: 'diagnostic'
|
|
30
|
+
} as const
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* ResourceDomain - Strongly typed domain identifier
|
|
34
|
+
* Use this type for all domain references to ensure compile-time validation.
|
|
35
|
+
*/
|
|
36
|
+
export type ResourceDomain = (typeof DOMAINS)[keyof typeof DOMAINS]
|
|
37
|
+
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Domain Definitions
|
|
40
|
+
// ============================================================================
|
|
41
|
+
|
|
42
|
+
export const INBOUND_PIPELINE_DOMAIN: DomainDefinition = {
|
|
43
|
+
id: DOMAINS.INBOUND_PIPELINE,
|
|
44
|
+
name: 'Inbound Pipeline',
|
|
45
|
+
description: 'End-to-end inbound client acquisition from first reply to onboarding',
|
|
46
|
+
color: 'blue'
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export const LEAD_GEN_PIPELINE_DOMAIN: DomainDefinition = {
|
|
50
|
+
id: DOMAINS.LEAD_GEN_PIPELINE,
|
|
51
|
+
name: 'Lead Gen Pipeline',
|
|
52
|
+
description: 'Lead scraping, enrichment, qualification, and personalization',
|
|
53
|
+
color: 'cyan'
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const SUPPORT_DOMAIN: DomainDefinition = {
|
|
57
|
+
id: DOMAINS.SUPPORT,
|
|
58
|
+
name: 'Customer Support',
|
|
59
|
+
description: 'Ticket triage, knowledge base, escalations',
|
|
60
|
+
color: 'green'
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export const CLIENT_SUPPORT_DOMAIN: DomainDefinition = {
|
|
64
|
+
id: DOMAINS.CLIENT_SUPPORT,
|
|
65
|
+
name: 'Client Support',
|
|
66
|
+
description: 'Client change requests, bug reports, and feature requests',
|
|
67
|
+
color: 'teal'
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export const DELIVERY_DOMAIN: DomainDefinition = {
|
|
71
|
+
id: DOMAINS.DELIVERY,
|
|
72
|
+
name: 'Client Delivery',
|
|
73
|
+
description: 'Project execution and milestone tracking',
|
|
74
|
+
color: 'orange'
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export const OPERATIONS_DOMAIN: DomainDefinition = {
|
|
78
|
+
id: DOMAINS.OPERATIONS,
|
|
79
|
+
name: 'Operations',
|
|
80
|
+
description: 'Internal business operations and administration',
|
|
81
|
+
color: 'violet'
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export const FINANCE_DOMAIN: DomainDefinition = {
|
|
85
|
+
id: DOMAINS.FINANCE,
|
|
86
|
+
name: 'Finance',
|
|
87
|
+
description: 'Billing, invoicing, and financial operations',
|
|
88
|
+
color: 'pink'
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const EXECUTIVE_DOMAIN: DomainDefinition = {
|
|
92
|
+
id: DOMAINS.EXECUTIVE,
|
|
93
|
+
name: 'Executive Operations',
|
|
94
|
+
description: 'High-level business orchestration and decision-making',
|
|
95
|
+
color: 'indigo'
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export const TESTING_DOMAIN: DomainDefinition = {
|
|
99
|
+
id: DOMAINS.TESTING,
|
|
100
|
+
name: 'Testing',
|
|
101
|
+
description: 'Test resources and development workflows',
|
|
102
|
+
color: 'gray'
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const INTERNAL_DOMAIN: DomainDefinition = {
|
|
106
|
+
id: DOMAINS.INTERNAL,
|
|
107
|
+
name: 'Internal',
|
|
108
|
+
description: 'Internal platform resources',
|
|
109
|
+
color: 'dark'
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export const INTEGRATION_DOMAIN: DomainDefinition = {
|
|
113
|
+
id: DOMAINS.INTEGRATION,
|
|
114
|
+
name: 'Integration',
|
|
115
|
+
description: 'External service integrations',
|
|
116
|
+
color: 'teal'
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export const INSTANTLY_DOMAIN: DomainDefinition = {
|
|
120
|
+
id: DOMAINS.INSTANTLY,
|
|
121
|
+
name: 'Instantly Toolkit',
|
|
122
|
+
description: 'Instantly campaign creation, analytics, and optimization',
|
|
123
|
+
color: 'lime'
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export const UTILITY_DOMAIN: DomainDefinition = {
|
|
127
|
+
id: DOMAINS.UTILITY,
|
|
128
|
+
name: 'Utility',
|
|
129
|
+
description: 'Utility workflows for maintenance and diagnostics',
|
|
130
|
+
color: 'grape'
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export const DIAGNOSTIC_DOMAIN: DomainDefinition = {
|
|
134
|
+
id: DOMAINS.DIAGNOSTIC,
|
|
135
|
+
name: 'Diagnostic',
|
|
136
|
+
description: 'Diagnostic workflows for testing integrations and services',
|
|
137
|
+
color: 'yellow'
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Domain lookup map for O(1) access during serialization
|
|
142
|
+
*/
|
|
143
|
+
export const DOMAIN_MAP: Record<ResourceDomain, DomainDefinition> = {
|
|
144
|
+
[DOMAINS.INBOUND_PIPELINE]: INBOUND_PIPELINE_DOMAIN,
|
|
145
|
+
[DOMAINS.LEAD_GEN_PIPELINE]: LEAD_GEN_PIPELINE_DOMAIN,
|
|
146
|
+
[DOMAINS.SUPPORT]: SUPPORT_DOMAIN,
|
|
147
|
+
[DOMAINS.CLIENT_SUPPORT]: CLIENT_SUPPORT_DOMAIN,
|
|
148
|
+
[DOMAINS.DELIVERY]: DELIVERY_DOMAIN,
|
|
149
|
+
[DOMAINS.OPERATIONS]: OPERATIONS_DOMAIN,
|
|
150
|
+
[DOMAINS.FINANCE]: FINANCE_DOMAIN,
|
|
151
|
+
[DOMAINS.EXECUTIVE]: EXECUTIVE_DOMAIN,
|
|
152
|
+
[DOMAINS.TESTING]: TESTING_DOMAIN,
|
|
153
|
+
[DOMAINS.INTERNAL]: INTERNAL_DOMAIN,
|
|
154
|
+
[DOMAINS.INSTANTLY]: INSTANTLY_DOMAIN,
|
|
155
|
+
[DOMAINS.INTEGRATION]: INTEGRATION_DOMAIN,
|
|
156
|
+
[DOMAINS.UTILITY]: UTILITY_DOMAIN,
|
|
157
|
+
[DOMAINS.DIAGNOSTIC]: DIAGNOSTIC_DOMAIN
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Get domain definition by ID
|
|
162
|
+
*/
|
|
163
|
+
export function getDomainDefinition(id: ResourceDomain): DomainDefinition {
|
|
164
|
+
return DOMAIN_MAP[id]
|
|
165
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Registry exports
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export * from './domains'
|
|
6
|
+
|
|
7
|
+
export { RESERVED_RESOURCE_IDS, SYSTEM_RESOURCE_IDS, isReservedResourceId } from './reserved'
|
|
8
|
+
|
|
9
|
+
export { ResourceRegistry } from './resource-registry'
|
|
10
|
+
export type { DeploymentSpec, OrganizationRegistry, RemoteOrgConfig } from './resource-registry'
|
|
11
|
+
|
|
12
|
+
// Validation utilities
|
|
13
|
+
export {
|
|
14
|
+
validateDeploymentSpec,
|
|
15
|
+
validateRelationships,
|
|
16
|
+
validateExecutionInterface,
|
|
17
|
+
RegistryValidationError
|
|
18
|
+
} from './validation'
|
|
19
|
+
|
|
20
|
+
// Serialization utilities
|
|
21
|
+
export { serializeAllOrganizations, serializeOrganization, buildEdges } from './serialization'
|
|
22
|
+
|
|
23
|
+
// Types
|
|
24
|
+
export type {
|
|
25
|
+
ResourceStatus,
|
|
26
|
+
ResourceType,
|
|
27
|
+
ExecutableResourceType,
|
|
28
|
+
ResourceDefinition,
|
|
29
|
+
ResourceList,
|
|
30
|
+
TriggerDefinition,
|
|
31
|
+
IntegrationDefinition,
|
|
32
|
+
RelationshipDeclaration,
|
|
33
|
+
ResourceRelationships,
|
|
34
|
+
ExternalPlatform,
|
|
35
|
+
ExternalResourceDefinition,
|
|
36
|
+
HumanCheckpointDefinition,
|
|
37
|
+
DomainDefinition,
|
|
38
|
+
WebhookProviderType,
|
|
39
|
+
WebhookTriggerConfig,
|
|
40
|
+
ScheduleTriggerConfig,
|
|
41
|
+
EventTriggerConfig,
|
|
42
|
+
TriggerConfig
|
|
43
|
+
} from './types'
|
|
44
|
+
|
|
45
|
+
// Serialized Types (for API responses)
|
|
46
|
+
export type {
|
|
47
|
+
SerializedAgentDefinition,
|
|
48
|
+
SerializedWorkflowDefinition,
|
|
49
|
+
SerializedExecutionInterface,
|
|
50
|
+
SerializedExecutionFormSchema,
|
|
51
|
+
SerializedFormField,
|
|
52
|
+
SerializedFormSchema,
|
|
53
|
+
SerializedOrganizationData
|
|
54
|
+
} from './serialized-types'
|
|
55
|
+
|
|
56
|
+
// Command View Types (for graph visualization)
|
|
57
|
+
export type {
|
|
58
|
+
CommandViewAgent,
|
|
59
|
+
CommandViewWorkflow,
|
|
60
|
+
CommandViewNode,
|
|
61
|
+
CommandViewNodeType,
|
|
62
|
+
CommandViewEdge,
|
|
63
|
+
CommandViewData,
|
|
64
|
+
RelationshipType
|
|
65
|
+
} from './command-view'
|
|
66
|
+
|
|
67
|
+
// Command View Utilities
|
|
68
|
+
export {
|
|
69
|
+
isAgent,
|
|
70
|
+
isWorkflow,
|
|
71
|
+
isTrigger,
|
|
72
|
+
isIntegration,
|
|
73
|
+
isExternalResource,
|
|
74
|
+
isHumanCheckpoint,
|
|
75
|
+
getNodeId,
|
|
76
|
+
getNodeType
|
|
77
|
+
} from './command-view'
|
|
78
|
+
|
|
79
|
+
// Command View Stats types (moved from command-view/)
|
|
80
|
+
export type {
|
|
81
|
+
StatsTimeRange,
|
|
82
|
+
ResourceStats,
|
|
83
|
+
ResourceErrorsResponse,
|
|
84
|
+
ErrorSummary,
|
|
85
|
+
CommandViewExecution,
|
|
86
|
+
ResourceExecutionsResponse,
|
|
87
|
+
HumanCheckpointStats,
|
|
88
|
+
CommandViewStatsResponse
|
|
89
|
+
} from './stats-types'
|
|
90
|
+
|
|
91
|
+
// Resource Metadata (icon names, colors)
|
|
92
|
+
export type { ResourceDefinitionType, NodeColorType } from './resource-metadata'
|
|
93
|
+
export { resourceTypeIconNames, resourceTypeColors, getResourceIconName, getResourceColor } from './resource-metadata'
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reserved Resource IDs
|
|
3
|
+
* Resource IDs reserved for built-in platform resources.
|
|
4
|
+
* External SDK deployments cannot use these IDs.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Set of resource IDs reserved for built-in platform resources.
|
|
9
|
+
* These IDs cannot be used by external SDK deployments.
|
|
10
|
+
*/
|
|
11
|
+
export const RESERVED_RESOURCE_IDS = new Set(['command-center-assistant'])
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Array form of RESERVED_RESOURCE_IDS for Supabase query filtering.
|
|
15
|
+
* Supabase `.not('col', 'in', ...)` requires an array, not a Set.
|
|
16
|
+
*/
|
|
17
|
+
export const SYSTEM_RESOURCE_IDS = Array.from(RESERVED_RESOURCE_IDS)
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Check if a resource ID is reserved for platform use
|
|
21
|
+
*/
|
|
22
|
+
export function isReservedResourceId(resourceId: string): boolean {
|
|
23
|
+
return RESERVED_RESOURCE_IDS.has(resourceId)
|
|
24
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Type Metadata
|
|
3
|
+
*
|
|
4
|
+
* Centralized metadata for ResourceDefinition types including icon names and colors.
|
|
5
|
+
* Icon names reference @tabler/icons-react - UI layer maps these to actual components.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ResourceDefinition } from './types'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* All valid resource types from ResourceDefinition
|
|
12
|
+
* Derived from the base interface to ensure consistency
|
|
13
|
+
*/
|
|
14
|
+
export type ResourceDefinitionType = ResourceDefinition['type']
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Node color types for graph visualization
|
|
18
|
+
* Used by both @repo/core (metadata) and @repo/ui (components)
|
|
19
|
+
*/
|
|
20
|
+
export type NodeColorType = 'violet' | 'blue' | 'orange' | 'teal' | 'gray' | 'yellow'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Tabler icon names for each resource type
|
|
24
|
+
* UI packages map these strings to actual icon components
|
|
25
|
+
*/
|
|
26
|
+
export const resourceTypeIconNames: Record<ResourceDefinitionType, string> = {
|
|
27
|
+
agent: 'IconBrain',
|
|
28
|
+
workflow: 'IconGitBranch',
|
|
29
|
+
trigger: 'IconBolt',
|
|
30
|
+
integration: 'IconPlug',
|
|
31
|
+
external: 'IconExternalLink',
|
|
32
|
+
human: 'IconUser'
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Mantine color names for each resource type
|
|
37
|
+
*/
|
|
38
|
+
export const resourceTypeColors: Record<ResourceDefinitionType, NodeColorType> = {
|
|
39
|
+
agent: 'violet',
|
|
40
|
+
workflow: 'blue',
|
|
41
|
+
trigger: 'orange',
|
|
42
|
+
integration: 'teal',
|
|
43
|
+
external: 'gray',
|
|
44
|
+
human: 'yellow'
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Get icon name for a resource type
|
|
49
|
+
*/
|
|
50
|
+
export function getResourceIconName(type: ResourceDefinitionType): string {
|
|
51
|
+
return resourceTypeIconNames[type]
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Get color for a resource type
|
|
56
|
+
*/
|
|
57
|
+
export function getResourceColor(type: ResourceDefinitionType): NodeColorType {
|
|
58
|
+
return resourceTypeColors[type]
|
|
59
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for Human Checkpoints in ResourceRegistry
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { describe, it, expect, beforeEach } from 'vitest'
|
|
6
|
+
import { ResourceRegistry } from './resource-registry'
|
|
7
|
+
import type { DeploymentSpec } from './resource-registry'
|
|
8
|
+
import type { HumanCheckpointDefinition } from './types'
|
|
9
|
+
import type { AgentDefinition, WorkflowDefinition } from '../../execution/engine'
|
|
10
|
+
|
|
11
|
+
// Mock agent
|
|
12
|
+
const mockAgent: AgentDefinition = {
|
|
13
|
+
config: {
|
|
14
|
+
resourceId: 'test-agent',
|
|
15
|
+
name: 'Test Agent',
|
|
16
|
+
description: 'Test agent',
|
|
17
|
+
version: '1.0.0',
|
|
18
|
+
type: 'agent',
|
|
19
|
+
status: 'dev'
|
|
20
|
+
},
|
|
21
|
+
modelConfig: {
|
|
22
|
+
provider: 'openai',
|
|
23
|
+
model: 'gpt-5.4-mini',
|
|
24
|
+
apiKey: 'test-key',
|
|
25
|
+
temperature: 1
|
|
26
|
+
},
|
|
27
|
+
tools: [],
|
|
28
|
+
systemPrompt: 'Test prompt'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Mock workflow
|
|
32
|
+
const mockWorkflow: WorkflowDefinition = {
|
|
33
|
+
config: {
|
|
34
|
+
resourceId: 'test-workflow',
|
|
35
|
+
name: 'Test Workflow',
|
|
36
|
+
description: 'Test workflow',
|
|
37
|
+
version: '1.0.0',
|
|
38
|
+
type: 'workflow',
|
|
39
|
+
status: 'dev'
|
|
40
|
+
},
|
|
41
|
+
entryPoint: 'start',
|
|
42
|
+
steps: {}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
describe('ResourceRegistry - Human Checkpoints', () => {
|
|
46
|
+
let registry: ResourceRegistry
|
|
47
|
+
|
|
48
|
+
beforeEach(() => {
|
|
49
|
+
const humanCheckpoint: HumanCheckpointDefinition = {
|
|
50
|
+
resourceId: 'test-approval',
|
|
51
|
+
type: 'human',
|
|
52
|
+
version: '1.0.0',
|
|
53
|
+
name: 'Test Approval',
|
|
54
|
+
description: 'Test human checkpoint',
|
|
55
|
+
status: 'dev',
|
|
56
|
+
requestedBy: {
|
|
57
|
+
agents: ['test-agent']
|
|
58
|
+
},
|
|
59
|
+
routesTo: {
|
|
60
|
+
workflows: ['test-workflow']
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const resources: DeploymentSpec = {
|
|
65
|
+
agents: [mockAgent],
|
|
66
|
+
workflows: [mockWorkflow],
|
|
67
|
+
humanCheckpoints: [humanCheckpoint]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
registry = new ResourceRegistry({
|
|
71
|
+
'test-org': resources
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
describe('getHumanCheckpoints', () => {
|
|
76
|
+
it('should return all human checkpoints for an organization', () => {
|
|
77
|
+
const humanCheckpoints = registry.getHumanCheckpoints('test-org')
|
|
78
|
+
expect(humanCheckpoints).toHaveLength(1)
|
|
79
|
+
expect(humanCheckpoints[0].resourceId).toBe('test-approval')
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
it('should return empty array for org without human checkpoints', () => {
|
|
83
|
+
const humanCheckpoints = registry.getHumanCheckpoints('non-existent-org')
|
|
84
|
+
expect(humanCheckpoints).toEqual([])
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
describe('getHumanCheckpoint', () => {
|
|
89
|
+
it('should return specific human checkpoint by ID', () => {
|
|
90
|
+
const humanCheckpoint = registry.getHumanCheckpoint('test-org', 'test-approval')
|
|
91
|
+
expect(humanCheckpoint).not.toBeNull()
|
|
92
|
+
expect(humanCheckpoint?.resourceId).toBe('test-approval')
|
|
93
|
+
expect(humanCheckpoint?.name).toBe('Test Approval')
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
it('should return null for non-existent human checkpoint', () => {
|
|
97
|
+
const humanCheckpoint = registry.getHumanCheckpoint('test-org', 'non-existent')
|
|
98
|
+
expect(humanCheckpoint).toBeNull()
|
|
99
|
+
})
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
describe('serializeOrganization', () => {
|
|
103
|
+
it('should include human checkpoints in command view data', () => {
|
|
104
|
+
const commandView = registry.getCommandViewData('test-org')
|
|
105
|
+
expect(commandView.humanCheckpoints).toHaveLength(1)
|
|
106
|
+
expect(commandView.humanCheckpoints[0].resourceId).toBe('test-approval')
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
describe('buildEdges', () => {
|
|
111
|
+
it('should create approval edges from requestedBy', () => {
|
|
112
|
+
const commandView = registry.getCommandViewData('test-org')
|
|
113
|
+
const approvalEdges = commandView.edges.filter((e) => e.relationship === 'approval')
|
|
114
|
+
expect(approvalEdges).toHaveLength(1)
|
|
115
|
+
expect(approvalEdges[0].source).toBe('test-agent')
|
|
116
|
+
expect(approvalEdges[0].target).toBe('test-approval')
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
it('should create triggers edges to routesTo', () => {
|
|
120
|
+
const commandView = registry.getCommandViewData('test-org')
|
|
121
|
+
const triggerEdges = commandView.edges.filter(
|
|
122
|
+
(e) => e.source === 'test-approval' && e.relationship === 'triggers'
|
|
123
|
+
)
|
|
124
|
+
expect(triggerEdges).toHaveLength(1)
|
|
125
|
+
expect(triggerEdges[0].source).toBe('test-approval')
|
|
126
|
+
expect(triggerEdges[0].target).toBe('test-workflow')
|
|
127
|
+
})
|
|
128
|
+
})
|
|
129
|
+
})
|