@elizaos/app-core 2.0.0-alpha.213 → 2.0.0-alpha.215

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 (41) hide show
  1. package/apps/app-lifeops/src/actions/autofill.d.ts.map +1 -1
  2. package/apps/app-lifeops/src/actions/autofill.js +90 -0
  3. package/apps/app-lifeops/src/actions/calendar.d.ts.map +1 -1
  4. package/apps/app-lifeops/src/actions/calendar.js +1 -0
  5. package/apps/app-lifeops/src/actions/calendly.d.ts.map +1 -1
  6. package/apps/app-lifeops/src/actions/calendly.js +12 -1
  7. package/apps/app-lifeops/src/actions/checkin.d.ts.map +1 -1
  8. package/apps/app-lifeops/src/actions/checkin.js +60 -0
  9. package/apps/app-lifeops/src/actions/life.d.ts.map +1 -1
  10. package/apps/app-lifeops/src/actions/life.js +14 -5
  11. package/apps/app-lifeops/src/actions/scheduling.d.ts.map +1 -1
  12. package/apps/app-lifeops/src/actions/scheduling.js +30 -0
  13. package/apps/app-lifeops/src/actions/website-blocker.d.ts.map +1 -1
  14. package/apps/app-lifeops/src/actions/website-blocker.js +1 -3
  15. package/package.json +5 -5
  16. package/packages/agent/src/actions/app-control.d.ts.map +1 -1
  17. package/packages/agent/src/actions/app-control.js +60 -0
  18. package/packages/agent/src/actions/browser-session.d.ts.map +1 -1
  19. package/packages/agent/src/actions/browser-session.js +30 -0
  20. package/packages/agent/src/actions/entity-actions.d.ts.map +1 -1
  21. package/packages/agent/src/actions/entity-actions.js +90 -0
  22. package/packages/agent/src/actions/extract-page.d.ts.map +1 -1
  23. package/packages/agent/src/actions/extract-page.js +30 -0
  24. package/packages/agent/src/actions/read-channel.d.ts.map +1 -1
  25. package/packages/agent/src/actions/read-channel.js +30 -0
  26. package/packages/agent/src/actions/restart.d.ts.map +1 -1
  27. package/packages/agent/src/actions/restart.js +30 -0
  28. package/packages/agent/src/actions/search-conversations.d.ts.map +1 -1
  29. package/packages/agent/src/actions/search-conversations.js +30 -0
  30. package/packages/agent/src/actions/send-admin-message.d.ts.map +1 -1
  31. package/packages/agent/src/actions/send-admin-message.js +30 -0
  32. package/packages/agent/src/actions/send-message.d.ts.map +1 -1
  33. package/packages/agent/src/actions/send-message.js +30 -0
  34. package/packages/agent/src/actions/set-user-name.d.ts.map +1 -1
  35. package/packages/agent/src/actions/set-user-name.js +30 -0
  36. package/packages/agent/src/actions/skill-command.d.ts.map +1 -1
  37. package/packages/agent/src/actions/skill-command.js +1 -0
  38. package/packages/agent/src/actions/terminal.d.ts.map +1 -1
  39. package/packages/agent/src/actions/terminal.js +43 -144
  40. package/packages/agent/src/actions/web-search.d.ts.map +1 -1
  41. package/packages/agent/src/actions/web-search.js +8 -0
@@ -1 +1 @@
1
- {"version":3,"file":"autofill.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/autofill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAEL,KAAK,MAAM,EAKZ,MAAM,eAAe,CAAC;AA2BvB,iBAAe,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAK3E;AAED,iBAAe,eAAe,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,iBAAe,kBAAkB,CAC/B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAY5B;AA2FD,eAAO,MAAM,sBAAsB,EAAE,MAwIpC,CAAC;AAOF,eAAO,MAAM,0BAA0B,EAAE,MAmFxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAgCzC,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC"}
1
+ {"version":3,"file":"autofill.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/autofill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAEL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AA2BvB,iBAAe,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAK3E;AAED,iBAAe,eAAe,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,iBAAe,kBAAkB,CAC/B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAY5B;AA2FD,eAAO,MAAM,sBAAsB,EAAE,MAsKpC,CAAC;AAOF,eAAO,MAAM,0BAA0B,EAAE,MAiHxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MA8DzC,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC"}
@@ -232,6 +232,36 @@ export const requestFieldFillAction = {
232
232
  schema: { type: "string" },
233
233
  },
234
234
  ],
235
+ examples: [
236
+ [
237
+ {
238
+ name: "{{name1}}",
239
+ content: {
240
+ text: "Can you log me into github? I'm on the sign-in page.",
241
+ },
242
+ },
243
+ {
244
+ name: "{{agentName}}",
245
+ content: {
246
+ text: "Requested password autofill on github.com via the browser extension.",
247
+ },
248
+ },
249
+ ],
250
+ [
251
+ {
252
+ name: "{{name1}}",
253
+ content: {
254
+ text: "Fill in my email on this signup form.",
255
+ },
256
+ },
257
+ {
258
+ name: "{{agentName}}",
259
+ content: {
260
+ text: "Requested email autofill on example.com via the browser extension.",
261
+ },
262
+ },
263
+ ],
264
+ ],
235
265
  };
236
266
  export const addAutofillWhitelistAction = {
237
267
  name: "ADD_AUTOFILL_WHITELIST",
@@ -303,6 +333,36 @@ export const addAutofillWhitelistAction = {
303
333
  schema: { type: "boolean" },
304
334
  },
305
335
  ],
336
+ examples: [
337
+ [
338
+ {
339
+ name: "{{name1}}",
340
+ content: {
341
+ text: "Yes, trust notion.so for autofill going forward.",
342
+ },
343
+ },
344
+ {
345
+ name: "{{agentName}}",
346
+ content: {
347
+ text: "Added notion.so to the autofill whitelist.",
348
+ },
349
+ },
350
+ ],
351
+ [
352
+ {
353
+ name: "{{name1}}",
354
+ content: {
355
+ text: "Go ahead and approve linear.app for password autofill.",
356
+ },
357
+ },
358
+ {
359
+ name: "{{agentName}}",
360
+ content: {
361
+ text: "Added linear.app to the autofill whitelist.",
362
+ },
363
+ },
364
+ ],
365
+ ],
306
366
  };
307
367
  export const listAutofillWhitelistAction = {
308
368
  name: "LIST_AUTOFILL_WHITELIST",
@@ -331,6 +391,36 @@ export const listAutofillWhitelistAction = {
331
391
  };
332
392
  },
333
393
  parameters: [],
