@elevasis/core 0.22.0 → 0.24.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.
Files changed (244) hide show
  1. package/dist/index.d.ts +3214 -2501
  2. package/dist/index.js +3112 -1222
  3. package/dist/knowledge/index.d.ts +1108 -1264
  4. package/dist/knowledge/index.js +112 -9
  5. package/dist/organization-model/index.d.ts +3214 -2501
  6. package/dist/organization-model/index.js +3112 -1222
  7. package/dist/test-utils/index.d.ts +985 -1103
  8. package/dist/test-utils/index.js +2464 -1165
  9. package/package.json +5 -5
  10. package/src/README.md +14 -14
  11. package/src/__tests__/publish.test.ts +24 -24
  12. package/src/__tests__/template-core-compatibility.test.ts +9 -80
  13. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2389 -2121
  14. package/src/_gen/__tests__/scaffold-contracts.test.ts +30 -30
  15. package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +217 -217
  16. package/src/auth/multi-tenancy/credentials/server/encryption.ts +69 -69
  17. package/src/auth/multi-tenancy/credentials/server/kek-loader.ts +37 -37
  18. package/src/auth/multi-tenancy/index.ts +26 -26
  19. package/src/auth/multi-tenancy/invitations/api-schemas.ts +104 -104
  20. package/src/auth/multi-tenancy/memberships/api-schemas.ts +143 -143
  21. package/src/auth/multi-tenancy/memberships/index.ts +26 -26
  22. package/src/auth/multi-tenancy/memberships/membership.ts +130 -130
  23. package/src/auth/multi-tenancy/organizations/__tests__/api-schemas.test.ts +194 -194
  24. package/src/auth/multi-tenancy/organizations/api-schemas.ts +136 -136
  25. package/src/auth/multi-tenancy/permissions.test.ts +42 -42
  26. package/src/auth/multi-tenancy/permissions.ts +123 -123
  27. package/src/auth/multi-tenancy/role-management/api-schemas.ts +78 -78
  28. package/src/auth/multi-tenancy/role-management/index.ts +16 -16
  29. package/src/auth/multi-tenancy/theme-presets.ts +45 -45
  30. package/src/auth/multi-tenancy/types.ts +57 -57
  31. package/src/auth/multi-tenancy/users/api-schemas.ts +165 -165
  32. package/src/business/README.md +2 -2
  33. package/src/business/acquisition/activity-events.test.ts +250 -250
  34. package/src/business/acquisition/activity-events.ts +93 -93
  35. package/src/business/acquisition/api-schemas.test.ts +1883 -1843
  36. package/src/business/acquisition/api-schemas.ts +1493 -1500
  37. package/src/business/acquisition/build-templates.test.ts +240 -240
  38. package/src/business/acquisition/build-templates.ts +83 -41
  39. package/src/business/acquisition/crm-next-action.test.ts +262 -262
  40. package/src/business/acquisition/crm-next-action.ts +220 -220
  41. package/src/business/acquisition/crm-priority.test.ts +216 -216
  42. package/src/business/acquisition/crm-priority.ts +349 -349
  43. package/src/business/acquisition/crm-state-actions.test.ts +153 -151
  44. package/src/business/acquisition/deal-ownership.test.ts +351 -351
  45. package/src/business/acquisition/deal-ownership.ts +120 -120
  46. package/src/business/acquisition/derive-actions.test.ts +129 -104
  47. package/src/business/acquisition/derive-actions.ts +74 -84
  48. package/src/business/acquisition/index.ts +171 -170
  49. package/src/business/acquisition/ontology-validation.ts +309 -0
  50. package/src/business/acquisition/stateful.ts +30 -30
  51. package/src/business/acquisition/types.ts +396 -392
  52. package/src/business/clients/api-schemas.test.ts +115 -115
  53. package/src/business/clients/api-schemas.ts +158 -158
  54. package/src/business/clients/index.ts +1 -1
  55. package/src/business/crm/api-schemas.ts +40 -40
  56. package/src/business/crm/index.ts +1 -1
  57. package/src/business/deals/api-schemas.ts +87 -87
  58. package/src/business/deals/index.ts +1 -1
  59. package/src/business/index.ts +5 -5
  60. package/src/business/projects/types.ts +144 -144
  61. package/src/commands/queue/types/task.ts +15 -15
  62. package/src/execution/core/runner-types.ts +61 -61
  63. package/src/execution/core/sse-executions.ts +7 -7
  64. package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -10
  65. package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -16
  66. package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -4
  67. package/src/execution/engine/agent/core/types.ts +25 -25
  68. package/src/execution/engine/agent/index.ts +6 -6
  69. package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -24
  70. package/src/execution/engine/index.ts +443 -443
  71. package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +298 -298
  72. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.test.ts +55 -55
  73. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +107 -107
  74. package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.test.ts +48 -48
  75. package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.ts +99 -99
  76. package/src/execution/engine/tools/integration/server/adapters/apollo/index.ts +1 -1
  77. package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +363 -363
  78. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +162 -162
  79. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +316 -316
  80. package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.test.ts +18 -18
  81. package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.ts +194 -194
  82. package/src/execution/engine/tools/integration/server/adapters/clickup/index.ts +7 -7
  83. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +204 -204
  84. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +105 -105
  85. package/src/execution/engine/tools/integration/server/adapters/google-calendar/google-calendar-adapter.ts +428 -428
  86. package/src/execution/engine/tools/integration/server/adapters/google-calendar/index.ts +2 -2
  87. package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
  88. package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1474 -1474
  89. package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +103 -103
  90. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.test.ts +88 -88
  91. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +141 -141
  92. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +76 -76
  93. package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +182 -182
  94. package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +310 -310
  95. package/src/execution/engine/tools/integration/service.test.ts +239 -239
  96. package/src/execution/engine/tools/integration/service.ts +172 -172
  97. package/src/execution/engine/tools/integration/tool.ts +255 -255
  98. package/src/execution/engine/tools/lead-service-types.ts +1005 -1005
  99. package/src/execution/engine/tools/messages.ts +43 -43
  100. package/src/execution/engine/tools/platform/acquisition/company-tools.ts +7 -7
  101. package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +6 -6
  102. package/src/execution/engine/tools/platform/acquisition/list-tools.ts +6 -6
  103. package/src/execution/engine/tools/platform/acquisition/types.ts +280 -280
  104. package/src/execution/engine/tools/platform/email/types.ts +97 -97
  105. package/src/execution/engine/tools/registry.ts +704 -704
  106. package/src/execution/engine/tools/tool-maps.ts +831 -831
  107. package/src/execution/engine/tools/types.ts +234 -234
  108. package/src/execution/engine/workflow/types.ts +202 -202
  109. package/src/execution/external/__tests__/api-schemas.test.ts +127 -127
  110. package/src/execution/external/api-schemas.ts +40 -40
  111. package/src/execution/external/index.ts +1 -1
  112. package/src/index.ts +18 -18
  113. package/src/integrations/credentials/__tests__/api-schemas.test.ts +420 -420
  114. package/src/integrations/credentials/api-schemas.ts +146 -146
  115. package/src/integrations/credentials/schemas.ts +200 -200
  116. package/src/integrations/oauth/__tests__/provider-registry.test.ts +7 -7
  117. package/src/integrations/oauth/provider-registry.ts +74 -74
  118. package/src/integrations/oauth/server/credentials.ts +43 -43
  119. package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +327 -327
  120. package/src/integrations/webhook-endpoints/api-schemas.ts +103 -103
  121. package/src/integrations/webhook-endpoints/types.ts +58 -58
  122. package/src/knowledge/README.md +33 -32
  123. package/src/knowledge/__tests__/queries.test.ts +633 -541
  124. package/src/knowledge/format.ts +100 -99
  125. package/src/knowledge/index.ts +5 -5
  126. package/src/knowledge/published.ts +5 -5
  127. package/src/knowledge/queries.ts +274 -222
  128. package/src/operations/activities/api-schemas.ts +80 -80
  129. package/src/operations/activities/types.ts +64 -64
  130. package/src/organization-model/README.md +149 -109
  131. package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -0
  132. package/src/organization-model/__tests__/defaults.test.ts +168 -194
  133. package/src/organization-model/__tests__/domains/actions.test.ts +78 -0
  134. package/src/organization-model/__tests__/domains/customers.test.ts +48 -44
  135. package/src/organization-model/__tests__/domains/entities.test.ts +56 -0
  136. package/src/organization-model/__tests__/domains/goals.test.ts +110 -96
  137. package/src/organization-model/__tests__/domains/identity.test.ts +4 -3
  138. package/src/organization-model/__tests__/domains/navigation.test.ts +222 -166
  139. package/src/organization-model/__tests__/domains/offerings.test.ts +83 -88
  140. package/src/organization-model/__tests__/domains/policies.test.ts +323 -0
  141. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +30 -30
  142. package/src/organization-model/__tests__/domains/resources.test.ts +396 -175
  143. package/src/organization-model/__tests__/domains/roles.test.ts +463 -402
  144. package/src/organization-model/__tests__/domains/statuses.test.ts +13 -10
  145. package/src/organization-model/__tests__/domains/systems.test.ts +209 -193
  146. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -0
  147. package/src/organization-model/__tests__/foundation.test.ts +47 -75
  148. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -0
  149. package/src/organization-model/__tests__/graph.test.ts +1336 -149
  150. package/src/organization-model/__tests__/icons.test.ts +10 -1
  151. package/src/organization-model/__tests__/knowledge.test.ts +418 -61
  152. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -0
  153. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -0
  154. package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -94
  155. package/src/organization-model/__tests__/recursive-system-schema.test.ts +549 -0
  156. package/src/organization-model/__tests__/resolve.test.ts +303 -42
  157. package/src/organization-model/__tests__/schema.test.ts +863 -153
  158. package/src/organization-model/__tests__/surface-projection.test.ts +284 -174
  159. package/src/organization-model/catalogs/lead-gen.ts +144 -0
  160. package/src/organization-model/content-kinds/config.ts +36 -0
  161. package/src/organization-model/content-kinds/index.ts +78 -0
  162. package/src/organization-model/content-kinds/pipeline.ts +68 -0
  163. package/src/organization-model/content-kinds/registry.ts +44 -0
  164. package/src/organization-model/content-kinds/status.ts +71 -0
  165. package/src/organization-model/content-kinds/template.ts +83 -0
  166. package/src/organization-model/content-kinds/types.ts +117 -0
  167. package/src/organization-model/contracts.ts +27 -17
  168. package/src/organization-model/defaults.ts +489 -107
  169. package/src/organization-model/domains/actions.ts +333 -0
  170. package/src/organization-model/domains/customers.ts +10 -7
  171. package/src/organization-model/domains/entities.ts +144 -0
  172. package/src/organization-model/domains/goals.ts +9 -6
  173. package/src/organization-model/domains/knowledge.ts +128 -54
  174. package/src/organization-model/domains/navigation.ts +139 -416
  175. package/src/organization-model/domains/offerings.ts +15 -10
  176. package/src/organization-model/domains/policies.ts +102 -0
  177. package/src/organization-model/domains/projects.ts +6 -40
  178. package/src/organization-model/domains/prospecting.ts +395 -514
  179. package/src/organization-model/domains/resources.ts +173 -81
  180. package/src/organization-model/domains/roles.ts +96 -93
  181. package/src/organization-model/domains/sales.test.ts +218 -218
  182. package/src/organization-model/domains/sales.ts +380 -589
  183. package/src/organization-model/domains/shared.ts +8 -8
  184. package/src/organization-model/domains/statuses.ts +298 -89
  185. package/src/organization-model/domains/systems.ts +240 -38
  186. package/src/organization-model/foundation.ts +35 -48
  187. package/src/organization-model/graph/build.ts +1035 -279
  188. package/src/organization-model/graph/index.ts +4 -4
  189. package/src/organization-model/graph/link.ts +10 -10
  190. package/src/organization-model/graph/schema.ts +77 -56
  191. package/src/organization-model/graph/types.ts +75 -56
  192. package/src/organization-model/helpers.ts +312 -59
  193. package/src/organization-model/icons.ts +78 -66
  194. package/src/organization-model/index.ts +129 -16
  195. package/src/organization-model/migration-helpers.ts +252 -0
  196. package/src/organization-model/ontology.ts +661 -0
  197. package/src/organization-model/organization-graph.mdx +110 -89
  198. package/src/organization-model/organization-model.mdx +226 -171
  199. package/src/organization-model/published.ts +295 -139
  200. package/src/organization-model/resolve.ts +139 -21
  201. package/src/organization-model/schema.ts +841 -301
  202. package/src/organization-model/surface-projection.ts +212 -218
  203. package/src/organization-model/types.ts +181 -90
  204. package/src/platform/api/types.ts +38 -38
  205. package/src/platform/constants/versions.ts +3 -3
  206. package/src/platform/index.ts +23 -23
  207. package/src/platform/registry/__tests__/command-view.test.ts +5 -7
  208. package/src/platform/registry/__tests__/resource-link.test.ts +35 -30
  209. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +17 -32
  210. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -0
  211. package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2051
  212. package/src/platform/registry/__tests__/validation.test.ts +1347 -1343
  213. package/src/platform/registry/command-view.ts +10 -10
  214. package/src/platform/registry/index.ts +103 -103
  215. package/src/platform/registry/resource-link.ts +32 -32
  216. package/src/platform/registry/resource-registry.ts +890 -878
  217. package/src/platform/registry/serialization.ts +295 -295
  218. package/src/platform/registry/serialized-types.ts +166 -166
  219. package/src/platform/registry/stats-types.ts +68 -68
  220. package/src/platform/registry/types.ts +425 -425
  221. package/src/platform/registry/validation.ts +745 -743
  222. package/src/platform/utils/__tests__/validation.test.ts +1084 -1084
  223. package/src/platform/utils/validation.ts +425 -425
  224. package/src/projects/api-schemas.test.ts +39 -39
  225. package/src/projects/api-schemas.ts +291 -291
  226. package/src/reference/_generated/contracts.md +2389 -2121
  227. package/src/reference/glossary.md +76 -76
  228. package/src/scaffold-registry/__tests__/index.test.ts +206 -206
  229. package/src/scaffold-registry/__tests__/schema.test.ts +166 -166
  230. package/src/scaffold-registry/index.ts +392 -392
  231. package/src/scaffold-registry/schema.ts +243 -243
  232. package/src/server.ts +289 -289
  233. package/src/supabase/database.types.ts +3153 -3093
  234. package/src/test-utils/README.md +37 -37
  235. package/src/test-utils/entities.ts +108 -108
  236. package/src/test-utils/fixtures/memberships.ts +82 -82
  237. package/src/test-utils/index.ts +12 -12
  238. package/src/test-utils/organization-model.ts +65 -65
  239. package/src/test-utils/published.ts +6 -6
  240. package/src/test-utils/rls/RLSTestContext.ts +588 -588
  241. package/src/test-utils/test-utils.test.ts +44 -49
  242. package/src/organization-model/__tests__/domains/operations.test.ts +0 -203
  243. package/src/organization-model/domains/features.ts +0 -31
  244. package/src/organization-model/domains/operations.ts +0 -85
