@elizaos/ui 2.0.0-alpha.526 → 2.0.0-alpha.528

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 (237) hide show
  1. package/apps/app-elizamaker/src/index.d.ts +2 -0
  2. package/apps/app-elizamaker/src/index.d.ts.map +1 -1
  3. package/apps/app-elizamaker/src/index.js +2 -0
  4. package/apps/app-elizamaker/src/init-registry-services.d.ts +18 -0
  5. package/apps/app-elizamaker/src/init-registry-services.d.ts.map +1 -0
  6. package/apps/app-elizamaker/src/init-registry-services.js +63 -0
  7. package/apps/app-elizamaker/src/plugin.d.ts.map +1 -1
  8. package/apps/app-elizamaker/src/plugin.js +7 -0
  9. package/apps/app-elizamaker/src/registry-service-registry.d.ts +4 -0
  10. package/apps/app-elizamaker/src/registry-service-registry.d.ts.map +1 -0
  11. package/apps/app-elizamaker/src/registry-service-registry.js +7 -0
  12. package/apps/app-lifeops/src/automation-node-contributor.d.ts +2 -0
  13. package/apps/app-lifeops/src/automation-node-contributor.d.ts.map +1 -0
  14. package/apps/app-lifeops/src/automation-node-contributor.js +93 -0
  15. package/apps/app-lifeops/src/public.d.ts.map +1 -1
  16. package/apps/app-lifeops/src/public.js +2 -0
  17. package/apps/app-training/src/services/training-service-registry.d.ts +4 -0
  18. package/apps/app-training/src/services/training-service-registry.d.ts.map +1 -0
  19. package/apps/app-training/src/services/training-service-registry.js +7 -0
  20. package/package.json +1 -1
  21. package/packages/agent/src/api/agent-status-routes.d.ts +3 -23
  22. package/packages/agent/src/api/agent-status-routes.d.ts.map +1 -1
  23. package/packages/agent/src/api/agent-status-routes.js +7 -40
  24. package/packages/agent/src/api/coordinator-wiring.d.ts.map +1 -0
  25. package/packages/agent/src/api/misc-routes.d.ts.map +1 -1
  26. package/packages/agent/src/api/misc-routes.js +3 -37
  27. package/packages/agent/src/api/nfa-routes.d.ts.map +1 -1
  28. package/packages/agent/src/api/nfa-routes.js +1 -9
  29. package/packages/agent/src/api/provider-switch-routes.d.ts +8 -7
  30. package/packages/agent/src/api/provider-switch-routes.d.ts.map +1 -1
  31. package/packages/agent/src/api/provider-switch-routes.js +41 -26
  32. package/packages/agent/src/api/server-types.d.ts +0 -6
  33. package/packages/agent/src/api/server-types.d.ts.map +1 -1
  34. package/packages/agent/src/api/server.d.ts.map +1 -1
  35. package/packages/agent/src/api/server.js +31 -138
  36. package/packages/agent/src/api/stream-routes.d.ts.map +1 -1
  37. package/packages/agent/src/api/stream-routes.js +6 -8
  38. package/packages/agent/src/api/wallet-trading-profile.d.ts.map +1 -1
  39. package/packages/agent/src/api/wallet-trading-profile.js +2 -23
  40. package/packages/agent/src/auth/account-storage.d.ts.map +1 -1
  41. package/packages/agent/src/auth/account-storage.js +4 -15
  42. package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
  43. package/packages/agent/src/runtime/eliza.js +2 -6
  44. package/packages/agent/src/runtime/first-time-setup.d.ts.map +1 -1
  45. package/packages/agent/src/runtime/first-time-setup.js +1 -7
  46. package/packages/agent/src/runtime/operations/cold-strategy.d.ts +4 -4
  47. package/packages/agent/src/runtime/operations/cold-strategy.d.ts.map +1 -1
  48. package/packages/agent/src/runtime/operations/cold-strategy.js +13 -46
  49. package/packages/agent/src/runtime/operations/health-checks.d.ts +1 -0
  50. package/packages/agent/src/runtime/operations/health-checks.d.ts.map +1 -1
  51. package/packages/agent/src/runtime/operations/health-checks.js +1 -1
  52. package/packages/agent/src/runtime/operations/health.d.ts.map +1 -1
  53. package/packages/agent/src/runtime/operations/health.js +1 -13
  54. package/packages/agent/src/runtime/operations/index.d.ts +1 -0
  55. package/packages/agent/src/runtime/operations/index.d.ts.map +1 -1
  56. package/packages/agent/src/runtime/operations/index.js +1 -0
  57. package/packages/agent/src/runtime/operations/manager.d.ts +2 -0
  58. package/packages/agent/src/runtime/operations/manager.d.ts.map +1 -1
  59. package/packages/agent/src/runtime/operations/manager.js +27 -7
  60. package/packages/agent/src/runtime/operations/reload-hot.d.ts +4 -1
  61. package/packages/agent/src/runtime/operations/reload-hot.d.ts.map +1 -1
  62. package/packages/agent/src/runtime/operations/reload-hot.js +46 -41
  63. package/packages/agent/src/runtime/operations/repository.d.ts +30 -8
  64. package/packages/agent/src/runtime/operations/repository.d.ts.map +1 -1
  65. package/packages/agent/src/runtime/operations/repository.js +140 -54
  66. package/packages/agent/src/runtime/operations/types.d.ts +26 -24
  67. package/packages/agent/src/runtime/operations/types.d.ts.map +1 -1
  68. package/packages/agent/src/runtime/operations/types.js +8 -20
  69. package/packages/agent/src/runtime/operations/vault-bridge.d.ts +60 -0
  70. package/packages/agent/src/runtime/operations/vault-bridge.d.ts.map +1 -0
  71. package/packages/agent/src/runtime/operations/vault-bridge.js +80 -0
  72. package/packages/agent/src/runtime/plugin-resolver.d.ts.map +1 -1
  73. package/packages/agent/src/runtime/plugin-resolver.js +1 -3
  74. package/packages/agent/src/runtime/plugin-types.d.ts.map +1 -1
  75. package/packages/agent/src/runtime/plugin-types.js +1 -3
  76. package/packages/agent/src/services/app-package-modules.d.ts.map +1 -1
  77. package/packages/agent/src/services/app-package-modules.js +1 -8
  78. package/packages/agent/src/services/app-run-store.d.ts.map +1 -1
  79. package/packages/agent/src/services/app-run-store.js +2 -23
  80. package/packages/agent/src/services/registry-client-local.d.ts.map +1 -1
  81. package/packages/agent/src/services/registry-client-local.js +1 -9
  82. package/packages/agent/src/utils/atomic-json.d.ts +37 -0
  83. package/packages/agent/src/utils/atomic-json.d.ts.map +1 -0
  84. package/packages/agent/src/utils/atomic-json.js +98 -0
  85. package/packages/app-core/src/api/automation-node-contributors.d.ts +14 -0
  86. package/packages/app-core/src/api/automation-node-contributors.d.ts.map +1 -0
  87. package/packages/app-core/src/api/automation-node-contributors.js +14 -0
  88. package/packages/app-core/src/api/client-agent.d.ts +627 -0
  89. package/packages/app-core/src/api/client-agent.d.ts.map +1 -0
  90. package/packages/app-core/src/api/client-agent.js +1442 -0
  91. package/packages/app-core/src/api/client-automations.d.ts +8 -0
  92. package/packages/app-core/src/api/client-automations.d.ts.map +1 -0
  93. package/packages/app-core/src/api/client-automations.js +7 -0
  94. package/packages/app-core/src/api/client-base.d.ts +82 -0
  95. package/packages/app-core/src/api/client-base.d.ts.map +1 -0
  96. package/packages/app-core/src/api/client-base.js +729 -0
  97. package/packages/app-core/src/api/client-browser-workspace.d.ts +25 -0
  98. package/packages/app-core/src/api/client-browser-workspace.d.ts.map +1 -0
  99. package/packages/app-core/src/api/client-browser-workspace.js +98 -0
  100. package/packages/app-core/src/api/client-chat.d.ts +355 -0
  101. package/packages/app-core/src/api/client-chat.d.ts.map +1 -0
  102. package/packages/app-core/src/api/client-chat.js +582 -0
  103. package/packages/app-core/src/api/client-cloud.d.ts +286 -0
  104. package/packages/app-core/src/api/client-cloud.d.ts.map +1 -0
  105. package/packages/app-core/src/api/client-cloud.js +410 -0
  106. package/packages/app-core/src/api/client-computeruse.d.ts +32 -0
  107. package/packages/app-core/src/api/client-computeruse.d.ts.map +1 -0
  108. package/packages/app-core/src/api/client-computeruse.js +16 -0
  109. package/packages/app-core/src/api/client-imessage.d.ts +68 -0
  110. package/packages/app-core/src/api/client-imessage.d.ts.map +1 -0
  111. package/packages/app-core/src/api/client-imessage.js +74 -0
  112. package/packages/app-core/src/api/client-local-inference.d.ts +62 -0
  113. package/packages/app-core/src/api/client-local-inference.d.ts.map +1 -0
  114. package/packages/app-core/src/api/client-local-inference.js +87 -0
  115. package/packages/app-core/src/api/client-n8n.d.ts +27 -0
  116. package/packages/app-core/src/api/client-n8n.d.ts.map +1 -0
  117. package/packages/app-core/src/api/client-n8n.js +61 -0
  118. package/packages/app-core/src/api/client-skills.d.ts +475 -0
  119. package/packages/app-core/src/api/client-skills.d.ts.map +1 -0
  120. package/packages/app-core/src/api/client-skills.js +608 -0
  121. package/packages/app-core/src/api/client-types-babylon.d.ts +254 -0
  122. package/packages/app-core/src/api/client-types-babylon.d.ts.map +1 -0
  123. package/packages/app-core/src/api/client-types-babylon.js +2 -0
  124. package/packages/app-core/src/api/client-types-character.d.ts +39 -0
  125. package/packages/app-core/src/api/client-types-character.d.ts.map +1 -0
  126. package/packages/app-core/src/api/client-types-character.js +1 -0
  127. package/packages/app-core/src/api/client-types-chat.d.ts +428 -0
  128. package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -0
  129. package/packages/app-core/src/api/client-types-chat.js +9 -0
  130. package/packages/app-core/src/api/client-types-config.d.ts +587 -0
  131. package/packages/app-core/src/api/client-types-config.d.ts.map +1 -0
  132. package/packages/app-core/src/api/client-types-config.js +5 -0
  133. package/packages/app-core/src/api/client-types-experience.d.ts +97 -0
  134. package/packages/app-core/src/api/client-types-experience.d.ts.map +1 -0
  135. package/packages/app-core/src/api/client-types-experience.js +1 -0
  136. package/packages/app-core/src/api/client-types-relationships.d.ts +181 -0
  137. package/packages/app-core/src/api/client-types-relationships.d.ts.map +1 -0
  138. package/packages/app-core/src/api/client-types-relationships.js +1 -0
  139. package/packages/app-core/src/api/client-types-steward.d.ts +85 -0
  140. package/packages/app-core/src/api/client-types-steward.d.ts.map +1 -0
  141. package/packages/app-core/src/api/client-types-steward.js +9 -0
  142. package/packages/app-core/src/api/client-types.d.ts +9 -0
  143. package/packages/app-core/src/api/client-types.d.ts.map +1 -0
  144. package/packages/app-core/src/api/client-types.js +12 -0
  145. package/packages/app-core/src/api/client-wallet.d.ts +130 -0
  146. package/packages/app-core/src/api/client-wallet.d.ts.map +1 -0
  147. package/packages/app-core/src/api/client-wallet.js +228 -0
  148. package/packages/app-core/src/api/client.d.ts +36 -0
  149. package/packages/app-core/src/api/client.d.ts.map +1 -0
  150. package/packages/app-core/src/api/client.js +36 -0
  151. package/packages/app-core/src/api/index.d.ts +2 -0
  152. package/packages/app-core/src/api/index.d.ts.map +1 -0
  153. package/packages/app-core/src/api/index.js +1 -0
  154. package/packages/app-core/src/bridge/electrobun-rpc.d.ts +57 -0
  155. package/packages/app-core/src/bridge/electrobun-rpc.d.ts.map +1 -0
  156. package/packages/app-core/src/bridge/electrobun-rpc.js +87 -0
  157. package/packages/app-core/src/bridge/electrobun-runtime.d.ts +3 -0
  158. package/packages/app-core/src/bridge/electrobun-runtime.d.ts.map +1 -0
  159. package/packages/app-core/src/bridge/electrobun-runtime.js +34 -0
  160. package/packages/app-core/src/bridge/native-plugins.d.ts +504 -0
  161. package/packages/app-core/src/bridge/native-plugins.d.ts.map +1 -0
  162. package/packages/app-core/src/bridge/native-plugins.js +67 -0
  163. package/packages/app-core/src/chat/coding-agent-session-state.d.ts +16 -0
  164. package/packages/app-core/src/chat/coding-agent-session-state.d.ts.map +1 -0
  165. package/packages/app-core/src/chat/coding-agent-session-state.js +27 -0
  166. package/packages/app-core/src/components/pages/browser-workspace-wallet.d.ts +80 -0
  167. package/packages/app-core/src/components/pages/browser-workspace-wallet.d.ts.map +1 -0
  168. package/packages/app-core/src/components/pages/browser-workspace-wallet.js +135 -0
  169. package/packages/app-core/src/services/account-pool.d.ts +98 -0
  170. package/packages/app-core/src/services/account-pool.d.ts.map +1 -0
  171. package/packages/app-core/src/services/account-pool.js +506 -0
  172. package/packages/app-core/src/services/account-usage.d.ts +75 -0
  173. package/packages/app-core/src/services/account-usage.d.ts.map +1 -0
  174. package/packages/app-core/src/services/account-usage.js +179 -0
  175. package/packages/app-core/src/services/local-inference/active-model.d.ts +59 -0
  176. package/packages/app-core/src/services/local-inference/active-model.d.ts.map +1 -0
  177. package/packages/app-core/src/services/local-inference/active-model.js +120 -0
  178. package/packages/app-core/src/services/local-inference/device-bridge.d.ts +131 -0
  179. package/packages/app-core/src/services/local-inference/device-bridge.d.ts.map +1 -0
  180. package/packages/app-core/src/services/local-inference/device-bridge.js +748 -0
  181. package/packages/app-core/src/services/local-inference/engine.d.ts +52 -0
  182. package/packages/app-core/src/services/local-inference/engine.d.ts.map +1 -0
  183. package/packages/app-core/src/services/local-inference/engine.js +138 -0
  184. package/packages/app-core/src/services/local-inference/external-scanner.d.ts +17 -0
  185. package/packages/app-core/src/services/local-inference/external-scanner.d.ts.map +1 -0
  186. package/packages/app-core/src/services/local-inference/external-scanner.js +261 -0
  187. package/packages/app-core/src/services/local-inference/handler-registry.d.ts +72 -0
  188. package/packages/app-core/src/services/local-inference/handler-registry.d.ts.map +1 -0
  189. package/packages/app-core/src/services/local-inference/handler-registry.js +160 -0
  190. package/packages/app-core/src/services/local-inference/paths.d.ts +24 -0
  191. package/packages/app-core/src/services/local-inference/paths.d.ts.map +1 -0
  192. package/packages/app-core/src/services/local-inference/paths.js +41 -0
  193. package/packages/app-core/src/services/local-inference/providers.d.ts +61 -0
  194. package/packages/app-core/src/services/local-inference/providers.d.ts.map +1 -0
  195. package/packages/app-core/src/services/local-inference/providers.js +277 -0
  196. package/packages/app-core/src/services/local-inference/registry.d.ts +35 -0
  197. package/packages/app-core/src/services/local-inference/registry.d.ts.map +1 -0
  198. package/packages/app-core/src/services/local-inference/registry.js +108 -0
  199. package/packages/app-core/src/services/local-inference/routing-preferences.d.ts +31 -0
  200. package/packages/app-core/src/services/local-inference/routing-preferences.d.ts.map +1 -0
  201. package/packages/app-core/src/services/local-inference/routing-preferences.js +72 -0
  202. package/packages/app-core/src/services/local-inference/types.d.ts +121 -0
  203. package/packages/app-core/src/services/local-inference/types.d.ts.map +1 -0
  204. package/packages/app-core/src/services/local-inference/types.js +14 -0
  205. package/packages/app-core/src/services/local-inference/verify.d.ts +39 -0
  206. package/packages/app-core/src/services/local-inference/verify.d.ts.map +1 -0
  207. package/packages/app-core/src/services/local-inference/verify.js +104 -0
  208. package/packages/app-core/src/types/index.d.ts +658 -0
  209. package/packages/app-core/src/types/index.d.ts.map +1 -0
  210. package/packages/app-core/src/types/index.js +4 -0
  211. package/packages/app-core/src/utils/assistant-text.d.ts +2 -0
  212. package/packages/app-core/src/utils/assistant-text.d.ts.map +1 -0
  213. package/packages/app-core/src/utils/assistant-text.js +167 -0
  214. package/packages/app-core/src/utils/eliza-globals.d.ts +15 -0
  215. package/packages/app-core/src/utils/eliza-globals.d.ts.map +1 -0
  216. package/packages/app-core/src/utils/eliza-globals.js +50 -0
  217. package/packages/app-core/src/utils/streaming-text.d.ts +9 -0
  218. package/packages/app-core/src/utils/streaming-text.d.ts.map +1 -0
  219. package/packages/app-core/src/utils/streaming-text.js +112 -0
  220. package/packages/shared/src/format-error.d.ts +14 -0
  221. package/packages/shared/src/format-error.d.ts.map +1 -0
  222. package/packages/shared/src/format-error.js +17 -0
  223. package/packages/shared/src/index.d.ts +1 -0
  224. package/packages/shared/src/index.d.ts.map +1 -1
  225. package/packages/shared/src/index.js +1 -0
  226. package/packages/typescript/src/runtime.d.ts +14 -0
  227. package/packages/typescript/src/runtime.d.ts.map +1 -1
  228. package/packages/typescript/src/runtime.js +42 -0
  229. package/packages/typescript/src/services/message.d.ts +8 -0
  230. package/packages/typescript/src/services/message.d.ts.map +1 -1
  231. package/packages/typescript/src/services/message.js +51 -0
  232. package/packages/typescript/src/services/task.d.ts +1 -0
  233. package/packages/typescript/src/services/task.d.ts.map +1 -1
  234. package/packages/typescript/src/services/task.js +26 -3
  235. package/apps/app-task-coordinator/src/api/coordinator-wiring.d.ts.map +0 -1
  236. /package/{apps/app-task-coordinator → packages/agent}/src/api/coordinator-wiring.d.ts +0 -0
  237. /package/{apps/app-task-coordinator → packages/agent}/src/api/coordinator-wiring.js +0 -0