394
+ examples: [
395
+ [
396
+ {
397
+ name: "{{name1}}",
398
+ content: {
399
+ text: "Which sites are allowed for autofill right now?",
400
+ },
401
+ },
402
+ {
403
+ name: "{{agentName}}",
404
+ content: {
405
+ text: "Autofill whitelist (4 entries): github.com, notion.so, linear.app, example.com",
406
+ },
407
+ },
408
+ ],
409
+ [
410
+ {
411
+ name: "{{name1}}",
412
+ content: {
413
+ text: "Show me my trusted sites.",
414
+ },
415
+ },
416
+ {
417
+ name: "{{agentName}}",
418
+ content: {
419
+ text: "Autofill whitelist (3 entries): github.com, notion.so, linear.app",
420
+ },
421
+ },
422
+ ],
423
+ ],
334
424
  };
335
425
  export const __internal = {
336
426
  effectiveWhitelist,
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKN,aAAa,EACb,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;AAyCvB,KAAK,iBAAiB,GAClB,MAAM,GACN,YAAY,GACZ,eAAe,GACf,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,CAAC;AAuBlB,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAkjDF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,SAA2B,GAClC,OAAO,CAAC,eAAe,CAAC,CA6J1B;AA2gCD,eAAO,MAAM,cAAc,EAAE,MAAM,GAAG;IACpC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAkqC1C,CAAC"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKN,aAAa,EACb,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;AAyCvB,KAAK,iBAAiB,GAClB,MAAM,GACN,YAAY,GACZ,eAAe,GACf,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,CAAC;AAuBlB,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAkjDF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,SAA2B,GAClC,OAAO,CAAC,eAAe,CAAC,CA6J1B;AA2gCD,eAAO,MAAM,cAAc,EAAE,MAAM,GAAG;IACpC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAmqC1C,CAAC"}
@@ -2124,6 +2124,7 @@ export const calendarAction = {
2124
2124
  "DO NOT use this action when the user is only making an observation like 'my calendar has been crazy this quarter' unless they actually ask you to inspect or change calendar state. " +
2125
2125
  "DO NOT use this action for email inbox work, drafting or sending emails — use GMAIL_ACTION instead. " +
2126
2126
  "DO NOT use this action for personal habits, goals, routines, or reminders — use LIFE instead. " +
2127
+ "DO NOT use this action for Calendly — any request that mentions Calendly by name, or passes a calendly.com / api.calendly.com URL (including an eventTypeUri), belongs to the CALENDLY action, which is a separate product from Google Calendar. " +
2127
2128
  "This action provides the final grounded reply; do not pair it with a speculative REPLY action." +
2128
2129
  " DO NOT use this action when the user asks to 'help schedule', 'help me schedule', 'set up a meeting with', 'find a time with', 'find us a time', 'find a slot with', or otherwise wants to negotiate a meeting with a person or team WITHOUT naming a concrete date or time — that is SCHEDULING (subaction: start). Any time the request mentions a person/team AND no specific time, route it to SCHEDULING, not here. DO NOT use this action to 'propose', 'suggest', or 'offer' meeting time slots — that is PROPOSE_MEETING_TIMES. Use CALENDAR_ACTION only when the user specifies (or intends to specify) a concrete date/time for the event.",
2129
2130
  descriptionCompressed: "Google Calendar via LifeOps: view schedule, search events, create events, query travel. Not for email or habits.",
@@ -1 +1 @@
1
- {"version":3,"file":"calendly.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/calendly.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AA6GvB,eAAO,MAAM,cAAc,EAAE,MAqO5B,CAAC"}
1
+ {"version":3,"file":"calendly.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/calendly.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AA6GvB,eAAO,MAAM,cAAc,EAAE,MAgP5B,CAAC"}
@@ -72,8 +72,19 @@ export const calendlyAction = {
72
72
  "CALENDLY_AVAILABILITY",
73
73
  "CALENDLY_UPCOMING",
74
74
  "CALENDLY_BOOKING_LINK",
75
+ "CALENDLY_ACTION",
76
+ "CALENDLY_EVENT_TYPES",
77
+ "CALENDLY_SCHEDULED_EVENTS",
75
78
  ],
76
- description: "Work with Calendly: list event types, check availability, list scheduled events, generate single-use booking links. Subactions: list_event_types, availability, upcoming_events, single_use_link.",
79
+ description: "Work with Calendly specifically (calendly.com / api.calendly.com): " +
80
+ "list event types, check availability against a Calendly event type URI, " +
81
+ "list Calendly-scheduled events, generate Calendly single-use booking " +
82
+ "links. Subactions: list_event_types, availability, upcoming_events, " +
83
+ "single_use_link. " +
84
+ "Use this — NOT CALENDAR_ACTION — whenever the user mentions Calendly by " +
85
+ "name or passes a calendly.com / api.calendly.com URL. CALENDAR_ACTION " +
86
+ "is for Google Calendar; CALENDLY is its own third-party scheduling " +
87
+ "product with a separate API, event-type URIs, and booking-link flow.",
77
88
  validate: async (runtime, message) => {
78
89
  if (!readCalendlyCredentialsFromEnv())
79
90
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"checkin.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/checkin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,eAAe,CAAC;AAuBhE,eAAO,MAAM,uBAAuB,EAAE,MA8BrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MA0BnC,CAAC"}
1
+ {"version":3,"file":"checkin.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/checkin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqC,MAAM,eAAe,CAAC;AAuB/E,eAAO,MAAM,uBAAuB,EAAE,MA4DrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAwDnC,CAAC"}
@@ -44,6 +44,36 @@ export const runMorningCheckinAction = {
44
44
  };
45
45
  },
46
46
  parameters: [],
47
+ examples: [
48
+ [
49
+ {
50
+ name: "{{name1}}",
51
+ content: {
52
+ text: "Let's do my morning check-in.",
53
+ },
54
+ },
55
+ {
56
+ name: "{{agentName}}",
57
+ content: {
58
+ text: "Here's your morning review: 2 overdue todos, 3 meetings today, and yesterday you closed out the onboarding draft.",
59
+ },
60
+ },
61
+ ],
62
+ [
63
+ {
64
+ name: "{{name1}}",
65
+ content: {
66
+ text: "What's on my plate this morning?",
67
+ },
68
+ },
69
+ {
70
+ name: "{{agentName}}",
71
+ content: {
72
+ text: "Morning check-in ready: 1 overdue todo, 2 meetings today, and yesterday's wins included the PR review.",
73
+ },
74
+ },
75
+ ],
76
+ ],
47
77
  };
48
78
  export const runNightCheckinAction = {
49
79
  name: "RUN_NIGHT_CHECKIN",
@@ -69,4 +99,34 @@ export const runNightCheckinAction = {
69
99
  };
70
100
  },