@@ -1,425 +1,425 @@
1
- /**
2
- * Resource Registry type definitions
3
- */
4
-
5
- import type { IntegrationType } from '../../execution/engine/tools/integration'
6
- import type { ResourceEntry, ResourceGovernanceStatus } from '../../organization-model/domains/resources'
7
- import type { SystemEntry } from '../../organization-model/domains/systems'
8
- import type { ResourceCategory, ResourceLink } from './resource-link'
9
-
10
- // ============================================================================
11
- // Core Resource Type Definitions
12
- // ============================================================================
13
-
14
- /**
15
- * Environment/deployment status for resources
16
- */
17
- export type ResourceStatus = 'dev' | 'prod'
18
-
19
- /**
20
- * All resource types in the platform
21
- * Used as the discriminator field in ResourceDefinition
22
- */
23
- export type ResourceType = 'agent' | 'workflow' | 'trigger' | 'integration' | 'external' | 'human'
24
-
25
- /**
26
- * Executable resource types (subset of ResourceType)
27
- * These resources can be directly executed by the execution engine
28
- */
29
- export type ExecutableResourceType = 'workflow' | 'agent'
30
-
31
- export type ResourceSystemSummary = Pick<SystemEntry, 'id' | 'title' | 'description' | 'kind' | 'status'>
32
-
33
- // ============================================================================
34
- // Base Resource Interface
35
- // ============================================================================
36
-
37
- /**
38
- * Base interface for ALL platform resources
39
- * Shared by both executable (agents, workflows) and non-executable (triggers, integrations, etc.) resources
40
- */
41
- export interface ResourceDefinition {
42
- /** Unique resource identifier */
43
- resourceId: string
44
-
45
- /** Display name */
46
- name: string
47
-
48
- /** Purpose and functionality description */
49
- description: string
50
-
51
- /** Version for change tracking and evolution */
52
- version: string
53
-
54
- /** Resource type discriminator */
55
- type: ResourceType
56
-
57
- /** Environment/deployment status */
58
- status: ResourceStatus
59
-
60
- /** Graph links to Organization Model nodes */
61
- links?: ResourceLink[]
62
-
63
- /** Infrastructure category for filtering */
64
- category?: ResourceCategory
65
-
66
- /** Whether the agent supports multi-turn sessions (agents only) */
67
- sessionCapable?: boolean
68
-
69
- /** Whether the resource is local (monorepo) or remote (externally deployed) */
70
- origin?: 'local' | 'remote'
71
-
72
- /** OM System membership, when backed by a Resource descriptor */
73
- systemId?: string
74
-
75
- /** Display metadata for the owning OM System */
76
- system?: ResourceSystemSummary
77
-
78
- /** Governance lifecycle status from the OM Resource descriptor */
79
- governanceStatus?: ResourceGovernanceStatus
80
-
81
- /** Whether this resource is archived and should be excluded from registration and deployment */
82
- archived?: boolean
83
- }
84
-
85
- export type RuntimeResourceDescriptor = Extract<ResourceEntry, { kind: 'workflow' | 'agent' | 'integration' }>
86
-
87
- export type DescriptorBackedResourceDefinition<
88
- TResource extends RuntimeResourceDescriptor = RuntimeResourceDescriptor
89
- > = Omit<ResourceDefinition, 'resourceId' | 'type'> & {
90
- /** OM descriptor that owns canonical identity and governance metadata. */
91
- resource: TResource
92
- resourceId?: never
93
- type?: never
94
- }
95
-
96
- export type BoundResourceDefinition<TResource extends RuntimeResourceDescriptor = RuntimeResourceDescriptor> = Omit<
97
- DescriptorBackedResourceDefinition<TResource>,
98
- 'resource'
99
- > &
100
- ResourceDefinition & {
101
- resource: TResource
102
- resourceId: TResource['id']
103
- type: TResource['kind']
104
- }
105
-
106
- export function bindResourceDescriptor<TResource extends RuntimeResourceDescriptor>(
107
- definition: DescriptorBackedResourceDefinition<TResource>
108
- ): BoundResourceDefinition<TResource> {
109
- const { resource, ...rest } = definition
110
-
111
- return {
112
- ...rest,
113
- resource,
114
- resourceId: resource.id,
115
- type: resource.kind
116
- } as BoundResourceDefinition<TResource>
117
- }
118
-
119
- /**
120
- * Resource list for organization
121
- * Returns ResourceDefinition metadata (not full definitions)
122
- */
123
- export interface ResourceList {
124
- workflows: ResourceDefinition[]
125
- agents: ResourceDefinition[]
126
- total: number
127
- organizationName: string
128
- environment?: 'dev' | 'prod'
129
- }
130
-
131
- // ============================================================================
132
- // Resource Manifest Types
133
- // ============================================================================
134
-
135
- // ============================================================================
136
- // Trigger Configuration Types
137
- // ============================================================================
138
-
139
- /** Webhook provider identifiers */
140
- export type WebhookProviderType = 'cal-com' | 'stripe' | 'signature-api' | 'instantly' | 'apify' | 'test'
141
-
142
- /** Webhook trigger configuration */
143
- export interface WebhookTriggerConfig {
144
- /** Provider identifier */
145
- provider: WebhookProviderType
146
- /** Event type for documentation (not used for matching - workflow handles routing) */
147
- event?: string
148
- /** Optional filtering (e.g., specific form ID for Fillout) */
149
- filter?: Record<string, string>
150
- /** References credential in credentials table for per-org webhook secrets */
151
- credentialName?: string
152
- }
153
-
154
- /** Schedule trigger configuration */
155
- export interface ScheduleTriggerConfig {
156
- /** Cron expression (e.g., '0 6 * * *') */
157
- cron: string
158
- /** Optional timezone (default: UTC) */
159
- timezone?: string
160
- }
161
-
162
- /** Event trigger configuration */
163
- export interface EventTriggerConfig {
164
- /** Internal event type */
165
- eventType: string
166
- /** Event source */
167
- source?: string
168
- }
169
-
170
- /** Union of all trigger configs */
171
- export type TriggerConfig = WebhookTriggerConfig | ScheduleTriggerConfig | EventTriggerConfig
172
-
173
- // ============================================================================
174
- // Trigger Definition
175
- // ============================================================================
176
-
177
- /**
178
- * Trigger metadata - entry points that initiate resource execution
179
- *
180
- * Triggers represent how executions start: webhooks from external services,
181
- * scheduled cron jobs, platform events, or manual user actions.
182
- *
183
- * BREAKING CHANGES (2025-11-30):
184
- * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
185
- * - Field renames: `id` -> `resourceId` (inherited), `type` -> `triggerType`
186
- * - Relationship rename: `invokes` -> `triggers` (unified vocabulary)
187
- * - New required fields: `version` (inherited), `type: 'trigger'` (inherited)
188
- * - triggers object now includes `externalResources` option
189
- *
190
- * @example
191
- * // TriggerDefinition - metadata only
192
- * {
193
- * resourceId: 'trigger-new-order',
194
- * type: 'trigger',
195
- * triggerType: 'webhook',
196
- * name: 'New Order',
197
- * description: 'Webhook from Shopify on new orders',
198
- * version: '1.0.0',
199
- * status: 'prod',
200
- * webhookPath: '/webhooks/shopify/orders'
201
- * }
202
- *
203
- * // Relationships declared in ResourceRelationships (not on TriggerDefinition):
204
- * // relationships: {
205
- * // 'trigger-new-order': { triggers: { workflows: ['order-fulfillment-workflow'] } }
206
- * // }
207
- */
208
- export interface TriggerDefinition extends ResourceDefinition {
209
- /** Resource type discriminator (narrowed from base union) */
210
- type: 'trigger'
211
-
212
- /** Trigger mechanism type (renamed from 'type' to avoid collision with base type discriminator) */
213
- triggerType: 'webhook' | 'schedule' | 'manual' | 'event'
214
-
215
- /** Type-specific configuration */
216
- config?: TriggerConfig
217
-
218
- // Legacy fields (deprecated, use config instead)
219
- /** For webhook triggers: path like '/webhooks/shopify/orders' */
220
- webhookPath?: string
221
- /** For schedule triggers: cron expression like '0 6 * * *' */
222
- schedule?: string
223
- /** For event triggers: event type like 'low-stock-alert' */
224
- eventType?: string
225
-
226
- // NOTE: What this trigger starts is declared in ResourceRelationships, not here
227
- // This prevents duplication - triggers are forward-declared in relationships
228
- }
229
-
230
- /**
231
- * Integration metadata - external service connections
232
- *
233
- * References credentials table for actual connection. No connection status
234
- * stored here (queried at runtime from credentials table).
235
- *
236
- * BREAKING CHANGES (2025-11-30):
237
- * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
238
- * - Field renames: `id` -> `resourceId` (inherited)
239
- * - New required field: `status` (inherited) - organizations must add status to all integrations
240
- * - New required field: `version` (inherited) - organizations must add version to all integrations
241
- * - New required field: `type: 'integration'` (inherited) - resource type discriminator
242
- *
243
- * @example
244
- * {
245
- * resourceId: 'integration-shopify-prod',
246
- * type: 'integration',
247
- * provider: 'shopify',
248
- * credentialName: 'shopify-prod',
249
- * name: 'Shopify Production',
250
- * description: 'E-commerce platform',
251
- * version: '1.0.0',
252
- * status: 'prod'
253
- * }
254
- */
255
- export interface IntegrationDefinition extends ResourceDefinition {
256
- /** Resource type discriminator (narrowed from base union) */
257
- type: 'integration'
258
-
259
- /** OM descriptor that owns canonical identity and governance metadata. */
260
- resource?: Extract<ResourceEntry, { kind: 'integration' }>
261
-
262
- /** Integration provider type */
263
- provider: IntegrationType
264
- /** References credentials table (e.g., 'shopify-prod', 'zendesk-api') */
265
- credentialName: string
266
- }
267
-
268
- /**
269
- * Explicit resource relationship declaration
270
- *
271
- * Single-direction only - Command View derives reverse relationships.
272
- * Agents/workflows declare what they trigger and use.
273
- *
274
- * @example
275
- * {
276
- * triggers: { workflows: ['order-fulfillment-workflow'] },
277
- * uses: { integrations: ['integration-shopify-prod', 'integration-postgres'] }
278
- * }
279
- */
280
- export interface RelationshipDeclaration {
281
- /** Resources this resource triggers */
282
- triggers?: {
283
- /** Agent resourceIds this resource triggers */
284
- agents?: string[]
285
- /** Workflow resourceIds this resource triggers */
286
- workflows?: string[]
287
- }
288
- /** Integrations this resource uses */
289
- uses?: {
290
- /** Integration IDs this resource uses */
291
- integrations?: string[]
292
- }
293
- }
294
-
295
- /**
296
- * Resource relationships map
297
- * Maps resourceId to its relationship declarations
298
- *
299
- * @example
300
- * {
301
- * 'order-processor-agent': {
302
- * triggers: { workflows: ['order-fulfillment-workflow'] },
303
- * uses: { integrations: ['integration-shopify-prod'] }
304
- * }
305
- * }
306
- */
307
- export type ResourceRelationships = Record<string, RelationshipDeclaration>
308
-
309
- // ============================================================================
310
- // External Resource Types
311
- // ============================================================================
312
-
313
- /**
314
- * External platform type
315
- * Supported third-party automation platforms
316
- */
317
- export type ExternalPlatform = 'n8n' | 'make' | 'zapier' | 'other'
318
-
319
- /**
320
- * External automation resource metadata
321
- *
322
- * Represents workflows/automations running on third-party platforms
323
- * (n8n, Make, Zapier, etc.) for visualization in Command View.
324
- *
325
- * NOTE: This is metadata ONLY for visualization. No execution logic,
326
- * no API integration with external platforms, no status syncing.
327
- *
328
- * BREAKING CHANGES (2025-11-30):
329
- * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
330
- * - Field renames: `id` -> `resourceId` (inherited)
331
- * - New required field: `version` (inherited) - organizations must add version to all external resources
332
- * - New required field: `type: 'external'` (inherited) - resource type discriminator
333
- * - REMOVED FIELD: `triggeredBy` - per relationship-consolidation design, all relationships are forward-only declarations
334
- *
335
- * @example
336
- * {
337
- * resourceId: 'external-n8n-order-sync',
338
- * type: 'external',
339
- * version: '1.0.0',
340
- * platform: 'n8n',
341
- * name: 'Shopify Order Sync',
342
- * description: 'Legacy n8n workflow for syncing Shopify orders',
343
- * status: 'prod',
344
- * platformUrl: 'https://n8n.client.com/workflow/123',
345
- * triggers: { workflows: ['order-fulfillment-workflow'] },
346
- * uses: { integrations: ['integration-shopify-prod'] }
347
- * }
348
- */
349
- export interface ExternalResourceDefinition extends ResourceDefinition {
350
- /** Resource type discriminator (narrowed from base union) */
351
- type: 'external'
352
-
353
- /** Platform type */
354
- platform: ExternalPlatform
355
-
356
- // Optional platform-specific metadata
357
- /** Link to external platform (e.g., n8n workflow editor URL) */
358
- platformUrl?: string
359
- /** Platform's internal ID/reference */
360
- externalId?: string
361
-
362
- /** What this external resource triggers (external -> internal) */
363
- triggers?: {
364
- /** Elevasis workflow resourceIds this external automation triggers */
365
- workflows?: string[]
366
- /** Elevasis agent resourceIds this external automation triggers */
367
- agents?: string[]
368
- }
369
-
370
- /** Integrations this external resource uses (shared credentials) */
371
- uses?: {
372
- /** Integration IDs this external automation uses */
373
- integrations?: string[]
374
- }
375
-
376
- // NOTE: triggeredBy field removed - per relationship-consolidation design,
377
- // all relationships are forward-only declarations. Graph edges are built
378
- // from forward declarations only.
379
- }
380
-
381
- /**
382
- * Human Checkpoint definition - human decision points in automation
383
- *
384
- * Represents where human judgment is deployed in the automation landscape.
385
- * Tasks with matching command_queue_group are routed to this checkpoint.
386
- *
387
- * BREAKING CHANGES (2025-11-30):
388
- * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
389
- * - Field renames: `id` -> `resourceId` (inherited)
390
- * - description is now REQUIRED (was optional) - organizations must add description to all human checkpoints
391
- * - New required field: `version` (inherited) - organizations must add version to all human checkpoints
392
- * - New required field: `type: 'human'` (inherited) - resource type discriminator
393
- *
394
- * @example
395
- * {
396
- * resourceId: 'sales-approval',
397
- * type: 'human',
398
- * name: 'Sales Approval Queue',
399
- * description: 'High-value order approvals for sales team',
400
- * version: '1.0.0',
401
- * status: 'prod',
402
- * requestedBy: { agents: ['order-processor-agent'] },
403
- * routesTo: { agents: ['order-fulfillment-agent'] }
404
- * }
405
- */
406
- export interface HumanCheckpointDefinition extends ResourceDefinition {
407
- /** Resource type discriminator (narrowed from base union) */
408
- type: 'human'
409
-
410
- /** Resources that create tasks for this checkpoint */
411
- requestedBy?: {
412
- /** Agent resourceIds that request approval here */
413
- agents?: string[]
414
- /** Workflow resourceIds that request approval here */
415
- workflows?: string[]
416
- }
417
-
418
- /** Resources that receive approved decisions */
419
- routesTo?: {
420
- /** Agent resourceIds that handle approved tasks */
421
- agents?: string[]
422
- /** Workflow resourceIds that handle approved tasks */
423
- workflows?: string[]
424
- }
425
- }
1
+ /**
2
+ * Resource Registry type definitions
3
+ */
4
+
5
+ import type { IntegrationType } from '../../execution/engine/tools/integration'
6
+ import type { ResourceEntry, ResourceGovernanceStatus } from '../../organization-model/domains/resources'
7
+ import type { SystemEntry } from '../../organization-model/domains/systems'
8
+ import type { ResourceCategory, ResourceLink } from './resource-link'
9
+
10
+ // ============================================================================
11
+ // Core Resource Type Definitions
12
+ // ============================================================================
13
+
14
+ /**
15
+ * Environment/deployment status for resources
16
+ */
17
+ export type ResourceStatus = 'dev' | 'prod'
18
+
19
+ /**
20
+ * All resource types in the platform
21
+ * Used as the discriminator field in ResourceDefinition
22
+ */
23
+ export type ResourceType = 'agent' | 'workflow' | 'trigger' | 'integration' | 'external' | 'human'
24
+
25
+ /**
26
+ * Executable resource types (subset of ResourceType)
27
+ * These resources can be directly executed by the execution engine
28
+ */
29
+ export type ExecutableResourceType = 'workflow' | 'agent'
30
+
31
+ export type ResourceSystemSummary = Pick<SystemEntry, 'id' | 'title' | 'description' | 'kind' | 'lifecycle'>
32
+
33
+ // ============================================================================
34
+ // Base Resource Interface
35
+ // ============================================================================
36
+
37
+ /**
38
+ * Base interface for ALL platform resources
39
+ * Shared by both executable (agents, workflows) and non-executable (triggers, integrations, etc.) resources
40
+ */
41
+ export interface ResourceDefinition {
42
+ /** Unique resource identifier */
43
+ resourceId: string
44
+
45
+ /** Display name */
46
+ name: string
47
+
48
+ /** Purpose and functionality description */
49
+ description: string
50
+
51
+ /** Version for change tracking and evolution */
52
+ version: string
53
+
54
+ /** Resource type discriminator */
55
+ type: ResourceType
56
+
57
+ /** Environment/deployment status */
58
+ status: ResourceStatus
59
+
60
+ /** Graph links to Organization Model nodes */
61
+ links?: ResourceLink[]
62
+
63
+ /** Infrastructure category for filtering */
64
+ category?: ResourceCategory
65
+
66
+ /** Whether the agent supports multi-turn sessions (agents only) */
67
+ sessionCapable?: boolean
68
+
69
+ /** Whether the resource is local (monorepo) or remote (externally deployed) */
70
+ origin?: 'local' | 'remote'
71
+
72
+ /** OM System membership — dot-separated system path (e.g. "sys.lead-gen"), when backed by a Resource descriptor */
73
+ systemPath?: string
74
+
75
+ /** Display metadata for the owning OM System */
76
+ system?: ResourceSystemSummary
77
+
78
+ /** Governance lifecycle status from the OM Resource descriptor */
79
+ governanceStatus?: ResourceGovernanceStatus
80
+
81
+ /** Whether this resource is archived and should be excluded from registration and deployment */
82
+ archived?: boolean
83
+ }
84
+
85
+ export type RuntimeResourceDescriptor = Extract<ResourceEntry, { kind: 'workflow' | 'agent' | 'integration' }>
86
+
87
+ export type DescriptorBackedResourceDefinition<
88
+ TResource extends RuntimeResourceDescriptor = RuntimeResourceDescriptor
89
+ > = Omit<ResourceDefinition, 'resourceId' | 'type'> & {
90
+ /** OM descriptor that owns canonical identity and governance metadata. */
91
+ resource: TResource
92
+ resourceId?: never
93
+ type?: never
94
+ }
95
+
96
+ export type BoundResourceDefinition<TResource extends RuntimeResourceDescriptor = RuntimeResourceDescriptor> = Omit<
97
+ DescriptorBackedResourceDefinition<TResource>,
98
+ 'resource'
99
+ > &
100
+ ResourceDefinition & {
101
+ resource: TResource
102
+ resourceId: TResource['id']
103
+ type: TResource['kind']
104
+ }
105
+
106
+ export function bindResourceDescriptor<TResource extends RuntimeResourceDescriptor>(
107
+ definition: DescriptorBackedResourceDefinition<TResource>
108
+ ): BoundResourceDefinition<TResource> {
109
+ const { resource, ...rest } = definition
110
+
111
+ return {
112
+ ...rest,
113
+ resource,
114
+ resourceId: resource.id,
115
+ type: resource.kind
116
+ } as BoundResourceDefinition<TResource>
117
+ }
118
+
119
+ /**
120
+ * Resource list for organization
121
+ * Returns ResourceDefinition metadata (not full definitions)
122
+ */
123
+ export interface ResourceList {
124
+ workflows: ResourceDefinition[]
125
+ agents: ResourceDefinition[]
126
+ total: number
127
+ organizationName: string
128
+ environment?: 'dev' | 'prod'
129
+ }
130
+
131
+ // ============================================================================
132
+ // Resource Manifest Types
133
+ // ============================================================================
134
+
135
+ // ============================================================================
136
+ // Trigger Configuration Types
137
+ // ============================================================================
138
+
139
+ /** Webhook provider identifiers */
140
+ export type WebhookProviderType = 'cal-com' | 'stripe' | 'signature-api' | 'instantly' | 'apify' | 'test'
141
+
142
+ /** Webhook trigger configuration */
143
+ export interface WebhookTriggerConfig {
144
+ /** Provider identifier */
145
+ provider: WebhookProviderType
146
+ /** Event type for documentation (not used for matching - workflow handles routing) */
147
+ event?: string
148
+ /** Optional filtering (e.g., specific form ID for Fillout) */
149
+ filter?: Record<string, string>
150
+ /** References credential in credentials table for per-org webhook secrets */
151
+ credentialName?: string
152
+ }
153
+
154
+ /** Schedule trigger configuration */
155
+ export interface ScheduleTriggerConfig {
156
+ /** Cron expression (e.g., '0 6 * * *') */
157
+ cron: string
158
+ /** Optional timezone (default: UTC) */
159
+ timezone?: string
160
+ }
161
+
162
+ /** Event trigger configuration */
163
+ export interface EventTriggerConfig {
164
+ /** Internal event type */
165
+ eventType: string
166
+ /** Event source */
167
+ source?: string
168
+ }
169
+
170
+ /** Union of all trigger configs */
171
+ export type TriggerConfig = WebhookTriggerConfig | ScheduleTriggerConfig | EventTriggerConfig
172
+
173
+ // ============================================================================
174
+ // Trigger Definition
175
+ // ============================================================================
176
+
177
+ /**
178
+ * Trigger metadata - entry points that initiate resource execution
179
+ *
180
+ * Triggers represent how executions start: webhooks from external services,
181
+ * scheduled cron jobs, platform events, or manual user actions.
182
+ *
183
+ * BREAKING CHANGES (2025-11-30):
184
+ * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
185
+ * - Field renames: `id` -> `resourceId` (inherited), `type` -> `triggerType`
186
+ * - Relationship rename: `invokes` -> `triggers` (unified vocabulary)
187
+ * - New required fields: `version` (inherited), `type: 'trigger'` (inherited)
188
+ * - triggers object now includes `externalResources` option
189
+ *
190
+ * @example
191
+ * // TriggerDefinition - metadata only
192
+ * {
193
+ * resourceId: 'trigger-new-order',
194
+ * type: 'trigger',
195
+ * triggerType: 'webhook',
196
+ * name: 'New Order',
197
+ * description: 'Webhook from Shopify on new orders',
198
+ * version: '1.0.0',
199
+ * status: 'prod',
200
+ * webhookPath: '/webhooks/shopify/orders'
201
+ * }
202
+ *
203
+ * // Relationships declared in ResourceRelationships (not on TriggerDefinition):
204
+ * // relationships: {
205
+ * // 'trigger-new-order': { triggers: { workflows: ['order-fulfillment-workflow'] } }
206
+ * // }
207
+ */
208
+ export interface TriggerDefinition extends ResourceDefinition {
209
+ /** Resource type discriminator (narrowed from base union) */
210
+ type: 'trigger'
211
+
212
+ /** Trigger mechanism type (renamed from 'type' to avoid collision with base type discriminator) */
213
+ triggerType: 'webhook' | 'schedule' | 'manual' | 'event'
214
+
215
+ /** Type-specific configuration */
216
+ config?: TriggerConfig
217
+
218
+ // Legacy fields (deprecated, use config instead)
219
+ /** For webhook triggers: path like '/webhooks/shopify/orders' */
220
+ webhookPath?: string
221
+ /** For schedule triggers: cron expression like '0 6 * * *' */
222
+ schedule?: string
223
+ /** For event triggers: event type like 'low-stock-alert' */
224
+ eventType?: string
225
+
226
+ // NOTE: What this trigger starts is declared in ResourceRelationships, not here
227
+ // This prevents duplication - triggers are forward-declared in relationships
228
+ }
229
+
230
+ /**
231
+ * Integration metadata - external service connections
232
+ *
233
+ * References credentials table for actual connection. No connection status
234
+ * stored here (queried at runtime from credentials table).
235
+ *
236
+ * BREAKING CHANGES (2025-11-30):
237
+ * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
238
+ * - Field renames: `id` -> `resourceId` (inherited)
239
+ * - New required field: `status` (inherited) - organizations must add status to all integrations
240
+ * - New required field: `version` (inherited) - organizations must add version to all integrations
241
+ * - New required field: `type: 'integration'` (inherited) - resource type discriminator
242
+ *
243
+ * @example
244
+ * {
245
+ * resourceId: 'integration-shopify-prod',
246
+ * type: 'integration',
247
+ * provider: 'shopify',
248
+ * credentialName: 'shopify-prod',
249
+ * name: 'Shopify Production',
250
+ * description: 'E-commerce platform',
251
+ * version: '1.0.0',
252
+ * status: 'prod'
253
+ * }
254
+ */
255
+ export interface IntegrationDefinition extends ResourceDefinition {
256
+ /** Resource type discriminator (narrowed from base union) */
257
+ type: 'integration'
258
+
259
+ /** OM descriptor that owns canonical identity and governance metadata. */
260
+ resource?: Extract<ResourceEntry, { kind: 'integration' }>
261
+
262
+ /** Integration provider type */
263
+ provider: IntegrationType
264
+ /** References credentials table (e.g., 'shopify-prod', 'zendesk-api') */
265
+ credentialName: string
266
+ }
267
+
268
+ /**
269
+ * Explicit resource relationship declaration
270
+ *
271
+ * Single-direction only - Command View derives reverse relationships.
272
+ * Agents/workflows declare what they trigger and use.
273
+ *
274
+ * @example
275
+ * {
276
+ * triggers: { workflows: ['order-fulfillment-workflow'] },
277
+ * uses: { integrations: ['integration-shopify-prod', 'integration-postgres'] }
278
+ * }
279
+ */
280
+ export interface RelationshipDeclaration {
281
+ /** Resources this resource triggers */
282
+ triggers?: {
283
+ /** Agent resourceIds this resource triggers */
284
+ agents?: string[]
285
+ /** Workflow resourceIds this resource triggers */
286
+ workflows?: string[]
287
+ }
288
+ /** Integrations this resource uses */
289
+ uses?: {
290
+ /** Integration IDs this resource uses */
291
+ integrations?: string[]
292
+ }
293
+ }
294
+
295
+ /**
296
+ * Resource relationships map
297
+ * Maps resourceId to its relationship declarations
298
+ *
299
+ * @example
300
+ * {
301
+ * 'order-processor-agent': {
302
+ * triggers: { workflows: ['order-fulfillment-workflow'] },
303
+ * uses: { integrations: ['integration-shopify-prod'] }
304
+ * }
305
+ * }
306
+ */
307
+ export type ResourceRelationships = Record<string, RelationshipDeclaration>
308
+
309
+ // ============================================================================
310
+ // External Resource Types
311
+ // ============================================================================
312
+
313
+ /**
314
+ * External platform type
315
+ * Supported third-party automation platforms
316
+ */
317
+ export type ExternalPlatform = 'n8n' | 'make' | 'zapier' | 'other'
318
+
319
+ /**
320
+ * External automation resource metadata
321
+ *
322
+ * Represents workflows/automations running on third-party platforms
323
+ * (n8n, Make, Zapier, etc.) for visualization in Command View.
324
+ *
325
+ * NOTE: This is metadata ONLY for visualization. No execution logic,
326
+ * no API integration with external platforms, no status syncing.
327
+ *
328
+ * BREAKING CHANGES (2025-11-30):
329
+ * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
330
+ * - Field renames: `id` -> `resourceId` (inherited)
331
+ * - New required field: `version` (inherited) - organizations must add version to all external resources
332
+ * - New required field: `type: 'external'` (inherited) - resource type discriminator
333
+ * - REMOVED FIELD: `triggeredBy` - per relationship-consolidation design, all relationships are forward-only declarations
334
+ *
335
+ * @example
336
+ * {
337
+ * resourceId: 'external-n8n-order-sync',
338
+ * type: 'external',
339
+ * version: '1.0.0',
340
+ * platform: 'n8n',
341
+ * name: 'Shopify Order Sync',
342
+ * description: 'Legacy n8n workflow for syncing Shopify orders',
343
+ * status: 'prod',
344
+ * platformUrl: 'https://n8n.client.com/workflow/123',
345
+ * triggers: { workflows: ['order-fulfillment-workflow'] },
346
+ * uses: { integrations: ['integration-shopify-prod'] }
347
+ * }
348
+ */
349
+ export interface ExternalResourceDefinition extends ResourceDefinition {
350
+ /** Resource type discriminator (narrowed from base union) */
351
+ type: 'external'
352
+
353
+ /** Platform type */
354
+ platform: ExternalPlatform
355
+
356
+ // Optional platform-specific metadata
357
+ /** Link to external platform (e.g., n8n workflow editor URL) */
358
+ platformUrl?: string
359
+ /** Platform's internal ID/reference */
360
+ externalId?: string
361
+
362
+ /** What this external resource triggers (external -> internal) */
363
+ triggers?: {
364
+ /** Elevasis workflow resourceIds this external automation triggers */
365
+ workflows?: string[]
366
+ /** Elevasis agent resourceIds this external automation triggers */
367
+ agents?: string[]
368
+ }
369
+
370
+ /** Integrations this external resource uses (shared credentials) */
371
+ uses?: {
372
+ /** Integration IDs this external automation uses */
373
+ integrations?: string[]
374
+ }
375
+
376
+ // NOTE: triggeredBy field removed - per relationship-consolidation design,
377
+ // all relationships are forward-only declarations. Graph edges are built
378
+ // from forward declarations only.
379
+ }
380
+
381
+ /**
382
+ * Human Checkpoint definition - human decision points in automation
383
+ *
384
+ * Represents where human judgment is deployed in the automation landscape.
385
+ * Tasks with matching command_queue_group are routed to this checkpoint.
386
+ *
387
+ * BREAKING CHANGES (2025-11-30):
388
+ * - Now extends ResourceDefinition (inherits: resourceId, name, description, version, type, status, links, category)
389
+ * - Field renames: `id` -> `resourceId` (inherited)
390
+ * - description is now REQUIRED (was optional) - organizations must add description to all human checkpoints
391
+ * - New required field: `version` (inherited) - organizations must add version to all human checkpoints
392
+ * - New required field: `type: 'human'` (inherited) - resource type discriminator
393
+ *
394
+ * @example
395
+ * {
396
+ * resourceId: 'sales-approval',
397
+ * type: 'human',
398
+ * name: 'Sales Approval Queue',
399
+ * description: 'High-value order approvals for sales team',
400
+ * version: '1.0.0',
401
+ * status: 'prod',
402
+ * requestedBy: { agents: ['order-processor-agent'] },
403
+ * routesTo: { agents: ['order-fulfillment-agent'] }
404
+ * }
405
+ */
406
+ export interface HumanCheckpointDefinition extends ResourceDefinition {
407
+ /** Resource type discriminator (narrowed from base union) */
408
+ type: 'human'
409
+
410
+ /** Resources that create tasks for this checkpoint */
411
+ requestedBy?: {
412
+ /** Agent resourceIds that request approval here */
413
+ agents?: string[]
414
+ /** Workflow resourceIds that request approval here */
415
+ workflows?: string[]
416
+ }
417
+
418
+ /** Resources that receive approved decisions */
419
+ routesTo?: {
420
+ /** Agent resourceIds that handle approved tasks */
421
+ agents?: string[]
422
+ /** Workflow resourceIds that handle approved tasks */
423
+ workflows?: string[]
424
+ }
425
+ }