@@ -68,6 +68,33 @@ const TOON_HEADER_PATTERN = /^TOON(?:\s+DOCUMENT)?[:\s-]*$/i;
68
68
  const TOON_FIELD_PATTERN = /^[A-Za-z_][A-Za-z0-9_.-]*(?:\[[^\]\n]*\])?(?:\{[^\n]*\})?:/m;
69
69
  const XML_LIKE_PATTERN = /<[/!?A-Za-z_][^>\n]*>/;
70
70
  const JSON_OBJECT_KEY_PATTERN = /(?:["'][^"'\n]+["']|[A-Za-z_][A-Za-z0-9_-]*)\s*:/;
71
+ /**
72
+ * Thrown by `AgentRuntime.useModel` when a text-generation model is requested
73
+ * but no LLM provider plugin is registered for any text model type at all.
74
+ *
75
+ * This is distinct from "one provider is registered but the specific type is
76
+ * missing" — that case still throws the generic `No handler found for delegate
77
+ * type` error so legitimate misconfigurations stay loud.
78
+ *
79
+ * Surfacing this as a typed error lets the chat layer render an actionable
80
+ * hint instead of a generic parse-failure template. See issue elizaOS/eliza#7203.
81
+ */
82
+ export class NoModelProviderConfiguredError extends Error {
83
+ constructor(message = "This agent has no LLM provider configured. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or OPENROUTER_API_KEY in your environment, or sign in to Eliza Cloud (ELIZAOS_CLOUD_API_KEY).") {
84
+ super(message);
85
+ this.name = "NoModelProviderConfiguredError";
86
+ }
87
+ }
88
+ const TEXT_GENERATION_MODEL_KEYS = [
89
+ ModelType.TEXT_NANO,
90
+ ModelType.TEXT_SMALL,
91
+ ModelType.TEXT_MEDIUM,
92
+ ModelType.TEXT_LARGE,
93
+ ModelType.TEXT_MEGA,
94
+ ModelType.RESPONSE_HANDLER,
95
+ ModelType.ACTION_PLANNER,
96
+ ModelType.TEXT_COMPLETION,
97
+ ];
71
98
  function coerceOutgoingMessageText(text) {
72
99
  if (text === null || text === undefined) {
73
100
  return "";
@@ -3325,6 +3352,21 @@ export class AgentRuntime {
3325
3352
  const resolvedModelKey = resolvedModel?.modelKey ?? requestedModelKey;
3326
3353
  const handler = resolvedModel?.handler;
3327
3354
  if (!handler) {
3355
+ // If the request is for a text-generation model AND no text-generation
3356
+ // handler is registered for ANY of the text model types, this is the
3357
+ // "no LLM provider configured at all" state — surface a typed error
3358
+ // so callers (chat UI, etc.) can render an actionable hint instead of
3359
+ // a generic "No handler found for delegate type" parse-failure message.
3360
+ // Issue: elizaOS/eliza#7203.
3361
+ if (TEXT_GENERATION_MODEL_KEYS.includes(requestedModelKey)) {
3362
+ const hasAnyTextHandler = TEXT_GENERATION_MODEL_KEYS.some((key) => {
3363
+ const handlers = this.models.get(key);
3364
+ return Array.isArray(handlers) && handlers.length > 0;
3365
+ });
3366
+ if (!hasAnyTextHandler) {
3367
+ throw new NoModelProviderConfiguredError();
3368
+ }
3369
+ }
3328
3370
  const errorMsg = `No handler found for delegate type: ${requestedModelKey}`;
3329
3371
  throw new Error(errorMsg);
3330
3372
  }
@@ -114,6 +114,14 @@ export declare class DefaultMessageService implements IMessageService {
114
114
  private runSingleShotCore;
115
115
  private tryGroundedFallbackReply;
116
116
  private buildStructuredFailureReply;
117
+ /**
118
+ * Render the no-LLM-provider hint as a chat reply. Used when `useModel`
119
+ * throws `NoModelProviderConfiguredError`, which means no provider plugin
120
+ * is registered and no fallback model call will ever succeed. The user
121
+ * sees an actionable message instead of a generic transient-failure
122
+ * template. See elizaOS/eliza#7203.
123
+ */
124
+ private buildNoModelProviderReply;
117
125
  /**
118
126
  * Multi-step strategy: iterative action execution with final summary
119
127
  */
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../typescript/src/services/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../typescript/src/services/message.ts"],"names":[],"mappings":"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"}
@@ -4364,6 +4364,13 @@ Output ONLY the continuation, starting immediately after the last character abov
4364
4364
  }
4365
4365
  }
4366
4366
  async buildStructuredFailureReply(runtime, message, state, responseId, stage) {
4367
+ // Short-circuit when no LLM provider is configured at all. The fallback
4368
+ // model loop below would just throw `NoModelProviderConfiguredError` for
4369
+ // every model type and surface a misleading generic failure to the user.
4370
+ // Instead, render an actionable hint directly. See elizaOS/eliza#7203.
4371
+ if (!hasTextGenerationHandler(runtime)) {
4372
+ return this.buildNoModelProviderReply(runtime, message, state, responseId, stage);
4373
+ }
4367
4374
  const recentMessages = typeof state.values?.recentMessages === "string" &&
4368
4375
  state.values.recentMessages.trim().length > 0
4369
4376
  ? state.values.recentMessages
@@ -4429,6 +4436,14 @@ Output ONLY the continuation, starting immediately after the last character abov
4429
4436
  }
4430
4437
  }
4431
4438
  catch (error) {
4439
+ // If the runtime reports no LLM provider is configured at all,
4440
+ // no further model attempts will succeed. Surface the actionable
4441
+ // hint instead of the generic transient-failure message. See
4442
+ // elizaOS/eliza#7203.
4443
+ if (error instanceof Error &&
4444
+ error.name === "NoModelProviderConfiguredError") {
4445
+ return this.buildNoModelProviderReply(runtime, message, state, responseId, stage);
4446
+ }
4432
4447
  runtime.logger.warn({
4433
4448
  src: "service:message",
4434
4449
  stage,
@@ -4472,6 +4487,42 @@ Output ONLY the continuation, starting immediately after the last character abov
4472
4487
  mode: "simple",
4473
4488
  };
4474
4489
  }
4490
+ /**
4491
+ * Render the no-LLM-provider hint as a chat reply. Used when `useModel`
4492
+ * throws `NoModelProviderConfiguredError`, which means no provider plugin
4493
+ * is registered and no fallback model call will ever succeed. The user
4494
+ * sees an actionable message instead of a generic transient-failure
4495
+ * template. See elizaOS/eliza#7203.
4496
+ */
4497
+ buildNoModelProviderReply(runtime, message, state, responseId, stage) {
4498
+ const replyText = runtime.character.templates?.noModelProviderReply ||
4499
+ "This agent has no LLM provider configured. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or OPENROUTER_API_KEY in your environment, or sign in to Eliza Cloud (ELIZAOS_CLOUD_API_KEY).";
4500
+ runtime.logger.warn({ src: "service:message", stage }, "No LLM provider configured; rendering setup hint reply");
4501
+ const responseContent = {
4502
+ thought: `No LLM provider configured during ${stage}.`,
4503
+ actions: ["REPLY"],
4504
+ providers: [],
4505
+ text: replyText,
4506
+ simple: true,
4507
+ responseId,
4508
+ };
4509
+ const responseMessages = [
4510
+ {
4511
+ id: responseId,
4512
+ entityId: runtime.agentId,
4513
+ agentId: runtime.agentId,
4514
+ content: responseContent,
4515
+ roomId: message.roomId,
4516
+ createdAt: Date.now(),
4517
+ },
4518
+ ];
4519
+ return {
4520
+ responseContent,
4521
+ responseMessages,
4522
+ state,
4523
+ mode: "simple",
4524
+ };
4525
+ }
4475
4526
  /**
4476
4527
  * Multi-step strategy: iterative action execution with final summary
4477
4528
  */
@@ -26,6 +26,7 @@ import type { Task, TaskRunStatus } from "../types/task";
26
26
  */
27
27
  export declare class TaskService extends Service {
28
28
  private timer;
29
+ private activeTick;
29
30
  private readonly TICK_INTERVAL;
30
31
  /** Tracks task IDs currently being executed to prevent overlapping runs. WHY: blocking tasks must not run again until current run finishes. */
31
32
  private executingTasks;
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../../../../typescript/src/services/task.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAe,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAsBvE;;;;;;;;;;;;;;;;;GAiBG;AACH;;;GAGG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACvC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,+IAA+I;IAC/I,OAAO,CAAC,cAAc,CAA0B;IAChD,+FAA+F;IAC/F,OAAO,CAAC,qBAAqB,CAA4B;IACzD,oLAAoL;IACpL,OAAO,CAAC,UAAU,CAAQ;IAC1B,mGAAmG;IACnG,OAAO,CAAC,OAAO,CAAS;IACxB,MAAM,CAAC,WAAW,SAAoB;IACtC,qBAAqB,SAAqD;IAE1E;;;;OAIG;WACU,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5D;;;OAGG;IACG,eAAe;IA8ErB;;;;;;;OAOG;IACH,UAAU;IAiBV;;;;;;OAMG;YACW,aAAa;IA0B3B;;;;;;OAMG;YACW,UAAU;IAmBxB;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4F3C;;;;;;;;;OASG;YACW,WAAW;YAUX,mBAAmB;IA4IjC,4JAA4J;IAC5J,SAAS,IAAI,IAAI;IAQjB;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAiCzD;;;;;OAKG;WACU,IAAI,CAAC,OAAO,EAAE,aAAa;IAOxC;;OAEG;IAEG,IAAI;CAcV"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../../../../typescript/src/services/task.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAe,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAsBvE;;;;;;;;;;;;;;;;;GAiBG;AACH;;;GAGG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACvC,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,+IAA+I;IAC/I,OAAO,CAAC,cAAc,CAA0B;IAChD,+FAA+F;IAC/F,OAAO,CAAC,qBAAqB,CAA4B;IACzD,oLAAoL;IACpL,OAAO,CAAC,UAAU,CAAQ;IAC1B,mGAAmG;IACnG,OAAO,CAAC,OAAO,CAAS;IACxB,MAAM,CAAC,WAAW,SAAoB;IACtC,qBAAqB,SAAqD;IAE1E;;;;OAIG;WACU,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5D;;;OAGG;IACG,eAAe;IA8ErB;;;;;;;OAOG;IACH,UAAU;IAoCV;;;;;;OAMG;YACW,aAAa;IA0B3B;;;;;;OAMG;YACW,UAAU;IAsBxB;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4F3C;;;;;;;;;OASG;YACW,WAAW;YAUX,mBAAmB;IA4IjC,4JAA4J;IAC5J,SAAS,IAAI,IAAI;IAQjB;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC;;;OAGG;IACG,eAAe,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAiCzD;;;;;OAKG;WACU,IAAI,CAAC,OAAO,EAAE,aAAa;IAOxC;;OAEG;IAEG,IAAI;CAiBV"}
@@ -42,6 +42,7 @@ function resolveDueTime(task) {
42
42
  */
43
43
  export class TaskService extends Service {
44
44
  timer = null;
45
+ activeTick = null;
45
46
  TICK_INTERVAL = 1000; // Check every second
46
47
  /** Tracks task IDs currently being executed to prevent overlapping runs. WHY: blocking tasks must not run again until current run finishes. */
47
48
  executingTasks = new Set();
@@ -159,8 +160,24 @@ export class TaskService extends Service {
159
160
  if (this.timer) {
160
161
  clearInterval(this.timer);
161
162
  }
162
- this.timer = setInterval(async () => {
163
- await this.checkTasks();
163
+ this.timer = setInterval(() => {
164
+ if (this.activeTick) {
165
+ return;
166
+ }
167
+ const tick = this.checkTasks()
168
+ .catch((error) => {
169
+ this.runtime.logger.error({
170
+ src: "plugin:basic-capabilities:service:task",
171
+ agentId: this.runtime.agentId,
172
+ error,
173
+ }, "Task timer tick failed");
174
+ })
175
+ .finally(() => {
176
+ if (this.activeTick === tick) {
177
+ this.activeTick = null;
178
+ }
179
+ });
180
+ this.activeTick = tick;
164
181
  }, this.TICK_INTERVAL);
165
182
  }
166
183
  /**
@@ -198,7 +215,7 @@ export class TaskService extends Service {
198
215
  * @returns {Promise<void>} Promise that resolves once all tasks are checked and executed
199
216
  */
200
217
  async checkTasks() {
201
- if (!this.tasksDirty) {
218
+ if (this.stopped || !this.tasksDirty) {
202
219
  return;
203
220
  }
204
221
  this.tasksDirty = false;
@@ -210,6 +227,9 @@ export class TaskService extends Service {
210
227
  if (!allTasks) {
211
228
  return;
212
229
  }
230
+ if (this.stopped) {
231
+ return;
232
+ }
213
233
  await this.runTick(allTasks);
214
234
  }
215
235
  /**
@@ -549,6 +569,9 @@ export class TaskService extends Service {
549
569
  clearInterval(this.timer);
550
570
  this.timer = null;
551
571
  }
572
+ if (this.activeTick) {
573
+ await this.activeTick;
574
+ }
552
575
  const inFlight = Array.from(this.executingTaskPromises);
553
576
  if (inFlight.length > 0) {
554
577
  await Promise.allSettled(inFlight);
@@ -1 +0,0 @@
1
- {"version":3,"file":"coordinator-wiring.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-task-coordinator/src/api/coordinator-wiring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACxE,qDAAqD;IACrD,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,0DAA0D;IAC1D,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,8DAA8D;IAC9D,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACxE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAsB,+BAA+B,CAAC,CAAC,SAAS,YAAY,EAC1E,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,UAAU,CAAC,CAuGrB"}