71
101
  parameters: [],
102
+ examples: [
103
+ [
104
+ {
105
+ name: "{{name1}}",
106
+ content: {
107
+ text: "Ready to wrap up for the day.",
108
+ },
109
+ },
110
+ {
111
+ name: "{{agentName}}",
112
+ content: {
113
+ text: "Here's your night check-in: 3 meetings done, 2 wins captured, 1 todo still open for tomorrow.",
114
+ },
115
+ },
116
+ ],
117
+ [
118
+ {
119
+ name: "{{name1}}",
120
+ content: {
121
+ text: "How did today go?",
122
+ },
123
+ },
124
+ {
125
+ name: "{{agentName}}",
126
+ content: {
127
+ text: "Night recap ready: you closed 2 meetings and shipped the release notes; 1 todo rolls over.",
128
+ },
129
+ },
130
+ ],
131
+ ],
72
132
  };
@@ -1 +1 @@
1
- {"version":3,"file":"life.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/life.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AA44EvB,eAAO,MAAM,UAAU,EAAE,MAAM,GAAG;IAChC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAisD1C,CAAC"}
1
+ {"version":3,"file":"life.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/life.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AA44EvB,eAAO,MAAM,UAAU,EAAE,MAAM,GAAG;IAChC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CA6sD1C,CAAC"}
@@ -2295,15 +2295,24 @@ export const lifeAction = {
2295
2295
  data: toActionData(ctx),
2296
2296
  };
2297
2297
  }
2298
- const timeRangeHint = intent.toLowerCase();
2299
- const range = /\btomorrow\b/.test(timeRangeHint)
2298
+ // The planner extracts the time window as a structured `when` param
2299
+ // ("today" | "tomorrow" | "this_week"), so we never re-parse the
2300
+ // free-form `intent` string at runtime. Default to "today" when the
2301
+ // caller omits it.
2302
+ const whenRaw = detailString(details, "when")?.toLowerCase().trim();
2303
+ const when = whenRaw === "tomorrow"
2304
+ ? "tomorrow"
2305
+ : whenRaw === "this_week" || whenRaw === "this week" || whenRaw === "week"
2306
+ ? "this_week"
2307
+ : "today";
2308
+ const range = when === "tomorrow"
2300
2309
  ? dayRange(1)
2301
- : /\b(this week|week)\b/.test(timeRangeHint)
2310
+ : when === "this_week"
2302
2311
  ? weekRange()
2303
2312
  : dayRange(0);
2304
- const label = /\btomorrow\b/.test(timeRangeHint)
2313
+ const label = when === "tomorrow"
2305
2314
  ? "tomorrow"
2306
- : /\b(this week|week)\b/.test(timeRangeHint)
2315
+ : when === "this_week"
2307
2316
  ? "this week"
2308
2317
  : "today";
2309
2318
  const feed = await service.getCalendarFeed(INTERNAL_URL, {
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/scheduling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAO9E,OAAO,EAIL,KAAK,yBAAyB,EAG/B,MAAM,6BAA6B,CAAC;AAUrC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkGF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,IAAI,CAAC;IACV,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,yBAAyB,CAAC;IACvC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACzC,GAAG,mBAAmB,EAAE,CAwExB;AAiCD,eAAO,MAAM,yBAAyB,EAAE,MAAM,GAAG;IAC/C,8BAA8B,CAAC,EAAE,OAAO,CAAC;CA8J1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAoGrC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,MAAM,GAAG;IACpD,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAqI1C,CAAC;AAsLF,eAAO,MAAM,gBAAgB,EAAE,MAyS9B,CAAC"}
1
+ {"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/scheduling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAO9E,OAAO,EAIL,KAAK,yBAAyB,EAG/B,MAAM,6BAA6B,CAAC;AAUrC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkGF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,GAAG,EAAE,IAAI,CAAC;IACV,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,yBAAyB,CAAC;IACvC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACzC,GAAG,mBAAmB,EAAE,CAwExB;AAiCD,eAAO,MAAM,yBAAyB,EAAE,MAAM,GAAG;IAC/C,8BAA8B,CAAC,EAAE,OAAO,CAAC;CA8J1C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAkIrC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,MAAM,GAAG;IACpD,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAqI1C,CAAC;AAsLF,eAAO,MAAM,gBAAgB,EAAE,MAyS9B,CAAC"}
@@ -412,6 +412,36 @@ export const checkAvailabilityAction = {
412
412
  schema: { type: "string" },
413
413
  },
414
414
  ],
415
+ examples: [
416
+ [
417
+ {
418
+ name: "{{name1}}",
419
+ content: {
420
+ text: "Am I free tomorrow between 2pm and 4pm?",
421
+ },
422
+ },
423
+ {
424
+ name: "{{agentName}}",
425
+ content: {
426
+ text: "You're free from Tue, Apr 20, 2:00 PM to Tue, Apr 20, 4:00 PM.",
427
+ },
428
+ },
429
+ ],
430
+ [
431
+ {
432
+ name: "{{name1}}",
433
+ content: {
434
+ text: "Do I have anything on my calendar Friday afternoon?",
435
+ },
436
+ },
437
+ {
438
+ name: "{{agentName}}",
439
+ content: {
440
+ text: "You have 1 conflict in that window: Design review with the team.",
441
+ },
442
+ },
443
+ ],
444
+ ],
415
445
  };
