@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.
- package/dist/index.d.ts +3214 -2501
- package/dist/index.js +3112 -1222
- package/dist/knowledge/index.d.ts +1108 -1264
- package/dist/knowledge/index.js +112 -9
- package/dist/organization-model/index.d.ts +3214 -2501
- package/dist/organization-model/index.js +3112 -1222
- package/dist/test-utils/index.d.ts +985 -1103
- package/dist/test-utils/index.js +2464 -1165
- package/package.json +5 -5
- package/src/README.md +14 -14
- package/src/__tests__/publish.test.ts +24 -24
- package/src/__tests__/template-core-compatibility.test.ts +9 -80
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +2389 -2121
- package/src/_gen/__tests__/scaffold-contracts.test.ts +30 -30
- package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +217 -217
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +69 -69
- package/src/auth/multi-tenancy/credentials/server/kek-loader.ts +37 -37
- package/src/auth/multi-tenancy/index.ts +26 -26
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +104 -104
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +143 -143
- package/src/auth/multi-tenancy/memberships/index.ts +26 -26
- package/src/auth/multi-tenancy/memberships/membership.ts +130 -130
- package/src/auth/multi-tenancy/organizations/__tests__/api-schemas.test.ts +194 -194
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +136 -136
- package/src/auth/multi-tenancy/permissions.test.ts +42 -42
- package/src/auth/multi-tenancy/permissions.ts +123 -123
- package/src/auth/multi-tenancy/role-management/api-schemas.ts +78 -78
- package/src/auth/multi-tenancy/role-management/index.ts +16 -16
- package/src/auth/multi-tenancy/theme-presets.ts +45 -45
- package/src/auth/multi-tenancy/types.ts +57 -57
- package/src/auth/multi-tenancy/users/api-schemas.ts +165 -165
- package/src/business/README.md +2 -2
- package/src/business/acquisition/activity-events.test.ts +250 -250
- package/src/business/acquisition/activity-events.ts +93 -93
- package/src/business/acquisition/api-schemas.test.ts +1883 -1843
- package/src/business/acquisition/api-schemas.ts +1493 -1500
- package/src/business/acquisition/build-templates.test.ts +240 -240
- package/src/business/acquisition/build-templates.ts +83 -41
- package/src/business/acquisition/crm-next-action.test.ts +262 -262
- package/src/business/acquisition/crm-next-action.ts +220 -220
- package/src/business/acquisition/crm-priority.test.ts +216 -216
- package/src/business/acquisition/crm-priority.ts +349 -349
- package/src/business/acquisition/crm-state-actions.test.ts +153 -151
- package/src/business/acquisition/deal-ownership.test.ts +351 -351
- package/src/business/acquisition/deal-ownership.ts +120 -120
- package/src/business/acquisition/derive-actions.test.ts +129 -104
- package/src/business/acquisition/derive-actions.ts +74 -84
- package/src/business/acquisition/index.ts +171 -170
- package/src/business/acquisition/ontology-validation.ts +309 -0
- package/src/business/acquisition/stateful.ts +30 -30
- package/src/business/acquisition/types.ts +396 -392
- package/src/business/clients/api-schemas.test.ts +115 -115
- package/src/business/clients/api-schemas.ts +158 -158
- package/src/business/clients/index.ts +1 -1
- package/src/business/crm/api-schemas.ts +40 -40
- package/src/business/crm/index.ts +1 -1
- package/src/business/deals/api-schemas.ts +87 -87
- package/src/business/deals/index.ts +1 -1
- package/src/business/index.ts +5 -5
- package/src/business/projects/types.ts +144 -144
- package/src/commands/queue/types/task.ts +15 -15
- package/src/execution/core/runner-types.ts +61 -61
- package/src/execution/core/sse-executions.ts +7 -7
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +10 -10
- package/src/execution/engine/agent/core/__tests__/agent.test.ts +16 -16
- package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +4 -4
- package/src/execution/engine/agent/core/types.ts +25 -25
- package/src/execution/engine/agent/index.ts +6 -6
- package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +24 -24
- package/src/execution/engine/index.ts +443 -443
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +298 -298
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.test.ts +55 -55
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +107 -107
- package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.test.ts +48 -48
- package/src/execution/engine/tools/integration/server/adapters/apollo/apollo-adapter.ts +99 -99
- package/src/execution/engine/tools/integration/server/adapters/apollo/index.ts +1 -1
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +363 -363
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +162 -162
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +316 -316
- package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.test.ts +18 -18
- package/src/execution/engine/tools/integration/server/adapters/clickup/clickup-adapter.ts +194 -194
- package/src/execution/engine/tools/integration/server/adapters/clickup/index.ts +7 -7
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +204 -204
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +105 -105
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/google-calendar-adapter.ts +428 -428
- package/src/execution/engine/tools/integration/server/adapters/google-calendar/index.ts +2 -2
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1474 -1474
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +103 -103
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.test.ts +88 -88
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +141 -141
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +76 -76
- package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +182 -182
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +310 -310
- package/src/execution/engine/tools/integration/service.test.ts +239 -239
- package/src/execution/engine/tools/integration/service.ts +172 -172
- package/src/execution/engine/tools/integration/tool.ts +255 -255
- package/src/execution/engine/tools/lead-service-types.ts +1005 -1005
- package/src/execution/engine/tools/messages.ts +43 -43
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +7 -7
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +6 -6
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +6 -6
- package/src/execution/engine/tools/platform/acquisition/types.ts +280 -280
- package/src/execution/engine/tools/platform/email/types.ts +97 -97
- package/src/execution/engine/tools/registry.ts +704 -704
- package/src/execution/engine/tools/tool-maps.ts +831 -831
- package/src/execution/engine/tools/types.ts +234 -234
- package/src/execution/engine/workflow/types.ts +202 -202
- package/src/execution/external/__tests__/api-schemas.test.ts +127 -127
- package/src/execution/external/api-schemas.ts +40 -40
- package/src/execution/external/index.ts +1 -1
- package/src/index.ts +18 -18
- package/src/integrations/credentials/__tests__/api-schemas.test.ts +420 -420
- package/src/integrations/credentials/api-schemas.ts +146 -146
- package/src/integrations/credentials/schemas.ts +200 -200
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +7 -7
- package/src/integrations/oauth/provider-registry.ts +74 -74
- package/src/integrations/oauth/server/credentials.ts +43 -43
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +327 -327
- package/src/integrations/webhook-endpoints/api-schemas.ts +103 -103
- package/src/integrations/webhook-endpoints/types.ts +58 -58
- package/src/knowledge/README.md +33 -32
- package/src/knowledge/__tests__/queries.test.ts +633 -541
- package/src/knowledge/format.ts +100 -99
- package/src/knowledge/index.ts +5 -5
- package/src/knowledge/published.ts +5 -5
- package/src/knowledge/queries.ts +274 -222
- package/src/operations/activities/api-schemas.ts +80 -80
- package/src/operations/activities/types.ts +64 -64
- package/src/organization-model/README.md +149 -109
- package/src/organization-model/__tests__/content-kinds-registry.test.ts +210 -0
- package/src/organization-model/__tests__/defaults.test.ts +168 -194
- package/src/organization-model/__tests__/domains/actions.test.ts +78 -0
- package/src/organization-model/__tests__/domains/customers.test.ts +48 -44
- package/src/organization-model/__tests__/domains/entities.test.ts +56 -0
- package/src/organization-model/__tests__/domains/goals.test.ts +110 -96
- package/src/organization-model/__tests__/domains/identity.test.ts +4 -3
- package/src/organization-model/__tests__/domains/navigation.test.ts +222 -166
- package/src/organization-model/__tests__/domains/offerings.test.ts +83 -88
- package/src/organization-model/__tests__/domains/policies.test.ts +323 -0
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +30 -30
- package/src/organization-model/__tests__/domains/resources.test.ts +396 -175
- package/src/organization-model/__tests__/domains/roles.test.ts +463 -402
- package/src/organization-model/__tests__/domains/statuses.test.ts +13 -10
- package/src/organization-model/__tests__/domains/systems.test.ts +209 -193
- package/src/organization-model/__tests__/flatten-additive-merge.test.ts +362 -0
- package/src/organization-model/__tests__/foundation.test.ts +47 -75
- package/src/organization-model/__tests__/get-resources-for-system.test.ts +144 -0
- package/src/organization-model/__tests__/graph.test.ts +1336 -149
- package/src/organization-model/__tests__/icons.test.ts +10 -1
- package/src/organization-model/__tests__/knowledge.test.ts +418 -61
- package/src/organization-model/__tests__/lookup-helpers.test.ts +438 -0
- package/src/organization-model/__tests__/migration-helpers.test.ts +591 -0
- package/src/organization-model/__tests__/prospecting-ssot.test.ts +103 -94
- package/src/organization-model/__tests__/recursive-system-schema.test.ts +549 -0
- package/src/organization-model/__tests__/resolve.test.ts +303 -42
- package/src/organization-model/__tests__/schema.test.ts +863 -153
- package/src/organization-model/__tests__/surface-projection.test.ts +284 -174
- package/src/organization-model/catalogs/lead-gen.ts +144 -0
- package/src/organization-model/content-kinds/config.ts +36 -0
- package/src/organization-model/content-kinds/index.ts +78 -0
- package/src/organization-model/content-kinds/pipeline.ts +68 -0
- package/src/organization-model/content-kinds/registry.ts +44 -0
- package/src/organization-model/content-kinds/status.ts +71 -0
- package/src/organization-model/content-kinds/template.ts +83 -0
- package/src/organization-model/content-kinds/types.ts +117 -0
- package/src/organization-model/contracts.ts +27 -17
- package/src/organization-model/defaults.ts +489 -107
- package/src/organization-model/domains/actions.ts +333 -0
- package/src/organization-model/domains/customers.ts +10 -7
- package/src/organization-model/domains/entities.ts +144 -0
- package/src/organization-model/domains/goals.ts +9 -6
- package/src/organization-model/domains/knowledge.ts +128 -54
- package/src/organization-model/domains/navigation.ts +139 -416
- package/src/organization-model/domains/offerings.ts +15 -10
- package/src/organization-model/domains/policies.ts +102 -0
- package/src/organization-model/domains/projects.ts +6 -40
- package/src/organization-model/domains/prospecting.ts +395 -514
- package/src/organization-model/domains/resources.ts +173 -81
- package/src/organization-model/domains/roles.ts +96 -93
- package/src/organization-model/domains/sales.test.ts +218 -218
- package/src/organization-model/domains/sales.ts +380 -589
- package/src/organization-model/domains/shared.ts +8 -8
- package/src/organization-model/domains/statuses.ts +298 -89
- package/src/organization-model/domains/systems.ts +240 -38
- package/src/organization-model/foundation.ts +35 -48
- package/src/organization-model/graph/build.ts +1035 -279
- package/src/organization-model/graph/index.ts +4 -4
- package/src/organization-model/graph/link.ts +10 -10
- package/src/organization-model/graph/schema.ts +77 -56
- package/src/organization-model/graph/types.ts +75 -56
- package/src/organization-model/helpers.ts +312 -59
- package/src/organization-model/icons.ts +78 -66
- package/src/organization-model/index.ts +129 -16
- package/src/organization-model/migration-helpers.ts +252 -0
- package/src/organization-model/ontology.ts +661 -0
- package/src/organization-model/organization-graph.mdx +110 -89
- package/src/organization-model/organization-model.mdx +226 -171
- package/src/organization-model/published.ts +295 -139
- package/src/organization-model/resolve.ts +139 -21
- package/src/organization-model/schema.ts +841 -301
- package/src/organization-model/surface-projection.ts +212 -218
- package/src/organization-model/types.ts +181 -90
- package/src/platform/api/types.ts +38 -38
- package/src/platform/constants/versions.ts +3 -3
- package/src/platform/index.ts +23 -23
- package/src/platform/registry/__tests__/command-view.test.ts +5 -7
- package/src/platform/registry/__tests__/resource-link.test.ts +35 -30
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +17 -32
- package/src/platform/registry/__tests__/resource-registry.nested-systems.test.ts +245 -0
- package/src/platform/registry/__tests__/resource-registry.test.ts +2053 -2051
- package/src/platform/registry/__tests__/validation.test.ts +1347 -1343
- package/src/platform/registry/command-view.ts +10 -10
- package/src/platform/registry/index.ts +103 -103
- package/src/platform/registry/resource-link.ts +32 -32
- package/src/platform/registry/resource-registry.ts +890 -878
- package/src/platform/registry/serialization.ts +295 -295
- package/src/platform/registry/serialized-types.ts +166 -166
- package/src/platform/registry/stats-types.ts +68 -68
- package/src/platform/registry/types.ts +425 -425
- package/src/platform/registry/validation.ts +745 -743
- package/src/platform/utils/__tests__/validation.test.ts +1084 -1084
- package/src/platform/utils/validation.ts +425 -425
- package/src/projects/api-schemas.test.ts +39 -39
- package/src/projects/api-schemas.ts +291 -291
- package/src/reference/_generated/contracts.md +2389 -2121
- package/src/reference/glossary.md +76 -76
- package/src/scaffold-registry/__tests__/index.test.ts +206 -206
- package/src/scaffold-registry/__tests__/schema.test.ts +166 -166
- package/src/scaffold-registry/index.ts +392 -392
- package/src/scaffold-registry/schema.ts +243 -243
- package/src/server.ts +289 -289
- package/src/supabase/database.types.ts +3153 -3093
- package/src/test-utils/README.md +37 -37
- package/src/test-utils/entities.ts +108 -108
- package/src/test-utils/fixtures/memberships.ts +82 -82
- package/src/test-utils/index.ts +12 -12
- package/src/test-utils/organization-model.ts +65 -65
- package/src/test-utils/published.ts +6 -6
- package/src/test-utils/rls/RLSTestContext.ts +588 -588
- package/src/test-utils/test-utils.test.ts +44 -49
- package/src/organization-model/__tests__/domains/operations.test.ts +0 -203
- package/src/organization-model/domains/features.ts +0 -31
- 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
|
+
}
|
package/src/knowledge/README.md
CHANGED
|
@@ -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
|
-
| `
|
|
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-
|
|
13
|
-
| `governedBy(graph, nodeId)` | Incoming `governs` sources (governing knowledge-node ids) into a
|
|
14
|
-
| `parsePath(pathString)` | Parse `/by-
|
|
15
|
-
| `formatText`, `formatJson`, `formatIdsOnly` | Output formatters used by the `knowledge:*` CLI subcommands. |
|
|
16
|
-
|
|
17
|
-
## Path syntax
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
/by-
|
|
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 }`
|
|
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
|
+
|