@elizaos/app-core 2.0.0-alpha.336 → 2.0.0-alpha.338

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 (40) hide show
  1. package/package.json +5 -5
  2. package/packages/agent/src/api/trigger-routes.d.ts +1 -0
  3. package/packages/agent/src/api/trigger-routes.d.ts.map +1 -1
  4. package/packages/agent/src/api/trigger-routes.js +48 -0
  5. package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
  6. package/packages/agent/src/runtime/eliza.js +7 -2
  7. package/packages/agent/src/triggers/runtime.d.ts +5 -1
  8. package/packages/agent/src/triggers/runtime.d.ts.map +1 -1
  9. package/packages/agent/src/triggers/runtime.js +24 -6
  10. package/packages/agent/src/triggers/scheduling.d.ts +2 -0
  11. package/packages/agent/src/triggers/scheduling.d.ts.map +1 -1
  12. package/packages/agent/src/triggers/scheduling.js +34 -0
  13. package/packages/agent/src/triggers/types.d.ts +4 -0
  14. package/packages/agent/src/triggers/types.d.ts.map +1 -1
  15. package/packages/app-core/src/api/automations-compat-routes.d.ts.map +1 -1
  16. package/packages/app-core/src/api/automations-compat-routes.js +8 -5
  17. package/packages/app-core/src/api/client-n8n.d.ts +4 -1
  18. package/packages/app-core/src/api/client-n8n.d.ts.map +1 -1
  19. package/packages/app-core/src/api/client-n8n.js +18 -0
  20. package/packages/app-core/src/api/client-types-chat.d.ts +37 -0
  21. package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -1
  22. package/packages/app-core/src/api/n8n-routes.d.ts +6 -0
  23. package/packages/app-core/src/api/n8n-routes.d.ts.map +1 -1
  24. package/packages/app-core/src/api/n8n-routes.js +334 -0
  25. package/packages/app-core/src/components/pages/AutomationsView.d.ts.map +1 -1
  26. package/packages/app-core/src/components/pages/AutomationsView.js +261 -133
  27. package/packages/app-core/src/components/pages/HeartbeatForm.d.ts.map +1 -1
  28. package/packages/app-core/src/components/pages/HeartbeatForm.js +44 -5
  29. package/packages/app-core/src/components/pages/WorkflowGraphViewer.d.ts.map +1 -1
  30. package/packages/app-core/src/components/pages/WorkflowGraphViewer.js +2 -8
  31. package/packages/app-core/src/components/pages/heartbeat-utils.d.ts +2 -0
  32. package/packages/app-core/src/components/pages/heartbeat-utils.d.ts.map +1 -1
  33. package/packages/app-core/src/components/pages/heartbeat-utils.js +18 -0
  34. package/packages/app-core/src/runtime/eliza.d.ts.map +1 -1
  35. package/packages/app-core/src/runtime/eliza.js +6 -1
  36. package/packages/app-core/src/services/n8n-dispatch.d.ts +10 -2
  37. package/packages/app-core/src/services/n8n-dispatch.d.ts.map +1 -1
  38. package/packages/app-core/src/services/n8n-dispatch.js +102 -8
  39. package/packages/typescript/src/types/trigger.d.ts +4 -2
  40. package/packages/typescript/src/types/trigger.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/app-core",
3
- "version": "2.0.0-alpha.336",
3
+ "version": "2.0.0-alpha.338",
4
4
  "description": "Shared application core for elizaOS white-label agent apps.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -469,7 +469,7 @@
469
469
  "@capacitor/preferences": "^8.0.1",
470
470
  "@capacitor/push-notifications": "^8.0.0",
471
471
  "@clack/prompts": "^1.0.0",
472
- "@elizaos/agent": "^2.0.0-alpha.336",
472
+ "@elizaos/agent": "^2.0.0-alpha.338",
473
473
  "@elizaos/app-companion": "^0.0.0",
474
474
  "@elizaos/app-elizamaker": "^0.0.0",
475
475
  "@elizaos/app-lifeops": "^0.0.0",
@@ -478,11 +478,11 @@
478
478
  "@elizaos/app-task-coordinator": "^0.0.0",
479
479
  "@elizaos/app-training": "^0.0.1",
480
480
  "@elizaos/app-vincent": "^0.0.0",