416
446
  export const updateMeetingPreferencesAction = {
417
447
  name: "UPDATE_MEETING_PREFERENCES",
@@ -1 +1 @@
1
- {"version":3,"file":"website-blocker.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/website-blocker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAsPvB,eAAO,MAAM,mBAAmB,EAAE,MAAM,GAAG;IACzC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAuQ1C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAuDzC,CAAC;AAEF,eAAO,MAAM,sCAAsC,EAAE,MA8DpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MA6FnC,CAAC;AAEF,eAAO,MAAM,8BAA8B;qCAjeR,OAAO;CAieuB,CAAC;AAClE,eAAO,MAAM,0BAA0B,QAA8B,CAAC;AACtE,eAAO,MAAM,kCAAkC,QACP,CAAC;AACzC,eAAO,MAAM,gCAAgC,QAAwB,CAAC"}
1
+ {"version":3,"file":"website-blocker.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/website-blocker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAsPvB,eAAO,MAAM,mBAAmB,EAAE,MAAM,GAAG;IACzC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAsQ1C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAuDzC,CAAC;AAEF,eAAO,MAAM,sCAAsC,EAAE,MA6DpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MA6FnC,CAAC;AAEF,eAAO,MAAM,8BAA8B;qCA/dR,OAAO;CA+duB,CAAC;AAClE,eAAO,MAAM,0BAA0B,QAA8B,CAAC;AACtE,eAAO,MAAM,kCAAkC,QACP,CAAC;AACzC,eAAO,MAAM,gCAAgC,QAAwB,CAAC"}
@@ -185,7 +185,6 @@ export const blockWebsitesAction = {
185
185
  "WEBSITE_BLOCKER",
186
186
  "WEBSITEBLOCKER",
187
187
  "START_FOCUS_BLOCK",
188
- "BLOCK_SITE",
189
188
  "BLOCK_DISTRACTING_SITES",
190
189
  ],
191
190
  description: "Admin-only. Start a local website block by editing the system hosts file. " +
@@ -478,7 +477,6 @@ export const requestWebsiteBlockingPermissionAction = {
478
477
  "ENABLE_WEBSITE_BLOCKING",
479
478
  "ALLOW_WEBSITE_BLOCKING",
480
479
  "GRANT_WEBSITE_BLOCKING_PERMISSION",
481
- "REQUEST_WEBSITE_BLOCKING_PERMISSION",
482
480
  "REQUEST_SELFCONTROL_PERMISSION",
483
481
  ],
484
482
  description: "Admin-only. Prepare local website blocking by requesting administrator/root approval when the machine supports it, or explain the manual change needed when it does not.",
@@ -535,9 +533,9 @@ export const unblockWebsitesAction = {
535
533
  name: "UNBLOCK_WEBSITES",
536
534
  similes: [
537
535
  "SELFCONTROL_UNBLOCK_WEBSITES",
538
- "UNBLOCK_WEBSITES",
539
536
  "REMOVE_WEBSITE_BLOCK",
540
537
  "STOP_BLOCKING_SITES",
538
+ "LIFT_WEBSITE_BLOCK",
541
539
  ],
542
540
  description: "Admin-only. Remove the current local website block by restoring the system hosts file entries Eliza added.",
543
541
  descriptionCompressed: "Admin: remove website block.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/app-core",
3
- "version": "2.0.0-alpha.213",
3
+ "version": "2.0.0-alpha.215",
4
4
  "description": "Shared application core for elizaOS white-label agent apps.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -477,7 +477,7 @@
477
477
  "@capacitor/keyboard": "8.0.3",
478
478
  "@capacitor/preferences": "^8.0.1",
479
479
  "@clack/prompts": "^1.0.0",
480
- "@elizaos/agent": "^2.0.0-alpha.213",
480
+ "@elizaos/agent": "^2.0.0-alpha.215",
481
481
  "@elizaos/app-companion": "^0.0.0",
482
482
  "@elizaos/app-elizamaker": "^0.0.0",
483
483
  "@elizaos/app-lifeops": "^0.0.0",
@@ -486,9 +486,9 @@
486
486
  "@elizaos/app-task-coordinator": "^0.0.0",
487
487
  "@elizaos/app-training": "^0.0.1",
488
488
  "@elizaos/app-vincent": "^0.0.0",
489
- "@elizaos/core": "^2.0.0-alpha.213",
490
- "@elizaos/shared": "^2.0.0-alpha.213",
491
- "@elizaos/ui": "^2.0.0-alpha.213",
489
+ "@elizaos/core": "^2.0.0-alpha.215",
490
+ "@elizaos/shared": "^2.0.0-alpha.215",
491
+ "@elizaos/ui": "^2.0.0-alpha.215",
492
492
  "@radix-ui/react-checkbox": "^1.3.3",
493
493
  "@radix-ui/react-dialog": "^1.1.15",
494
494
  "@radix-ui/react-dropdown-menu": "^2.1.16",
@@ -1 +1 @@
1
- {"version":3,"file":"app-control.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/app-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;AAuGpD,eAAO,MAAM,eAAe,EAAE,MA0F7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAqF3B,CAAC"}
1
+ {"version":3,"file":"app-control.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/app-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAyB,MAAM,eAAe,CAAC;AAuGnE,eAAO,MAAM,eAAe,EAAE,MAwH7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAmH3B,CAAC"}
@@ -140,6 +140,36 @@ export const launchAppAction = {
140
140
  schema: { type: "string" },
141
141
  },
142
142
  ],
143
+ examples: [
144
+ [
145
+ {
146
+ name: "{{name1}}",
147
+ content: {
148
+ text: "Fire up the Shopify app.",
149
+ },
150
+ },
151
+ {
152
+ name: "{{agentName}}",
153
+ content: {
154
+ text: "Shopify is now running. Open it here: http://localhost:2138/#/apps/shopify",
155
+ },
156
+ },
157
+ ],
158
+ [
159
+ {
160
+ name: "{{name1}}",
161
+ content: {
162
+ text: "Open the companion overlay on my screen.",
163
+ },
164
+ },
165
+ {
166
+ name: "{{agentName}}",
167
+ content: {
168
+ text: "Companion is now running. Open it here: http://localhost:2138/#/apps/companion",
169
+ },
170
+ },
171
+ ],
172
+ ],
143
173
  };
144
174
  export const stopAppAction = {
145
175
  name: "STOP_APP",
@@ -209,4 +239,34 @@ export const stopAppAction = {
209
239
  schema: { type: "string" },
210
240
  },
211
241
  ],
242
+ examples: [
243
+ [
244
+ {
245
+ name: "{{name1}}",
246
+ content: {
247
+ text: "Shut down Shopify, I'm done with it for now.",
248
+ },
249
+ },
250
+ {
251
+ name: "{{agentName}}",
252
+ content: {
253
+ text: "shopify has been stopped.",
254
+ },
255
+ },
256
+ ],
257
+ [
258
+ {
259
+ name: "{{name1}}",
260
+ content: {
261
+ text: "Close the companion overlay.",
262
+ },
263
+ },
264
+ {
265
+ name: "{{agentName}}",
266
+ content: {
267
+ text: "companion has been stopped.",
268
+ },
269
+ },
270
+ ],
271
+ ],
212
272
  };
