@elizaos/agent 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.
- package/package.json +4 -4
- package/packages/agent/src/api/trigger-routes.d.ts +1 -0
- package/packages/agent/src/api/trigger-routes.d.ts.map +1 -1
- package/packages/agent/src/api/trigger-routes.js +48 -0
- package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
- package/packages/agent/src/runtime/eliza.js +7 -2
- package/packages/agent/src/triggers/runtime.d.ts +5 -1
- package/packages/agent/src/triggers/runtime.d.ts.map +1 -1
- package/packages/agent/src/triggers/runtime.js +24 -6
- package/packages/agent/src/triggers/scheduling.d.ts +2 -0
- package/packages/agent/src/triggers/scheduling.d.ts.map +1 -1
- package/packages/agent/src/triggers/scheduling.js +34 -0
- package/packages/agent/src/triggers/types.d.ts +4 -0
- package/packages/agent/src/triggers/types.d.ts.map +1 -1
- package/packages/typescript/src/types/trigger.d.ts +4 -2
- 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/agent",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.338",
|
|
4
4
|
"description": "Standalone elizaOS-based agent and backend server package.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -467,7 +467,7 @@
|
|
|
467
467
|
"@elizaos/app-steward": "^0.0.0",
|
|
468
468
|
"@elizaos/app-task-coordinator": "^0.0.0",
|
|
469
469
|
"@elizaos/app-training": "^0.0.1",
|
|
470
|
-
"@elizaos/core": "^2.0.0-alpha.
|
|
470
|
+
"@elizaos/core": "^2.0.0-alpha.338",
|
|
471
471
|
"@elizaos/plugin-agent-orchestrator": "^0.6.2-alpha.0",
|
|
472
472
|
"@elizaos/plugin-browser-bridge": "^0.1.0",
|
|
473
473
|
"@elizaos/plugin-local-embedding": "^2.0.0-alpha.3",
|
|
@@ -476,8 +476,8 @@
|
|
|
476
476
|
"@elizaos/plugin-solana": "^2.0.0-alpha.6",
|
|
477
477
|
"@elizaos/plugin-sql": "^2.0.0-alpha.19",
|
|
478
478
|
"@elizaos/plugin-wechat": "^0.1.0",
|
|
479
|
-
"@elizaos/shared": "^2.0.0-alpha.
|
|
480
|
-
"@elizaos/skills": "^2.0.0-alpha.
|
|
479
|
+
"@elizaos/shared": "^2.0.0-alpha.338",
|
|
480
|
+
"@elizaos/skills": "^2.0.0-alpha.338",
|
|
481
481
|
"@hapi/boom": "^10.0.1",
|
|
482
482
|
"@noble/curves": "^2.0.1",
|
|
483
483
|
"@whiskeysockets/baileys": "7.0.0-rc.9",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-routes.d.ts","sourceRoot":"","sources":["../../../../../src/api/trigger-routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"trigger-routes.d.ts","sourceRoot":"","sources":["../../../../../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":["../../../../../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;
|
|
1
|
+
{"version":3,"file":"eliza.d.ts","sourceRoot":"","sources":["../../../../../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
|
|
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
|
|
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":["../../../../../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;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../../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
|
|
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":["../../../../../src/triggers/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,uBAAuB,QAA2B,CAAC;AAChE,eAAO,MAAM,4BAA4B,QAA4B,CAAC;AACtE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAW3C,UAAU,YAAY;IACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB;AAgBD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,UAAU;IAClB,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,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AA8CD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAmC3E;AA6DD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAgBf;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,MAAM,GACZ,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../../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":["../../../../../src/triggers/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/triggers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { UUID } from "./primitives";
|
|
2
2
|
export declare const TRIGGER_SCHEMA_VERSION: 1;
|
|
3
|
-
export type TriggerType = "interval" | "once" | "cron";
|
|
3
|
+
export type TriggerType = "interval" | "once" | "cron" | "event";
|
|
4
4
|
export type TriggerWakeMode = "inject_now" | "next_autonomy_cycle";
|
|
5
5
|
export type TriggerLastStatus = "success" | "error" | "skipped";
|
|
6
6
|
export type TriggerKind = "text" | "workflow";
|
|
@@ -17,6 +17,7 @@ export interface TriggerConfig {
|
|
|
17
17
|
intervalMs?: number;
|
|
18
18
|
scheduledAtIso?: string;
|
|
19
19
|
cronExpression?: string;
|
|
20
|
+
eventKind?: string;
|
|
20
21
|
maxRuns?: number;
|
|
21
22
|
runCount: number;
|
|
22
23
|
nextRunAtMs?: number;
|
|
@@ -37,6 +38,7 @@ export interface TriggerRunRecord {
|
|
|
37
38
|
status: TriggerLastStatus;
|
|
38
39
|
error?: string;
|
|
39
40
|
latencyMs: number;
|
|
40
|
-
source: "scheduler" | "manual";
|
|
41
|
+
source: "scheduler" | "manual" | "event";
|
|
42
|
+
eventKind?: string;
|
|
41
43
|
}
|
|
42
44
|
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../../../../../typescript/src/types/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../../../../../typescript/src/types/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,qBAAqB,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,sBAAsB,CAAC;IACvC,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB"}
|