@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,103 +1,103 @@
1
- import { z } from 'zod'
2
- import { UuidSchema, NonEmptyStringSchema, PaginationSchema } from '../../platform/utils/validation'
3
-
4
- /**
5
- * Webhook Endpoint API Validation Schemas
6
- *
7
- * HTTP request/response validation for the webhook endpoints CRUD API.
8
- * These schemas are browser-safe and shared between API and frontend.
9
- *
10
- * Design notes:
11
- * - Request schemas use `.strict()` to reject unknown fields (mass assignment prevention)
12
- * - Response schemas do NOT use `.strict()` (allows forward-compatible additions)
13
- * - Update schema requires at least one field via `.refine()`
14
- */
15
-
16
- /**
17
- * Status enum for webhook endpoints
18
- */
19
- export const WebhookEndpointStatusSchema = z.enum(['active', 'paused'])
20
-
21
- /**
22
- * POST /api/webhook-endpoints - Create a new webhook endpoint
23
- *
24
- * The `key` and `id` are generated server-side and not accepted in the request.
25
- */
26
- export const CreateWebhookEndpointRequestSchema = z
27
- .object({
28
- /** User-facing label for the endpoint */
29
- name: NonEmptyStringSchema,
30
- /** Target workflow resourceId to invoke on inbound requests (can be set later) */
31
- resourceId: NonEmptyStringSchema.optional(),
32
- /** Optional description */
33
- description: z.string().optional()
34
- })
35
- .strict()
36
-
37
- export type CreateWebhookEndpointRequest = z.infer<typeof CreateWebhookEndpointRequestSchema>
38
-
39
- /**
40
- * PATCH /api/webhook-endpoints/:id - Update an existing webhook endpoint
41
- *
42
- * At least one field must be provided.
43
- */
44
- export const UpdateWebhookEndpointRequestSchema = z
45
- .object({
46
- name: NonEmptyStringSchema.optional(),
47
- description: z.string().optional(),
48
- resourceId: NonEmptyStringSchema.optional(),
49
- status: WebhookEndpointStatusSchema.optional()
50
- })
51
- .strict()
52
- .refine(
53
- (data) =>
54
- data.name !== undefined ||
55
- data.description !== undefined ||
56
- data.resourceId !== undefined ||
57
- data.status !== undefined,
58
- { message: 'At least one field (name, description, resourceId, or status) must be provided' }
59
- )
60
-
61
- export type UpdateWebhookEndpointRequest = z.infer<typeof UpdateWebhookEndpointRequestSchema>
62
-
63
- /**
64
- * Response shape for a single webhook endpoint.
65
- * NOT strict — response schemas allow extra fields for forward compatibility.
66
- */
67
- export const WebhookEndpointResponseSchema = z.object({
68
- id: UuidSchema,
69
- organizationId: UuidSchema,
70
- key: z.string().optional(),
71
- keyPrefix: z.string().nullable(),
72
- name: z.string(),
73
- description: z.string().nullable(),
74
- resourceId: z.string().nullable(),
75
- status: WebhookEndpointStatusSchema,
76
- lastTriggeredAt: z.string().datetime().nullable(),
77
- requestCount: z.number().int().min(0),
78
- createdAt: z.string().datetime(),
79
- updatedAt: z.string().datetime()
80
- })
81
-
82
- export type WebhookEndpointResponse = z.infer<typeof WebhookEndpointResponseSchema>
83
-
84
- /**
85
- * GET /api/webhook-endpoints - List webhook endpoints query params
86
- *
87
- * Extends standard pagination with optional status filter.
88
- */
89
- export const ListWebhookEndpointsQuerySchema = PaginationSchema.extend({
90
- status: WebhookEndpointStatusSchema.optional()
91
- })
92
-
93
- export type ListWebhookEndpointsQuery = z.infer<typeof ListWebhookEndpointsQuerySchema>
94
-
95
- /**
96
- * Named collection of all webhook endpoint schemas for route registration
97
- */
98
- export const WebhookEndpointSchemas = {
99
- CreateRequest: CreateWebhookEndpointRequestSchema,
100
- UpdateRequest: UpdateWebhookEndpointRequestSchema,
101
- Response: WebhookEndpointResponseSchema,
102
- ListQuery: ListWebhookEndpointsQuerySchema
103
- }
1
+ import { z } from 'zod'
2
+ import { UuidSchema, NonEmptyStringSchema, PaginationSchema } from '../../platform/utils/validation'
3
+
4
+ /**
5
+ * Webhook Endpoint API Validation Schemas
6
+ *
7
+ * HTTP request/response validation for the webhook endpoints CRUD API.
8
+ * These schemas are browser-safe and shared between API and frontend.
9
+ *
10
+ * Design notes:
11
+ * - Request schemas use `.strict()` to reject unknown fields (mass assignment prevention)
12
+ * - Response schemas do NOT use `.strict()` (allows forward-compatible additions)
13
+ * - Update schema requires at least one field via `.refine()`
14
+ */
15
+
16
+ /**
17
+ * Status enum for webhook endpoints
18
+ */
19
+ export const WebhookEndpointStatusSchema = z.enum(['active', 'paused'])
20
+
21
+ /**
22
+ * POST /api/webhook-endpoints - Create a new webhook endpoint
23
+ *
24
+ * The `key` and `id` are generated server-side and not accepted in the request.
25
+ */
26
+ export const CreateWebhookEndpointRequestSchema = z
27
+ .object({
28
+ /** User-facing label for the endpoint */
29
+ name: NonEmptyStringSchema,
30
+ /** Target workflow resourceId to invoke on inbound requests (can be set later) */
31
+ resourceId: NonEmptyStringSchema.optional(),
32
+ /** Optional description */
33
+ description: z.string().optional()
34
+ })
35
+ .strict()
36
+
37
+ export type CreateWebhookEndpointRequest = z.infer<typeof CreateWebhookEndpointRequestSchema>
38
+
39
+ /**
40
+ * PATCH /api/webhook-endpoints/:id - Update an existing webhook endpoint
41
+ *
42
+ * At least one field must be provided.
43
+ */
44
+ export const UpdateWebhookEndpointRequestSchema = z
45
+ .object({
46
+ name: NonEmptyStringSchema.optional(),
47
+ description: z.string().optional(),
48
+ resourceId: NonEmptyStringSchema.optional(),
49
+ status: WebhookEndpointStatusSchema.optional()
50
+ })
51
+ .strict()
52
+ .refine(
53
+ (data) =>
54
+ data.name !== undefined ||
55
+ data.description !== undefined ||
56
+ data.resourceId !== undefined ||
57
+ data.status !== undefined,
58
+ { message: 'At least one field (name, description, resourceId, or status) must be provided' }
59
+ )
60
+
61
+ export type UpdateWebhookEndpointRequest = z.infer<typeof UpdateWebhookEndpointRequestSchema>
62
+
63
+ /**
64
+ * Response shape for a single webhook endpoint.
65
+ * NOT strict — response schemas allow extra fields for forward compatibility.
66
+ */
67
+ export const WebhookEndpointResponseSchema = z.object({
68
+ id: UuidSchema,
69
+ organizationId: UuidSchema,
70
+ key: z.string().optional(),
71
+ keyPrefix: z.string().nullable(),
72
+ name: z.string(),
73
+ description: z.string().nullable(),
74
+ resourceId: z.string().nullable(),
75
+ status: WebhookEndpointStatusSchema,
76
+ lastTriggeredAt: z.string().datetime().nullable(),
77
+ requestCount: z.number().int().min(0),
78
+ createdAt: z.string().datetime(),
79
+ updatedAt: z.string().datetime()
80
+ })
81
+
82
+ export type WebhookEndpointResponse = z.infer<typeof WebhookEndpointResponseSchema>
83
+
84
+ /**
85
+ * GET /api/webhook-endpoints - List webhook endpoints query params
86
+ *
87
+ * Extends standard pagination with optional status filter.
88
+ */
89
+ export const ListWebhookEndpointsQuerySchema = PaginationSchema.extend({
90
+ status: WebhookEndpointStatusSchema.optional()
91
+ })
92
+
93
+ export type ListWebhookEndpointsQuery = z.infer<typeof ListWebhookEndpointsQuerySchema>
94
+
95
+ /**
96
+ * Named collection of all webhook endpoint schemas for route registration
97
+ */
98
+ export const WebhookEndpointSchemas = {
99
+ CreateRequest: CreateWebhookEndpointRequestSchema,
100
+ UpdateRequest: UpdateWebhookEndpointRequestSchema,
101
+ Response: WebhookEndpointResponseSchema,
102
+ ListQuery: ListWebhookEndpointsQuerySchema
103
+ }
@@ -1,58 +1,58 @@
1
- /**
2
- * Webhook Endpoint Domain Types
3
- *
4
- * Browser-safe domain types for generic inbound webhook endpoints.
5
- * These are camelCase representations of the `webhook_endpoints` DB table.
6
- *
7
- * Transform from snake_case DB rows happens in the API service layer,
8
- * not here (per core-package.md conventions).
9
- */
10
-
11
- /**
12
- * Lifecycle status of a webhook endpoint.
13
- * - `active`: Endpoint accepts inbound requests and triggers the target workflow
14
- * - `paused`: Endpoint exists but rejects inbound requests with 404
15
- */
16
- export type WebhookEndpointStatus = 'active' | 'paused'
17
-
18
- /**
19
- * Generic inbound webhook endpoint domain type.
20
- *
21
- * Each endpoint gets a unique opaque URL (`/api/webhooks/inbound/:key`)
22
- * that maps to a target workflow resource within an organization.
23
- */
24
- export interface WebhookEndpoint {
25
- /** UUID primary key */
26
- id: string
27
- /** Organization this endpoint belongs to */
28
- organizationId: string
29
- /**
30
- * Unique opaque key used in the inbound URL.
31
- * Format: `wh_` + 32 crypto-random hex chars (128 bits of entropy).
32
- * This key IS the credential — it must be kept secret.
33
- * Set ONLY on the return value of `create()` — undefined on list/get/getEndpointByKey responses.
34
- */
35
- key?: string
36
- /**
37
- * First 8 characters of the plaintext key for display and grep hints.
38
- * Safe to show in list views — not sufficient to reconstruct the full key.
39
- * Null on legacy rows that predate the key_hash migration.
40
- */
41
- keyPrefix: string | null
42
- /** User-facing label (e.g., "Zapier → Lead Intake") */
43
- name: string
44
- /** Optional description for the endpoint */
45
- description: string | null
46
- /** Target workflow resourceId to invoke on inbound request, or null if not yet assigned */
47
- resourceId: string | null
48
- /** Whether the endpoint is accepting requests */
49
- status: WebhookEndpointStatus
50
- /** Timestamp of the most recent successful inbound request, or null */
51
- lastTriggeredAt: string | null
52
- /** Running total of inbound requests received */
53
- requestCount: number
54
- /** ISO 8601 creation timestamp */
55
- createdAt: string
56
- /** ISO 8601 last-updated timestamp */
57
- updatedAt: string
58
- }
1
+ /**
2
+ * Webhook Endpoint Domain Types
3
+ *
4
+ * Browser-safe domain types for generic inbound webhook endpoints.
5
+ * These are camelCase representations of the `webhook_endpoints` DB table.
6
+ *
7
+ * Transform from snake_case DB rows happens in the API service layer,
8
+ * not here (per core-package.md conventions).
9
+ */
10
+
11
+ /**
12
+ * Lifecycle status of a webhook endpoint.
13
+ * - `active`: Endpoint accepts inbound requests and triggers the target workflow
14
+ * - `paused`: Endpoint exists but rejects inbound requests with 404
15
+ */
16
+ export type WebhookEndpointStatus = 'active' | 'paused'
17
+
18
+ /**
19
+ * Generic inbound webhook endpoint domain type.
20
+ *
21
+ * Each endpoint gets a unique opaque URL (`/api/webhooks/inbound/:key`)
22
+ * that maps to a target workflow resource within an organization.
23
+ */
24
+ export interface WebhookEndpoint {
25
+ /** UUID primary key */
26
+ id: string
27
+ /** Organization this endpoint belongs to */
28
+ organizationId: string
29
+ /**
30
+ * Unique opaque key used in the inbound URL.
31
+ * Format: `wh_` + 32 crypto-random hex chars (128 bits of entropy).
32
+ * This key IS the credential — it must be kept secret.
33
+ * Set ONLY on the return value of `create()` — undefined on list/get/getEndpointByKey responses.
34
+ */
35
+ key?: string
36
+ /**
37
+ * First 8 characters of the plaintext key for display and grep hints.
38
+ * Safe to show in list views — not sufficient to reconstruct the full key.
39
+ * Null on legacy rows that predate the key_hash migration.
40
+ */
41
+ keyPrefix: string | null
42
+ /** User-facing label (e.g., "Zapier → Lead Intake") */
43
+ name: string
44
+ /** Optional description for the endpoint */
45
+ description: string | null
46
+ /** Target workflow resourceId to invoke on inbound request, or null if not yet assigned */
47
+ resourceId: string | null
48
+ /** Whether the endpoint is accepting requests */
49
+ status: WebhookEndpointStatus
50
+ /** Timestamp of the most recent successful inbound request, or null */
51
+ lastTriggeredAt: string | null
52
+ /** Running total of inbound requests received */
53
+ requestCount: number
54
+ /** ISO 8601 creation timestamp */
55
+ createdAt: string
56
+ /** ISO 8601 last-updated timestamp */
57
+ updatedAt: string
58
+ }
@@ -1,32 +1,33 @@
1
- # @elevasis/core/knowledge
2
-
3
- Pure query layer over the organization graph. Browser-safe (no Node APIs); shared by the SDK CLI, platform CLI, and the `@elevasis/ui/knowledge` browser.
4
-
5
- ## Surface
6
-
7
- | Export | Purpose |
8
- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
9
- | `byFeature(graph, featureId, knowledgeNodes)` | Knowledge nodes that govern the given feature. |
10
- | `byKind(graph, kind, knowledgeNodes)` | Filter knowledge nodes by `OrgKnowledgeKind`. |
11
- | `byOwner(graph, ownerId, knowledgeNodes)` | Knowledge nodes whose `ownerIds` includes the given owner. |
12
- | `governs(graph, nodeId)` | Outgoing `governs` targets (governed-feature ids) from a knowledge node. |
13
- | `governedBy(graph, nodeId)` | Incoming `governs` sources (governing knowledge-node ids) into a feature. |
14
- | `parsePath(pathString)` | Parse `/by-feature/$id`, `/by-kind/$kind`, `/by-owner/$id`, `/graph/$id/{governs,governed-by}`, or `/$id`. Throws on invalid input. |
15
- | `formatText`, `formatJson`, `formatIdsOnly` | Output formatters used by the `knowledge:*` CLI subcommands. |
16
-
17
- ## Path syntax
18
-
19
- ```
20
- /by-feature/<featureId>
21
- /by-kind/<playbook|strategy|reference>
22
- /by-owner/<ownerId>
23
- /graph/<nodeId>/governs
24
- /graph/<nodeId>/governed-by
25
- /<nodeId>
26
- ```
27
-
28
- ## JSON envelope
29
-
30
- `formatJson` returns `{ path, mount, args, results }` the same wrapped envelope used by `pnpm exec elevasis knowledge:ls --json` and `pnpm exec elevasis-sdk knowledge:ls --json`.
31
-
32
- `governs` and `governedBy` accept either bare or graph-namespaced ids (`knowledge.foo` or `knowledge:knowledge.foo`).
1
+ # @elevasis/core/knowledge
2
+
3
+ Pure query layer over the organization graph. Browser-safe (no Node APIs); shared by the SDK CLI, platform CLI, and the `@elevasis/ui/knowledge` browser.
4
+
5
+ ## Surface
6
+
7
+ | Export | Purpose |
8
+ | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
9
+ | `bySystem(graph, systemId, knowledgeNodes)` | Knowledge nodes that govern the given system. |
10
+ | `byKind(graph, kind, knowledgeNodes)` | Filter knowledge nodes by `OrgKnowledgeKind`. |
11
+ | `byOwner(graph, ownerId, knowledgeNodes)` | Knowledge nodes whose `ownerIds` includes the given owner. |
12
+ | `governs(graph, nodeId)` | Outgoing `governs` targets (governed-system ids) from a knowledge node. |
13
+ | `governedBy(graph, nodeId)` | Incoming `governs` sources (governing knowledge-node ids) into a system. |
14
+ | `parsePath(pathString)` | Parse `/by-system/$id`, `/by-kind/$kind`, `/by-owner/$id`, `/graph/$id/{governs,governed-by}`, or `/$id`. Throws on invalid input. |
15
+ | `formatText`, `formatJson`, `formatIdsOnly` | Output formatters used by the `knowledge:*` CLI subcommands. |
16
+
17
+ ## Path syntax
18
+
19
+ ```
20
+ /by-system/<systemId>
21
+ /by-kind/<playbook|strategy|reference>
22
+ /by-owner/<ownerId>
23
+ /graph/<nodeId>/governs
24
+ /graph/<nodeId>/governed-by
25
+ /<nodeId>
26
+ ```
27
+
28
+ ## JSON envelope
29
+
30
+ `formatJson` returns `{ path, mount, args, results }` — the same wrapped envelope used by `pnpm exec elevasis knowledge:ls --json` and `pnpm exec elevasis-sdk knowledge:ls --json`.
31
+
32
+ `governs` and `governedBy` accept either bare or graph-namespaced ids (`knowledge.foo` or `knowledge:knowledge.foo`).
33
+