@@ -1 +1 @@
1
- {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/browser-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgD,MAAM,eAAe,CAAC;AAmH1F,eAAO,MAAM,oBAAoB,EAAE,MAgKlC,CAAC"}
1
+ {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/browser-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAA+D,MAAM,eAAe,CAAC;AAmHzG,eAAO,MAAM,oBAAoB,EAAE,MA8LlC,CAAC"}
@@ -204,4 +204,34 @@ export const browserSessionAction = {
204
204
  schema: { type: "string" },
205
205
  },
206
206
  ],
207
+ examples: [
208
+ [
209
+ {
210
+ name: "{{name1}}",
211
+ content: {
212
+ text: "Open elizaos.ai in a new browser tab.",
213
+ },
214
+ },
215
+ {
216
+ name: "{{agentName}}",
217
+ content: {
218
+ text: "open completed in desktop mode.\nelizaOS\nhttps://elizaos.ai",
219
+ },
220
+ },
221
+ ],
222
+ [
223
+ {
224
+ name: "{{name1}}",
225
+ content: {
226
+ text: "Click the sign-in button on that page.",
227
+ },
228
+ },
229
+ {
230
+ name: "{{agentName}}",
231
+ content: {
232
+ text: "click completed in desktop mode.",
233
+ },
234
+ },
235
+ ],
236
+ ],
207
237
  };
@@ -1 +1 @@
1
- {"version":3,"file":"entity-actions.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/entity-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAIP,MAAM,eAAe,CAAC;AA+IvB,eAAO,MAAM,kBAAkB,EAAE,MAwIhC,CAAC;AAWF,eAAO,MAAM,gBAAgB,EAAE,MAyI9B,CAAC;AA8FF,eAAO,MAAM,gBAAgB,EAAE,MA6M9B,CAAC"}
1
+ {"version":3,"file":"entity-actions.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/entity-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AA+IvB,eAAO,MAAM,kBAAkB,EAAE,MAsKhC,CAAC;AAWF,eAAO,MAAM,gBAAgB,EAAE,MAuK9B,CAAC;AA8FF,eAAO,MAAM,gBAAgB,EAAE,MA2O9B,CAAC"}
@@ -217,6 +217,36 @@ export const searchEntityAction = {
217
217
  schema: { type: "number" },
218
218
  },
219
219
  ],
220
+ examples: [
221
+ [
222
+ {
223
+ name: "{{name1}}",
224
+ content: {
225
+ text: "Look up Jill in my contacts.",
226
+ },
227
+ },
228
+ {
229
+ name: "{{agentName}}",
230
+ content: {
231
+ text: 'Search results for "Jill" | 2 contacts found\n 1 | Jill Park — discord, telegram — 12 facts\n 2 | Jill Summers — slack — 3 facts',
232
+ },
233
+ },
234
+ ],
235
+ [
236
+ {
237
+ name: "{{name1}}",
238
+ content: {
239
+ text: "Who do I know on Discord with the handle marco?",
240
+ },
241
+ },
242
+ {
243
+ name: "{{agentName}}",
244
+ content: {
245
+ text: 'Search results for "marco" | 1 contact found\n 1 | Marco Pierre — discord — 4 facts',
246
+ },
247
+ },
248
+ ],
249
+ ],
220
250
  };
221
251
  export const readEntityAction = {
222
252
  name: "READ_ENTITY",
@@ -341,6 +371,36 @@ export const readEntityAction = {
341
371
  schema: { type: "string" },
342
372
  },
343
373
  ],
374
+ examples: [
375
+ [
376
+ {
377
+ name: "{{name1}}",
378
+ content: {
379
+ text: "Give me the full rundown on Jill Park.",
380
+ },
381
+ },
382
+ {
383
+ name: "{{agentName}}",
384
+ content: {
385
+ text: "## Identity\nName: Jill Park\nPlatforms: discord, telegram\n## Facts\n- Works at Acme on the Ops team.",
386
+ },
387
+ },
388
+ ],
389
+ [
390
+ {
391
+ name: "{{name1}}",
392
+ content: {
393
+ text: "Show me everything you know about entity 9f1c3a22-...",
394
+ },
395
+ },
396
+ {
397
+ name: "{{agentName}}",
398
+ content: {
399
+ text: "## Identity\nName: Marco Pierre\nPlatforms: discord\n## Facts\n- Met at the 2025 offsite.",
400
+ },
401
+ },
402
+ ],
403
+ ],
344
404
  };
345
405
  const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
346
406
  function parseLinkEntityExtraction(text) {
@@ -573,4 +633,34 @@ export const linkEntityAction = {
573
633
  schema: { type: "string" },
574
634
  },
575
635
  ],
636
+ examples: [
637
+ [
638
+ {
639
+ name: "{{name1}}",
640
+ content: {
641
+ text: "My Telegram contact Jill and my Discord contact jill_park are the same person.",
642
+ },
643
+ },
644
+ {
645
+ name: "{{agentName}}",
646
+ content: {
647
+ text: "Proposed a link between those two entities. Confirm to apply.",
648
+ },
649
+ },
650
+ ],
651
+ [
652
+ {
653
+ name: "{{name1}}",
654
+ content: {
655
+ text: "Yes, go ahead and merge those two contacts — same human.",
656
+ },
657
+ },
658
+ {
659
+ name: "{{agentName}}",
660
+ content: {
661
+ text: "Linked the two entities. Their identities and facts now share one rolodex entry.",
662
+ },
663
+ },
664
+ ],
665
+ ],
576
666
  };
@@ -1 +1 @@
1
- {"version":3,"file":"extract-page.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/extract-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgD,MAAM,eAAe,CAAC;AAqC1F,eAAO,MAAM,iBAAiB,EAAE,MAiH/B,CAAC"}
1
+ {"version":3,"file":"extract-page.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/extract-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAA+D,MAAM,eAAe,CAAC;AAqCzG,eAAO,MAAM,iBAAiB,EAAE,MA+I/B,CAAC"}
@@ -121,4 +121,34 @@ export const extractPageAction = {
121
121
  schema: { type: "number" },
122
122
  },
123
123
  ],
124
+ examples: [
125
+ [
126
+ {
127
+ name: "{{name1}}",
128
+ content: {
129
+ text: "Pull the main content from https://example.com/blog/post-42 for me.",
130
+ },
131
+ },
132
+ {
133
+ name: "{{agentName}}",
134
+ content: {
135
+ text: "Extracted https://example.com/blog/post-42\n\n# Post 42 — a short summary of the article body.",
136
+ },
137
+ },
138
+ ],
139
+ [
140
+ {
141
+ name: "{{name1}}",
142
+ content: {
143
+ text: "Give me the text off this docs page: https://docs.elizaos.ai/guide",
144
+ },
145
+ },
146
+ {
147
+ name: "{{agentName}}",
148
+ content: {
149
+ text: "Extracted https://docs.elizaos.ai/guide\n\n# Guide — intro paragraph and first section.",
150
+ },
151
+ },
152
+ ],
153
+ ],
124
154
  };