481
- "@elizaos/core": "^2.0.0-alpha.336",
481
+ "@elizaos/core": "^2.0.0-alpha.338",
482
482
  "@elizaos/plugin-browser-bridge": "^0.1.0",
483
483
  "@elizaos/plugin-wechat": "^0.1.0",
484
- "@elizaos/shared": "^2.0.0-alpha.336",
485
- "@elizaos/ui": "^2.0.0-alpha.336",
484
+ "@elizaos/shared": "^2.0.0-alpha.338",
485
+ "@elizaos/ui": "^2.0.0-alpha.338",
486
486
  "@radix-ui/react-checkbox": "^1.3.3",
487
487
  "@radix-ui/react-dialog": "^1.1.15",
488
488
  "@radix-ui/react-dropdown-menu": "^2.1.16",
@@ -14,6 +14,7 @@ interface TriggerDraftInput {
14
14
  intervalMs?: number;
15
15
  scheduledAtIso?: string;
16
16
  cronExpression?: string;
17
+ eventKind?: string;
17
18
  maxRuns?: number;
18
19
  kind?: TriggerKind;
19
20
  workflowId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"trigger-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/trigger-routes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,aAAa,EAElB,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAE/C,UAAU,iBAAiB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,6BAA6B;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC9D,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,kBAAkB,EAAE,CAClB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,wBAAwB,EAAE,CACxB,OAAO,EAAE,aAAa,KACnB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,CAAC;IACpD,gBAAgB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,GAAG,IAAI,CAAC;IACxD,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,oBAAoB,EAAE,CAAC;IACxD,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC;IAC5D,sBAAsB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC;IAC5D,kBAAkB,EAAE,CAAC,MAAM,EAAE;QAC3B,KAAK,EAAE,sBAAsB,CAAC;QAC9B,SAAS,EAAE,IAAI,CAAC;QAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;KAC1B,KAAK,aAAa,CAAC;IACpB,oBAAoB,EAAE,CAAC,MAAM,EAAE;QAC7B,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;QACvC,OAAO,EAAE,aAAa,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,mBAAmB,GAAG,IAAI,CAAC;IACjC,qBAAqB,EAAE,CAAC,MAAM,EAAE;QAC9B,KAAK,EAAE,iBAAiB,CAAC;QACzB,QAAQ,EAAE,6BAA6B,CAAC;KACzC,KAAK;QAAE,KAAK,CAAC,EAAE,sBAAsB,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,4BAA4B,EAAE,MAAM,CAAC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,OAAO,CAAC,CAuclB"}
1
+ {"version":3,"file":"trigger-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/trigger-routes.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ function parseNonEmptyString(value) {
21
21
  const trimmed = value.trim();
22
22
  return trimmed.length > 0 ? trimmed : undefined;
23
23
  }
