@dainprotocol/service-sdk 2.0.66 → 2.0.68
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 +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/service/index.d.ts +4 -2
- package/dist/service/index.js +8 -1
- package/dist/service/index.js.map +1 -1
- package/dist/service/nodeService.d.ts +4 -2
- package/dist/service/nodeService.js +8 -1
- package/dist/service/nodeService.js.map +1 -1
- package/dist/service/oauth2Manager.js +3 -2
- package/dist/service/oauth2Manager.js.map +1 -1
- package/dist/service/server.js +84 -9
- package/dist/service/server.js.map +1 -1
- package/dist/service/service.js +15 -2
- package/dist/service/service.js.map +1 -1
- package/dist/service/skills.d.ts +106 -0
- package/dist/service/skills.js +156 -0
- package/dist/service/skills.js.map +1 -0
- package/dist/service/trigger-forwarder.d.ts +47 -0
- package/dist/service/trigger-forwarder.js +91 -0
- package/dist/service/trigger-forwarder.js.map +1 -0
- package/dist/service/types.d.ts +4 -0
- package/dist/service/webhooks.d.ts +109 -10
- package/dist/service/webhooks.js +184 -30
- package/dist/service/webhooks.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/api-sdk.test.d.ts +0 -1
- package/dist/__tests__/api-sdk.test.js +0 -102
- package/dist/__tests__/api-sdk.test.js.map +0 -1
- package/dist/__tests__/auth.test.d.ts +0 -1
- package/dist/__tests__/auth.test.js +0 -110
- package/dist/__tests__/auth.test.js.map +0 -1
- package/dist/__tests__/citations-plugin.test.d.ts +0 -1
- package/dist/__tests__/citations-plugin.test.js +0 -491
- package/dist/__tests__/citations-plugin.test.js.map +0 -1
- package/dist/__tests__/context-behavior.test.d.ts +0 -1
- package/dist/__tests__/context-behavior.test.js +0 -290
- package/dist/__tests__/context-behavior.test.js.map +0 -1
- package/dist/__tests__/convertToVercelTool.test.d.ts +0 -1
- package/dist/__tests__/convertToVercelTool.test.js +0 -527
- package/dist/__tests__/convertToVercelTool.test.js.map +0 -1
- package/dist/__tests__/core.test.d.ts +0 -1
- package/dist/__tests__/core.test.js +0 -154
- package/dist/__tests__/core.test.js.map +0 -1
- package/dist/__tests__/crypto-plugin.test.d.ts +0 -1
- package/dist/__tests__/crypto-plugin.test.js +0 -694
- package/dist/__tests__/crypto-plugin.test.js.map +0 -1
- package/dist/__tests__/humanActions.test.d.ts +0 -1
- package/dist/__tests__/humanActions.test.js +0 -221
- package/dist/__tests__/humanActions.test.js.map +0 -1
- package/dist/__tests__/integration.test.d.ts +0 -1
- package/dist/__tests__/integration.test.js +0 -1573
- package/dist/__tests__/integration.test.js.map +0 -1
- package/dist/__tests__/mealMeSchemas.test.d.ts +0 -576
- package/dist/__tests__/mealMeSchemas.test.js +0 -627
- package/dist/__tests__/mealMeSchemas.test.js.map +0 -1
- package/dist/__tests__/oauth-context-simple.test.d.ts +0 -1
- package/dist/__tests__/oauth-context-simple.test.js +0 -90
- package/dist/__tests__/oauth-context-simple.test.js.map +0 -1
- package/dist/__tests__/oauth-context.test.d.ts +0 -1
- package/dist/__tests__/oauth-context.test.js +0 -282
- package/dist/__tests__/oauth-context.test.js.map +0 -1
- package/dist/__tests__/oauth.test.d.ts +0 -1
- package/dist/__tests__/oauth.test.js +0 -378
- package/dist/__tests__/oauth.test.js.map +0 -1
- package/dist/__tests__/oauth2-client-context.test.d.ts +0 -1
- package/dist/__tests__/oauth2-client-context.test.js +0 -165
- package/dist/__tests__/oauth2-client-context.test.js.map +0 -1
- package/dist/__tests__/oauth2-client-integration.test.d.ts +0 -1
- package/dist/__tests__/oauth2-client-integration.test.js +0 -182
- package/dist/__tests__/oauth2-client-integration.test.js.map +0 -1
- package/dist/__tests__/oauth2-client-simple.test.d.ts +0 -1
- package/dist/__tests__/oauth2-client-simple.test.js +0 -144
- package/dist/__tests__/oauth2-client-simple.test.js.map +0 -1
- package/dist/__tests__/oauth2-context.test.d.ts +0 -1
- package/dist/__tests__/oauth2-context.test.js +0 -201
- package/dist/__tests__/oauth2-context.test.js.map +0 -1
- package/dist/__tests__/oauth2-datasource.test.d.ts +0 -1
- package/dist/__tests__/oauth2-datasource.test.js +0 -251
- package/dist/__tests__/oauth2-datasource.test.js.map +0 -1
- package/dist/__tests__/plugin.test.d.ts +0 -1
- package/dist/__tests__/plugin.test.js +0 -900
- package/dist/__tests__/plugin.test.js.map +0 -1
- package/dist/__tests__/processes.test.d.ts +0 -1
- package/dist/__tests__/processes.test.js +0 -239
- package/dist/__tests__/processes.test.js.map +0 -1
- package/dist/__tests__/streaming.test.d.ts +0 -1
- package/dist/__tests__/streaming.test.js +0 -592
- package/dist/__tests__/streaming.test.js.map +0 -1
- package/dist/__tests__/testEnums.d.ts +0 -1
- package/dist/__tests__/testEnums.js +0 -73
- package/dist/__tests__/testEnums.js.map +0 -1
- package/dist/__tests__/testOptionals.test.d.ts +0 -1
- package/dist/__tests__/testOptionals.test.js +0 -83
- package/dist/__tests__/testOptionals.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -1
- package/dist/__tests__/types.test.js +0 -98
- package/dist/__tests__/types.test.js.map +0 -1
- package/dist/service/zod-json-converter.d.ts +0 -14
- package/dist/service/zod-json-converter.js +0 -203
- package/dist/service/zod-json-converter.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/service/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trigger Forwarder
|
|
3
|
+
*
|
|
4
|
+
* Handles async forwarding of webhook triggers to automation-core.
|
|
5
|
+
* Fire-and-forget pattern with logging for debugging.
|
|
6
|
+
*
|
|
7
|
+
* When a webhook trigger matches, this utility POSTs the trigger data
|
|
8
|
+
* to automation-core's /webhooks/trigger endpoint, which then
|
|
9
|
+
* triggers any automations listening for that trigger.
|
|
10
|
+
*/
|
|
11
|
+
export interface TriggerForwardingConfig {
|
|
12
|
+
/** automation-core API URL (e.g., http://localhost:3005) */
|
|
13
|
+
automationApiUrl: string;
|
|
14
|
+
/** API key for authentication */
|
|
15
|
+
automationApiKey?: string;
|
|
16
|
+
/** Service URL for trigger identification */
|
|
17
|
+
serviceUrl: string;
|
|
18
|
+
}
|
|
19
|
+
export interface TriggerForwardResult {
|
|
20
|
+
success: boolean;
|
|
21
|
+
/** Number of automations triggered */
|
|
22
|
+
triggered?: number;
|
|
23
|
+
/** IDs of runs created */
|
|
24
|
+
runIds?: string[];
|
|
25
|
+
/** Error message if failed */
|
|
26
|
+
error?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Forward a trigger to automation-core
|
|
30
|
+
*
|
|
31
|
+
* This is a fire-and-forget operation - errors are logged but not thrown.
|
|
32
|
+
* The webhook response to the external platform (e.g., Telegram) should not
|
|
33
|
+
* be blocked by automation-core failures.
|
|
34
|
+
*
|
|
35
|
+
* @param config Forwarding configuration
|
|
36
|
+
* @param triggerId The trigger identifier (e.g., "telegram-message")
|
|
37
|
+
* @param data The validated trigger data matching the output schema
|
|
38
|
+
* @returns Promise resolving to forward result
|
|
39
|
+
*/
|
|
40
|
+
export declare function forwardTriggerToAutomationCore(config: TriggerForwardingConfig, triggerId: string, data: any): Promise<TriggerForwardResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a configured forwarder function
|
|
43
|
+
*
|
|
44
|
+
* @param config Forwarding configuration
|
|
45
|
+
* @returns Forwarder function
|
|
46
|
+
*/
|
|
47
|
+
export declare function createTriggerForwarder(config: TriggerForwardingConfig): (triggerId: string, data: any) => Promise<TriggerForwardResult>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Trigger Forwarder
|
|
4
|
+
*
|
|
5
|
+
* Handles async forwarding of webhook triggers to automation-core.
|
|
6
|
+
* Fire-and-forget pattern with logging for debugging.
|
|
7
|
+
*
|
|
8
|
+
* When a webhook trigger matches, this utility POSTs the trigger data
|
|
9
|
+
* to automation-core's /webhooks/trigger endpoint, which then
|
|
10
|
+
* triggers any automations listening for that trigger.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.forwardTriggerToAutomationCore = forwardTriggerToAutomationCore;
|
|
14
|
+
exports.createTriggerForwarder = createTriggerForwarder;
|
|
15
|
+
/**
|
|
16
|
+
* Forward a trigger to automation-core
|
|
17
|
+
*
|
|
18
|
+
* This is a fire-and-forget operation - errors are logged but not thrown.
|
|
19
|
+
* The webhook response to the external platform (e.g., Telegram) should not
|
|
20
|
+
* be blocked by automation-core failures.
|
|
21
|
+
*
|
|
22
|
+
* @param config Forwarding configuration
|
|
23
|
+
* @param triggerId The trigger identifier (e.g., "telegram-message")
|
|
24
|
+
* @param data The validated trigger data matching the output schema
|
|
25
|
+
* @returns Promise resolving to forward result
|
|
26
|
+
*/
|
|
27
|
+
async function forwardTriggerToAutomationCore(config, triggerId, data) {
|
|
28
|
+
const url = `${config.automationApiUrl}/webhooks/trigger`;
|
|
29
|
+
const headers = {
|
|
30
|
+
'Content-Type': 'application/json',
|
|
31
|
+
};
|
|
32
|
+
if (config.automationApiKey) {
|
|
33
|
+
headers['X-API-Key'] = config.automationApiKey;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
console.log(`[TriggerForwarder] Forwarding trigger ${triggerId} to ${url}`);
|
|
37
|
+
const response = await fetch(url, {
|
|
38
|
+
method: 'POST',
|
|
39
|
+
headers,
|
|
40
|
+
body: JSON.stringify({
|
|
41
|
+
triggerId,
|
|
42
|
+
data,
|
|
43
|
+
serviceUrl: config.serviceUrl,
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
const errorText = await response.text();
|
|
48
|
+
console.error(`[TriggerForwarder] Forward failed:`, {
|
|
49
|
+
triggerId,
|
|
50
|
+
status: response.status,
|
|
51
|
+
error: errorText,
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
error: `HTTP ${response.status}: ${errorText}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const result = await response.json();
|
|
59
|
+
console.log(`[TriggerForwarder] Forward succeeded:`, {
|
|
60
|
+
triggerId,
|
|
61
|
+
triggered: result.triggered,
|
|
62
|
+
runIds: result.runIds,
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
success: true,
|
|
66
|
+
triggered: result.triggered,
|
|
67
|
+
runIds: result.runIds,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
// Fire-and-forget: log error but don't throw
|
|
72
|
+
console.error(`[TriggerForwarder] Forward error:`, {
|
|
73
|
+
triggerId,
|
|
74
|
+
error: error.message,
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
error: error.message,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Create a configured forwarder function
|
|
84
|
+
*
|
|
85
|
+
* @param config Forwarding configuration
|
|
86
|
+
* @returns Forwarder function
|
|
87
|
+
*/
|
|
88
|
+
function createTriggerForwarder(config) {
|
|
89
|
+
return (triggerId, data) => forwardTriggerToAutomationCore(config, triggerId, data);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=trigger-forwarder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-forwarder.js","sourceRoot":"","sources":["../../src/service/trigger-forwarder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAiCH,wEAmEC;AAQD,wDAGC;AA1FD;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,8BAA8B,CAClD,MAA+B,EAC/B,SAAiB,EACjB,IAAS;IAET,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,gBAAgB,mBAAmB,CAAC;IAE1D,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACjD,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,SAAS,OAAO,GAAG,EAAE,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,SAAS;gBACT,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE;gBAClD,SAAS;gBACT,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,QAAQ,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;aAC/C,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE;YACnD,SAAS;YACT,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,6CAA6C;QAC7C,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE;YACjD,SAAS;YACT,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,MAA+B;IACpE,OAAO,CAAC,SAAiB,EAAE,IAAS,EAAE,EAAE,CACtC,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC"}
|
package/dist/service/types.d.ts
CHANGED
|
@@ -265,6 +265,7 @@ export type DAINServiceConfig = {
|
|
|
265
265
|
jwtIssuer?: string;
|
|
266
266
|
platformBaseUrl?: string;
|
|
267
267
|
webhookTriggers?: import('./webhooks').WebhookTriggerRegistry;
|
|
268
|
+
skills?: import('./skills').SkillRegistry;
|
|
268
269
|
hitl?: {
|
|
269
270
|
/** Enable HITL action webhook */
|
|
270
271
|
enabled: boolean;
|
|
@@ -274,6 +275,8 @@ export type DAINServiceConfig = {
|
|
|
274
275
|
automationApiKey?: string;
|
|
275
276
|
/** Webhook path for receiving actions (defaults to /actions) */
|
|
276
277
|
webhookPath?: string;
|
|
278
|
+
/** Auto-register webhook triggers with automation-core on startup (default: true if webhookTriggers defined) */
|
|
279
|
+
autoRegisterTriggers?: boolean;
|
|
277
280
|
};
|
|
278
281
|
};
|
|
279
282
|
export interface ServiceManager {
|
|
@@ -320,6 +323,7 @@ export interface OAuth2ProviderConfig {
|
|
|
320
323
|
responseRootKey?: string;
|
|
321
324
|
tokenPaths?: TokenPaths;
|
|
322
325
|
logoUrl?: string;
|
|
326
|
+
profileUrl?: string;
|
|
323
327
|
}
|
|
324
328
|
/**
|
|
325
329
|
* Direct Configuration Provider
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { TriggerForwardingConfig } from './trigger-forwarder';
|
|
2
3
|
/**
|
|
3
|
-
* Webhook trigger definition with type-safe output
|
|
4
|
+
* Webhook trigger definition with type-safe input and output schemas
|
|
5
|
+
*
|
|
6
|
+
* Supports two patterns:
|
|
7
|
+
* 1. NEW (recommended): Use `inputSchema` + `filter` + `transform` for typed, explicit logic
|
|
8
|
+
* 2. LEGACY (backward compatible): Use `handler` for combined filter+transform
|
|
4
9
|
*/
|
|
5
|
-
export interface WebhookTrigger<TOutput = any> {
|
|
10
|
+
export interface WebhookTrigger<TInput = any, TOutput = any> {
|
|
6
11
|
/** Unique identifier for this trigger (e.g., "gmail-new-message") */
|
|
7
12
|
id: string;
|
|
8
13
|
/** Human-readable name (e.g., "New Gmail Message") */
|
|
@@ -15,15 +20,55 @@ export interface WebhookTrigger<TOutput = any> {
|
|
|
15
20
|
* If not provided, defaults to /webhooks/{id}
|
|
16
21
|
*/
|
|
17
22
|
path?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Zod schema for validating and typing incoming webhook payload.
|
|
25
|
+
* When provided:
|
|
26
|
+
* - Payload is validated before filter/handler is called
|
|
27
|
+
* - Filter and transform receive typed TInput
|
|
28
|
+
* - Invalid payloads are rejected early with clear errors
|
|
29
|
+
*/
|
|
30
|
+
inputSchema?: z.ZodType<TInput>;
|
|
18
31
|
/** Zod schema defining the output structure */
|
|
19
32
|
outputSchema: z.ZodType<TOutput>;
|
|
20
33
|
/**
|
|
21
|
-
*
|
|
34
|
+
* Filter function: determines if this trigger matches the payload.
|
|
35
|
+
* - Returns true if payload matches this trigger
|
|
36
|
+
* - Returns false to skip this trigger and try next one
|
|
37
|
+
*
|
|
38
|
+
* When used with inputSchema, receives validated/typed payload.
|
|
39
|
+
* Use with `transform` for explicit separation of concerns.
|
|
40
|
+
*/
|
|
41
|
+
filter?: (payload: TInput) => boolean | Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Transform function: converts input payload to output format.
|
|
44
|
+
* Only called if filter returns true (or if no filter is provided).
|
|
45
|
+
* The result is validated against outputSchema.
|
|
46
|
+
*
|
|
47
|
+
* If not provided and filter matches, input is passed through as output.
|
|
48
|
+
*/
|
|
49
|
+
transform?: (payload: TInput) => TOutput | Promise<TOutput>;
|
|
50
|
+
/**
|
|
51
|
+
* LEGACY: Combined filter + transform handler.
|
|
22
52
|
* - Returns null if payload doesn't match this trigger
|
|
23
53
|
* - Returns transformed data if it matches
|
|
24
54
|
* - Data will be validated against outputSchema
|
|
25
|
-
|
|
26
|
-
|
|
55
|
+
*
|
|
56
|
+
* @deprecated Use `filter` + `transform` for better separation of concerns
|
|
57
|
+
*/
|
|
58
|
+
handler?: (payload: any) => Promise<TOutput | null> | TOutput | null;
|
|
59
|
+
/**
|
|
60
|
+
* Whether to forward matched events to trigger automations.
|
|
61
|
+
*
|
|
62
|
+
* When true (default):
|
|
63
|
+
* - Trigger is exposed via GET /getWebhookTriggers
|
|
64
|
+
* - Matched events are forwarded to trigger automations
|
|
65
|
+
*
|
|
66
|
+
* Set to false for internal-only triggers that shouldn't be
|
|
67
|
+
* available for automations.
|
|
68
|
+
*
|
|
69
|
+
* @default true
|
|
70
|
+
*/
|
|
71
|
+
forward?: boolean;
|
|
27
72
|
}
|
|
28
73
|
/**
|
|
29
74
|
* JSON Schema version for API export
|
|
@@ -33,6 +78,7 @@ export interface WebhookTriggerDefinition {
|
|
|
33
78
|
name: string;
|
|
34
79
|
description: string;
|
|
35
80
|
path: string;
|
|
81
|
+
inputSchema?: any;
|
|
36
82
|
outputSchema: any;
|
|
37
83
|
}
|
|
38
84
|
/**
|
|
@@ -49,6 +95,16 @@ export interface WebhookProcessResult {
|
|
|
49
95
|
*/
|
|
50
96
|
export declare class WebhookTriggerRegistry {
|
|
51
97
|
private triggers;
|
|
98
|
+
private forwardingConfig?;
|
|
99
|
+
/**
|
|
100
|
+
* Configure trigger forwarding to automation-core
|
|
101
|
+
* Called by server.ts during setup if HITL is enabled
|
|
102
|
+
*/
|
|
103
|
+
setForwardingConfig(config: TriggerForwardingConfig): void;
|
|
104
|
+
/**
|
|
105
|
+
* Check if forwarding is configured
|
|
106
|
+
*/
|
|
107
|
+
hasForwardingConfig(): boolean;
|
|
52
108
|
/**
|
|
53
109
|
* Normalize path: If not provided, use /webhooks/{id}
|
|
54
110
|
*/
|
|
@@ -63,13 +119,22 @@ export declare class WebhookTriggerRegistry {
|
|
|
63
119
|
registerMany(triggers: WebhookTrigger<any>[]): void;
|
|
64
120
|
/**
|
|
65
121
|
* Process incoming webhook payload
|
|
66
|
-
* - Tries each trigger
|
|
122
|
+
* - Tries each trigger in registration order
|
|
123
|
+
* - Supports two patterns:
|
|
124
|
+
* 1. NEW: inputSchema → filter → transform
|
|
125
|
+
* 2. LEGACY: handler (combined filter+transform)
|
|
67
126
|
* - Returns first match (triggerId + validated data)
|
|
127
|
+
* - If trigger has forward=true (default), forwards to automation-core (async)
|
|
68
128
|
* - Returns null if no trigger matches
|
|
69
129
|
*/
|
|
70
130
|
processWebhook(payload: any): Promise<WebhookProcessResult | null>;
|
|
71
131
|
/**
|
|
72
|
-
* Get trigger definitions for API export
|
|
132
|
+
* Get trigger definitions for API export (GET /getWebhookTriggers)
|
|
133
|
+
*
|
|
134
|
+
* Only returns triggers where forward !== false (defaults to true).
|
|
135
|
+
* This ensures external systems only see triggers that will actually forward events.
|
|
136
|
+
* Internal-only triggers (forward: false) are not exposed.
|
|
137
|
+
*
|
|
73
138
|
* Returns array of triggers with JSON Schema format
|
|
74
139
|
*/
|
|
75
140
|
getTriggerDefinitions(): WebhookTriggerDefinition[];
|
|
@@ -115,8 +180,8 @@ export declare class WebhookTriggerRegistry {
|
|
|
115
180
|
*/
|
|
116
181
|
export declare function createWebhookTriggerRegistry(): WebhookTriggerRegistry;
|
|
117
182
|
/**
|
|
118
|
-
* Helper: Create a simple trigger with
|
|
119
|
-
*
|
|
183
|
+
* Helper: Create a simple trigger with untyped payload matching
|
|
184
|
+
* @deprecated Use createTypedTrigger for type-safe triggers
|
|
120
185
|
*/
|
|
121
186
|
export declare function createSimpleTrigger<TOutput>(config: {
|
|
122
187
|
id: string;
|
|
@@ -126,4 +191,38 @@ export declare function createSimpleTrigger<TOutput>(config: {
|
|
|
126
191
|
outputSchema: z.ZodType<TOutput>;
|
|
127
192
|
matchCondition: (payload: any) => boolean;
|
|
128
193
|
transform: (payload: any) => TOutput;
|
|
129
|
-
|
|
194
|
+
forward?: boolean;
|
|
195
|
+
}): WebhookTrigger<any, TOutput>;
|
|
196
|
+
/**
|
|
197
|
+
* Helper: Create a type-safe trigger with input validation and explicit filter/transform
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* const dmTrigger = createTypedTrigger({
|
|
202
|
+
* id: 'telegram-dm',
|
|
203
|
+
* name: 'Telegram DM',
|
|
204
|
+
* description: 'Incoming private messages',
|
|
205
|
+
* path: '/triggers/message',
|
|
206
|
+
* inputSchema: TelegramMessageSchema,
|
|
207
|
+
* outputSchema: TelegramMessageSchema,
|
|
208
|
+
* filter: (msg) => msg.isPrivate && !msg.isOutgoing,
|
|
209
|
+
* // transform is optional - if omitted, input passes through as output
|
|
210
|
+
* });
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
export declare function createTypedTrigger<TInput, TOutput = TInput>(config: {
|
|
214
|
+
id: string;
|
|
215
|
+
name: string;
|
|
216
|
+
description: string;
|
|
217
|
+
path?: string;
|
|
218
|
+
/** Schema for validating incoming webhook payload */
|
|
219
|
+
inputSchema: z.ZodType<TInput>;
|
|
220
|
+
/** Schema for validating output (defaults to inputSchema if same type) */
|
|
221
|
+
outputSchema: z.ZodType<TOutput>;
|
|
222
|
+
/** Filter function - return true to match, false to skip */
|
|
223
|
+
filter: (payload: TInput) => boolean | Promise<boolean>;
|
|
224
|
+
/** Optional transform - if omitted, input passes through as output */
|
|
225
|
+
transform?: (payload: TInput) => TOutput | Promise<TOutput>;
|
|
226
|
+
/** Whether to forward to automation-core (default: true) */
|
|
227
|
+
forward?: boolean;
|
|
228
|
+
}): WebhookTrigger<TInput, TOutput>;
|
package/dist/service/webhooks.js
CHANGED
|
@@ -3,14 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WebhookTriggerRegistry = void 0;
|
|
4
4
|
exports.createWebhookTriggerRegistry = createWebhookTriggerRegistry;
|
|
5
5
|
exports.createSimpleTrigger = createSimpleTrigger;
|
|
6
|
+
exports.createTypedTrigger = createTypedTrigger;
|
|
6
7
|
const zod_1 = require("zod");
|
|
7
8
|
const schemaStructure_1 = require("../lib/schemaStructure");
|
|
9
|
+
const trigger_forwarder_1 = require("./trigger-forwarder");
|
|
8
10
|
/**
|
|
9
11
|
* Webhook Trigger Registry
|
|
10
12
|
* Manages webhook triggers for a service
|
|
11
13
|
*/
|
|
12
14
|
class WebhookTriggerRegistry {
|
|
13
15
|
triggers = new Map();
|
|
16
|
+
forwardingConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Configure trigger forwarding to automation-core
|
|
19
|
+
* Called by server.ts during setup if HITL is enabled
|
|
20
|
+
*/
|
|
21
|
+
setForwardingConfig(config) {
|
|
22
|
+
this.forwardingConfig = config;
|
|
23
|
+
console.log(`[WebhookTriggerRegistry] Forwarding enabled to ${config.automationApiUrl}`);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if forwarding is configured
|
|
27
|
+
*/
|
|
28
|
+
hasForwardingConfig() {
|
|
29
|
+
return !!this.forwardingConfig;
|
|
30
|
+
}
|
|
14
31
|
/**
|
|
15
32
|
* Normalize path: If not provided, use /webhooks/{id}
|
|
16
33
|
*/
|
|
@@ -47,57 +64,162 @@ class WebhookTriggerRegistry {
|
|
|
47
64
|
}
|
|
48
65
|
/**
|
|
49
66
|
* Process incoming webhook payload
|
|
50
|
-
* - Tries each trigger
|
|
67
|
+
* - Tries each trigger in registration order
|
|
68
|
+
* - Supports two patterns:
|
|
69
|
+
* 1. NEW: inputSchema → filter → transform
|
|
70
|
+
* 2. LEGACY: handler (combined filter+transform)
|
|
51
71
|
* - Returns first match (triggerId + validated data)
|
|
72
|
+
* - If trigger has forward=true (default), forwards to automation-core (async)
|
|
52
73
|
* - Returns null if no trigger matches
|
|
53
74
|
*/
|
|
54
75
|
async processWebhook(payload) {
|
|
76
|
+
console.log(`[WebhookTriggerRegistry] ========== PROCESSING WEBHOOK ==========`);
|
|
77
|
+
console.log(`[WebhookTriggerRegistry] Registered triggers: ${Array.from(this.triggers.keys()).join(', ')}`);
|
|
78
|
+
console.log(`[WebhookTriggerRegistry] Payload preview:`, {
|
|
79
|
+
messageId: payload?.messageId,
|
|
80
|
+
chatId: payload?.chatId,
|
|
81
|
+
isPrivate: payload?.isPrivate,
|
|
82
|
+
isGroup: payload?.isGroup,
|
|
83
|
+
isOutgoing: payload?.isOutgoing,
|
|
84
|
+
text: payload?.text?.substring(0, 50),
|
|
85
|
+
});
|
|
55
86
|
for (const [triggerId, trigger] of this.triggers.entries()) {
|
|
56
|
-
|
|
87
|
+
console.log(`[WebhookTriggerRegistry] --- Evaluating trigger: ${triggerId} ---`);
|
|
57
88
|
try {
|
|
58
|
-
|
|
59
|
-
result
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
triggerId
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
89
|
+
let validatedInput = payload;
|
|
90
|
+
let result;
|
|
91
|
+
// Step 1: Validate input against inputSchema if provided
|
|
92
|
+
if (trigger.inputSchema) {
|
|
93
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Validating input schema...`);
|
|
94
|
+
try {
|
|
95
|
+
validatedInput = trigger.inputSchema.parse(payload);
|
|
96
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Input schema validation: PASSED`);
|
|
97
|
+
}
|
|
98
|
+
catch (inputError) {
|
|
99
|
+
if (inputError instanceof zod_1.z.ZodError) {
|
|
100
|
+
// Input doesn't match this trigger's schema - skip to next trigger
|
|
101
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Input schema validation: FAILED - skipping`);
|
|
102
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Validation errors:`, inputError.issues.map(e => ({
|
|
103
|
+
path: e.path.join('.'),
|
|
104
|
+
message: e.message,
|
|
105
|
+
code: e.code,
|
|
106
|
+
})));
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
throw inputError;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Step 2: Determine if trigger matches using filter or handler
|
|
113
|
+
const hasNewPattern = trigger.filter !== undefined;
|
|
114
|
+
const hasLegacyPattern = trigger.handler !== undefined;
|
|
115
|
+
if (hasNewPattern) {
|
|
116
|
+
// NEW PATTERN: Use explicit filter + transform
|
|
117
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Running filter function...`);
|
|
118
|
+
const matches = await trigger.filter(validatedInput);
|
|
119
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Filter result: ${matches ? 'MATCHED' : 'NOT MATCHED'}`);
|
|
120
|
+
if (!matches) {
|
|
121
|
+
// Filter returned false - skip to next trigger
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
// Filter matched - apply transform if provided, otherwise passthrough
|
|
125
|
+
if (trigger.transform) {
|
|
126
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Applying transform...`);
|
|
127
|
+
result = await trigger.transform(validatedInput);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
// No transform provided - passthrough input as output
|
|
131
|
+
result = validatedInput;
|
|
132
|
+
}
|
|
69
133
|
}
|
|
134
|
+
else if (hasLegacyPattern) {
|
|
135
|
+
// LEGACY PATTERN: Use combined handler
|
|
136
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Running legacy handler...`);
|
|
137
|
+
result = await trigger.handler(payload);
|
|
138
|
+
if (result === null) {
|
|
139
|
+
// Handler returned null - skip to next trigger
|
|
140
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Handler returned null - skipping`);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// No filter or handler defined - skip this trigger
|
|
146
|
+
console.warn(`[WebhookTriggerRegistry] [${triggerId}] No filter or handler defined - skipping`);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
// Step 3: Validate output against outputSchema
|
|
150
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Validating output schema...`);
|
|
151
|
+
const validated = trigger.outputSchema.parse(result);
|
|
152
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Output validation: PASSED`);
|
|
153
|
+
console.log(`[WebhookTriggerRegistry] ✅ TRIGGER MATCHED: ${triggerId} (${trigger.name})`);
|
|
154
|
+
// Step 4: Forward to automation system if enabled (async, fire-and-forget)
|
|
155
|
+
const shouldForward = trigger.forward !== false;
|
|
156
|
+
if (shouldForward && this.forwardingConfig) {
|
|
157
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Forwarding to automation-core...`);
|
|
158
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Forward URL: ${this.forwardingConfig.automationApiUrl}`);
|
|
159
|
+
(0, trigger_forwarder_1.forwardTriggerToAutomationCore)(this.forwardingConfig, triggerId, validated).then(() => {
|
|
160
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] ✅ Forward SUCCESS`);
|
|
161
|
+
}).catch(err => {
|
|
162
|
+
console.error(`[WebhookTriggerRegistry] [${triggerId}] ❌ Forward FAILED:`, err.message);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
else if (shouldForward && !this.forwardingConfig) {
|
|
166
|
+
console.warn(`[WebhookTriggerRegistry] [${triggerId}] ⚠️ Cannot forward - no forwarding config set. ` +
|
|
167
|
+
`Ensure HITL is enabled or configure triggerForwarding.`);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
console.log(`[WebhookTriggerRegistry] [${triggerId}] Forwarding disabled (forward: false)`);
|
|
171
|
+
}
|
|
172
|
+
console.log(`[WebhookTriggerRegistry] ========== WEBHOOK PROCESSING COMPLETE ==========`);
|
|
173
|
+
return {
|
|
174
|
+
triggerId,
|
|
175
|
+
triggerName: trigger.name,
|
|
176
|
+
data: validated
|
|
177
|
+
};
|
|
70
178
|
}
|
|
71
179
|
catch (error) {
|
|
72
180
|
if (error instanceof zod_1.z.ZodError) {
|
|
73
|
-
//
|
|
74
|
-
console.error(`[WebhookTriggerRegistry]
|
|
75
|
-
errors: error.issues || error.errors
|
|
76
|
-
data: result
|
|
181
|
+
// Output schema validation error
|
|
182
|
+
console.error(`[WebhookTriggerRegistry] [${triggerId}] ❌ Output validation FAILED:`, {
|
|
183
|
+
errors: error.issues || error.errors
|
|
77
184
|
});
|
|
78
185
|
}
|
|
79
186
|
else {
|
|
80
|
-
// Handler execution error
|
|
81
|
-
console.error(`[WebhookTriggerRegistry]
|
|
187
|
+
// Handler/filter/transform execution error
|
|
188
|
+
console.error(`[WebhookTriggerRegistry] [${triggerId}] ❌ Processing ERROR:`, error);
|
|
82
189
|
}
|
|
83
190
|
// Continue to next trigger
|
|
84
191
|
}
|
|
85
192
|
}
|
|
86
|
-
console.log('[WebhookTriggerRegistry]
|
|
193
|
+
console.log('[WebhookTriggerRegistry] ❌ NO TRIGGER MATCHED');
|
|
194
|
+
console.log(`[WebhookTriggerRegistry] ========== WEBHOOK PROCESSING COMPLETE ==========`);
|
|
87
195
|
return null;
|
|
88
196
|
}
|
|
89
197
|
/**
|
|
90
|
-
* Get trigger definitions for API export
|
|
198
|
+
* Get trigger definitions for API export (GET /getWebhookTriggers)
|
|
199
|
+
*
|
|
200
|
+
* Only returns triggers where forward !== false (defaults to true).
|
|
201
|
+
* This ensures external systems only see triggers that will actually forward events.
|
|
202
|
+
* Internal-only triggers (forward: false) are not exposed.
|
|
203
|
+
*
|
|
91
204
|
* Returns array of triggers with JSON Schema format
|
|
92
205
|
*/
|
|
93
206
|
getTriggerDefinitions() {
|
|
94
|
-
return Array.from(this.triggers.values())
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
207
|
+
return Array.from(this.triggers.values())
|
|
208
|
+
.filter(trigger => trigger.forward !== false)
|
|
209
|
+
.map(trigger => {
|
|
210
|
+
const definition = {
|
|
211
|
+
id: trigger.id,
|
|
212
|
+
name: trigger.name,
|
|
213
|
+
description: trigger.description,
|
|
214
|
+
path: trigger.path, // Guaranteed to exist after normalization
|
|
215
|
+
outputSchema: this.zodToJsonSchema(trigger.outputSchema)
|
|
216
|
+
};
|
|
217
|
+
// Include inputSchema if provided
|
|
218
|
+
if (trigger.inputSchema) {
|
|
219
|
+
definition.inputSchema = this.zodToJsonSchema(trigger.inputSchema);
|
|
220
|
+
}
|
|
221
|
+
return definition;
|
|
222
|
+
});
|
|
101
223
|
}
|
|
102
224
|
/**
|
|
103
225
|
* Get specific trigger
|
|
@@ -176,8 +298,8 @@ function createWebhookTriggerRegistry() {
|
|
|
176
298
|
return new WebhookTriggerRegistry();
|
|
177
299
|
}
|
|
178
300
|
/**
|
|
179
|
-
* Helper: Create a simple trigger with
|
|
180
|
-
*
|
|
301
|
+
* Helper: Create a simple trigger with untyped payload matching
|
|
302
|
+
* @deprecated Use createTypedTrigger for type-safe triggers
|
|
181
303
|
*/
|
|
182
304
|
function createSimpleTrigger(config) {
|
|
183
305
|
return {
|
|
@@ -186,6 +308,8 @@ function createSimpleTrigger(config) {
|
|
|
186
308
|
description: config.description,
|
|
187
309
|
path: config.path,
|
|
188
310
|
outputSchema: config.outputSchema,
|
|
311
|
+
forward: config.forward,
|
|
312
|
+
// Use legacy handler for backward compatibility
|
|
189
313
|
handler: (payload) => {
|
|
190
314
|
if (config.matchCondition(payload)) {
|
|
191
315
|
return config.transform(payload);
|
|
@@ -194,4 +318,34 @@ function createSimpleTrigger(config) {
|
|
|
194
318
|
}
|
|
195
319
|
};
|
|
196
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Helper: Create a type-safe trigger with input validation and explicit filter/transform
|
|
323
|
+
*
|
|
324
|
+
* @example
|
|
325
|
+
* ```typescript
|
|
326
|
+
* const dmTrigger = createTypedTrigger({
|
|
327
|
+
* id: 'telegram-dm',
|
|
328
|
+
* name: 'Telegram DM',
|
|
329
|
+
* description: 'Incoming private messages',
|
|
330
|
+
* path: '/triggers/message',
|
|
331
|
+
* inputSchema: TelegramMessageSchema,
|
|
332
|
+
* outputSchema: TelegramMessageSchema,
|
|
333
|
+
* filter: (msg) => msg.isPrivate && !msg.isOutgoing,
|
|
334
|
+
* // transform is optional - if omitted, input passes through as output
|
|
335
|
+
* });
|
|
336
|
+
* ```
|
|
337
|
+
*/
|
|
338
|
+
function createTypedTrigger(config) {
|
|
339
|
+
return {
|
|
340
|
+
id: config.id,
|
|
341
|
+
name: config.name,
|
|
342
|
+
description: config.description,
|
|
343
|
+
path: config.path,
|
|
344
|
+
inputSchema: config.inputSchema,
|
|
345
|
+
outputSchema: config.outputSchema,
|
|
346
|
+
filter: config.filter,
|
|
347
|
+
transform: config.transform,
|
|
348
|
+
forward: config.forward,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
197
351
|
//# sourceMappingURL=webhooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/service/webhooks.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/service/webhooks.ts"],"names":[],"mappings":"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"}
|