@@ -1 +1 @@
1
- {"version":3,"file":"read-channel.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/read-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AAsFvB,eAAO,MAAM,iBAAiB,EAAE,MAiL/B,CAAC"}
1
+ {"version":3,"file":"read-channel.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/read-channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAsFvB,eAAO,MAAM,iBAAiB,EAAE,MA+M/B,CAAC"}
@@ -221,4 +221,34 @@ export const readChannelAction = {
221
221
  schema: { type: "number" },
222
222
  },
223
223
  ],
224
+ examples: [
225
+ [
226
+ {
227
+ name: "{{name1}}",
228
+ content: {
229
+ text: "What's been going on in the #dev-ops Discord channel lately?",
230
+ },
231
+ },
232
+ {
233
+ name: "{{agentName}}",
234
+ content: {
235
+ text: "Channel: dev-ops (discord) | 20 messages\n 1 | 2026-04-18 alice: rolling out the new deploy pipeline tomorrow",
236
+ },
237
+ },
238
+ ],
239
+ [
240
+ {
241
+ name: "{{name1}}",
242
+ content: {
243
+ text: "Pull messages from the general chat between April 10 and April 15.",
244
+ },
245
+ },
246
+ {
247
+ name: "{{agentName}}",
248
+ content: {
249
+ text: "Channel: general (slack) | 42 messages",
250
+ },
251
+ },
252
+ ],
253
+ ],
224
254
  };
@@ -1 +1 @@
1
- {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/restart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,eAAe,CAAC;AAiC1E,eAAO,MAAM,aAAa,EAAE,MAwF3B,CAAC"}
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/restart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,MAAM,EAA+C,MAAM,eAAe,CAAC;AAiCzF,eAAO,MAAM,aAAa,EAAE,MAsH3B,CAAC"}
@@ -106,4 +106,34 @@ export const restartAction = {
106
106
  schema: { type: "string" },
107
107
  },
108
108
  ],
109
+ examples: [
110
+ [
111
+ {
112
+ name: "{{name1}}",
113
+ content: {
114
+ text: "Please bounce yourself — I just changed a config file.",
115
+ },
116
+ },
117
+ {
118
+ name: "{{agentName}}",
119
+ content: {
120
+ text: "Restarting… (config reload)",
121
+ },
122
+ },
123
+ ],
124
+ [
125
+ {
126
+ name: "{{name1}}",
127
+ content: {
128
+ text: "/restart",
129
+ },
130
+ },
131
+ {
132
+ name: "{{agentName}}",
133
+ content: {
134
+ text: "Restarting…",
135
+ },
136
+ },
137
+ ],
138
+ ],
109
139
  };
@@ -1 +1 @@
1
- {"version":3,"file":"search-conversations.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/search-conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AA4CvB,eAAO,MAAM,yBAAyB,EAAE,MAyLvC,CAAC"}
1
+ {"version":3,"file":"search-conversations.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/search-conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AA4CvB,eAAO,MAAM,yBAAyB,EAAE,MAuNvC,CAAC"}
@@ -178,4 +178,34 @@ export const searchConversationsAction = {
178
178
  schema: { type: "number" },
179
179
  },
180
180
  ],
181
+ examples: [
182
+ [
183
+ {
184
+ name: "{{name1}}",
185
+ content: {
186
+ text: "Find any chats where someone mentioned the offsite budget.",
187
+ },
188
+ },
189
+ {
190
+ name: "{{agentName}}",
191
+ content: {
192
+ text: 'Search results for "offsite budget" | 4 messages found\n 1 | [slack] finance (2026-04-10) alice: the offsite budget came in under target',
193
+ },
194
+ },
195
+ ],
196
+ [
197
+ {
198
+ name: "{{name1}}",
199
+ content: {
200
+ text: "Dig up the conversation where Jill talked about the onboarding redesign.",
201
+ },
202
+ },
203
+ {
204
+ name: "{{agentName}}",
205
+ content: {
206
+ text: 'Search results for "onboarding redesign" | 2 messages found',
207
+ },
208
+ },
209
+ ],
210
+ ],
181
211
  };
@@ -1 +1 @@
1
- {"version":3,"file":"send-admin-message.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/send-admin-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAsCvB,eAAO,MAAM,sBAAsB,EAAE,MA4GpC,CAAC"}
1
+ {"version":3,"file":"send-admin-message.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/send-admin-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AAsCvB,eAAO,MAAM,sBAAsB,EAAE,MA0IpC,CAAC"}
@@ -103,4 +103,34 @@ export const sendAdminMessageAction = {
103
103
  },
104
104
  },
105
105
  ],
106
+ examples: [
107
+ [
108
+ {
109
+ name: "{{name1}}",
110
+ content: {
111
+ text: "Let the owner know the deploy just finished cleanly.",
112
+ },
113
+ },
114
+ {
115
+ name: "{{agentName}}",
116
+ content: {
117
+ text: "Message sent to admin.",
118
+ },
119
+ },
120
+ ],
121
+ [
122
+ {
123
+ name: "{{name1}}",
124
+ content: {
125
+ text: "Alert the owner right now — the webhook is returning 500s.",
126
+ },
127
+ },
128
+ {
129
+ name: "{{agentName}}",
130
+ content: {
131
+ text: "Message sent to admin (URGENT).",
132
+ },
133
+ },
134
+ ],
135
+ ],
106
136
  };
@@ -1 +1 @@
1
- {"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAIN,aAAa,EACb,MAAM,EACN,IAAI,EACL,MAAM,eAAe,CAAC;AAyCvB,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAQf;AA+LD,eAAO,MAAM,iBAAiB,EAAE,MAuO/B,CAAC"}
1
+ {"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKN,aAAa,EACb,MAAM,EACN,IAAI,EACL,MAAM,eAAe,CAAC;AAyCvB,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAQf;AA+LD,eAAO,MAAM,iBAAiB,EAAE,MAqQ/B,CAAC"}
@@ -361,4 +361,34 @@ export const sendMessageAction = {
361
361
  },
362
362
  },
363
363
  ],
364
+ examples: [
365
+ [
366
+ {
367
+ name: "{{name1}}",
368
+ content: {
369
+ text: "Tell Jill I'm running 10 minutes late.",
370
+ },
371
+ },
372
+ {
373
+ name: "{{agentName}}",
374
+ content: {
375
+ text: "Message sent to Jill Park on telegram.",
376
+ },
377
+ },
378
+ ],
379
+ [
380
+ {
381
+ name: "{{name1}}",
382
+ content: {
383
+ text: "Drop a quick note in the #announcements room that the release is out.",
384
+ },
385
+ },
386
+ {
387
+ name: "{{agentName}}",
388
+ content: {
389
+ text: "Message sent to room announcements on discord.",
390
+ },
391
+ },
392
+ ],
393
+ ],
364
394
  };