24
+ function parseEventPayload(value) {
25
+ return value && typeof value === "object" && !Array.isArray(value)
26
+ ? value
27
+ : {};
28
+ }
24
29
  function normalizeTriggerPath(pathname) {
25
30
  if (pathname === "/api/heartbeats") {
26
31
  return {
@@ -122,6 +127,7 @@ export async function handleTriggerRoutes(ctx) {
122
127
  cronExpression: typeof body.cronExpression === "string"
123
128
  ? body.cronExpression
124
129
  : undefined,
130
+ eventKind: typeof body.eventKind === "string" ? body.eventKind : undefined,
125
131
  maxRuns: typeof body.maxRuns === "number" ? body.maxRuns : undefined,
126
132
  kind,
127
133
  workflowId,
@@ -232,6 +238,47 @@ export async function handleTriggerRoutes(ctx) {
232
238
  : { ok: true, result, trigger: summary });
233
239
  return true;
234
240
  }
241
+ const eventMatch = /^\/api\/triggers\/events\/([^/]+)$/.exec(normalizedPathname);
242
+ if (method === "POST" && eventMatch) {
243
+ const eventKind = decodeURIComponent(eventMatch[1] ?? "").trim();
244
+ if (!eventKind) {
245
+ error(res, "event kind is required", 400);
246
+ return true;
247
+ }
248
+ const body = await readJsonBody(req, res);
249
+ if (!body)
250
+ return true;
251
+ const payload = parseEventPayload(body.payload ?? body);
252
+ const tasks = await listTriggerTasks(runtime);
253
+ const matchingTasks = tasks.filter((task) => {
254
+ const trigger = readTriggerConfig(task);
255
+ return (trigger?.enabled === true &&
256
+ trigger.triggerType === "event" &&
257
+ trigger.eventKind === eventKind);
258
+ });
259
+ const results = [];
260
+ for (const task of matchingTasks) {
261
+ const result = await executeTriggerTask(runtime, task, {
262
+ source: "event",
263
+ event: { kind: eventKind, payload },
264
+ });
265
+ const refreshed = task.id ? await runtime.getTask(task.id) : null;
266
+ results.push({
267
+ taskId: task.id,
268
+ result,
269
+ trigger: refreshed
270
+ ? taskToTriggerSummary(refreshed)
271
+ : (result.trigger ?? null),
272
+ });
273
+ }
274
+ json(res, {
275
+ ok: true,
276
+ eventKind,
277
+ matched: matchingTasks.length,
278
+ results,
279
+ });
280
+ return true;
281
+ }
235
282
  const itemMatch = /^\/api\/triggers\/([^/]+)$/.exec(normalizedPathname);
236
283
  if (!itemMatch)
237
284
  return false;
@@ -310,6 +357,7 @@ export async function handleTriggerRoutes(ctx) {
310
357
  cronExpression: typeof body.cronExpression === "string"
311
358
  ? body.cronExpression
312
359
  : current.cronExpression,
360
+ eventKind: typeof body.eventKind === "string" ? body.eventKind : current.eventKind,
313
361
  maxRuns: typeof body.maxRuns === "number" ? body.maxRuns : current.maxRuns,
314
362
  kind: nextKind,
315
363
  workflowId: nextWorkflowId,
@@ -1 +1 @@
1
- {"version":3,"file":"eliza.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/runtime/eliza.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,yBAAyB,EACzB,iCAAiC,EACjC,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,YAAY,EASZ,KAAK,QAAQ,EAIb,KAAK,MAAM,EAKZ,MAAM,eAAe,CAAC;AAgCvB,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,qBAAqB,CAAC;AAuB7B,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAoPxE,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,IAAI,CA2IN;AAqPD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAgBhE;AAsLD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;AA4B/C;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA+BjE;AAonBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMzD;AA8KD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAO/D;AA8MD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CA6NxE;AA0YD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAKpB;AA0DD,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,YAAY,CAAC,CAYvB;AAcD,eAAO,MAAM,iBAAiB,GAAI,OAAO,QAAQ,SAiChD,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAq7CnC;AASD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA8FnC"}
1
+ {"version":3,"file":"eliza.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/runtime/eliza.ts"],"names":[],"mappings":"AA8BA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,6BAA6B,EAC7B,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,yBAAyB,EACzB,iCAAiC,EACjC,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,YAAY,EASZ,KAAK,QAAQ,EAIb,KAAK,MAAM,EAKZ,MAAM,eAAe,CAAC;AAgCvB,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,qBAAqB,CAAC;AAuB7B,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAoPxE,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,IAAI,CA2IN;AAqPD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAgBhE;AA8LD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC;AA4B/C;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA+BjE;AAonBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMzD;AA8KD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAO/D;AA8MD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CA6NxE;AA0YD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAKpB;AA0DD,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,YAAY,CAAC,CAYvB;AAcD,eAAO,MAAM,iBAAiB,GAAI,OAAO,QAAQ,SAiChD,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAq7CnC;AASD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA8FnC"}
@@ -603,6 +603,11 @@ function getAutonomyService(runtime) {
603
603
  }
604
604
  return null;
605
605
  }
606
+ async function startAndRegisterAutonomyService(runtime) {
607
+ const service = await AutonomyService.start(runtime);
608
+ runtime.services.set("AUTONOMY", [service]);
609
+ return service;
610
+ }
606
611
  async function waitForTrajectoriesService(runtime, context, timeoutMs = 3000) {
607
612
  if (!runtimeTrajectoriesEnabled(runtime)) {
608
613
  return;
@@ -2821,7 +2826,7 @@ export async function startEliza(opts) {
2821
2826
  const autonomyEnabled = (process.env.ENABLE_AUTONOMY ?? "true").toLowerCase() !== "false";
2822
2827
  if (autonomyEnabled && !runtime.getService("AUTONOMY")) {
2823
2828
  try {
2824
- await AutonomyService.start(runtime);
2829
+ await startAndRegisterAutonomyService(runtime);
2825
2830
  logger.info("[eliza] AutonomyService started for trigger dispatch");
2826
2831
  }
2827
2832
  catch (err) {
@@ -3106,7 +3111,7 @@ export async function startEliza(opts) {
3106
3111
  const hotReloadAutonomyEnabled = (process.env.ENABLE_AUTONOMY ?? "true").toLowerCase() !== "false";
3107
3112
  if (hotReloadAutonomyEnabled && !newRuntime.getService("AUTONOMY")) {
3108
3113
  try {
3109
- await AutonomyService.start(newRuntime);
3114
+ await startAndRegisterAutonomyService(newRuntime);
3110
3115
  }
3111
3116
  catch (err) {
3112
3117
  logger.warn(`[eliza] AutonomyService failed to start after hot-reload: ${formatError(err)}`);
@@ -3,8 +3,12 @@ import type { TriggerConfig, TriggerHealthSnapshot, TriggerRunRecord, TriggerSum
3
3
  export declare const TRIGGER_TASK_NAME: "TRIGGER_DISPATCH";
4
4
  export declare const TRIGGER_TASK_TAGS: readonly ["queue", "repeat", "trigger"];
5
5
  export interface TriggerExecutionOptions {
6
- source: "scheduler" | "manual";
6
+ source: "scheduler" | "manual" | "event";
7
7
  force?: boolean;
8
+ event?: {
9
+ kind: string;
10
+ payload?: Record<string, unknown>;
11
+ };
8
12
  }
9
13
  export interface TriggerExecutionResult {
10
14
  status: "success" | "error" | "skipped";
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/triggers/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAW,IAAI,EAAQ,MAAM,eAAe,CAAC;AAOxE,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EAEf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,iBAAiB,EAAG,kBAA2B,CAAC;AAC7D,eAAO,MAAM,iBAAiB,yCAA0C,CAAC;AAYzE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAGhC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgDD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,GAAG,IAAI,CAOlE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE,CAG9D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAavE;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAa/D;AAoID,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAsMjC;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAiBtE;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,EAAE,CAAC,CAwBjB;AAkED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,IAAI,CAoCtE;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAsChC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/triggers/runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAW,IAAI,EAAQ,MAAM,eAAe,CAAC;AAOxE,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EAEf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,iBAAiB,EAAG,kBAA2B,CAAC;AAC7D,eAAO,MAAM,iBAAiB,yCAA0C,CAAC;AAYzE,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAGhC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgDD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,GAAG,IAAI,CAOlE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB,EAAE,CAG9D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAavE;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAa/D;AA6ID,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA0NjC;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAiBtE;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,EAAE,CAAC,CAwBjB;AAkED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,IAAI,CAqCtE;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAsChC"}
@@ -92,7 +92,7 @@ async function isAutonomyServiceAvailable(runtime) {
92
92
  * This replaces the previous approach of calling a non-existent
93
93
  * `injectAutonomousInstruction` method on the service.
94
94
  */
95
- async function dispatchInstruction(runtime, taskId, trigger) {
95
+ async function dispatchInstruction(runtime, taskId, trigger, event) {
96
96
  // Resolve the autonomy service to find the target room.
97
97
  // Retry up to 5 times (500ms, 1s, 1.5s, 2s backoff) because the
98
98
  // service may still be registering after a runtime restart or SQL
@@ -127,7 +127,10 @@ async function dispatchInstruction(runtime, taskId, trigger) {
127
127
  }
128
128
  // Create a memory in the autonomy room with the trigger instruction.
129
129
  // The AutonomyService loop picks this up as an autonomous action.
130
- const instructionText = `[Heartbeat: ${trigger.displayName}]\n${trigger.instructions}`;
130
+ const eventText = event
131
+ ? `\n\nEvent: ${event.kind}\nPayload: ${JSON.stringify(event.payload ?? {})}`
132
+ : "";
133
+ const instructionText = `[Heartbeat: ${trigger.displayName}]\n${trigger.instructions}${eventText}`;
131
134
  await runtime.createMemory({
132
135
  entityId: runtime.agentId,
133
136
  roomId,
@@ -147,7 +150,7 @@ async function dispatchInstruction(runtime, taskId, trigger) {
147
150
  // call processActions here to avoid double-dispatch — the loop is
148
151
  // the single execution path for all autonomous instructions.
149
152
  }
150
- async function dispatchWorkflow(runtime, trigger) {
153
+ async function dispatchWorkflow(runtime, trigger, event) {
151
154
  if (!trigger.workflowId) {
152
155
  return { ok: false, error: "workflow trigger missing workflowId" };
153
156
  }
@@ -160,7 +163,7 @@ async function dispatchWorkflow(runtime, trigger) {
160
163
  }, "[triggers] workflow dispatch requested but N8N_DISPATCH service not registered");
161
164
  return { ok: false, error: "N8N_DISPATCH service not registered" };
162
165
  }
163
- const result = await svc.execute(trigger.workflowId);
166
+ const result = await svc.execute(trigger.workflowId, event ? { eventKind: event.kind, eventPayload: event.payload ?? {} } : {});
164
167
  return result.ok
165
168
  ? { ok: true, executionId: result.executionId }
166
169
  : { ok: false, error: result.error ?? "workflow execution failed" };
@@ -178,6 +181,19 @@ export async function executeTriggerTask(runtime, task, options) {
178
181
  recordExecutionMetric(runtime.agentId, "skipped", Date.now());
179
182
  return { status: "skipped", taskDeleted: false };
180
183
  }
184
+ if (options.source === "event" &&
185
+ trigger.triggerType !== "event" &&
186
+ !options.force) {
187
+ recordExecutionMetric(runtime.agentId, "skipped", Date.now());
188
+ return { status: "skipped", taskDeleted: false };
189
+ }
190
+ if (options.source === "event" &&
191
+ trigger.triggerType === "event" &&
192
+ trigger.eventKind !== options.event?.kind &&
193
+ !options.force) {
194
+ recordExecutionMetric(runtime.agentId, "skipped", Date.now());
195
+ return { status: "skipped", taskDeleted: false };
196
+ }
181
197
  if (typeof trigger.maxRuns === "number" &&
182
198
  trigger.maxRuns > 0 &&
183
199
  trigger.runCount >= trigger.maxRuns) {
@@ -208,7 +224,7 @@ export async function executeTriggerTask(runtime, task, options) {
208
224
  let errorMessage = "";
209
225
  let workflowExecutionId;
210
226
  if (isWorkflowKind) {
211
- const result = await dispatchWorkflow(runtime, trigger);
227
+ const result = await dispatchWorkflow(runtime, trigger, options.event);
212
228
  if (result.ok === true) {
213
229
  workflowExecutionId = result.executionId;
214
230
  }
@@ -227,7 +243,7 @@ export async function executeTriggerTask(runtime, task, options) {
227
243
  }
228
244
  else {
229
245
  try {
230
- await dispatchInstruction(runtime, task.id, trigger);
246
+ await dispatchInstruction(runtime, task.id, trigger, options.event);
231
247
  }
232
248
  catch (error) {
233
249
  status = "error";
@@ -262,6 +278,7 @@ export async function executeTriggerTask(runtime, task, options) {
262
278
  error: errorMessage || undefined,
263
279
  latencyMs: finishedAt - startedAt,
264
280
  source: options.source,
281
+ eventKind: options.event?.kind,
265
282
  };
266
283
  const updatedTrigger = {
267
284
  ...trigger,
@@ -449,6 +466,7 @@ export function taskToTriggerSummary(task) {
449
466
  intervalMs: trigger.intervalMs,
450
467
  scheduledAtIso: trigger.scheduledAtIso,
451
468
  cronExpression: trigger.cronExpression,
469
+ eventKind: trigger.eventKind,
452
470
  maxRuns: trigger.maxRuns,
453
471
  runCount: trigger.runCount,
454
472
  nextRunAtMs: trigger.nextRunAtMs,
@@ -27,6 +27,7 @@ interface DraftInput {
27
27
  intervalMs?: number;
28
28
  scheduledAtIso?: string;
29
29
  cronExpression?: string;
30
+ eventKind?: string;
30
31
  maxRuns?: number;
31
32
  kind?: TriggerKind;
32
33
  workflowId?: string;
@@ -49,6 +50,7 @@ export declare function buildTriggerDedupeKey(parts: {
49
50
  intervalMs?: number;
50
51
  scheduledAtIso?: string;
51
52
  cronExpression?: string;
53
+ eventKind?: string;
52
54
  wakeMode: TriggerWakeMode;
53
55
  kind?: TriggerKind;
54
56
  workflowId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/triggers/scheduling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/triggers/scheduling.ts"],"names":[],"mappings":"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"}
@@ -199,6 +199,13 @@ export function resolveTriggerTiming(trigger, nowMs) {
199
199
  nextRunAtMs,
200
200
  };
201
201
  }
202
+ if (trigger.triggerType === "event") {
203
+ return {
204
+ updatedAt: nowMs,
205
+ updateIntervalMs: DISABLED_TRIGGER_INTERVAL_MS,
206
+ nextRunAtMs: nowMs + DISABLED_TRIGGER_INTERVAL_MS,
207
+ };
208
+ }
202
209
  const nextRunAtMs = trigger.cronExpression
203
210
  ? computeNextCronRunAtMs(trigger.cronExpression, nowMs, trigger.timezone)
204
211
  : null;
@@ -233,6 +240,7 @@ export function buildTriggerDedupeKey(parts) {
233
240
  String(parts.intervalMs ?? ""),
234
241
  parts.scheduledAtIso ?? "",
235
242
  parts.cronExpression ?? "",
243
+ parts.eventKind ?? "",
236
244
  parts.wakeMode,
237
245
  ];
238
246
  if (effectiveKind === "workflow") {
@@ -266,6 +274,9 @@ export function buildTriggerConfig(params) {
266
274
  cronExpression: params.draft.triggerType === "cron"
267
275
  ? params.draft.cronExpression
268
276
  : undefined,
277
+ eventKind: params.draft.triggerType === "event"
278
+ ? params.draft.eventKind
279
+ : undefined,
269
280
  maxRuns: params.draft.maxRuns,
270
281
  runCount: previous?.runCount ?? 0,
271
282
  dedupeKey: buildTriggerDedupeKey({
@@ -274,6 +285,7 @@ export function buildTriggerConfig(params) {
274
285
  intervalMs: params.draft.intervalMs,
275
286
  scheduledAtIso: params.draft.scheduledAtIso,
276
287
  cronExpression: params.draft.cronExpression,
288
+ eventKind: params.draft.eventKind,
277
289
  wakeMode: params.draft.wakeMode,
278
290
  kind: params.draft.kind,
279
291
  workflowId: params.draft.workflowId,
@@ -327,6 +339,7 @@ export function normalizeTriggerDraft(params) {
327
339
  : undefined;
328
340
  const scheduledAtIso = params.input.scheduledAtIso?.trim();
329
341
  const cronExpression = params.input.cronExpression?.trim();
342
+ const eventKind = params.input.eventKind?.trim();
330
343
  const maxRuns = typeof params.input.maxRuns === "number"
331
344
  ? Math.floor(params.input.maxRuns)
332
345
  : undefined;
@@ -379,6 +392,27 @@ export function normalizeTriggerDraft(params) {
379
392
  },
380
393
  };
381
394
  }
395
+ if (triggerType === "event") {
396
+ if (!eventKind) {
397
+ return { error: "eventKind is required for event triggers" };
398
+ }
399
+ return {
400
+ draft: {
401
+ displayName,
402
+ instructions,
403
+ triggerType,
404
+ wakeMode,
405
+ enabled,
406
+ createdBy,
407
+ timezone,
408
+ eventKind,
409
+ maxRuns,
410
+ kind,
411
+ workflowId,
412
+ workflowName,
413
+ },
414
+ };
415
+ }
382
416
  if (!cronExpression || !parseCronExpression(cronExpression)) {
383
417
  return { error: "cronExpression must be a valid 5-field cron expression" };
384
418
  }
@@ -21,6 +21,7 @@ export interface TriggerSummary {
21
21
  intervalMs?: number;
22
22
  scheduledAtIso?: string;
23
23
  cronExpression?: string;
24
+ eventKind?: string;
24
25
  maxRuns?: number;
25
26
  runCount: number;
26
27
  nextRunAtMs?: number;
@@ -53,6 +54,7 @@ export interface CreateTriggerRequest {
53
54
  intervalMs?: number;
54
55
  scheduledAtIso?: string;
55
56
  cronExpression?: string;
57
+ eventKind?: string;
56
58
  maxRuns?: number;
57
59
  kind?: TriggerKind;
58
60
  workflowId?: string;
@@ -68,6 +70,7 @@ export interface UpdateTriggerRequest {
68
70
  intervalMs?: number;
69
71
  scheduledAtIso?: string;
70
72
  cronExpression?: string;
73
+ eventKind?: string;
71
74
  maxRuns?: number;
72
75
  kind?: TriggerKind;
73
76
  workflowId?: string;
@@ -84,6 +87,7 @@ export interface NormalizedTriggerDraft {
84
87
  intervalMs?: number;
85
88
  scheduledAtIso?: string;
86
89
  cronExpression?: string;
90
+ eventKind?: string;
87
91
  maxRuns?: number;
88
92
  kind?: TriggerKind;
89
93
  workflowId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/triggers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/triggers/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"automations-compat-routes.d.ts","sourceRoot":"","sources":["../../../../../src/api/automations-compat-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAwClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA2yBhE,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,OAAO,CAAC,CAiClB"}
1
+ {"version":3,"file":"automations-compat-routes.d.ts","sourceRoot":"","sources":["../../../../../src/api/automations-compat-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAwClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA+yBhE,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,OAAO,CAAC,CAiClB"}
@@ -218,7 +218,7 @@ function buildWorkflowDraftItem(room) {
218
218
  type: "n8n_workflow",
219
219
  source: "workflow_draft",
220
220
  title,
221
- description: "Workflow draft under construction in its dedicated room.",
221
+ description: "",
222
222
  status: "draft",
223
223
  enabled: true,
224
224
  system: false,
@@ -254,25 +254,28 @@ function buildAutomationDraftItem(room) {
254
254
  };
255
255
  }
256
256
  function buildWorkflowItem(workflow, room, fallback) {
257
+ const missingBackingWorkflow = !workflow && !fallback.trigger;
257
258
  const title = workflow?.name?.trim() ||
258
259
  room?.metadata.workflowName?.trim() ||
259
260
  fallback.workflowName?.trim() ||
260
261
  fallback.workflowId;
261
- const enabled = workflow?.active ?? fallback.trigger?.enabled ?? false;
262
+ const enabled = missingBackingWorkflow === true
263
+ ? false
264
+ : (workflow?.active ?? fallback.trigger?.enabled ?? false);
262
265
  const description = workflow?.description?.trim() ||
263
266
  (fallback.trigger
264
267
  ? `Scheduled workflow automation for ${title}.`
265
- : "Workflow automation.");
268
+ : "");
266
269
  return {
267
270
  id: `workflow:${fallback.workflowId}`,
268
271
  type: "n8n_workflow",
269
272
  source: workflow ? "n8n_workflow" : "workflow_shadow",
270
273
  title,
271
274
  description,
272
- status: enabled ? "active" : "paused",
275
+ status: missingBackingWorkflow ? "draft" : enabled ? "active" : "paused",
273
276
  enabled,
274
277
  system: false,
275
- isDraft: false,
278
+ isDraft: missingBackingWorkflow,
276
279
  hasBackingWorkflow: Boolean(workflow),
277
280
  updatedAt: room?.updatedAt ??
278
281
  normalizeDateValue(fallback.trigger?.updatedAt) ??
@@ -5,12 +5,15 @@
5
5
  * The workflow CRUD routes are served by the n8n plugin itself
6
6
  * but exposed through the same base URL via the plugin's route registration.
7
7
  */
8
- import type { N8nStatusResponse, N8nWorkflow } from "./client-types-chat";
8
+ import type { N8nStatusResponse, N8nWorkflow, N8nWorkflowGenerateRequest, N8nWorkflowWriteRequest } from "./client-types-chat";
9
9
  declare module "./client-base" {
10
10
  interface ElizaClient {
11
11
  getN8nStatus(): Promise<N8nStatusResponse>;
12
12
  getN8nWorkflow(id: string): Promise<N8nWorkflow>;
13
13
  listN8nWorkflows(): Promise<N8nWorkflow[]>;
14
+ createN8nWorkflow(request: N8nWorkflowWriteRequest): Promise<N8nWorkflow>;
15
+ updateN8nWorkflow(id: string, request: N8nWorkflowWriteRequest): Promise<N8nWorkflow>;
16
+ generateN8nWorkflow(request: N8nWorkflowGenerateRequest): Promise<N8nWorkflow>;
14
17
  activateN8nWorkflow(id: string): Promise<N8nWorkflow>;
15
18
  deactivateN8nWorkflow(id: string): Promise<N8nWorkflow>;
16
19
  deleteN8nWorkflow(id: string): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"client-n8n.d.ts","sourceRoot":"","sources":["../../../../../src/api/client-n8n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAM1E,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,WAAW;QACnB,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACjD,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACtD,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACxD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACxD,eAAe,IAAI,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAC7C;CACF"}
1
+ {"version":3,"file":"client-n8n.d.ts","sourceRoot":"","sources":["../../../../../src/api/client-n8n.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,WAAW;QACnB,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC3C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACjD,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1E,iBAAiB,CACf,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAAC;QACxB,mBAAmB,CACjB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,WAAW,CAAC,CAAC;QACxB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACtD,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACxD,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACxD,eAAe,IAAI,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAC7C;CACF"}
@@ -19,6 +19,24 @@ ElizaClient.prototype.listN8nWorkflows = async function () {
19
19
  const res = await this.fetch("/api/n8n/workflows");
20
20
  return res.workflows ?? [];
21
21
  };
22
+ ElizaClient.prototype.createN8nWorkflow = async function (request) {
23
+ return this.fetch("/api/n8n/workflows", {
24
+ method: "POST",
25
+ body: JSON.stringify(request),
26
+ });
27
+ };
28
+ ElizaClient.prototype.updateN8nWorkflow = async function (id, request) {
29
+ return this.fetch(`/api/n8n/workflows/${encodeURIComponent(id)}`, {
30
+ method: "PUT",
31
+ body: JSON.stringify(request),
32
+ });
33
+ };
34
+ ElizaClient.prototype.generateN8nWorkflow = async function (request) {
35
+ return this.fetch("/api/n8n/workflows/generate", {
36
+ method: "POST",
37
+ body: JSON.stringify(request),
38
+ });
39
+ };
22
40
  ElizaClient.prototype.activateN8nWorkflow = async function (id) {
23
41
  return this.fetch(`/api/n8n/workflows/${encodeURIComponent(id)}/activate`, {
24
42
  method: "POST",
@@ -326,10 +326,13 @@ export interface N8nWorkflowNode {
326
326
  id: string;
327
327
  name: string;
328
328
  type: string;
329
+ typeVersion?: number;
329
330
  /** Canvas position from n8n — [x, y]. Present on single-workflow GET; absent on list. */
330
331
  position?: [number, number];
331
332
  /** Node parameters from n8n. Present on single-workflow GET; absent on list. */
332
333
  parameters?: Record<string, unknown>;
334
+ notes?: string;
335
+ notesInFlow?: boolean;
333
336
  }
334
337
  /** A single outbound connection edge from n8n's connection map. */
335
338
  export interface N8nConnection {
@@ -356,4 +359,38 @@ export interface N8nWorkflow {
356
359
  /** Connection graph. Present on single-workflow GET; absent on list. */
357
360
  connections?: N8nConnectionMap;
358
361
  }
362
+ export interface N8nWorkflowWriteNode {
363
+ id?: string;
364
+ name: string;
365
+ type: string;
366
+ typeVersion: number;
367
+ position: [number, number];
368
+ parameters: Record<string, unknown>;
369
+ credentials?: Record<string, {
370
+ id: string;
371
+ name: string;
372
+ }>;
373
+ disabled?: boolean;
374
+ notes?: string;
375
+ notesInFlow?: boolean;
376
+ color?: string;
377
+ continueOnFail?: boolean;
378
+ executeOnce?: boolean;
379
+ alwaysOutputData?: boolean;
380
+ retryOnFail?: boolean;
381
+ maxTries?: number;
382
+ waitBetweenTries?: number;
383
+ onError?: "continueErrorOutput" | "continueRegularOutput" | "stopWorkflow";
384
+ }
385
+ export interface N8nWorkflowWriteRequest {
386
+ name: string;
387
+ nodes: N8nWorkflowWriteNode[];
388
+ connections: N8nConnectionMap;
389
+ settings?: Record<string, unknown>;
390
+ }
391
+ export interface N8nWorkflowGenerateRequest {
392
+ prompt: string;
393
+ name?: string;
394
+ workflowId?: string;
395
+ }
359
396
  //# sourceMappingURL=client-types-chat.d.ts.map