@vertesia/common 1.4.0 → 1.5.0-dev.20260713.151751Z
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/lib/access-control.d.ts +31 -6
- package/lib/access-control.d.ts.map +1 -1
- package/lib/access-control.js +12 -2
- package/lib/access-control.js.map +1 -1
- package/lib/apikey.d.ts +29 -5
- package/lib/apikey.d.ts.map +1 -1
- package/lib/apikey.js.map +1 -1
- package/lib/apps.d.ts +78 -4
- package/lib/apps.d.ts.map +1 -1
- package/lib/apps.js +2 -0
- package/lib/apps.js.map +1 -1
- package/lib/audit-trail.d.ts +15 -2
- package/lib/audit-trail.d.ts.map +1 -1
- package/lib/audit-trail.js +20 -0
- package/lib/audit-trail.js.map +1 -1
- package/lib/environment.d.ts +7 -0
- package/lib/environment.d.ts.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/integrations.d.ts +13 -1
- package/lib/integrations.d.ts.map +1 -1
- package/lib/integrations.js.map +1 -1
- package/lib/platform-event-validation.d.ts +45 -0
- package/lib/platform-event-validation.d.ts.map +1 -0
- package/lib/platform-event-validation.js +323 -0
- package/lib/platform-event-validation.js.map +1 -0
- package/lib/platform-event.d.ts +665 -0
- package/lib/platform-event.d.ts.map +1 -0
- package/lib/platform-event.js +2 -0
- package/lib/platform-event.js.map +1 -0
- package/lib/project.d.ts +32 -0
- package/lib/project.d.ts.map +1 -1
- package/lib/project.js.map +1 -1
- package/lib/prompt.d.ts +1 -0
- package/lib/prompt.d.ts.map +1 -1
- package/lib/prompt.js.map +1 -1
- package/lib/query.d.ts +1 -0
- package/lib/query.d.ts.map +1 -1
- package/lib/rate-limiter.d.ts +72 -0
- package/lib/rate-limiter.d.ts.map +1 -1
- package/lib/roles/types.d.ts +1 -1
- package/lib/roles/types.js +1 -1
- package/lib/secrets.d.ts +59 -0
- package/lib/secrets.d.ts.map +1 -1
- package/lib/store/agent-run.d.ts +17 -1
- package/lib/store/agent-run.d.ts.map +1 -1
- package/lib/store/process-validation.js +19 -0
- package/lib/store/process-validation.js.map +1 -1
- package/lib/store/store.d.ts +234 -10
- package/lib/store/store.d.ts.map +1 -1
- package/lib/store/store.js +3 -1
- package/lib/store/store.js.map +1 -1
- package/lib/store/workflow.d.ts +6 -5
- package/lib/store/workflow.d.ts.map +1 -1
- package/lib/store/workflow.js.map +1 -1
- package/lib/sts-token-types.d.ts +1 -0
- package/lib/sts-token-types.d.ts.map +1 -1
- package/lib/sts-token-types.js.map +1 -1
- package/lib/user.d.ts +36 -1
- package/lib/user.d.ts.map +1 -1
- package/lib/user.js +39 -0
- package/lib/user.js.map +1 -1
- package/lib/vertesia-common.js +3 -2
- package/lib/vertesia-common.js.map +1 -1
- package/package.json +4 -7
- package/src/access-control.ts +31 -6
- package/src/apikey.ts +29 -5
- package/src/apps.ts +87 -4
- package/src/audit-trail.ts +34 -18
- package/src/environment.ts +7 -0
- package/src/index.ts +25 -0
- package/src/integrations.ts +14 -1
- package/src/platform-event-validation.test.ts +225 -0
- package/src/platform-event-validation.ts +359 -0
- package/src/platform-event.ts +771 -0
- package/src/project.ts +38 -0
- package/src/prompt.ts +1 -0
- package/src/query.ts +1 -0
- package/src/rate-limiter.ts +78 -0
- package/src/roles/types.ts +1 -1
- package/src/secrets.ts +69 -0
- package/src/store/agent-run.ts +22 -1
- package/src/store/process-validation.test.ts +62 -0
- package/src/store/process-validation.ts +18 -0
- package/src/store/store.ts +263 -10
- package/src/store/workflow.ts +7 -5
- package/src/sts-token-types.ts +1 -0
- package/src/user.ts +49 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../src/integrations.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B,CAAC,YAAY,SAAS,qBAAqB,GAAG,qBAAqB;IAC5G,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,wBAAyB,SAAQ,4BAA4B,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACxG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAoB,SAAQ,4BAA4B,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,4BAA4B,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACnG,oBAAoB,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../src/integrations.ts"],"names":[],"mappings":"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"}
|
package/lib/integrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../src/integrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../src/integrations.ts"],"names":[],"mappings":"AAsKA,MAAM,CAAN,IAAY,qBAUX;AAVD,WAAY,qBAAqB;IAC7B,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,oCAAW,CAAA;IACX,gDAAuB,CAAA;IACvB,0CAAiB,CAAA;IACjB,oCAAW,CAAA;IACX,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,8DAAqC,CAAA;AACzC,CAAC,EAVW,qBAAqB,KAArB,qBAAqB,QAUhC;AA2CD,MAAM,UAAU,mCAAmC,CAC/C,WAAkC,EAClC,MAA+B;IAE/B,OAAO;QACH,GAAG,MAAM;QACT,WAAW;KACsB,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { CreateEventSubscriptionPayload, EventCategory, EventPriority, UpdateEventSubscriptionPayload } from './platform-event.js';
|
|
2
|
+
import { SystemRoles } from './project.js';
|
|
3
|
+
export declare const DEFAULT_WEBHOOK_TIMEOUT_MS = 30000;
|
|
4
|
+
export declare const MAX_WEBHOOK_TIMEOUT_MS = 50000;
|
|
5
|
+
export declare const EVENT_CATEGORIES: readonly EventCategory[];
|
|
6
|
+
export declare const EVENT_PRIORITIES: readonly EventPriority[];
|
|
7
|
+
/** Default agent-evaluator iteration budget for a semantic condition. */
|
|
8
|
+
export declare const DEFAULT_SEMANTIC_AGENT_MAX_ITERATIONS = 10;
|
|
9
|
+
/** Maximum agent-evaluator iteration budget a user may request. */
|
|
10
|
+
export declare const MAX_SEMANTIC_AGENT_MAX_ITERATIONS = 30;
|
|
11
|
+
/** Default content-excerpt size (chars) included in the interaction classifier prompt. */
|
|
12
|
+
export declare const DEFAULT_SEMANTIC_MAX_CONTENT_CHARS = 4000;
|
|
13
|
+
/** Maximum content-excerpt size (chars) a user may request. */
|
|
14
|
+
export declare const MAX_SEMANTIC_MAX_CONTENT_CHARS = 20000;
|
|
15
|
+
/** Maximum length of a semantic condition instruction. */
|
|
16
|
+
export declare const MAX_SEMANTIC_CONDITION_INSTRUCTION_LENGTH = 2000;
|
|
17
|
+
/** Default action stamped on an ingested external event when none is provided/mapped. */
|
|
18
|
+
export declare const DEFAULT_EXTERNAL_EVENT_ACTION = "received";
|
|
19
|
+
/** Default resource_type stamped on an ingested external event when none is provided/mapped. */
|
|
20
|
+
export declare const DEFAULT_EXTERNAL_EVENT_RESOURCE_TYPE = "external_event";
|
|
21
|
+
/** Prefix combined with a channel `source` to form the event `source` (`external:<source>`). */
|
|
22
|
+
export declare const EXTERNAL_EVENT_SOURCE_PREFIX = "external:";
|
|
23
|
+
/** Role an event subscription runs as when none is specified. */
|
|
24
|
+
export declare const DEFAULT_EVENT_SUBSCRIPTION_RUN_AS_ROLE = SystemRoles.automation;
|
|
25
|
+
/**
|
|
26
|
+
* Roles a user may select for an event subscription's run_as_role. System subscriptions may use
|
|
27
|
+
* additional roles (e.g. content_processor); this list gates user input in the API, agent tools,
|
|
28
|
+
* and UI — keep all three consuming this constant.
|
|
29
|
+
*/
|
|
30
|
+
export declare const EVENT_SUBSCRIPTION_RUN_AS_ROLES: readonly SystemRoles[];
|
|
31
|
+
/**
|
|
32
|
+
* JSONLogic operators accepted in event subscription filter conditions. The event-bus evaluator
|
|
33
|
+
* rejects any operator not in this list (fail closed); the UI condition editor uses it for
|
|
34
|
+
* completion and validation.
|
|
35
|
+
*/
|
|
36
|
+
export declare const EVENT_CONDITION_JSON_LOGIC_OPERATORS: readonly string[];
|
|
37
|
+
export interface EventSubscriptionValidationResult {
|
|
38
|
+
valid: boolean;
|
|
39
|
+
errors: string[];
|
|
40
|
+
}
|
|
41
|
+
export declare function getCreateEventSubscriptionValidationResult(payload: CreateEventSubscriptionPayload): EventSubscriptionValidationResult;
|
|
42
|
+
export declare function getUpdateEventSubscriptionValidationResult(payload: UpdateEventSubscriptionPayload): EventSubscriptionValidationResult;
|
|
43
|
+
export declare function validateCreateEventSubscriptionInput(payload: CreateEventSubscriptionPayload): void;
|
|
44
|
+
export declare function validateUpdateEventSubscriptionInput(payload: UpdateEventSubscriptionPayload): void;
|
|
45
|
+
//# sourceMappingURL=platform-event-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-event-validation.d.ts","sourceRoot":"","sources":["../src/platform-event-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,8BAA8B,EAC9B,aAAa,EAEb,aAAa,EAEb,8BAA8B,EACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAY3C,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAOpD,CAAC;AACF,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAA8B,CAAC;AAEpF,yEAAyE;AACzE,eAAO,MAAM,qCAAqC,KAAK,CAAC;AACxD,mEAAmE;AACnE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,OAAO,CAAC;AACvD,+DAA+D;AAC/D,eAAO,MAAM,8BAA8B,QAAS,CAAC;AACrD,0DAA0D;AAC1D,eAAO,MAAM,yCAAyC,OAAO,CAAC;AAE9D,yFAAyF;AACzF,eAAO,MAAM,6BAA6B,aAAa,CAAC;AACxD,gGAAgG;AAChG,eAAO,MAAM,oCAAoC,mBAAmB,CAAC;AACrE,gGAAgG;AAChG,eAAO,MAAM,4BAA4B,cAAc,CAAC;AAExD,iEAAiE;AACjE,eAAO,MAAM,sCAAsC,yBAAyB,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,EAAE,SAAS,WAAW,EAIjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,EAAE,SAAS,MAAM,EAmCjE,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAC9C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AA0LD,wBAAgB,0CAA0C,CACtD,OAAO,EAAE,8BAA8B,GACxC,iCAAiC,CA0BnC;AAED,wBAAgB,0CAA0C,CACtD,OAAO,EAAE,8BAA8B,GACxC,iCAAiC,CAgBnC;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAKlG;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,8BAA8B,GAAG,IAAI,CAKlG"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { SystemRoles } from './project.js';
|
|
2
|
+
/**
|
|
3
|
+
* Statuses an `agent_signal` target may list in `statuses` — the run statuses that can be **directly
|
|
4
|
+
* signalled**. Only a live (`running`, possibly idle) run has an active Temporal workflow that accepts a
|
|
5
|
+
* signal; `created` runs have no workflow bound yet, and terminal runs are handled separately by
|
|
6
|
+
* `on_terminal` (`restart` re-activates the newest terminal run, then signals). Restricting the set keeps
|
|
7
|
+
* config from silently trying to signal a closed workflow.
|
|
8
|
+
*/
|
|
9
|
+
const SIGNALABLE_AGENT_RUN_STATUS_VALUES = ['running'];
|
|
10
|
+
export const DEFAULT_WEBHOOK_TIMEOUT_MS = 30_000;
|
|
11
|
+
export const MAX_WEBHOOK_TIMEOUT_MS = 50_000;
|
|
12
|
+
export const EVENT_CATEGORIES = [
|
|
13
|
+
'content',
|
|
14
|
+
'workflow',
|
|
15
|
+
'security',
|
|
16
|
+
'billing',
|
|
17
|
+
'system',
|
|
18
|
+
'external',
|
|
19
|
+
];
|
|
20
|
+
export const EVENT_PRIORITIES = ['high', 'normal', 'low'];
|
|
21
|
+
/** Default agent-evaluator iteration budget for a semantic condition. */
|
|
22
|
+
export const DEFAULT_SEMANTIC_AGENT_MAX_ITERATIONS = 10;
|
|
23
|
+
/** Maximum agent-evaluator iteration budget a user may request. */
|
|
24
|
+
export const MAX_SEMANTIC_AGENT_MAX_ITERATIONS = 30;
|
|
25
|
+
/** Default content-excerpt size (chars) included in the interaction classifier prompt. */
|
|
26
|
+
export const DEFAULT_SEMANTIC_MAX_CONTENT_CHARS = 4000;
|
|
27
|
+
/** Maximum content-excerpt size (chars) a user may request. */
|
|
28
|
+
export const MAX_SEMANTIC_MAX_CONTENT_CHARS = 20_000;
|
|
29
|
+
/** Maximum length of a semantic condition instruction. */
|
|
30
|
+
export const MAX_SEMANTIC_CONDITION_INSTRUCTION_LENGTH = 2000;
|
|
31
|
+
/** Default action stamped on an ingested external event when none is provided/mapped. */
|
|
32
|
+
export const DEFAULT_EXTERNAL_EVENT_ACTION = 'received';
|
|
33
|
+
/** Default resource_type stamped on an ingested external event when none is provided/mapped. */
|
|
34
|
+
export const DEFAULT_EXTERNAL_EVENT_RESOURCE_TYPE = 'external_event';
|
|
35
|
+
/** Prefix combined with a channel `source` to form the event `source` (`external:<source>`). */
|
|
36
|
+
export const EXTERNAL_EVENT_SOURCE_PREFIX = 'external:';
|
|
37
|
+
/** Role an event subscription runs as when none is specified. */
|
|
38
|
+
export const DEFAULT_EVENT_SUBSCRIPTION_RUN_AS_ROLE = SystemRoles.automation;
|
|
39
|
+
/**
|
|
40
|
+
* Roles a user may select for an event subscription's run_as_role. System subscriptions may use
|
|
41
|
+
* additional roles (e.g. content_processor); this list gates user input in the API, agent tools,
|
|
42
|
+
* and UI — keep all three consuming this constant.
|
|
43
|
+
*/
|
|
44
|
+
export const EVENT_SUBSCRIPTION_RUN_AS_ROLES = [
|
|
45
|
+
SystemRoles.automation,
|
|
46
|
+
SystemRoles.executor,
|
|
47
|
+
SystemRoles.reader,
|
|
48
|
+
];
|
|
49
|
+
/**
|
|
50
|
+
* JSONLogic operators accepted in event subscription filter conditions. The event-bus evaluator
|
|
51
|
+
* rejects any operator not in this list (fail closed); the UI condition editor uses it for
|
|
52
|
+
* completion and validation.
|
|
53
|
+
*/
|
|
54
|
+
export const EVENT_CONDITION_JSON_LOGIC_OPERATORS = [
|
|
55
|
+
'!',
|
|
56
|
+
'!!',
|
|
57
|
+
'!=',
|
|
58
|
+
'!==',
|
|
59
|
+
'%',
|
|
60
|
+
'*',
|
|
61
|
+
'+',
|
|
62
|
+
'-',
|
|
63
|
+
'/',
|
|
64
|
+
'<',
|
|
65
|
+
'<=',
|
|
66
|
+
'==',
|
|
67
|
+
'===',
|
|
68
|
+
'>',
|
|
69
|
+
'>=',
|
|
70
|
+
'?:',
|
|
71
|
+
'all',
|
|
72
|
+
'and',
|
|
73
|
+
'cat',
|
|
74
|
+
'filter',
|
|
75
|
+
'if',
|
|
76
|
+
'in',
|
|
77
|
+
'map',
|
|
78
|
+
'max',
|
|
79
|
+
'merge',
|
|
80
|
+
'min',
|
|
81
|
+
'missing',
|
|
82
|
+
'missing_some',
|
|
83
|
+
'none',
|
|
84
|
+
'or',
|
|
85
|
+
'reduce',
|
|
86
|
+
'some',
|
|
87
|
+
'substr',
|
|
88
|
+
'var',
|
|
89
|
+
];
|
|
90
|
+
function isRecord(value) {
|
|
91
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
92
|
+
}
|
|
93
|
+
function isStringArray(value) {
|
|
94
|
+
return Array.isArray(value) && value.every((item) => typeof item === 'string');
|
|
95
|
+
}
|
|
96
|
+
function validateFilter(filter, errors) {
|
|
97
|
+
if (!isRecord(filter)) {
|
|
98
|
+
errors.push('filter must be an object');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const f = filter;
|
|
102
|
+
if (f.event_category !== undefined) {
|
|
103
|
+
if (!isStringArray(f.event_category)) {
|
|
104
|
+
errors.push('filter.event_category must be an array of strings');
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
for (const c of f.event_category) {
|
|
108
|
+
if (c !== '*' && !EVENT_CATEGORIES.includes(c)) {
|
|
109
|
+
errors.push(`filter.event_category contains unsupported value: ${c}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (f.exclude_event_category !== undefined) {
|
|
115
|
+
if (!isStringArray(f.exclude_event_category)) {
|
|
116
|
+
errors.push('filter.exclude_event_category must be an array of strings');
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
for (const c of f.exclude_event_category) {
|
|
120
|
+
if (!EVENT_CATEGORIES.includes(c)) {
|
|
121
|
+
errors.push(`filter.exclude_event_category contains unsupported value: ${c}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (f.action !== undefined && !isStringArray(f.action)) {
|
|
127
|
+
errors.push('filter.action must be an array of strings');
|
|
128
|
+
}
|
|
129
|
+
if (f.resource_type !== undefined && !isStringArray(f.resource_type)) {
|
|
130
|
+
errors.push('filter.resource_type must be an array of strings');
|
|
131
|
+
}
|
|
132
|
+
if (f.condition !== undefined && !isRecord(f.condition)) {
|
|
133
|
+
errors.push('filter.condition must be a JSON Logic object');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function validateTarget(target, errors) {
|
|
137
|
+
if (!isRecord(target)) {
|
|
138
|
+
errors.push('target must be an object');
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const type = target.type;
|
|
142
|
+
if (type !== 'workflow' && type !== 'webhook' && type !== 'agent' && type !== 'process') {
|
|
143
|
+
errors.push('target.type must be one of workflow, webhook, agent, process');
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const t = target;
|
|
147
|
+
switch (t.type) {
|
|
148
|
+
case 'workflow':
|
|
149
|
+
if (typeof t.endpoint !== 'string' || t.endpoint.length === 0) {
|
|
150
|
+
errors.push('workflow target requires a non-empty "endpoint"');
|
|
151
|
+
}
|
|
152
|
+
break;
|
|
153
|
+
case 'webhook': {
|
|
154
|
+
if (typeof t.url !== 'string' || t.url.length === 0) {
|
|
155
|
+
errors.push('webhook target requires a non-empty "url"');
|
|
156
|
+
}
|
|
157
|
+
if (t.timeout_ms !== undefined) {
|
|
158
|
+
if (!Number.isInteger(t.timeout_ms) || t.timeout_ms <= 0 || t.timeout_ms > MAX_WEBHOOK_TIMEOUT_MS) {
|
|
159
|
+
errors.push(`webhook target.timeout_ms must be an integer between 1 and ${MAX_WEBHOOK_TIMEOUT_MS}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (t.signing_mode !== undefined && t.signing_mode !== 'signed' && t.signing_mode !== 'legacy_unsigned') {
|
|
163
|
+
errors.push('webhook target.signing_mode must be "signed" or "legacy_unsigned"');
|
|
164
|
+
}
|
|
165
|
+
if (t.payload_mode !== undefined &&
|
|
166
|
+
t.payload_mode !== 'event_envelope' &&
|
|
167
|
+
t.payload_mode !== 'legacy_notify_endpoint' &&
|
|
168
|
+
t.payload_mode !== 'workflow_notification') {
|
|
169
|
+
errors.push('webhook target.payload_mode must be "event_envelope", "legacy_notify_endpoint" or "workflow_notification"');
|
|
170
|
+
}
|
|
171
|
+
if (t.encrypted_headers === true) {
|
|
172
|
+
errors.push('webhook target.encrypted_headers is not supported');
|
|
173
|
+
}
|
|
174
|
+
if (t.headers !== undefined && !isRecord(t.headers)) {
|
|
175
|
+
errors.push('webhook target.headers must be an object of strings');
|
|
176
|
+
}
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case 'process':
|
|
180
|
+
if ((typeof t.process_ref !== 'string' || t.process_ref.length === 0) && !isRecord(t.process_definition)) {
|
|
181
|
+
errors.push('process target requires "process_ref" or an inline "process_definition"');
|
|
182
|
+
}
|
|
183
|
+
break;
|
|
184
|
+
case 'agent': {
|
|
185
|
+
// One target with three behaviors selected by `on_match` (default `start`): start a run,
|
|
186
|
+
// signal an existing run, or ensure (signal-or-start). `signal`/`ensure` need `message_path`
|
|
187
|
+
// and use the gate/signal fields; `missing_thread` is only meaningful for `signal`.
|
|
188
|
+
const onMatch = t.on_match ?? 'start';
|
|
189
|
+
if (onMatch !== 'start' && onMatch !== 'signal' && onMatch !== 'ensure') {
|
|
190
|
+
errors.push('agent target.on_match must be "start", "signal", or "ensure"');
|
|
191
|
+
}
|
|
192
|
+
const needsMessage = onMatch === 'signal' || onMatch === 'ensure';
|
|
193
|
+
if (needsMessage && (typeof t.message_path !== 'string' || t.message_path.length === 0)) {
|
|
194
|
+
errors.push(`agent target.message_path is required when on_match is "${onMatch}"`);
|
|
195
|
+
}
|
|
196
|
+
// Only the UserInput signal is implemented (the dispatcher always sends a UserInput-shaped
|
|
197
|
+
// payload), so reject other names rather than silently mis-deliver.
|
|
198
|
+
if (t.signal_name !== undefined && t.signal_name !== 'UserInput') {
|
|
199
|
+
errors.push('agent target.signal_name must be "UserInput"');
|
|
200
|
+
}
|
|
201
|
+
// Optional dot-path / ref fields are read dynamically at runtime — reject non-strings early.
|
|
202
|
+
for (const field of [
|
|
203
|
+
'interaction_ref',
|
|
204
|
+
'message_path',
|
|
205
|
+
'client_message_id_path',
|
|
206
|
+
'skip_if_path_exists',
|
|
207
|
+
'author_path',
|
|
208
|
+
]) {
|
|
209
|
+
const value = t[field];
|
|
210
|
+
if (value !== undefined && typeof value !== 'string') {
|
|
211
|
+
errors.push(`agent target.${field} must be a string`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (t.metadata !== undefined && !isRecord(t.metadata)) {
|
|
215
|
+
errors.push('agent target.metadata must be an object');
|
|
216
|
+
}
|
|
217
|
+
if (t.statuses !== undefined) {
|
|
218
|
+
if (!isStringArray(t.statuses)) {
|
|
219
|
+
errors.push('agent target.statuses must be an array of strings');
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
const invalid = t.statuses.filter((s) => !SIGNALABLE_AGENT_RUN_STATUS_VALUES.includes(s));
|
|
223
|
+
if (invalid.length > 0) {
|
|
224
|
+
errors.push(`agent target.statuses may only contain signalable statuses: ${invalid.join(', ')} ` +
|
|
225
|
+
`not allowed. Allowed: ${SIGNALABLE_AGENT_RUN_STATUS_VALUES.join(', ')} ` +
|
|
226
|
+
`(terminal runs are handled by on_terminal).`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
for (const field of ['ignore_author_patterns', 'require_command_prefixes', 'require_mentions']) {
|
|
231
|
+
const value = t[field];
|
|
232
|
+
if (value !== undefined && !isStringArray(value)) {
|
|
233
|
+
errors.push(`agent target.${field} must be an array of strings`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (t.missing_thread !== undefined) {
|
|
237
|
+
if (onMatch !== 'signal') {
|
|
238
|
+
errors.push('agent target.missing_thread is only valid when on_match is "signal"');
|
|
239
|
+
}
|
|
240
|
+
else if (t.missing_thread !== 'retry' && t.missing_thread !== 'skip') {
|
|
241
|
+
errors.push('agent target.missing_thread must be "retry" or "skip"');
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (t.on_terminal !== undefined && t.on_terminal !== 'skip' && t.on_terminal !== 'restart') {
|
|
245
|
+
errors.push('agent target.on_terminal must be "skip" or "restart"');
|
|
246
|
+
}
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
function validateCommonFields(payload, errors) {
|
|
252
|
+
if (payload.description !== undefined && typeof payload.description !== 'string') {
|
|
253
|
+
errors.push('description must be a string');
|
|
254
|
+
}
|
|
255
|
+
if (payload.run_as_role !== undefined && !Object.values(SystemRoles).includes(payload.run_as_role)) {
|
|
256
|
+
errors.push(`run_as_role contains unsupported value: ${payload.run_as_role}`);
|
|
257
|
+
}
|
|
258
|
+
if (payload.enabled !== undefined && typeof payload.enabled !== 'boolean') {
|
|
259
|
+
errors.push('enabled must be a boolean');
|
|
260
|
+
}
|
|
261
|
+
if (payload.priority !== undefined && !EVENT_PRIORITIES.includes(payload.priority)) {
|
|
262
|
+
errors.push(`priority must be one of ${EVENT_PRIORITIES.join(', ')}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
export function getCreateEventSubscriptionValidationResult(payload) {
|
|
266
|
+
const errors = [];
|
|
267
|
+
if (typeof payload?.name !== 'string' || payload.name.trim().length === 0) {
|
|
268
|
+
errors.push('name is required');
|
|
269
|
+
}
|
|
270
|
+
if (payload?.scope !== undefined && payload.scope !== 'account' && payload.scope !== 'project') {
|
|
271
|
+
errors.push('scope must be "account" or "project"');
|
|
272
|
+
}
|
|
273
|
+
if (payload?.filter === undefined) {
|
|
274
|
+
errors.push('filter is required');
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
validateFilter(payload.filter, errors);
|
|
278
|
+
}
|
|
279
|
+
if (payload?.target === undefined) {
|
|
280
|
+
errors.push('target is required');
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
validateTarget(payload.target, errors);
|
|
284
|
+
}
|
|
285
|
+
// run_as_role is required at creation: every subscription must declare an explicit run-as
|
|
286
|
+
// identity so its delivery never falls back to running as the originating (possibly deleted)
|
|
287
|
+
// user. validateCommonFields validates the value when present; this enforces presence.
|
|
288
|
+
if (payload?.run_as_role === undefined) {
|
|
289
|
+
errors.push('run_as_role is required');
|
|
290
|
+
}
|
|
291
|
+
validateCommonFields(payload ?? {}, errors);
|
|
292
|
+
return { valid: errors.length === 0, errors };
|
|
293
|
+
}
|
|
294
|
+
export function getUpdateEventSubscriptionValidationResult(payload) {
|
|
295
|
+
const errors = [];
|
|
296
|
+
if (!isRecord(payload)) {
|
|
297
|
+
return { valid: false, errors: ['update payload must be an object'] };
|
|
298
|
+
}
|
|
299
|
+
if (payload.name !== undefined && (typeof payload.name !== 'string' || payload.name.trim().length === 0)) {
|
|
300
|
+
errors.push('name must be a non-empty string');
|
|
301
|
+
}
|
|
302
|
+
if (payload.filter !== undefined) {
|
|
303
|
+
validateFilter(payload.filter, errors);
|
|
304
|
+
}
|
|
305
|
+
if (payload.target !== undefined) {
|
|
306
|
+
validateTarget(payload.target, errors);
|
|
307
|
+
}
|
|
308
|
+
validateCommonFields(payload, errors);
|
|
309
|
+
return { valid: errors.length === 0, errors };
|
|
310
|
+
}
|
|
311
|
+
export function validateCreateEventSubscriptionInput(payload) {
|
|
312
|
+
const result = getCreateEventSubscriptionValidationResult(payload);
|
|
313
|
+
if (!result.valid) {
|
|
314
|
+
throw new Error(result.errors.join('; '));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
export function validateUpdateEventSubscriptionInput(payload) {
|
|
318
|
+
const result = getUpdateEventSubscriptionValidationResult(payload);
|
|
319
|
+
if (!result.valid) {
|
|
320
|
+
throw new Error(result.errors.join('; '));
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=platform-event-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-event-validation.js","sourceRoot":"","sources":["../src/platform-event-validation.ts"],"names":[],"mappings":"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"}
|