@@ -1 +1 @@
1
- {"version":3,"file":"set-user-name.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/set-user-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAyB,MAAM,eAAe,CAAC;AA+BnE,eAAO,MAAM,iBAAiB,EAAE,MA6D/B,CAAC"}
1
+ {"version":3,"file":"set-user-name.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/set-user-name.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAwC,MAAM,eAAe,CAAC;AA+BlF,eAAO,MAAM,iBAAiB,EAAE,MA2F/B,CAAC"}
@@ -79,4 +79,34 @@ export const setUserNameAction = {
79
79
  schema: { type: "string" },
80
80
  },
81
81
  ],
82
+ examples: [
83
+ [
84
+ {
85
+ name: "{{name1}}",
86
+ content: {
87
+ text: "By the way, everyone calls me Sam.",
88
+ },
89
+ },
90
+ {
91
+ name: "{{agentName}}",
92
+ content: {
93
+ text: "Got it, Sam.",
94
+ },
95
+ },
96
+ ],
97
+ [
98
+ {
99
+ name: "{{name1}}",
100
+ content: {
101
+ text: "Please call me Jordan from now on.",
102
+ },
103
+ },
104
+ {
105
+ name: "{{agentName}}",
106
+ content: {
107
+ text: "Sure thing, Jordan.",
108
+ },
109
+ },
110
+ ],
111
+ ],
82
112
  };
@@ -1 +1 @@
1
- {"version":3,"file":"skill-command.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/skill-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AAQvB;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAuBD,eAAO,MAAM,kBAAkB,EAAE,MA8HhC,CAAC"}
1
+ {"version":3,"file":"skill-command.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/skill-command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AAQvB;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAuBD,eAAO,MAAM,kBAAkB,EAAE,MA+HhC,CAAC"}
@@ -110,6 +110,7 @@ export const skillCommandAction = {
110
110
  actions: ["SKILL_COMMAND"],
111
111
  });
112
112
  },
