@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.
Files changed (101) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +8 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/service/index.d.ts +4 -2
  5. package/dist/service/index.js +8 -1
  6. package/dist/service/index.js.map +1 -1
  7. package/dist/service/nodeService.d.ts +4 -2
  8. package/dist/service/nodeService.js +8 -1
  9. package/dist/service/nodeService.js.map +1 -1
  10. package/dist/service/oauth2Manager.js +3 -2
  11. package/dist/service/oauth2Manager.js.map +1 -1
  12. package/dist/service/server.js +84 -9
  13. package/dist/service/server.js.map +1 -1
  14. package/dist/service/service.js +15 -2
  15. package/dist/service/service.js.map +1 -1
  16. package/dist/service/skills.d.ts +106 -0
  17. package/dist/service/skills.js +156 -0
  18. package/dist/service/skills.js.map +1 -0
  19. package/dist/service/trigger-forwarder.d.ts +47 -0
  20. package/dist/service/trigger-forwarder.js +91 -0
  21. package/dist/service/trigger-forwarder.js.map +1 -0
  22. package/dist/service/types.d.ts +4 -0
  23. package/dist/service/webhooks.d.ts +109 -10
  24. package/dist/service/webhooks.js +184 -30
  25. package/dist/service/webhooks.js.map +1 -1
  26. package/package.json +1 -1
  27. package/dist/__tests__/api-sdk.test.d.ts +0 -1
  28. package/dist/__tests__/api-sdk.test.js +0 -102
  29. package/dist/__tests__/api-sdk.test.js.map +0 -1
  30. package/dist/__tests__/auth.test.d.ts +0 -1
  31. package/dist/__tests__/auth.test.js +0 -110
  32. package/dist/__tests__/auth.test.js.map +0 -1
  33. package/dist/__tests__/citations-plugin.test.d.ts +0 -1
  34. package/dist/__tests__/citations-plugin.test.js +0 -491
  35. package/dist/__tests__/citations-plugin.test.js.map +0 -1
  36. package/dist/__tests__/context-behavior.test.d.ts +0 -1
  37. package/dist/__tests__/context-behavior.test.js +0 -290
  38. package/dist/__tests__/context-behavior.test.js.map +0 -1
  39. package/dist/__tests__/convertToVercelTool.test.d.ts +0 -1
  40. package/dist/__tests__/convertToVercelTool.test.js +0 -527
  41. package/dist/__tests__/convertToVercelTool.test.js.map +0 -1
  42. package/dist/__tests__/core.test.d.ts +0 -1
  43. package/dist/__tests__/core.test.js +0 -154
  44. package/dist/__tests__/core.test.js.map +0 -1
  45. package/dist/__tests__/crypto-plugin.test.d.ts +0 -1
  46. package/dist/__tests__/crypto-plugin.test.js +0 -694
  47. package/dist/__tests__/crypto-plugin.test.js.map +0 -1
  48. package/dist/__tests__/humanActions.test.d.ts +0 -1
  49. package/dist/__tests__/humanActions.test.js +0 -221
  50. package/dist/__tests__/humanActions.test.js.map +0 -1
  51. package/dist/__tests__/integration.test.d.ts +0 -1
  52. package/dist/__tests__/integration.test.js +0 -1573
  53. package/dist/__tests__/integration.test.js.map +0 -1
  54. package/dist/__tests__/mealMeSchemas.test.d.ts +0 -576
  55. package/dist/__tests__/mealMeSchemas.test.js +0 -627
  56. package/dist/__tests__/mealMeSchemas.test.js.map +0 -1
  57. package/dist/__tests__/oauth-context-simple.test.d.ts +0 -1
  58. package/dist/__tests__/oauth-context-simple.test.js +0 -90
  59. package/dist/__tests__/oauth-context-simple.test.js.map +0 -1
  60. package/dist/__tests__/oauth-context.test.d.ts +0 -1
  61. package/dist/__tests__/oauth-context.test.js +0 -282
  62. package/dist/__tests__/oauth-context.test.js.map +0 -1
  63. package/dist/__tests__/oauth.test.d.ts +0 -1
  64. package/dist/__tests__/oauth.test.js +0 -378
  65. package/dist/__tests__/oauth.test.js.map +0 -1
  66. package/dist/__tests__/oauth2-client-context.test.d.ts +0 -1
  67. package/dist/__tests__/oauth2-client-context.test.js +0 -165
  68. package/dist/__tests__/oauth2-client-context.test.js.map +0 -1
  69. package/dist/__tests__/oauth2-client-integration.test.d.ts +0 -1
  70. package/dist/__tests__/oauth2-client-integration.test.js +0 -182
  71. package/dist/__tests__/oauth2-client-integration.test.js.map +0 -1
  72. package/dist/__tests__/oauth2-client-simple.test.d.ts +0 -1
  73. package/dist/__tests__/oauth2-client-simple.test.js +0 -144
  74. package/dist/__tests__/oauth2-client-simple.test.js.map +0 -1
  75. package/dist/__tests__/oauth2-context.test.d.ts +0 -1
  76. package/dist/__tests__/oauth2-context.test.js +0 -201
  77. package/dist/__tests__/oauth2-context.test.js.map +0 -1
  78. package/dist/__tests__/oauth2-datasource.test.d.ts +0 -1
  79. package/dist/__tests__/oauth2-datasource.test.js +0 -251
  80. package/dist/__tests__/oauth2-datasource.test.js.map +0 -1
  81. package/dist/__tests__/plugin.test.d.ts +0 -1
  82. package/dist/__tests__/plugin.test.js +0 -900
  83. package/dist/__tests__/plugin.test.js.map +0 -1
  84. package/dist/__tests__/processes.test.d.ts +0 -1
  85. package/dist/__tests__/processes.test.js +0 -239
  86. package/dist/__tests__/processes.test.js.map +0 -1
  87. package/dist/__tests__/streaming.test.d.ts +0 -1
  88. package/dist/__tests__/streaming.test.js +0 -592
  89. package/dist/__tests__/streaming.test.js.map +0 -1
  90. package/dist/__tests__/testEnums.d.ts +0 -1
  91. package/dist/__tests__/testEnums.js +0 -73
  92. package/dist/__tests__/testEnums.js.map +0 -1
  93. package/dist/__tests__/testOptionals.test.d.ts +0 -1
  94. package/dist/__tests__/testOptionals.test.js +0 -83
  95. package/dist/__tests__/testOptionals.test.js.map +0 -1
  96. package/dist/__tests__/types.test.d.ts +0 -1
  97. package/dist/__tests__/types.test.js +0 -98
  98. package/dist/__tests__/types.test.js.map +0 -1
  99. package/dist/service/zod-json-converter.d.ts +0 -14
  100. package/dist/service/zod-json-converter.js +0 -203
  101. 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"}
