@elevasis/core 0.23.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 (241) hide show
  1. package/dist/index.d.ts +1326 -552
  2. package/dist/index.js +869 -154
  3. package/dist/knowledge/index.d.ts +487 -209
  4. package/dist/knowledge/index.js +104 -1
  5. package/dist/organization-model/index.d.ts +1326 -552
  6. package/dist/organization-model/index.js +869 -154
  7. package/dist/test-utils/index.d.ts +357 -72
  8. package/dist/test-utils/index.js +795 -142
  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 -12
  13. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2102 -2096
  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 +1492 -1497
  37. package/src/business/acquisition/build-templates.test.ts +240 -240
  38. package/src/business/acquisition/build-templates.ts +98 -98
  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 -153
  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 -396
  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 +32 -32
  123. package/src/knowledge/__tests__/queries.test.ts +626 -535
  124. package/src/knowledge/format.ts +99 -99
  125. package/src/knowledge/index.ts +5 -5
  126. package/src/knowledge/published.ts +5 -5
  127. package/src/knowledge/queries.ts +269 -218
  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 -149
  131. package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -210
  132. package/src/organization-model/__tests__/defaults.test.ts +168 -168
  133. package/src/organization-model/__tests__/domains/actions.test.ts +78 -56
  134. package/src/organization-model/__tests__/domains/customers.test.ts +299 -299
  135. package/src/organization-model/__tests__/domains/entities.test.ts +56 -56
  136. package/src/organization-model/__tests__/domains/goals.test.ts +493 -493
  137. package/src/organization-model/__tests__/domains/identity.test.ts +280 -280
  138. package/src/organization-model/__tests__/domains/navigation.test.ts +268 -268
  139. package/src/organization-model/__tests__/domains/offerings.test.ts +414 -414
  140. package/src/organization-model/__tests__/domains/policies.test.ts +323 -323
  141. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +293 -293
  142. package/src/organization-model/__tests__/domains/resources.test.ts +382 -283
  143. package/src/organization-model/__tests__/domains/roles.test.ts +463 -463
  144. package/src/organization-model/__tests__/domains/statuses.test.ts +246 -246
  145. package/src/organization-model/__tests__/domains/systems.test.ts +209 -209
  146. package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -361
  147. package/src/organization-model/__tests__/foundation.test.ts +77 -77
  148. package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -144
  149. package/src/organization-model/__tests__/graph.test.ts +1246 -887
  150. package/src/organization-model/__tests__/icons.test.ts +10 -1
  151. package/src/organization-model/__tests__/knowledge.test.ts +251 -15
  152. package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -438
  153. package/src/organization-model/__tests__/migration-helpers.test.ts +591 -591
  154. package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -103
  155. package/src/organization-model/__tests__/recursive-system-schema.test.ts +535 -506
  156. package/src/organization-model/__tests__/resolve.test.ts +274 -164
  157. package/src/organization-model/__tests__/schema.test.ts +834 -301
  158. package/src/organization-model/__tests__/surface-projection.test.ts +284 -284
  159. package/src/organization-model/catalogs/lead-gen.ts +144 -144
  160. package/src/organization-model/content-kinds/config.ts +36 -36
  161. package/src/organization-model/content-kinds/index.ts +76 -72
  162. package/src/organization-model/content-kinds/pipeline.ts +68 -68
  163. package/src/organization-model/content-kinds/registry.ts +44 -44
  164. package/src/organization-model/content-kinds/status.ts +71 -71
  165. package/src/organization-model/content-kinds/template.ts +83 -83
  166. package/src/organization-model/content-kinds/types.ts +117 -117
  167. package/src/organization-model/contracts.ts +27 -27
  168. package/src/organization-model/defaults.ts +40 -50
  169. package/src/organization-model/domains/actions.ts +333 -239
  170. package/src/organization-model/domains/customers.ts +78 -78
  171. package/src/organization-model/domains/entities.ts +144 -144
  172. package/src/organization-model/domains/goals.ts +83 -83
  173. package/src/organization-model/domains/knowledge.ts +117 -101
  174. package/src/organization-model/domains/navigation.ts +139 -139
  175. package/src/organization-model/domains/offerings.ts +71 -71
  176. package/src/organization-model/domains/policies.ts +102 -102
  177. package/src/organization-model/domains/projects.ts +14 -14
  178. package/src/organization-model/domains/prospecting.ts +395 -395
  179. package/src/organization-model/domains/resources.ts +167 -132
  180. package/src/organization-model/domains/roles.ts +96 -96
  181. package/src/organization-model/domains/sales.test.ts +218 -218
  182. package/src/organization-model/domains/sales.ts +380 -380
  183. package/src/organization-model/domains/shared.ts +63 -63
  184. package/src/organization-model/domains/statuses.ts +339 -339
  185. package/src/organization-model/domains/systems.ts +217 -172
  186. package/src/organization-model/foundation.ts +75 -75
  187. package/src/organization-model/graph/build.ts +1016 -888
  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 +76 -70
  191. package/src/organization-model/graph/types.ts +73 -67
  192. package/src/organization-model/helpers.ts +289 -241
  193. package/src/organization-model/icons.ts +78 -66
  194. package/src/organization-model/index.ts +130 -128
  195. package/src/organization-model/migration-helpers.ts +247 -244
  196. package/src/organization-model/ontology.ts +661 -0
  197. package/src/organization-model/organization-graph.mdx +110 -90
  198. package/src/organization-model/organization-model.mdx +226 -219
  199. package/src/organization-model/published.ts +289 -235
  200. package/src/organization-model/resolve.ts +146 -91
  201. package/src/organization-model/schema.ts +790 -671
  202. package/src/organization-model/surface-projection.ts +212 -212
  203. package/src/organization-model/types.ts +177 -167
  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 +10 -10
  208. package/src/platform/registry/__tests__/resource-link.test.ts +35 -35
  209. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +20 -20
  210. package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -245
  211. package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2053
  212. package/src/platform/registry/__tests__/validation.test.ts +1347 -1347
  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 -890
  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 -745
  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 +2101 -2096
  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 -3153
  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 -44
@@ -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,33 +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
- | `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`).
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
33