113
+ parameters: [],
113
114
  examples: [
114
115
  [
115
116
  {
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,MAAM,EAIP,MAAM,eAAe,CAAC;AAwfvB,eAAO,MAAM,cAAc,EAAE,MAqI5B,CAAC"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAsVvB,eAAO,MAAM,cAAc,EAAE,MAgJ5B,CAAC"}
@@ -11,41 +11,10 @@
11
11
  * @module actions/terminal
12
12
  */
13
13
  import { logger } from "@elizaos/core";
14
- import { getValidationKeywordTerms, textIncludesKeywordTerm, } from "@elizaos/shared/validation-keywords";
15
14
  import { hasOwnerAccess } from "../security/access.js";
16
15
  /** API port for posting terminal requests. */
17
16
  const API_PORT = process.env.API_PORT || process.env.SERVER_PORT || "2138";
18
17
  const FAIL = { success: false, text: "" };
19
- const TERMINAL_COMMAND_VERBS = getValidationKeywordTerms("action.terminal.commandVerb", {
20
- includeAllLocales: true,
21
- });
22
- const TERMINAL_COMMAND_FILLERS = getValidationKeywordTerms("action.terminal.commandFiller", {
23
- includeAllLocales: true,
24
- });
25
- const TERMINAL_UTILITY_TERMS = getValidationKeywordTerms("action.terminal.utility", {
26
- includeAllLocales: true,
27
- });
28
- const TERMINAL_BITCOIN_TERMS = getValidationKeywordTerms("action.terminal.cryptoBitcoin", {
29
- includeAllLocales: true,
30
- });
31
- const TERMINAL_ETHEREUM_TERMS = getValidationKeywordTerms("action.terminal.cryptoEthereum", {
32
- includeAllLocales: true,
33
- });
34
- const TERMINAL_SOLANA_TERMS = getValidationKeywordTerms("action.terminal.cryptoSolana", {
35
- includeAllLocales: true,
36
- });
37
- const TERMINAL_DISK_TERMS = getValidationKeywordTerms("action.terminal.disk", {
38
- includeAllLocales: true,
39
- });
40
- const TERMINAL_UPTIME_TERMS = getValidationKeywordTerms("action.terminal.uptime", {
41
- includeAllLocales: true,
42
- });
43
- const TERMINAL_MEMORY_TERMS = getValidationKeywordTerms("action.terminal.memory", {
44
- includeAllLocales: true,
45
- });
46
- const TERMINAL_PROCESS_TERMS = getValidationKeywordTerms("action.terminal.process", {
47
- includeAllLocales: true,
48
- });
49
18
  let cachedClipboardStoreFn;
50
19
  function parseBooleanFlag(value) {
51
20
  if (value === true) {
@@ -59,62 +28,6 @@ function parseBooleanFlag(value) {
59
28
  function readStringValue(value) {
60
29
  return typeof value === "string" && value.trim() ? value.trim() : undefined;
61
30
  }
62
- function escapePattern(value) {
63
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
64
- }
65
- function containsKeywordTerm(text, terms) {
66
- return terms.some((term) => textIncludesKeywordTerm(text, term));
67
- }
68
- function stripLeadingCommandFillers(value) {
69
- let trimmed = value.trim();
70
- let changed = true;
71
- const sortedFillers = [...TERMINAL_COMMAND_FILLERS].sort((left, right) => right.length - left.length);
72
- while (changed && trimmed) {
73
- changed = false;
74
- for (const filler of sortedFillers) {
75
- const pattern = new RegExp(`^(?:the\\s+)?${escapePattern(filler).replace(/\\ /g, "\\s+")}\\s*(.*)$`, "iu");
76
- const match = trimmed.match(pattern);
77
- if (!match?.[1]) {
78
- continue;
79
- }
80
- trimmed = match[1].trim();
81
- changed = true;
82
- break;
83
- }
84
- }
85
- return trimmed;
86
- }
87
- function extractTrailingCommandText(text) {
88
- const sortedTerms = [...TERMINAL_COMMAND_VERBS].sort((left, right) => right.length - left.length);
89
- for (const term of sortedTerms) {
90
- const pattern = new RegExp(`${escapePattern(term).replace(/\\ /g, "\\s+")}\\s*(.+)$`, "iu");
91
- const match = text.match(pattern);
92
- const remainder = match?.[1]?.trim();
93
- if (!remainder) {
94
- continue;
95
- }
96
- const trimmed = stripLeadingCommandFillers(remainder)
97
- .replace(/[?.!]+$/g, "")
98
- .replace(/\s+(?:in|on|from|to|for|at)\s+(?:the\s+)?[\w\s]+$/i, "")
99
- .trim();
100
- if (trimmed) {
101
- return trimmed;
102
- }
103
- }
104
- return undefined;
105
- }
106
- function resolveCryptoCommand(text) {
107
- if (containsKeywordTerm(text, TERMINAL_BITCOIN_TERMS)) {
108
- return 'curl -s "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd&include_24hr_change=true"';
109
- }
110
- if (containsKeywordTerm(text, TERMINAL_ETHEREUM_TERMS)) {
111
- return 'curl -s "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd&include_24hr_change=true"';
112
- }
113
- if (containsKeywordTerm(text, TERMINAL_SOLANA_TERMS)) {
114
- return 'curl -s "https://api.coingecko.com/api/v3/simple/price?ids=solana&vs_currencies=usd&include_24hr_change=true"';
115
- }
116
- return undefined;
117
- }
118
31
  function parseJsonArguments(value) {
119
32
  if (typeof value !== "string" || !value.trim()) {
120
33
  return undefined;
@@ -163,40 +76,16 @@ function resolveClipboardTitle(params, argumentParams, message) {
163
76
  function getCommand(options, message) {
164
77
  const params = (options?.parameters ?? {});
165
78
  const argumentParams = parseJsonArguments(params.arguments);
166
- const explicitCommand = readStringValue(params.command) ??
79
+ // The planner must extract the command as an explicit `command` param.
80
+ // We intentionally do not fall back to regex-scraping the message text or
81
+ // keyword-matching the request for hardcoded commands ("free -h" for
82
+ // "memory", etc.) — that would be intent classification in the handler
83
+ // instead of in the LLM planner, which bypasses the LLM's judgment on
84
+ // safety, scope, and argument construction.
85
+ return (readStringValue(params.command) ??
167
86
  readStringValue(params.shellCommand) ??
168
87
  readStringValue(argumentParams?.command) ??
169
- readStringValue(argumentParams?.shellCommand);
170
- if (explicitCommand) {
171
- return explicitCommand;
172
- }
173
- const text = message?.content?.text;
174
- if (typeof text === "string" && text.length > 0) {
175
- const extracted = extractTrailingCommandText(text)
176
- ?.replace(/^[`'"]+|[`'".!?]+$/g, "")
177
- .trim();
178
- if (extracted) {
179
- return extracted;
180
- }
181
- }
182
- const rawText = text ?? "";
183
- const cryptoCommand = resolveCryptoCommand(rawText);
184
- if (cryptoCommand) {
185
- return cryptoCommand;
186
- }
187
- if (containsKeywordTerm(rawText, TERMINAL_DISK_TERMS)) {
188
- return "df -h /home/eliza";
189
- }
190
- if (containsKeywordTerm(rawText, TERMINAL_UPTIME_TERMS)) {
191
- return "uptime";
192
- }
193
- if (containsKeywordTerm(rawText, TERMINAL_MEMORY_TERMS)) {
194
- return "free -h";
195
- }
196
- if (containsKeywordTerm(rawText, TERMINAL_PROCESS_TERMS)) {
197
- return "ps aux --sort=-rss | head -15";
198
- }
199
- return undefined;
88
+ readStringValue(argumentParams?.shellCommand));
200
89
  }
201
90
  function resolveTerminalInput(options, message) {
202
91
  const params = (options?.parameters ?? {});
@@ -357,31 +246,11 @@ export const terminalAction = {
357
246
  "Do NOT use for building projects, creating websites, or multi-step work — use CREATE_TASK instead. " +
358
247
  "Set addToClipboard=true to capture the command output, return it inline, and store it in bounded clipboard state.",
359
248
  validate: async (runtime, message) => {
360
- if (!(await hasOwnerAccess(runtime, message))) {
361
- return false;
362
- }
363
- const text = (message?.content?.text ?? "").trim();
364
- if (!text)
365
- return false;
366
- if (/`[^`]+`/.test(text))
367
- return true;
368
- if (/```/.test(text))
369
- return true;
370
- if (extractTrailingCommandText(text))
371
- return true;
372
- if (containsKeywordTerm(text, TERMINAL_UTILITY_TERMS)) {
373
- return true;
374
- }
375
- if (resolveCryptoCommand(text)) {
376
- return true;
377
- }
378
- if (containsKeywordTerm(text, TERMINAL_DISK_TERMS) ||
379
- containsKeywordTerm(text, TERMINAL_UPTIME_TERMS) ||
380
- containsKeywordTerm(text, TERMINAL_MEMORY_TERMS) ||
381
- containsKeywordTerm(text, TERMINAL_PROCESS_TERMS)) {
382
- return true;
383
- }
384
- return false;
249
+ // Permission is the only gate here. Whether the action is relevant to the
250
+ // current request is the planner's job — not a regex / keyword scan in
251
+ // validate. The action's description + similes + examples are the
252
+ // contract the planner uses.
253
+ return hasOwnerAccess(runtime, message);
385
254
  },
386
255
  handler: async (runtime, message, _state, options) => {
387
256
  if (!(await hasOwnerAccess(runtime, message))) {
@@ -450,4 +319,34 @@ export const terminalAction = {
450
319
  schema: { type: "string" },
451
320
  },
452
321
  ],
322
+ examples: [
323
+ [
324
+ {
325
+ name: "{{name1}}",
326
+ content: {
327
+ text: "Run ls -la in my home directory.",
328
+ },
329
+ },
330
+ {
331
+ name: "{{agentName}}",
332
+ content: {
333
+ text: "Running in terminal: `ls -la`",
334
+ },
335
+ },
336
+ ],
337
+ [
338
+ {
339
+ name: "{{name1}}",
340
+ content: {
341
+ text: "Execute `git status` and save the output so I can look at it later.",
342
+ },
343
+ },
344
+ {
345
+ name: "{{agentName}}",
346
+ content: {
347
+ text: "Executed shell command: `git status`\nExit code: 0",
348
+ },
349
+ },
350
+ ],
351
+ ],
453
352
  };
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,eAAe,CAAC;AAmI3E,eAAO,MAAM,eAAe,EAAE,MAqM7B,CAAC"}
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,eAAe,CAAC;AAmI3E,eAAO,MAAM,eAAe,EAAE,MA8M7B,CAAC"}
@@ -235,6 +235,14 @@ export const webSearchAction = {
235
235
  };
236
236
  }
237
237
  },
238
+ parameters: [
239
+ {
240
+ name: "query",
241
+ description: "The search query to run against the web. Supply what the user wants to learn about.",
242
+ required: true,
243
+ schema: { type: "string" },
244
+ },
245
+ ],
238
246
  examples: [
239
247
  [
240
248
  {