@@ -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 schema
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
- * Handler function: filter + transform
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
- handler: (payload: any) => Promise<TOutput | null> | TOutput | null;
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's handler in registration order
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 JSONPath-like field matching
119
- * For simple use cases where you just need to check if certain fields exist
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
- }): WebhookTrigger<TOutput>;
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>;
@@ -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's handler in registration order
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
- let result;
87
+ console.log(`[WebhookTriggerRegistry] --- Evaluating trigger: ${triggerId} ---`);
57
88
  try {
58
- // Run handler
59
- result = await trigger.handler(payload);
60
- if (result !== null) {
61
- // Validate against schema
62
- const validated = trigger.outputSchema.parse(result);
63
- console.log(`[WebhookTriggerRegistry] Webhook matched trigger: ${triggerId}`);
64
- return {
65
- triggerId,
66
- triggerName: trigger.name,
67
- data: validated
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
- // Schema validation error
74
- console.error(`[WebhookTriggerRegistry] Trigger ${triggerId} schema validation failed:`, {
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] Trigger ${triggerId} handler error:`, error);
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] No trigger matched webhook payload');
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()).map(trigger => ({
95
- id: trigger.id,
96
- name: trigger.name,
97
- description: trigger.description,
98
- path: trigger.path, // Guaranteed to exist after normalization
99
- outputSchema: this.zodToJsonSchema(trigger.outputSchema)
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 JSONPath-like field matching
180
- * For simple use cases where you just need to check if certain fields exist
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":"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"}
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/service/webhooks.ts"],"names":[],"mappings":"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"}