@elizaos/agent 2.0.0-alpha.98 → 2.0.0-beta.2
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 +78 -923
- package/packages/agent/src/actions/connector-resolver.d.ts +74 -0
- package/packages/agent/src/actions/connector-resolver.d.ts.map +1 -0
- package/packages/agent/src/actions/connector-resolver.js +253 -0
- package/packages/agent/src/actions/contact.d.ts +35 -0
- package/packages/agent/src/actions/contact.d.ts.map +1 -0
- package/packages/agent/src/actions/contact.js +1698 -0
- package/packages/agent/src/actions/context-signal-lexicon.d.ts +17 -0
- package/packages/agent/src/actions/context-signal-lexicon.d.ts.map +1 -0
- package/packages/agent/src/actions/context-signal-lexicon.js +206 -0
- package/packages/agent/src/actions/context-signal.d.ts +48 -0
- package/packages/agent/src/actions/context-signal.d.ts.map +1 -0
- package/packages/agent/src/actions/context-signal.js +153 -0
- package/packages/agent/src/actions/database.d.ts +20 -0
- package/packages/agent/src/actions/database.d.ts.map +1 -0
- package/packages/agent/src/actions/database.js +671 -0
- package/packages/agent/src/actions/extract-page.d.ts +3 -0
- package/packages/agent/src/actions/extract-page.d.ts.map +1 -0
- package/packages/agent/src/actions/extract-page.js +153 -0
- package/packages/agent/src/actions/extract-params.d.ts +87 -0
- package/packages/agent/src/actions/extract-params.d.ts.map +1 -0
- package/packages/agent/src/actions/extract-params.js +187 -0
- package/packages/agent/src/actions/grounded-action-reply.d.ts +22 -0
- package/packages/agent/src/actions/grounded-action-reply.d.ts.map +1 -0
- package/packages/agent/src/actions/grounded-action-reply.js +287 -0
- package/packages/agent/src/actions/index.d.ts +22 -0
- package/packages/agent/src/actions/index.d.ts.map +1 -0
- package/packages/agent/src/actions/index.js +21 -0
- package/packages/agent/src/actions/logs.d.ts +11 -0
- package/packages/agent/src/actions/logs.d.ts.map +1 -0
- package/packages/agent/src/actions/logs.js +300 -0
- package/packages/agent/src/actions/media.d.ts +9 -0
- package/packages/agent/src/actions/media.d.ts.map +1 -0
- package/packages/agent/src/actions/media.js +135 -0
- package/packages/agent/src/actions/memories.d.ts +9 -0
- package/packages/agent/src/actions/memories.d.ts.map +1 -0
- package/packages/agent/src/actions/memories.js +369 -0
- package/packages/agent/src/actions/page-action-groups.d.ts +17 -0
- package/packages/agent/src/actions/page-action-groups.d.ts.map +1 -0
- package/packages/agent/src/actions/page-action-groups.js +413 -0
- package/packages/agent/src/actions/plugin.d.ts +32 -0
- package/packages/agent/src/actions/plugin.d.ts.map +1 -0
- package/packages/agent/src/actions/plugin.js +780 -0
- package/packages/agent/src/actions/recent-conversation-texts.d.ts +9 -0
- package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +1 -0
- package/packages/agent/src/actions/recent-conversation-texts.js +76 -0
- package/packages/agent/src/actions/runtime.d.ts +19 -0
- package/packages/agent/src/actions/runtime.d.ts.map +1 -0
- package/packages/agent/src/actions/runtime.js +517 -0
- package/packages/agent/src/actions/settings-actions.d.ts +19 -0
- package/packages/agent/src/actions/settings-actions.d.ts.map +1 -0
- package/packages/agent/src/actions/settings-actions.js +478 -0
- package/packages/agent/src/actions/skill-command.d.ts +20 -0
- package/packages/agent/src/actions/skill-command.d.ts.map +1 -0
- package/packages/agent/src/actions/skill-command.js +170 -0
- package/packages/agent/src/actions/stream-control.d.ts +13 -8
- package/packages/agent/src/actions/stream-control.d.ts.map +1 -1
- package/packages/agent/src/actions/stream-control.js +127 -318
- package/packages/agent/src/actions/terminal.d.ts +4 -3
- package/packages/agent/src/actions/terminal.d.ts.map +1 -1
- package/packages/agent/src/actions/terminal.js +247 -96
- package/packages/agent/src/actions/trajectories.d.ts +8 -0
- package/packages/agent/src/actions/trajectories.d.ts.map +1 -0
- package/packages/agent/src/actions/trajectories.js +135 -0
- package/packages/agent/src/actions/trigger.d.ts +5 -0
- package/packages/agent/src/actions/trigger.d.ts.map +1 -0
- package/packages/agent/src/actions/trigger.js +514 -0
- package/packages/agent/src/api/accounts-routes.d.ts +38 -0
- package/packages/agent/src/api/accounts-routes.d.ts.map +1 -0
- package/packages/agent/src/api/accounts-routes.js +927 -0
- package/packages/agent/src/api/agent-admin-routes.d.ts +6 -5
- package/packages/agent/src/api/agent-admin-routes.d.ts.map +1 -1
- package/packages/agent/src/api/agent-admin-routes.js +106 -9
- package/packages/agent/src/api/agent-lifecycle-routes.d.ts +2 -2
- package/packages/agent/src/api/agent-lifecycle-routes.d.ts.map +1 -1
- package/packages/agent/src/api/agent-lifecycle-routes.js +22 -1
- package/packages/agent/src/api/agent-model.d.ts +2 -9
- package/packages/agent/src/api/agent-model.d.ts.map +1 -1
- package/packages/agent/src/api/agent-model.js +50 -3
- package/packages/agent/src/api/agent-status-routes.d.ts +75 -0
- package/packages/agent/src/api/agent-status-routes.d.ts.map +1 -0
- package/packages/agent/src/api/agent-status-routes.js +264 -0
- package/packages/agent/src/api/agent-transfer-routes.d.ts +1 -1
- package/packages/agent/src/api/agent-transfer-routes.js +1 -1
- package/packages/agent/src/api/app-package-routes.d.ts +7 -0
- package/packages/agent/src/api/app-package-routes.d.ts.map +1 -0
- package/packages/agent/src/api/app-package-routes.js +59 -0
- package/packages/agent/src/api/apps-routes.d.ts +16 -3
- package/packages/agent/src/api/apps-routes.d.ts.map +1 -1
- package/packages/agent/src/api/apps-routes.js +885 -15
- package/packages/agent/src/api/auth-routes.d.ts +1 -1
- package/packages/agent/src/api/auth-routes.d.ts.map +1 -1
- package/packages/agent/src/api/auth-routes.js +67 -2
- package/packages/agent/src/api/avatar-routes.d.ts +11 -0
- package/packages/agent/src/api/avatar-routes.d.ts.map +1 -0
- package/packages/agent/src/api/avatar-routes.js +205 -0
- package/packages/agent/src/api/binance-skill-helpers.d.ts +21 -0
- package/packages/agent/src/api/binance-skill-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/binance-skill-helpers.js +745 -0
- package/packages/agent/src/api/bug-report-routes.d.ts +5 -2
- package/packages/agent/src/api/bug-report-routes.d.ts.map +1 -1
- package/packages/agent/src/api/bug-report-routes.js +155 -8
- package/packages/agent/src/api/build-variant-routes.d.ts +27 -0
- package/packages/agent/src/api/build-variant-routes.d.ts.map +1 -0
- package/packages/agent/src/api/build-variant-routes.js +27 -0
- package/packages/agent/src/api/character-routes.d.ts +7 -5
- package/packages/agent/src/api/character-routes.d.ts.map +1 -1
- package/packages/agent/src/api/character-routes.js +100 -49
- package/packages/agent/src/api/chat-augmentation.d.ts +70 -0
- package/packages/agent/src/api/chat-augmentation.d.ts.map +1 -0
- package/packages/agent/src/api/chat-augmentation.js +464 -0
- package/packages/agent/src/api/chat-routes.d.ts +124 -0
- package/packages/agent/src/api/chat-routes.d.ts.map +1 -0
- package/packages/agent/src/api/chat-routes.js +1841 -0
- package/packages/agent/src/api/chat-text-helpers.d.ts +11 -0
- package/packages/agent/src/api/chat-text-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/chat-text-helpers.js +184 -0
- package/packages/agent/src/api/client-chat-admin.d.ts +19 -0
- package/packages/agent/src/api/client-chat-admin.d.ts.map +1 -0
- package/packages/agent/src/api/client-chat-admin.js +27 -0
- package/packages/agent/src/api/cloud-route-registry.d.ts +22 -0
- package/packages/agent/src/api/cloud-route-registry.d.ts.map +1 -0
- package/packages/agent/src/api/cloud-route-registry.js +20 -0
- package/packages/agent/src/api/compat-utils.d.ts.map +1 -1
- package/packages/agent/src/api/compat-utils.js +1 -5
- package/packages/agent/src/api/config-env.d.ts +43 -0
- package/packages/agent/src/api/config-env.d.ts.map +1 -0
- package/packages/agent/src/api/config-env.js +284 -0
- package/packages/agent/src/api/config-routes.d.ts +40 -0
- package/packages/agent/src/api/config-routes.d.ts.map +1 -0
- package/packages/agent/src/api/config-routes.js +429 -0
- package/packages/agent/src/api/connector-account-routes.d.ts +25 -0
- package/packages/agent/src/api/connector-account-routes.d.ts.map +1 -0
- package/packages/agent/src/api/connector-account-routes.js +740 -0
- package/packages/agent/src/api/connector-health.d.ts +9 -1
- package/packages/agent/src/api/connector-health.d.ts.map +1 -1
- package/packages/agent/src/api/connector-health.js +33 -10
- package/packages/agent/src/api/connector-oauth-callback-auth.d.ts +2 -0
- package/packages/agent/src/api/connector-oauth-callback-auth.d.ts.map +1 -0
- package/packages/agent/src/api/connector-oauth-callback-auth.js +4 -0
- package/packages/agent/src/api/connector-routes.d.ts +36 -0
- package/packages/agent/src/api/connector-routes.d.ts.map +1 -0
- package/packages/agent/src/api/connector-routes.js +184 -0
- package/packages/agent/src/api/conversation-metadata.d.ts +10 -0
- package/packages/agent/src/api/conversation-metadata.d.ts.map +1 -0
- package/packages/agent/src/api/conversation-metadata.js +107 -0
- package/packages/agent/src/api/conversation-routes.d.ts +43 -0
- package/packages/agent/src/api/conversation-routes.d.ts.map +1 -0
- package/packages/agent/src/api/conversation-routes.js +1208 -0
- package/packages/agent/src/api/coordinator-wiring.d.ts +4 -4
- package/packages/agent/src/api/coordinator-wiring.d.ts.map +1 -1
- package/packages/agent/src/api/coordinator-wiring.js +13 -6
- package/packages/agent/src/api/credit-detection.d.ts.map +1 -1
- package/packages/agent/src/api/credit-detection.js +12 -6
- package/packages/agent/src/api/curated-skills-routes.d.ts +22 -0
- package/packages/agent/src/api/curated-skills-routes.d.ts.map +1 -0
- package/packages/agent/src/api/curated-skills-routes.js +295 -0
- package/packages/agent/src/api/database.d.ts +2 -0
- package/packages/agent/src/api/database.d.ts.map +1 -1
- package/packages/agent/src/api/database.js +129 -8
- package/packages/agent/src/api/diagnostics-routes.d.ts +15 -2
- package/packages/agent/src/api/diagnostics-routes.d.ts.map +1 -1
- package/packages/agent/src/api/diagnostics-routes.js +145 -21
- package/packages/agent/src/api/documents-routes.d.ts +9 -0
- package/packages/agent/src/api/documents-routes.d.ts.map +1 -0
- package/packages/agent/src/api/documents-routes.js +26 -0
- package/packages/agent/src/api/documents-service-loader.d.ts +76 -0
- package/packages/agent/src/api/documents-service-loader.d.ts.map +1 -0
- package/packages/agent/src/api/{knowledge-service-loader.js → documents-service-loader.js} +10 -8
- package/packages/agent/src/api/health-routes.d.ts +46 -0
- package/packages/agent/src/api/health-routes.d.ts.map +1 -0
- package/packages/agent/src/api/health-routes.js +450 -0
- package/packages/agent/src/api/inbox-routes.d.ts +47 -0
- package/packages/agent/src/api/inbox-routes.d.ts.map +1 -0
- package/packages/agent/src/api/inbox-routes.js +1579 -0
- package/packages/agent/src/api/index.d.ts +45 -60
- package/packages/agent/src/api/index.d.ts.map +1 -1
- package/packages/agent/src/api/index.js +49 -59
- package/packages/agent/src/api/memory-routes.d.ts +1 -1
- package/packages/agent/src/api/memory-routes.d.ts.map +1 -1
- package/packages/agent/src/api/memory-routes.js +274 -41
- package/packages/agent/src/api/misc-routes.d.ts +64 -0
- package/packages/agent/src/api/misc-routes.d.ts.map +1 -0
- package/packages/agent/src/api/misc-routes.js +569 -0
- package/packages/agent/src/api/mobile-optional-routes.d.ts +3 -0
- package/packages/agent/src/api/mobile-optional-routes.d.ts.map +1 -0
- package/packages/agent/src/api/mobile-optional-routes.js +91 -0
- package/packages/agent/src/api/model-provider-helpers.d.ts +68 -0
- package/packages/agent/src/api/model-provider-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/model-provider-helpers.js +623 -0
- package/packages/agent/src/api/models-routes.d.ts +1 -1
- package/packages/agent/src/api/models-routes.d.ts.map +1 -1
- package/packages/agent/src/api/music-player-route-fallback.d.ts +16 -0
- package/packages/agent/src/api/music-player-route-fallback.d.ts.map +1 -0
- package/packages/agent/src/api/music-player-route-fallback.js +65 -0
- package/packages/agent/src/api/nfa-routes.d.ts +2 -1
- package/packages/agent/src/api/nfa-routes.d.ts.map +1 -1
- package/packages/agent/src/api/nfa-routes.js +10 -10
- package/packages/agent/src/api/onboarding-routes.d.ts +50 -0
- package/packages/agent/src/api/onboarding-routes.d.ts.map +1 -0
- package/packages/agent/src/api/onboarding-routes.js +588 -0
- package/packages/agent/src/api/owner-contact-helpers.d.ts +39 -0
- package/packages/agent/src/api/owner-contact-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/owner-contact-helpers.js +47 -0
- package/packages/agent/src/api/parse-action-block.d.ts +20 -3
- package/packages/agent/src/api/parse-action-block.d.ts.map +1 -1
- package/packages/agent/src/api/parse-action-block.js +77 -6
- package/packages/agent/src/api/permission-request-prompt.d.ts +19 -0
- package/packages/agent/src/api/permission-request-prompt.d.ts.map +1 -0
- package/packages/agent/src/api/permission-request-prompt.js +53 -0
- package/packages/agent/src/api/permissions-routes-extra.d.ts +30 -0
- package/packages/agent/src/api/permissions-routes-extra.d.ts.map +1 -0
- package/packages/agent/src/api/permissions-routes-extra.js +78 -0
- package/packages/agent/src/api/permissions-routes.d.ts +6 -11
- package/packages/agent/src/api/permissions-routes.d.ts.map +1 -1
- package/packages/agent/src/api/permissions-routes.js +230 -27
- package/packages/agent/src/api/plugin-discovery-helpers.d.ts +147 -0
- package/packages/agent/src/api/plugin-discovery-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/plugin-discovery-helpers.js +1118 -0
- package/packages/agent/src/api/plugin-routes.d.ts +144 -0
- package/packages/agent/src/api/plugin-routes.d.ts.map +1 -0
- package/packages/agent/src/api/plugin-routes.js +1285 -0
- package/packages/agent/src/api/plugin-runtime-apply.d.ts +31 -0
- package/packages/agent/src/api/plugin-runtime-apply.d.ts.map +1 -0
- package/packages/agent/src/api/plugin-runtime-apply.js +217 -0
- package/packages/agent/src/api/plugin-validation.d.ts.map +1 -1
- package/packages/agent/src/api/plugin-validation.js +4 -2
- package/packages/agent/src/api/provider-switch-config.d.ts +32 -7
- package/packages/agent/src/api/provider-switch-config.d.ts.map +1 -1
- package/packages/agent/src/api/provider-switch-config.js +627 -225
- package/packages/agent/src/api/provider-switch-routes.d.ts +29 -0
- package/packages/agent/src/api/provider-switch-routes.d.ts.map +1 -0
- package/packages/agent/src/api/provider-switch-routes.js +142 -0
- package/packages/agent/src/api/rate-limiter.d.ts +29 -0
- package/packages/agent/src/api/rate-limiter.d.ts.map +1 -0
- package/packages/agent/src/api/rate-limiter.js +57 -0
- package/packages/agent/src/api/registry-routes.d.ts +5 -2
- package/packages/agent/src/api/registry-routes.d.ts.map +1 -1
- package/packages/agent/src/api/registry-routes.js +13 -5
- package/packages/agent/src/api/registry-service.d.ts +1 -1
- package/packages/agent/src/api/registry-service.d.ts.map +1 -1
- package/packages/agent/src/api/relationships-routes.d.ts +7 -0
- package/packages/agent/src/api/relationships-routes.d.ts.map +1 -0
- package/packages/agent/src/api/relationships-routes.js +287 -0
- package/packages/agent/src/api/runtime-plugin-routes.d.ts +27 -0
- package/packages/agent/src/api/runtime-plugin-routes.d.ts.map +1 -0
- package/packages/agent/src/api/runtime-plugin-routes.js +203 -0
- package/packages/agent/src/api/server-auth.d.ts +46 -0
- package/packages/agent/src/api/server-auth.d.ts.map +1 -0
- package/packages/agent/src/api/server-auth.js +507 -0
- package/packages/agent/src/api/server-autonomy-helpers.d.ts +5 -0
- package/packages/agent/src/api/server-autonomy-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/server-autonomy-helpers.js +28 -0
- package/packages/agent/src/api/server-helpers-auth.d.ts +41 -0
- package/packages/agent/src/api/server-helpers-auth.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers-auth.js +627 -0
- package/packages/agent/src/api/server-helpers-config.d.ts +37 -0
- package/packages/agent/src/api/server-helpers-config.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers-config.js +293 -0
- package/packages/agent/src/api/server-helpers-fetch.d.ts +15 -0
- package/packages/agent/src/api/server-helpers-fetch.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers-fetch.js +149 -0
- package/packages/agent/src/api/server-helpers-mcp.d.ts +12 -0
- package/packages/agent/src/api/server-helpers-mcp.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers-mcp.js +315 -0
- package/packages/agent/src/api/server-helpers-plugin.d.ts +13 -0
- package/packages/agent/src/api/server-helpers-plugin.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers-plugin.js +160 -0
- package/packages/agent/src/api/server-helpers-swarm.d.ts +101 -0
- package/packages/agent/src/api/server-helpers-swarm.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers-swarm.js +646 -0
- package/packages/agent/src/api/server-helpers-wallet.d.ts +18 -0
- package/packages/agent/src/api/server-helpers-wallet.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers-wallet.js +177 -0
- package/packages/agent/src/api/server-helpers.d.ts +96 -0
- package/packages/agent/src/api/server-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/server-helpers.js +595 -0
- package/packages/agent/src/api/server-route-dispatch.d.ts +30 -0
- package/packages/agent/src/api/server-route-dispatch.d.ts.map +1 -0
- package/packages/agent/src/api/server-route-dispatch.js +103 -0
- package/packages/agent/src/api/server-startup.d.ts +16 -0
- package/packages/agent/src/api/server-startup.d.ts.map +1 -0
- package/packages/agent/src/api/server-startup.js +14 -0
- package/packages/agent/src/api/server-types.d.ts +232 -0
- package/packages/agent/src/api/server-types.d.ts.map +1 -0
- package/packages/agent/src/api/server-types.js +6 -0
- package/packages/agent/src/api/server.d.ts +26 -383
- package/packages/agent/src/api/server.d.ts.map +1 -1
- package/packages/agent/src/api/server.js +2022 -12484
- package/packages/agent/src/api/skill-discovery-helpers.d.ts +80 -0
- package/packages/agent/src/api/skill-discovery-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/skill-discovery-helpers.js +385 -0
- package/packages/agent/src/api/skills-routes.d.ts +32 -0
- package/packages/agent/src/api/skills-routes.d.ts.map +1 -0
- package/packages/agent/src/api/skills-routes.js +978 -0
- package/packages/agent/src/api/static-file-server.d.ts +19 -0
- package/packages/agent/src/api/static-file-server.d.ts.map +1 -0
- package/packages/agent/src/api/static-file-server.js +234 -0
- package/packages/agent/src/api/subscription-routes.d.ts +6 -6
- package/packages/agent/src/api/subscription-routes.d.ts.map +1 -1
- package/packages/agent/src/api/subscription-routes.js +84 -14
- package/packages/agent/src/api/task-agent-message-routing.d.ts +10 -0
- package/packages/agent/src/api/task-agent-message-routing.d.ts.map +1 -0
- package/packages/agent/src/api/task-agent-message-routing.js +62 -0
- package/packages/agent/src/api/terminal-execution-routing.d.ts +14 -0
- package/packages/agent/src/api/terminal-execution-routing.d.ts.map +1 -0
- package/packages/agent/src/api/terminal-execution-routing.js +23 -0
- package/packages/agent/src/api/terminal-run-limits.d.ts.map +1 -1
- package/packages/agent/src/api/terminal-run-limits.js +3 -5
- package/packages/agent/src/api/trade-safety.d.ts +35 -0
- package/packages/agent/src/api/trade-safety.d.ts.map +1 -0
- package/packages/agent/src/api/trade-safety.js +62 -0
- package/packages/agent/src/api/training-service-like.d.ts +3 -2
- package/packages/agent/src/api/training-service-like.d.ts.map +1 -1
- package/packages/agent/src/api/travel-provider-relay-routes.d.ts +9 -0
- package/packages/agent/src/api/travel-provider-relay-routes.d.ts.map +1 -0
- package/packages/agent/src/api/travel-provider-relay-routes.js +143 -0
- package/packages/agent/src/api/tx-service.d.ts +6 -0
- package/packages/agent/src/api/tx-service.d.ts.map +1 -1
- package/packages/agent/src/api/tx-service.js +64 -3
- package/packages/agent/src/api/update-routes.d.ts +19 -0
- package/packages/agent/src/api/update-routes.d.ts.map +1 -0
- package/packages/agent/src/api/update-routes.js +54 -0
- package/packages/agent/src/api/wallet-capability.d.ts +33 -0
- package/packages/agent/src/api/wallet-capability.d.ts.map +1 -0
- package/packages/agent/src/api/wallet-capability.js +193 -0
- package/packages/agent/src/api/wallet-dex-prices.d.ts +0 -18
- package/packages/agent/src/api/wallet-dex-prices.d.ts.map +1 -1
- package/packages/agent/src/api/wallet-dex-prices.js +14 -38
- package/packages/agent/src/api/wallet-env-sync.d.ts +2 -0
- package/packages/agent/src/api/wallet-env-sync.d.ts.map +1 -0
- package/packages/agent/src/api/wallet-env-sync.js +108 -0
- package/packages/agent/src/api/wallet-evm-balance.d.ts +8 -1
- package/packages/agent/src/api/wallet-evm-balance.d.ts.map +1 -1
- package/packages/agent/src/api/wallet-evm-balance.js +5 -5
- package/packages/agent/src/api/wallet-routes.d.ts +20 -12
- package/packages/agent/src/api/wallet-routes.d.ts.map +1 -1
- package/packages/agent/src/api/wallet-routes.js +593 -37
- package/packages/agent/src/api/wallet-rpc.d.ts +14 -11
- package/packages/agent/src/api/wallet-rpc.d.ts.map +1 -1
- package/packages/agent/src/api/wallet-rpc.js +108 -38
- package/packages/agent/src/api/wallet-trading-profile.d.ts +2 -22
- package/packages/agent/src/api/wallet-trading-profile.d.ts.map +1 -1
- package/packages/agent/src/api/wallet-trading-profile.js +27 -30
- package/packages/agent/src/api/wallet.d.ts +38 -5
- package/packages/agent/src/api/wallet.d.ts.map +1 -1
- package/packages/agent/src/api/wallet.js +469 -202
- package/packages/agent/src/api/workbench-helpers.d.ts +39 -0
- package/packages/agent/src/api/workbench-helpers.d.ts.map +1 -0
- package/packages/agent/src/api/workbench-helpers.js +137 -0
- package/packages/agent/src/api/workbench-routes.d.ts +43 -0
- package/packages/agent/src/api/workbench-routes.d.ts.map +1 -0
- package/packages/agent/src/api/workbench-routes.js +265 -0
- package/packages/agent/src/api/x-relay-routes.d.ts +27 -0
- package/packages/agent/src/api/x-relay-routes.d.ts.map +1 -0
- package/packages/agent/src/api/x-relay-routes.js +134 -0
- package/packages/agent/src/auth/account-storage.d.ts +48 -0
- package/packages/agent/src/auth/account-storage.d.ts.map +1 -0
- package/packages/agent/src/auth/account-storage.js +229 -0
- package/packages/agent/src/auth/anthropic.d.ts +3 -4
- package/packages/agent/src/auth/anthropic.d.ts.map +1 -1
- package/packages/agent/src/auth/anthropic.js +5 -7
- package/packages/agent/src/auth/claude-code-stealth-preload.d.ts +2 -0
- package/packages/agent/src/auth/claude-code-stealth-preload.d.ts.map +1 -0
- package/packages/agent/src/auth/claude-code-stealth-preload.js +2 -0
- package/packages/agent/src/auth/claude-code-stealth.d.ts.map +1 -1
- package/packages/agent/src/auth/claude-code-stealth.js +21 -9
- package/packages/agent/src/auth/credentials.d.ts +62 -17
- package/packages/agent/src/auth/credentials.d.ts.map +1 -1
- package/packages/agent/src/auth/credentials.js +492 -121
- package/packages/agent/src/auth/index.d.ts +7 -6
- package/packages/agent/src/auth/index.d.ts.map +1 -1
- package/packages/agent/src/auth/index.js +7 -3
- package/packages/agent/src/auth/oauth-flow.d.ts +106 -0
- package/packages/agent/src/auth/oauth-flow.d.ts.map +1 -0
- package/packages/agent/src/auth/oauth-flow.js +349 -0
- package/packages/agent/src/auth/openai-codex.d.ts +2 -2
- package/packages/agent/src/auth/openai-codex.d.ts.map +1 -1
- package/packages/agent/src/auth/openai-codex.js +17 -13
- package/packages/agent/src/auth/refresh-mutex.d.ts +19 -0
- package/packages/agent/src/auth/refresh-mutex.d.ts.map +1 -0
- package/packages/agent/src/auth/refresh-mutex.js +33 -0
- package/packages/agent/src/auth/types.d.ts +42 -2
- package/packages/agent/src/auth/types.d.ts.map +1 -1
- package/packages/agent/src/auth/types.js +142 -1
- package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.d.ts +48 -0
- package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.d.ts.map +1 -0
- package/packages/agent/src/auth/vendor/pi-oauth/anthropic-login.js +113 -0
- package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.d.ts +26 -0
- package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.d.ts.map +1 -0
- package/packages/agent/src/auth/vendor/pi-oauth/openai-codex-login.js +343 -0
- package/packages/agent/src/auth/vendor/pi-oauth/pkce.d.ts +9 -0
- package/packages/agent/src/auth/vendor/pi-oauth/pkce.d.ts.map +1 -0
- package/packages/agent/src/auth/vendor/pi-oauth/pkce.js +21 -0
- package/packages/agent/src/autonomy/index.d.ts +48 -0
- package/packages/agent/src/autonomy/index.d.ts.map +1 -0
- package/packages/agent/src/autonomy/index.js +344 -0
- package/packages/agent/src/awareness/index.d.ts +2 -0
- package/packages/agent/src/awareness/index.d.ts.map +1 -0
- package/packages/agent/src/awareness/index.js +1 -0
- package/packages/agent/src/awareness/registry.d.ts +1 -26
- package/packages/agent/src/awareness/registry.d.ts.map +1 -1
- package/packages/agent/src/awareness/registry.js +1 -161
- package/packages/agent/src/bin.js +46 -1
- package/packages/agent/src/cli/benchmark.d.ts +10 -0
- package/packages/agent/src/cli/benchmark.d.ts.map +1 -0
- package/packages/agent/src/cli/benchmark.js +293 -0
- package/packages/agent/src/cli/index.d.ts.map +1 -1
- package/packages/agent/src/cli/index.js +58 -4
- package/packages/agent/src/config/config.d.ts +2 -2
- package/packages/agent/src/config/config.d.ts.map +1 -1
- package/packages/agent/src/config/config.js +185 -18
- package/packages/agent/src/config/env-vars.d.ts +7 -1
- package/packages/agent/src/config/env-vars.d.ts.map +1 -1
- package/packages/agent/src/config/env-vars.js +205 -0
- package/packages/agent/src/config/feature-flags.d.ts +17 -0
- package/packages/agent/src/config/feature-flags.d.ts.map +1 -0
- package/packages/agent/src/config/feature-flags.js +37 -0
- package/packages/agent/src/config/includes.d.ts.map +1 -1
- package/packages/agent/src/config/includes.js +6 -5
- package/packages/agent/src/config/index.d.ts +10 -15
- package/packages/agent/src/config/index.d.ts.map +1 -1
- package/packages/agent/src/config/index.js +9 -15
- package/packages/agent/src/config/model-metadata.d.ts +20 -0
- package/packages/agent/src/config/model-metadata.d.ts.map +1 -0
- package/packages/agent/src/config/model-metadata.js +133 -0
- package/packages/agent/src/config/owner-contacts.d.ts +42 -0
- package/packages/agent/src/config/owner-contacts.d.ts.map +1 -0
- package/packages/agent/src/config/owner-contacts.js +238 -0
- package/packages/agent/src/config/paths.d.ts +10 -6
- package/packages/agent/src/config/paths.d.ts.map +1 -1
- package/packages/agent/src/config/paths.js +43 -45
- package/packages/agent/src/config/plugin-auto-enable.d.ts +12 -15
- package/packages/agent/src/config/plugin-auto-enable.d.ts.map +1 -1
- package/packages/agent/src/config/plugin-auto-enable.js +12 -384
- package/packages/agent/src/config/plugin-widgets.d.ts +29 -0
- package/packages/agent/src/config/plugin-widgets.d.ts.map +1 -0
- package/packages/agent/src/config/plugin-widgets.js +104 -0
- package/packages/agent/src/config/schema.d.ts +2 -2
- package/packages/agent/src/config/schema.d.ts.map +1 -1
- package/packages/agent/src/config/schema.js +24 -24
- package/packages/agent/src/config/types.agent-defaults.d.ts +1 -330
- package/packages/agent/src/config/types.agent-defaults.d.ts.map +1 -1
- package/packages/agent/src/config/types.agent-defaults.js +1 -1
- package/packages/agent/src/config/types.agents.d.ts +1 -109
- package/packages/agent/src/config/types.agents.d.ts.map +1 -1
- package/packages/agent/src/config/types.agents.js +1 -1
- package/packages/agent/src/config/types.d.ts +1 -7
- package/packages/agent/src/config/types.d.ts.map +1 -1
- package/packages/agent/src/config/types.eliza.d.ts +1 -635
- package/packages/agent/src/config/types.eliza.d.ts.map +1 -1
- package/packages/agent/src/config/types.eliza.js +1 -1
- package/packages/agent/src/config/types.gateway.d.ts +1 -215
- package/packages/agent/src/config/types.gateway.d.ts.map +1 -1
- package/packages/agent/src/config/types.gateway.js +1 -1
- package/packages/agent/src/config/types.hooks.d.ts +1 -106
- package/packages/agent/src/config/types.hooks.d.ts.map +1 -1
- package/packages/agent/src/config/types.hooks.js +1 -1
- package/packages/agent/src/config/types.js +1 -7
- package/packages/agent/src/config/types.messages.d.ts +1 -175
- package/packages/agent/src/config/types.messages.d.ts.map +1 -1
- package/packages/agent/src/config/types.messages.js +1 -1
- package/packages/agent/src/config/types.tools.d.ts +1 -399
- package/packages/agent/src/config/types.tools.d.ts.map +1 -1
- package/packages/agent/src/config/types.tools.js +1 -1
- package/packages/agent/src/config/zod-schema.agent-runtime.d.ts +111 -9
- package/packages/agent/src/config/zod-schema.agent-runtime.d.ts.map +1 -1
- package/packages/agent/src/config/zod-schema.agent-runtime.js +89 -2
- package/packages/agent/src/config/zod-schema.core.d.ts +308 -50
- package/packages/agent/src/config/zod-schema.core.d.ts.map +1 -1
- package/packages/agent/src/config/zod-schema.core.js +81 -14
- package/packages/agent/src/config/zod-schema.d.ts +500 -1913
- package/packages/agent/src/config/zod-schema.d.ts.map +1 -1
- package/packages/agent/src/config/zod-schema.js +84 -16
- package/packages/agent/src/config/zod-schema.providers-core.d.ts +135 -359
- package/packages/agent/src/config/zod-schema.providers-core.d.ts.map +1 -1
- package/packages/agent/src/config/zod-schema.providers-core.js +51 -88
- package/packages/agent/src/config/zod-schema.session.d.ts +1 -1
- package/packages/agent/src/config/zod-schema.session.js +1 -1
- package/packages/agent/src/contracts/awareness.d.ts +1 -1
- package/packages/agent/src/contracts/index.d.ts +1 -8
- package/packages/agent/src/contracts/index.d.ts.map +1 -1
- package/packages/agent/src/contracts/index.js +1 -8
- package/packages/agent/src/contracts/onboarding-provider-defaults.d.ts +177 -0
- package/packages/agent/src/contracts/onboarding-provider-defaults.d.ts.map +1 -0
- package/packages/agent/src/contracts/{onboarding.js → onboarding-provider-defaults.js} +21 -109
- package/packages/agent/src/diagnostics/index.d.ts +2 -0
- package/packages/agent/src/diagnostics/index.d.ts.map +1 -0
- package/packages/agent/src/diagnostics/index.js +1 -0
- package/packages/agent/src/diagnostics/integration-observability.d.ts +1 -1
- package/packages/agent/src/diagnostics/integration-observability.d.ts.map +1 -1
- package/packages/agent/src/diagnostics/integration-observability.js +13 -3
- package/packages/agent/src/hooks/discovery.d.ts +1 -1
- package/packages/agent/src/hooks/discovery.d.ts.map +1 -1
- package/packages/agent/src/hooks/discovery.js +10 -3
- package/packages/agent/src/hooks/eligibility.d.ts +2 -2
- package/packages/agent/src/hooks/eligibility.d.ts.map +1 -1
- package/packages/agent/src/hooks/eligibility.js +7 -2
- package/packages/agent/src/hooks/index.d.ts +2 -2
- package/packages/agent/src/hooks/index.d.ts.map +1 -1
- package/packages/agent/src/hooks/index.js +2 -2
- package/packages/agent/src/hooks/loader.d.ts +2 -2
- package/packages/agent/src/hooks/loader.d.ts.map +1 -1
- package/packages/agent/src/hooks/loader.js +50 -12
- package/packages/agent/src/hooks/registry.d.ts +1 -1
- package/packages/agent/src/hooks/registry.d.ts.map +1 -1
- package/packages/agent/src/index.d.ts +72 -19
- package/packages/agent/src/index.d.ts.map +1 -1
- package/packages/agent/src/index.js +104 -19
- package/packages/agent/src/providers/admin-panel.d.ts +4 -0
- package/packages/agent/src/providers/admin-panel.d.ts.map +1 -0
- package/packages/agent/src/providers/admin-panel.js +89 -0
- package/packages/agent/src/providers/admin-trust.d.ts.map +1 -1
- package/packages/agent/src/providers/admin-trust.js +20 -33
- package/packages/agent/src/providers/automation-terminal-bridge.d.ts +3 -0
- package/packages/agent/src/providers/automation-terminal-bridge.d.ts.map +1 -0
- package/packages/agent/src/providers/automation-terminal-bridge.js +77 -0
- package/packages/agent/src/providers/conversation-proximity.d.ts +3 -0
- package/packages/agent/src/providers/conversation-proximity.d.ts.map +1 -0
- package/packages/agent/src/providers/conversation-proximity.js +62 -0
- package/packages/agent/src/providers/escalation-trigger.d.ts +15 -0
- package/packages/agent/src/providers/escalation-trigger.d.ts.map +1 -0
- package/packages/agent/src/providers/escalation-trigger.js +171 -0
- package/packages/agent/src/providers/index.d.ts +19 -0
- package/packages/agent/src/providers/index.d.ts.map +1 -0
- package/packages/agent/src/providers/index.js +18 -0
- package/packages/agent/src/providers/local-models.d.ts +118 -0
- package/packages/agent/src/providers/local-models.d.ts.map +1 -0
- package/packages/agent/src/providers/local-models.js +418 -0
- package/packages/agent/src/providers/media-provider.d.ts +233 -0
- package/packages/agent/src/providers/media-provider.d.ts.map +1 -0
- package/packages/agent/src/providers/media-provider.js +1474 -0
- package/packages/agent/src/providers/page-scoped-context.d.ts +3 -0
- package/packages/agent/src/providers/page-scoped-context.d.ts.map +1 -0
- package/packages/agent/src/providers/page-scoped-context.js +551 -0
- package/packages/agent/src/providers/pending-permissions-provider.d.ts +19 -0
- package/packages/agent/src/providers/pending-permissions-provider.d.ts.map +1 -0
- package/packages/agent/src/providers/pending-permissions-provider.js +104 -0
- package/packages/agent/src/providers/recent-conversations.d.ts +3 -0
- package/packages/agent/src/providers/recent-conversations.d.ts.map +1 -0
- package/packages/agent/src/providers/recent-conversations.js +100 -0
- package/packages/agent/src/providers/relevant-conversations.d.ts +3 -0
- package/packages/agent/src/providers/relevant-conversations.d.ts.map +1 -0
- package/packages/agent/src/providers/relevant-conversations.js +99 -0
- package/packages/agent/src/providers/role-backfill.d.ts +18 -0
- package/packages/agent/src/providers/role-backfill.d.ts.map +1 -0
- package/packages/agent/src/providers/role-backfill.js +86 -0
- package/packages/agent/src/providers/rolodex.d.ts +3 -0
- package/packages/agent/src/providers/rolodex.d.ts.map +1 -0
- package/packages/agent/src/providers/rolodex.js +83 -0
- package/packages/agent/src/providers/self-status.d.ts +4 -0
- package/packages/agent/src/providers/self-status.d.ts.map +1 -0
- package/packages/agent/src/providers/self-status.js +22 -0
- package/packages/agent/src/providers/session-bridge.d.ts.map +1 -1
- package/packages/agent/src/providers/session-bridge.js +6 -1
- package/packages/agent/src/providers/session-utils.d.ts +1 -1
- package/packages/agent/src/providers/session-utils.d.ts.map +1 -1
- package/packages/agent/src/providers/session-utils.js +2 -3
- package/packages/agent/src/providers/simple-mode.d.ts.map +1 -1
- package/packages/agent/src/providers/simple-mode.js +18 -54
- package/packages/agent/src/providers/skill-provider.d.ts +16 -0
- package/packages/agent/src/providers/skill-provider.d.ts.map +1 -0
- package/packages/agent/src/providers/skill-provider.js +353 -0
- package/packages/agent/src/providers/tasks.d.ts +9 -0
- package/packages/agent/src/providers/tasks.d.ts.map +1 -0
- package/packages/agent/src/providers/tasks.js +118 -0
- package/packages/agent/src/providers/ui-catalog.d.ts.map +1 -1
- package/packages/agent/src/providers/ui-catalog.js +15 -38
- package/packages/agent/src/providers/user-name.d.ts +11 -0
- package/packages/agent/src/providers/user-name.d.ts.map +1 -0
- package/packages/agent/src/providers/user-name.js +46 -0
- package/packages/agent/src/providers/workspace-provider.d.ts +3 -11
- package/packages/agent/src/providers/workspace-provider.d.ts.map +1 -1
- package/packages/agent/src/providers/workspace-provider.js +27 -11
- package/packages/agent/src/providers/workspace.d.ts +2 -3
- package/packages/agent/src/providers/workspace.d.ts.map +1 -1
- package/packages/agent/src/providers/workspace.js +81 -68
- package/packages/agent/src/runtime/advanced-capabilities-config.d.ts +8 -0
- package/packages/agent/src/runtime/advanced-capabilities-config.d.ts.map +1 -0
- package/packages/agent/src/runtime/advanced-capabilities-config.js +41 -0
- package/packages/agent/src/runtime/agent-wallets.d.ts +138 -0
- package/packages/agent/src/runtime/agent-wallets.d.ts.map +1 -0
- package/packages/agent/src/runtime/agent-wallets.js +308 -0
- package/packages/agent/src/runtime/analysis-mode-flag.d.ts +93 -0
- package/packages/agent/src/runtime/analysis-mode-flag.d.ts.map +1 -0
- package/packages/agent/src/runtime/analysis-mode-flag.js +131 -0
- package/packages/agent/src/runtime/android-app-plugins.d.ts +13 -0
- package/packages/agent/src/runtime/android-app-plugins.d.ts.map +1 -0
- package/packages/agent/src/runtime/android-app-plugins.js +48 -0
- package/packages/agent/src/runtime/aosp-dflash-adapter.d.ts +99 -0
- package/packages/agent/src/runtime/aosp-dflash-adapter.d.ts.map +1 -0
- package/packages/agent/src/runtime/aosp-dflash-adapter.js +332 -0
- package/packages/agent/src/runtime/build-character-config.d.ts +2 -0
- package/packages/agent/src/runtime/build-character-config.d.ts.map +1 -0
- package/packages/agent/src/runtime/build-character-config.js +176 -0
- package/packages/agent/src/runtime/conversation-compactor-runtime.d.ts +141 -0
- package/packages/agent/src/runtime/conversation-compactor-runtime.d.ts.map +1 -0
- package/packages/agent/src/runtime/conversation-compactor-runtime.js +460 -0
- package/packages/agent/src/runtime/conversation-compactor.d.ts +38 -0
- package/packages/agent/src/runtime/conversation-compactor.d.ts.map +1 -0
- package/packages/agent/src/runtime/conversation-compactor.js +1121 -0
- package/packages/agent/src/runtime/conversation-compactor.types.d.ts +102 -0
- package/packages/agent/src/runtime/conversation-compactor.types.d.ts.map +1 -0
- package/packages/agent/src/runtime/conversation-compactor.types.js +30 -0
- package/packages/agent/src/runtime/core-plugins.d.ts +50 -0
- package/packages/agent/src/runtime/core-plugins.d.ts.map +1 -1
- package/packages/agent/src/runtime/core-plugins.js +85 -16
- package/packages/agent/src/runtime/custom-actions.d.ts +5 -2
- package/packages/agent/src/runtime/custom-actions.d.ts.map +1 -1
- package/packages/agent/src/runtime/custom-actions.js +93 -14
- package/packages/agent/src/runtime/default-documents.d.ts +21 -0
- package/packages/agent/src/runtime/default-documents.d.ts.map +1 -0
- package/packages/agent/src/runtime/default-documents.js +283 -0
- package/packages/agent/src/runtime/eliza-plugin.d.ts +1 -1
- package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
- package/packages/agent/src/runtime/eliza-plugin.js +142 -67
- package/packages/agent/src/runtime/eliza.d.ts +23 -119
- package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
- package/packages/agent/src/runtime/eliza.js +1512 -2085
- package/packages/agent/src/runtime/embedding-presets.d.ts.map +1 -1
- package/packages/agent/src/runtime/embedding-presets.js +27 -20
- package/packages/agent/src/runtime/first-time-setup.d.ts +47 -0
- package/packages/agent/src/runtime/first-time-setup.d.ts.map +1 -0
- package/packages/agent/src/runtime/first-time-setup.js +704 -0
- package/packages/agent/src/runtime/index.d.ts +19 -8
- package/packages/agent/src/runtime/index.d.ts.map +1 -1
- package/packages/agent/src/runtime/index.js +19 -8
- package/packages/agent/src/runtime/load-plugin-from-vfs.d.ts +54 -0
- package/packages/agent/src/runtime/load-plugin-from-vfs.d.ts.map +1 -0
- package/packages/agent/src/runtime/load-plugin-from-vfs.js +86 -0
- package/packages/agent/src/runtime/local-execution-mode.d.ts +11 -0
- package/packages/agent/src/runtime/local-execution-mode.d.ts.map +1 -0
- package/packages/agent/src/runtime/local-execution-mode.js +10 -0
- package/packages/agent/src/runtime/model-resolution.d.ts +2 -0
- package/packages/agent/src/runtime/model-resolution.d.ts.map +1 -0
- package/packages/agent/src/runtime/model-resolution.js +55 -0
- package/packages/agent/src/runtime/native-runtime-features.d.ts +4 -0
- package/packages/agent/src/runtime/native-runtime-features.d.ts.map +1 -0
- package/packages/agent/src/runtime/native-runtime-features.js +10 -0
- package/packages/agent/src/runtime/onboarding-names.d.ts +3 -3
- package/packages/agent/src/runtime/onboarding-names.d.ts.map +1 -1
- package/packages/agent/src/runtime/onboarding-names.js +14 -7
- package/packages/agent/src/runtime/operations/classifier.d.ts +36 -0
- package/packages/agent/src/runtime/operations/classifier.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/classifier.js +72 -0
- package/packages/agent/src/runtime/operations/cold-strategy.d.ts +19 -0
- package/packages/agent/src/runtime/operations/cold-strategy.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/cold-strategy.js +50 -0
- package/packages/agent/src/runtime/operations/health-checks.d.ts +25 -0
- package/packages/agent/src/runtime/operations/health-checks.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/health-checks.js +186 -0
- package/packages/agent/src/runtime/operations/health.d.ts +32 -0
- package/packages/agent/src/runtime/operations/health.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/health.js +139 -0
- package/packages/agent/src/runtime/operations/index.d.ts +17 -0
- package/packages/agent/src/runtime/operations/index.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/index.js +15 -0
- package/packages/agent/src/runtime/operations/manager.d.ts +70 -0
- package/packages/agent/src/runtime/operations/manager.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/manager.js +202 -0
- package/packages/agent/src/runtime/operations/reload-hot.d.ts +43 -0
- package/packages/agent/src/runtime/operations/reload-hot.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/reload-hot.js +181 -0
- package/packages/agent/src/runtime/operations/repository.d.ts +66 -0
- package/packages/agent/src/runtime/operations/repository.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/repository.js +319 -0
- package/packages/agent/src/runtime/operations/types.d.ts +203 -0
- package/packages/agent/src/runtime/operations/types.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/types.js +18 -0
- package/packages/agent/src/runtime/operations/vault-bridge.d.ts +81 -0
- package/packages/agent/src/runtime/operations/vault-bridge.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/vault-bridge.js +133 -0
- package/packages/agent/src/runtime/owner-entity.d.ts +4 -0
- package/packages/agent/src/runtime/owner-entity.d.ts.map +1 -0
- package/packages/agent/src/runtime/owner-entity.js +30 -0
- package/packages/agent/src/runtime/pglite-error-compat.d.ts +28 -0
- package/packages/agent/src/runtime/pglite-error-compat.d.ts.map +1 -0
- package/packages/agent/src/runtime/pglite-error-compat.js +54 -0
- package/packages/agent/src/runtime/plugin-collector.d.ts +22 -0
- package/packages/agent/src/runtime/plugin-collector.d.ts.map +1 -0
- package/packages/agent/src/runtime/plugin-collector.js +503 -0
- package/packages/agent/src/runtime/plugin-lifecycle.d.ts +45 -0
- package/packages/agent/src/runtime/plugin-lifecycle.d.ts.map +1 -0
- package/packages/agent/src/runtime/plugin-lifecycle.js +602 -0
- package/packages/agent/src/runtime/plugin-resolver.d.ts +46 -0
- package/packages/agent/src/runtime/plugin-resolver.d.ts.map +1 -0
- package/packages/agent/src/runtime/plugin-resolver.js +1375 -0
- package/packages/agent/src/runtime/plugin-role-gating.d.ts +24 -0
- package/packages/agent/src/runtime/plugin-role-gating.d.ts.map +1 -0
- package/packages/agent/src/runtime/plugin-role-gating.js +106 -0
- package/packages/agent/src/runtime/plugin-types.d.ts +64 -0
- package/packages/agent/src/runtime/plugin-types.d.ts.map +1 -0
- package/packages/agent/src/runtime/plugin-types.js +306 -0
- package/packages/agent/src/runtime/prompt-compaction.d.ts +98 -0
- package/packages/agent/src/runtime/prompt-compaction.d.ts.map +1 -0
- package/packages/agent/src/runtime/prompt-compaction.js +362 -0
- package/packages/agent/src/runtime/prompt-optimization.d.ts +47 -0
- package/packages/agent/src/runtime/prompt-optimization.d.ts.map +1 -0
- package/packages/agent/src/runtime/prompt-optimization.js +1123 -0
- package/packages/agent/src/runtime/release-plugin-policy.d.ts.map +1 -1
- package/packages/agent/src/runtime/release-plugin-policy.js +2 -4
- package/packages/agent/src/runtime/restart.d.ts +5 -41
- package/packages/agent/src/runtime/restart.d.ts.map +1 -1
- package/packages/agent/src/runtime/restart.js +5 -42
- package/packages/agent/src/runtime/roles/src/index.d.ts +24 -0
- package/packages/agent/src/runtime/roles/src/index.d.ts.map +1 -0
- package/packages/agent/src/runtime/roles/src/index.js +255 -0
- package/packages/agent/src/runtime/roles/src/provider.d.ts +7 -0
- package/packages/agent/src/runtime/roles/src/provider.d.ts.map +1 -0
- package/packages/agent/src/runtime/roles/src/provider.js +138 -0
- package/packages/agent/src/runtime/roles/src/types.d.ts +3 -0
- package/packages/agent/src/runtime/roles/src/types.d.ts.map +1 -0
- package/packages/agent/src/runtime/roles/src/types.js +1 -0
- package/packages/agent/src/runtime/roles/src/utils.d.ts +2 -0
- package/packages/agent/src/runtime/roles/src/utils.d.ts.map +1 -0
- package/packages/agent/src/runtime/roles/src/utils.js +1 -0
- package/packages/agent/src/runtime/roles.d.ts +3 -0
- package/packages/agent/src/runtime/roles.d.ts.map +1 -0
- package/packages/agent/src/runtime/roles.js +5 -0
- package/packages/agent/src/runtime/subagent-output.d.ts +51 -0
- package/packages/agent/src/runtime/subagent-output.d.ts.map +1 -0
- package/packages/agent/src/runtime/subagent-output.js +173 -0
- package/packages/agent/src/runtime/task-heartbeat.d.ts +22 -0
- package/packages/agent/src/runtime/task-heartbeat.d.ts.map +1 -0
- package/packages/agent/src/runtime/task-heartbeat.js +84 -0
- package/packages/agent/src/runtime/tool-call-cache/cache.d.ts +62 -0
- package/packages/agent/src/runtime/tool-call-cache/cache.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/cache.js +123 -0
- package/packages/agent/src/runtime/tool-call-cache/disk-store.d.ts +23 -0
- package/packages/agent/src/runtime/tool-call-cache/disk-store.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/disk-store.js +55 -0
- package/packages/agent/src/runtime/tool-call-cache/index.d.ts +7 -0
- package/packages/agent/src/runtime/tool-call-cache/index.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/index.js +4 -0
- package/packages/agent/src/runtime/tool-call-cache/key.d.ts +11 -0
- package/packages/agent/src/runtime/tool-call-cache/key.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/key.js +31 -0
- package/packages/agent/src/runtime/tool-call-cache/lru.d.ts +17 -0
- package/packages/agent/src/runtime/tool-call-cache/lru.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/lru.js +46 -0
- package/packages/agent/src/runtime/tool-call-cache/redact.d.ts +17 -0
- package/packages/agent/src/runtime/tool-call-cache/redact.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/redact.js +77 -0
- package/packages/agent/src/runtime/tool-call-cache/registry.d.ts +18 -0
- package/packages/agent/src/runtime/tool-call-cache/registry.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/registry.js +66 -0
- package/packages/agent/src/runtime/tool-call-cache/types.d.ts +50 -0
- package/packages/agent/src/runtime/tool-call-cache/types.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache/types.js +10 -0
- package/packages/agent/src/runtime/tool-call-cache-wrapper.d.ts +39 -0
- package/packages/agent/src/runtime/tool-call-cache-wrapper.d.ts.map +1 -0
- package/packages/agent/src/runtime/tool-call-cache-wrapper.js +72 -0
- package/packages/agent/src/runtime/trajectory-export.d.ts +18 -0
- package/packages/agent/src/runtime/trajectory-export.d.ts.map +1 -0
- package/packages/agent/src/runtime/trajectory-export.js +109 -0
- package/packages/agent/src/runtime/trajectory-internals.d.ts +242 -0
- package/packages/agent/src/runtime/trajectory-internals.d.ts.map +1 -0
- package/packages/agent/src/runtime/trajectory-internals.js +1281 -0
- package/packages/agent/src/runtime/trajectory-persistence.d.ts +13 -212
- package/packages/agent/src/runtime/trajectory-persistence.d.ts.map +1 -1
- package/packages/agent/src/runtime/trajectory-persistence.js +25 -1952
- package/packages/agent/src/runtime/trajectory-query.d.ts +8 -0
- package/packages/agent/src/runtime/trajectory-query.d.ts.map +1 -0
- package/packages/agent/src/runtime/trajectory-query.js +27 -0
- package/packages/agent/src/runtime/trajectory-storage.d.ts +91 -0
- package/packages/agent/src/runtime/trajectory-storage.d.ts.map +1 -0
- package/packages/agent/src/runtime/trajectory-storage.js +1093 -0
- package/packages/agent/src/runtime/vault-profile-resolver.d.ts +37 -0
- package/packages/agent/src/runtime/vault-profile-resolver.d.ts.map +1 -0
- package/packages/agent/src/runtime/vault-profile-resolver.js +79 -0
- package/packages/agent/src/runtime/version.js +1 -1
- package/packages/agent/src/runtime/web-search-tools.d.ts +22 -0
- package/packages/agent/src/runtime/web-search-tools.d.ts.map +1 -0
- package/packages/agent/src/runtime/web-search-tools.js +151 -0
- package/packages/agent/src/security/access.d.ts +17 -0
- package/packages/agent/src/security/access.d.ts.map +1 -0
- package/packages/agent/src/security/access.js +54 -0
- package/packages/agent/src/security/audit-log.d.ts +0 -2
- package/packages/agent/src/security/audit-log.d.ts.map +1 -1
- package/packages/agent/src/security/index.d.ts +4 -0
- package/packages/agent/src/security/index.d.ts.map +1 -0
- package/packages/agent/src/security/index.js +3 -0
- package/packages/agent/src/services/agent-export.d.ts.map +1 -1
- package/packages/agent/src/services/agent-export.js +58 -23
- package/packages/agent/src/services/app-manager-agents-list-guard.d.ts +4 -0
- package/packages/agent/src/services/app-manager-agents-list-guard.d.ts.map +1 -0
- package/packages/agent/src/services/app-manager-agents-list-guard.js +15 -0
- package/packages/agent/src/services/app-manager.d.ts +78 -4
- package/packages/agent/src/services/app-manager.d.ts.map +1 -1
- package/packages/agent/src/services/app-manager.js +1429 -176
- package/packages/agent/src/services/app-package-modules.d.ts +22 -0
- package/packages/agent/src/services/app-package-modules.d.ts.map +1 -0
- package/packages/agent/src/services/app-package-modules.js +397 -0
- package/packages/agent/src/services/app-run-store.d.ts +6 -0
- package/packages/agent/src/services/app-run-store.d.ts.map +1 -0
- package/packages/agent/src/services/app-run-store.js +547 -0
- package/packages/agent/src/services/app-session-gate.d.ts +15 -0
- package/packages/agent/src/services/app-session-gate.d.ts.map +1 -0
- package/packages/agent/src/services/app-session-gate.js +71 -0
- package/packages/agent/src/services/capability-broker.d.ts +89 -0
- package/packages/agent/src/services/capability-broker.d.ts.map +1 -0
- package/packages/agent/src/services/capability-broker.js +339 -0
- package/packages/agent/src/services/character-history.d.ts +69 -0
- package/packages/agent/src/services/character-history.d.ts.map +1 -0
- package/packages/agent/src/services/character-history.js +280 -0
- package/packages/agent/src/services/character-persistence.d.ts +25 -0
- package/packages/agent/src/services/character-persistence.d.ts.map +1 -0
- package/packages/agent/src/services/character-persistence.js +167 -0
- package/packages/agent/src/services/client-chat-sender.d.ts +19 -0
- package/packages/agent/src/services/client-chat-sender.d.ts.map +1 -0
- package/packages/agent/src/services/client-chat-sender.js +88 -0
- package/packages/agent/src/services/config-plugin-manager.d.ts +6 -0
- package/packages/agent/src/services/config-plugin-manager.d.ts.map +1 -0
- package/packages/agent/src/services/config-plugin-manager.js +53 -0
- package/packages/agent/src/services/connector-setup-service.d.ts +48 -0
- package/packages/agent/src/services/connector-setup-service.d.ts.map +1 -0
- package/packages/agent/src/services/connector-setup-service.js +60 -0
- package/packages/agent/src/services/escalation.d.ts +35 -0
- package/packages/agent/src/services/escalation.d.ts.map +1 -0
- package/packages/agent/src/services/escalation.js +376 -0
- package/packages/agent/src/services/evm-signing-capability.d.ts +33 -0
- package/packages/agent/src/services/evm-signing-capability.d.ts.map +1 -0
- package/packages/agent/src/services/evm-signing-capability.js +52 -0
- package/packages/agent/src/services/external-bridge-state.d.ts +10 -0
- package/packages/agent/src/services/external-bridge-state.d.ts.map +1 -0
- package/packages/agent/src/services/external-bridge-state.js +14 -0
- package/packages/agent/src/services/hosted-tools.d.ts +70 -0
- package/packages/agent/src/services/hosted-tools.d.ts.map +1 -0
- package/packages/agent/src/services/hosted-tools.js +87 -0
- package/packages/agent/src/services/index.d.ts +26 -17
- package/packages/agent/src/services/index.d.ts.map +1 -1
- package/packages/agent/src/services/index.js +32 -17
- package/packages/agent/src/services/js-runtime-bridge.d.ts +105 -0
- package/packages/agent/src/services/js-runtime-bridge.d.ts.map +1 -0
- package/packages/agent/src/services/js-runtime-bridge.js +217 -0
- package/packages/agent/src/services/mcp-marketplace.js +1 -1
- package/packages/agent/src/services/media-generation.d.ts +10 -0
- package/packages/agent/src/services/media-generation.d.ts.map +1 -0
- package/packages/agent/src/services/media-generation.js +102 -0
- package/packages/agent/src/services/overlay-app-presence.d.ts +9 -0
- package/packages/agent/src/services/overlay-app-presence.d.ts.map +1 -0
- package/packages/agent/src/services/overlay-app-presence.js +18 -0
- package/packages/agent/src/services/owner-name.d.ts +4 -0
- package/packages/agent/src/services/owner-name.d.ts.map +1 -0
- package/packages/agent/src/services/owner-name.js +46 -0
- package/packages/agent/src/services/permissions/contracts.d.ts +9 -0
- package/packages/agent/src/services/permissions/contracts.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/contracts.js +8 -0
- package/packages/agent/src/services/permissions/probers/_bridge.d.ts +77 -0
- package/packages/agent/src/services/permissions/probers/_bridge.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/_bridge.js +224 -0
- package/packages/agent/src/services/permissions/probers/accessibility.d.ts +16 -0
- package/packages/agent/src/services/permissions/probers/accessibility.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/accessibility.js +45 -0
- package/packages/agent/src/services/permissions/probers/automation.d.ts +17 -0
- package/packages/agent/src/services/permissions/probers/automation.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/automation.js +46 -0
- package/packages/agent/src/services/permissions/probers/calendar.d.ts +14 -0
- package/packages/agent/src/services/permissions/probers/calendar.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/calendar.js +33 -0
- package/packages/agent/src/services/permissions/probers/camera.d.ts +14 -0
- package/packages/agent/src/services/permissions/probers/camera.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/camera.js +39 -0
- package/packages/agent/src/services/permissions/probers/contacts.d.ts +13 -0
- package/packages/agent/src/services/permissions/probers/contacts.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/contacts.js +32 -0
- package/packages/agent/src/services/permissions/probers/full-disk.d.ts +22 -0
- package/packages/agent/src/services/permissions/probers/full-disk.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/full-disk.js +78 -0
- package/packages/agent/src/services/permissions/probers/health.d.ts +23 -0
- package/packages/agent/src/services/permissions/probers/health.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/health.js +82 -0
- package/packages/agent/src/services/permissions/probers/index.d.ts +27 -0
- package/packages/agent/src/services/permissions/probers/index.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/index.js +42 -0
- package/packages/agent/src/services/permissions/probers/location.d.ts +21 -0
- package/packages/agent/src/services/permissions/probers/location.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/location.js +47 -0
- package/packages/agent/src/services/permissions/probers/microphone.d.ts +14 -0
- package/packages/agent/src/services/permissions/probers/microphone.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/microphone.js +41 -0
- package/packages/agent/src/services/permissions/probers/notes.d.ts +19 -0
- package/packages/agent/src/services/permissions/probers/notes.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/notes.js +55 -0
- package/packages/agent/src/services/permissions/probers/notifications.d.ts +24 -0
- package/packages/agent/src/services/permissions/probers/notifications.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/notifications.js +47 -0
- package/packages/agent/src/services/permissions/probers/reminders.d.ts +22 -0
- package/packages/agent/src/services/permissions/probers/reminders.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/reminders.js +44 -0
- package/packages/agent/src/services/permissions/probers/screen-recording.d.ts +15 -0
- package/packages/agent/src/services/permissions/probers/screen-recording.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/screen-recording.js +39 -0
- package/packages/agent/src/services/permissions/probers/screentime.d.ts +21 -0
- package/packages/agent/src/services/permissions/probers/screentime.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/screentime.js +67 -0
- package/packages/agent/src/services/permissions/probers/shell.d.ts +19 -0
- package/packages/agent/src/services/permissions/probers/shell.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/shell.js +31 -0
- package/packages/agent/src/services/permissions/probers/website-blocking.d.ts +16 -0
- package/packages/agent/src/services/permissions/probers/website-blocking.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/probers/website-blocking.js +27 -0
- package/packages/agent/src/services/permissions/register-probers.d.ts +29 -0
- package/packages/agent/src/services/permissions/register-probers.d.ts.map +1 -0
- package/packages/agent/src/services/permissions/register-probers.js +31 -0
- package/packages/agent/src/services/permissions-registry.d.ts +62 -0
- package/packages/agent/src/services/permissions-registry.d.ts.map +1 -0
- package/packages/agent/src/services/permissions-registry.js +213 -0
- package/packages/agent/src/services/plugin-compiler.d.ts +51 -0
- package/packages/agent/src/services/plugin-compiler.d.ts.map +1 -0
- package/packages/agent/src/services/plugin-compiler.js +90 -0
- package/packages/agent/src/services/plugin-installer.d.ts +93 -0
- package/packages/agent/src/services/plugin-installer.d.ts.map +1 -0
- package/packages/agent/src/services/plugin-installer.js +623 -0
- package/packages/agent/src/services/plugin-manager-types.d.ts +30 -55
- package/packages/agent/src/services/plugin-manager-types.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client-app-meta.d.ts +1 -1
- package/packages/agent/src/services/registry-client-app-meta.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client-app-meta.js +53 -32
- package/packages/agent/src/services/registry-client-endpoints.d.ts +2 -2
- package/packages/agent/src/services/registry-client-endpoints.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client-endpoints.js +11 -4
- package/packages/agent/src/services/registry-client-local.d.ts +1 -1
- package/packages/agent/src/services/registry-client-local.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client-local.js +239 -61
- package/packages/agent/src/services/registry-client-network.d.ts +6 -1
- package/packages/agent/src/services/registry-client-network.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client-network.js +43 -5
- package/packages/agent/src/services/registry-client-queries.d.ts +16 -5
- package/packages/agent/src/services/registry-client-queries.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client-queries.js +50 -3
- package/packages/agent/src/services/registry-client-types.d.ts +39 -40
- package/packages/agent/src/services/registry-client-types.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client.d.ts +3 -3
- package/packages/agent/src/services/registry-client.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client.js +116 -16
- package/packages/agent/src/services/relationships-graph.d.ts +13 -0
- package/packages/agent/src/services/relationships-graph.d.ts.map +1 -0
- package/packages/agent/src/services/relationships-graph.js +38 -0
- package/packages/agent/src/services/remote-signing-service.d.ts +2 -2
- package/packages/agent/src/services/remote-signing-service.d.ts.map +1 -1
- package/packages/agent/src/services/remote-signing-service.js +2 -2
- package/packages/agent/src/services/research-task-executor.d.ts +14 -0
- package/packages/agent/src/services/research-task-executor.d.ts.map +1 -0
- package/packages/agent/src/services/research-task-executor.js +138 -0
- package/packages/agent/src/services/sandbox-manager.d.ts +24 -1
- package/packages/agent/src/services/sandbox-manager.d.ts.map +1 -1
- package/packages/agent/src/services/sandbox-manager.js +174 -109
- package/packages/agent/src/services/self-updater.d.ts +1 -1
- package/packages/agent/src/services/self-updater.d.ts.map +1 -1
- package/packages/agent/src/services/self-updater.js +1 -1
- package/packages/agent/src/services/send-handler-availability.d.ts +5 -0
- package/packages/agent/src/services/send-handler-availability.d.ts.map +1 -0
- package/packages/agent/src/services/send-handler-availability.js +20 -0
- package/packages/agent/src/services/shell-execution-router.d.ts +67 -0
- package/packages/agent/src/services/shell-execution-router.d.ts.map +1 -0
- package/packages/agent/src/services/shell-execution-router.js +201 -0
- package/packages/agent/src/services/skill-marketplace.d.ts.map +1 -1
- package/packages/agent/src/services/skill-marketplace.js +36 -25
- package/packages/agent/src/services/task-executor.d.ts +47 -0
- package/packages/agent/src/services/task-executor.d.ts.map +1 -0
- package/packages/agent/src/services/task-executor.js +31 -0
- package/packages/agent/src/services/update-checker.d.ts +1 -1
- package/packages/agent/src/services/update-checker.d.ts.map +1 -1
- package/packages/agent/src/services/update-checker.js +4 -4
- package/packages/agent/src/services/version-compat.d.ts +4 -4
- package/packages/agent/src/services/version-compat.d.ts.map +1 -1
- package/packages/agent/src/services/version-compat.js +23 -7
- package/packages/agent/src/services/virtual-filesystem.d.ts +88 -0
- package/packages/agent/src/services/virtual-filesystem.d.ts.map +1 -0
- package/packages/agent/src/services/virtual-filesystem.js +410 -0
- package/packages/agent/src/shared/conversation-format.d.ts +11 -0
- package/packages/agent/src/shared/conversation-format.d.ts.map +1 -0
- package/packages/agent/src/shared/conversation-format.js +69 -0
- package/packages/agent/src/shared/index.d.ts +4 -0
- package/packages/agent/src/shared/index.d.ts.map +1 -0
- package/packages/agent/src/shared/index.js +3 -0
- package/packages/agent/src/shared/ui-catalog-prompt.d.ts +60 -18
- package/packages/agent/src/shared/ui-catalog-prompt.d.ts.map +1 -1
- package/packages/agent/src/shared/ui-catalog-prompt.js +116 -99
- package/packages/agent/src/shared/workspace-resolution.d.ts +5 -0
- package/packages/agent/src/shared/workspace-resolution.d.ts.map +1 -0
- package/packages/agent/src/shared/workspace-resolution.js +70 -0
- package/packages/agent/src/templates/skill-scaffold.d.ts +9 -0
- package/packages/agent/src/templates/skill-scaffold.d.ts.map +1 -0
- package/packages/agent/src/templates/skill-scaffold.js +26 -0
- package/packages/agent/src/test-support/index.d.ts +4 -0
- package/packages/agent/src/test-support/index.d.ts.map +1 -0
- package/packages/agent/src/test-support/index.js +3 -0
- package/packages/agent/src/test-support/route-test-helpers.d.ts +2 -2
- package/packages/agent/src/test-support/route-test-helpers.d.ts.map +1 -1
- package/packages/agent/src/test-support/route-test-helpers.js +1 -1
- package/packages/agent/src/test-support/test-helpers.d.ts +3 -3
- package/packages/agent/src/test-support/test-helpers.d.ts.map +1 -1
- package/packages/agent/src/test-support/test-helpers.js +35 -24
- package/packages/agent/src/test-utils/sqlite-compat.d.ts +23 -0
- package/packages/agent/src/test-utils/sqlite-compat.d.ts.map +1 -0
- package/packages/agent/src/test-utils/sqlite-compat.js +214 -0
- package/packages/agent/src/testing/index.d.ts +3 -3
- package/packages/agent/src/testing/index.d.ts.map +1 -1
- package/packages/agent/src/testing/index.js +3 -3
- package/packages/agent/src/triggers/index.d.ts +5 -0
- package/packages/agent/src/triggers/index.d.ts.map +1 -0
- package/packages/agent/src/triggers/index.js +4 -0
- package/packages/agent/src/triggers/runtime.d.ts +8 -2
- package/packages/agent/src/triggers/runtime.d.ts.map +1 -1
- package/packages/agent/src/triggers/runtime.js +197 -72
- package/packages/agent/src/triggers/scheduling.d.ts +9 -1
- package/packages/agent/src/triggers/scheduling.d.ts.map +1 -1
- package/packages/agent/src/triggers/scheduling.js +103 -22
- package/packages/agent/src/triggers/text-to-workflow.d.ts +58 -0
- package/packages/agent/src/triggers/text-to-workflow.d.ts.map +1 -0
- package/packages/agent/src/triggers/text-to-workflow.js +44 -0
- package/packages/agent/src/triggers/types.d.ts +18 -37
- package/packages/agent/src/triggers/types.d.ts.map +1 -1
- package/packages/agent/src/triggers/types.js +1 -1
- package/packages/agent/src/types/agent-skills.d.ts +19 -0
- package/packages/agent/src/types/agent-skills.d.ts.map +1 -0
- package/packages/agent/src/types/agent-skills.js +7 -0
- package/packages/agent/src/types/config-like.d.ts +17 -0
- package/packages/agent/src/types/config-like.d.ts.map +1 -0
- package/packages/agent/src/types/config-like.js +7 -0
- package/packages/agent/src/types/index.d.ts +4 -0
- package/packages/agent/src/types/index.d.ts.map +1 -0
- package/packages/agent/src/types/index.js +3 -0
- package/packages/agent/src/types/trajectory.d.ts +20 -0
- package/packages/agent/src/types/trajectory.d.ts.map +1 -0
- package/packages/agent/src/types/trajectory.js +2 -0
- package/packages/agent/src/utils/atomic-json.d.ts +37 -0
- package/packages/agent/src/utils/atomic-json.d.ts.map +1 -0
- package/packages/agent/src/utils/atomic-json.js +98 -0
- package/packages/agent/src/utils/index.d.ts +2 -0
- package/packages/agent/src/utils/index.d.ts.map +1 -0
- package/packages/agent/src/utils/index.js +1 -0
- package/packages/agent/src/utils/number-parsing.d.ts.map +1 -1
- package/packages/agent/src/utils/number-parsing.js +1 -2
- package/packages/agent/src/version-resolver.d.ts +0 -1
- package/packages/agent/src/version-resolver.d.ts.map +1 -1
- package/packages/agent/src/version-resolver.js +0 -1
- package/LICENSE +0 -21
- package/packages/agent/src/actions/emote.d.ts +0 -14
- package/packages/agent/src/actions/emote.d.ts.map +0 -1
- package/packages/agent/src/actions/emote.js +0 -91
- package/packages/agent/src/actions/restart.d.ts +0 -19
- package/packages/agent/src/actions/restart.d.ts.map +0 -1
- package/packages/agent/src/actions/restart.js +0 -86
- package/packages/agent/src/actions/send-message.d.ts +0 -3
- package/packages/agent/src/actions/send-message.d.ts.map +0 -1
- package/packages/agent/src/actions/send-message.js +0 -144
- package/packages/agent/src/actions/switch-stream-source.d.ts +0 -16
- package/packages/agent/src/actions/switch-stream-source.d.ts.map +0 -1
- package/packages/agent/src/actions/switch-stream-source.js +0 -94
- package/packages/agent/src/api/bsc-trade.d.ts +0 -34
- package/packages/agent/src/api/bsc-trade.d.ts.map +0 -1
- package/packages/agent/src/api/bsc-trade.js +0 -567
- package/packages/agent/src/api/cloud-billing-routes.d.ts +0 -14
- package/packages/agent/src/api/cloud-billing-routes.d.ts.map +0 -1
- package/packages/agent/src/api/cloud-billing-routes.js +0 -400
- package/packages/agent/src/api/cloud-compat-routes.d.ts +0 -15
- package/packages/agent/src/api/cloud-compat-routes.d.ts.map +0 -1
- package/packages/agent/src/api/cloud-compat-routes.js +0 -131
- package/packages/agent/src/api/cloud-routes.d.ts +0 -62
- package/packages/agent/src/api/cloud-routes.d.ts.map +0 -1
- package/packages/agent/src/api/cloud-routes.js +0 -339
- package/packages/agent/src/api/cloud-status-routes.d.ts +0 -15
- package/packages/agent/src/api/cloud-status-routes.d.ts.map +0 -1
- package/packages/agent/src/api/cloud-status-routes.js +0 -165
- package/packages/agent/src/api/drop-service.d.ts +0 -26
- package/packages/agent/src/api/drop-service.d.ts.map +0 -1
- package/packages/agent/src/api/drop-service.js +0 -134
- package/packages/agent/src/api/http-helpers.d.ts +0 -50
- package/packages/agent/src/api/http-helpers.d.ts.map +0 -1
- package/packages/agent/src/api/http-helpers.js +0 -145
- package/packages/agent/src/api/knowledge-routes.d.ts +0 -23
- package/packages/agent/src/api/knowledge-routes.d.ts.map +0 -1
- package/packages/agent/src/api/knowledge-routes.js +0 -931
- package/packages/agent/src/api/knowledge-service-loader.d.ts +0 -51
- package/packages/agent/src/api/knowledge-service-loader.d.ts.map +0 -1
- package/packages/agent/src/api/merkle-tree.d.ts +0 -90
- package/packages/agent/src/api/merkle-tree.d.ts.map +0 -1
- package/packages/agent/src/api/merkle-tree.js +0 -174
- package/packages/agent/src/api/og-tracker.d.ts +0 -28
- package/packages/agent/src/api/og-tracker.d.ts.map +0 -1
- package/packages/agent/src/api/og-tracker.js +0 -60
- package/packages/agent/src/api/route-helpers.d.ts +0 -16
- package/packages/agent/src/api/route-helpers.d.ts.map +0 -1
- package/packages/agent/src/api/route-helpers.js +0 -1
- package/packages/agent/src/api/sandbox-routes.d.ts +0 -12
- package/packages/agent/src/api/sandbox-routes.d.ts.map +0 -1
- package/packages/agent/src/api/sandbox-routes.js +0 -1334
- package/packages/agent/src/api/signal-routes.d.ts +0 -39
- package/packages/agent/src/api/signal-routes.d.ts.map +0 -1
- package/packages/agent/src/api/signal-routes.js +0 -168
- package/packages/agent/src/api/stream-persistence.d.ts +0 -64
- package/packages/agent/src/api/stream-persistence.d.ts.map +0 -1
- package/packages/agent/src/api/stream-persistence.js +0 -231
- package/packages/agent/src/api/stream-route-state.d.ts +0 -50
- package/packages/agent/src/api/stream-route-state.d.ts.map +0 -1
- package/packages/agent/src/api/stream-route-state.js +0 -1
- package/packages/agent/src/api/stream-routes.d.ts +0 -45
- package/packages/agent/src/api/stream-routes.d.ts.map +0 -1
- package/packages/agent/src/api/stream-routes.js +0 -809
- package/packages/agent/src/api/stream-voice-routes.d.ts +0 -36
- package/packages/agent/src/api/stream-voice-routes.d.ts.map +0 -1
- package/packages/agent/src/api/stream-voice-routes.js +0 -133
- package/packages/agent/src/api/streaming-text.d.ts +0 -9
- package/packages/agent/src/api/streaming-text.d.ts.map +0 -1
- package/packages/agent/src/api/streaming-text.js +0 -85
- package/packages/agent/src/api/streaming-types.d.ts +0 -30
- package/packages/agent/src/api/streaming-types.d.ts.map +0 -1
- package/packages/agent/src/api/streaming-types.js +0 -1
- package/packages/agent/src/api/training-routes.d.ts +0 -44
- package/packages/agent/src/api/training-routes.d.ts.map +0 -1
- package/packages/agent/src/api/training-routes.js +0 -195
- package/packages/agent/src/api/trajectory-routes.d.ts +0 -17
- package/packages/agent/src/api/trajectory-routes.d.ts.map +0 -1
- package/packages/agent/src/api/trajectory-routes.js +0 -405
- package/packages/agent/src/api/trigger-routes.d.ts +0 -72
- package/packages/agent/src/api/trigger-routes.d.ts.map +0 -1
- package/packages/agent/src/api/trigger-routes.js +0 -268
- package/packages/agent/src/api/twitter-verify.d.ts +0 -25
- package/packages/agent/src/api/twitter-verify.d.ts.map +0 -1
- package/packages/agent/src/api/twitter-verify.js +0 -168
- package/packages/agent/src/api/whatsapp-routes.d.ts +0 -39
- package/packages/agent/src/api/whatsapp-routes.d.ts.map +0 -1
- package/packages/agent/src/api/whatsapp-routes.js +0 -182
- package/packages/agent/src/auth/apply-stealth.d.ts +0 -8
- package/packages/agent/src/auth/apply-stealth.d.ts.map +0 -1
- package/packages/agent/src/auth/apply-stealth.js +0 -35
- package/packages/agent/src/benchmark-server.d.ts +0 -2
- package/packages/agent/src/benchmark-server.d.ts.map +0 -1
- package/packages/agent/src/benchmark-server.js +0 -773
- package/packages/agent/src/cloud/auth.d.ts +0 -19
- package/packages/agent/src/cloud/auth.d.ts.map +0 -1
- package/packages/agent/src/cloud/auth.js +0 -107
- package/packages/agent/src/cloud/backup.d.ts +0 -18
- package/packages/agent/src/cloud/backup.d.ts.map +0 -1
- package/packages/agent/src/cloud/backup.js +0 -42
- package/packages/agent/src/cloud/base-url.d.ts +0 -3
- package/packages/agent/src/cloud/base-url.d.ts.map +0 -1
- package/packages/agent/src/cloud/base-url.js +0 -40
- package/packages/agent/src/cloud/bridge-client.d.ts +0 -56
- package/packages/agent/src/cloud/bridge-client.d.ts.map +0 -1
- package/packages/agent/src/cloud/bridge-client.js +0 -190
- package/packages/agent/src/cloud/cloud-manager.d.ts +0 -32
- package/packages/agent/src/cloud/cloud-manager.d.ts.map +0 -1
- package/packages/agent/src/cloud/cloud-manager.js +0 -119
- package/packages/agent/src/cloud/cloud-proxy.d.ts +0 -20
- package/packages/agent/src/cloud/cloud-proxy.d.ts.map +0 -1
- package/packages/agent/src/cloud/cloud-proxy.js +0 -34
- package/packages/agent/src/cloud/index.d.ts +0 -7
- package/packages/agent/src/cloud/index.d.ts.map +0 -1
- package/packages/agent/src/cloud/index.js +0 -6
- package/packages/agent/src/cloud/reconnect.d.ts +0 -26
- package/packages/agent/src/cloud/reconnect.d.ts.map +0 -1
- package/packages/agent/src/cloud/reconnect.js +0 -86
- package/packages/agent/src/cloud/validate-url.d.ts +0 -2
- package/packages/agent/src/cloud/validate-url.d.ts.map +0 -1
- package/packages/agent/src/cloud/validate-url.js +0 -162
- package/packages/agent/src/config/object-utils.d.ts +0 -2
- package/packages/agent/src/config/object-utils.d.ts.map +0 -1
- package/packages/agent/src/config/object-utils.js +0 -6
- package/packages/agent/src/contracts/apps.d.ts +0 -42
- package/packages/agent/src/contracts/apps.d.ts.map +0 -1
- package/packages/agent/src/contracts/apps.js +0 -4
- package/packages/agent/src/contracts/config.d.ts +0 -146
- package/packages/agent/src/contracts/config.d.ts.map +0 -1
- package/packages/agent/src/contracts/config.js +0 -4
- package/packages/agent/src/contracts/drop.d.ts +0 -20
- package/packages/agent/src/contracts/drop.d.ts.map +0 -1
- package/packages/agent/src/contracts/drop.js +0 -4
- package/packages/agent/src/contracts/onboarding.d.ts +0 -384
- package/packages/agent/src/contracts/onboarding.d.ts.map +0 -1
- package/packages/agent/src/contracts/permissions.d.ts +0 -35
- package/packages/agent/src/contracts/permissions.d.ts.map +0 -1
- package/packages/agent/src/contracts/permissions.js +0 -4
- package/packages/agent/src/contracts/verification.d.ts +0 -9
- package/packages/agent/src/contracts/verification.d.ts.map +0 -1
- package/packages/agent/src/contracts/verification.js +0 -4
- package/packages/agent/src/contracts/wallet.d.ts +0 -409
- package/packages/agent/src/contracts/wallet.d.ts.map +0 -1
- package/packages/agent/src/contracts/wallet.js +0 -60
- package/packages/agent/src/emotes/catalog.d.ts +0 -31
- package/packages/agent/src/emotes/catalog.d.ts.map +0 -1
- package/packages/agent/src/emotes/catalog.js +0 -402
- package/packages/agent/src/onboarding-presets.d.ts +0 -59
- package/packages/agent/src/onboarding-presets.d.ts.map +0 -1
- package/packages/agent/src/onboarding-presets.js +0 -1470
- package/packages/agent/src/plugins/custom-rtmp/index.d.ts +0 -12
- package/packages/agent/src/plugins/custom-rtmp/index.d.ts.map +0 -1
- package/packages/agent/src/plugins/custom-rtmp/index.js +0 -26
- package/packages/agent/src/runtime/cloud-onboarding.d.ts +0 -55
- package/packages/agent/src/runtime/cloud-onboarding.d.ts.map +0 -1
- package/packages/agent/src/runtime/cloud-onboarding.js +0 -279
- package/packages/agent/src/server/index.d.ts +0 -3
- package/packages/agent/src/server/index.d.ts.map +0 -1
- package/packages/agent/src/server/index.js +0 -1
- package/packages/agent/src/services/browser-capture.d.ts +0 -39
- package/packages/agent/src/services/browser-capture.d.ts.map +0 -1
- package/packages/agent/src/services/browser-capture.js +0 -162
- package/packages/agent/src/services/coding-agent-context.d.ts +0 -310
- package/packages/agent/src/services/coding-agent-context.d.ts.map +0 -1
- package/packages/agent/src/services/coding-agent-context.js +0 -281
- package/packages/agent/src/services/fallback-training-service.d.ts +0 -78
- package/packages/agent/src/services/fallback-training-service.d.ts.map +0 -1
- package/packages/agent/src/services/fallback-training-service.js +0 -126
- package/packages/agent/src/services/privy-wallets.d.ts +0 -18
- package/packages/agent/src/services/privy-wallets.d.ts.map +0 -1
- package/packages/agent/src/services/privy-wallets.js +0 -225
- package/packages/agent/src/services/signal-pairing.d.ts +0 -37
- package/packages/agent/src/services/signal-pairing.d.ts.map +0 -1
- package/packages/agent/src/services/signal-pairing.js +0 -124
- package/packages/agent/src/services/stream-manager.d.ts +0 -121
- package/packages/agent/src/services/stream-manager.d.ts.map +0 -1
- package/packages/agent/src/services/stream-manager.js +0 -604
- package/packages/agent/src/services/tts-stream-bridge.d.ts +0 -83
- package/packages/agent/src/services/tts-stream-bridge.d.ts.map +0 -1
- package/packages/agent/src/services/tts-stream-bridge.js +0 -349
- package/packages/agent/src/services/whatsapp-pairing.d.ts +0 -41
- package/packages/agent/src/services/whatsapp-pairing.d.ts.map +0 -1
- package/packages/agent/src/services/whatsapp-pairing.js +0 -209
- package/packages/agent/src/triggers/action.d.ts +0 -3
- package/packages/agent/src/triggers/action.d.ts.map +0 -1
- package/packages/agent/src/triggers/action.js +0 -267
- package/packages/agent/src/utils/spoken-text.d.ts +0 -2
- package/packages/agent/src/utils/spoken-text.d.ts.map +0 -1
- package/packages/agent/src/utils/spoken-text.js +0 -56
|
@@ -0,0 +1,1375 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Plugin discovery and resolution logic.
|
|
11
|
+
*
|
|
12
|
+
* Resolves Eliza plugins from config and auto-enable logic, loading them
|
|
13
|
+
* from static imports, npm packages, workspace overrides, or drop-in
|
|
14
|
+
* directories. Each plugin is wrapped in an error boundary so a single
|
|
15
|
+
* failing plugin cannot crash the agent startup.
|
|
16
|
+
*
|
|
17
|
+
* Extracted from eliza.ts to reduce file size.
|
|
18
|
+
*
|
|
19
|
+
* @module plugin-resolver
|
|
20
|
+
*/
|
|
21
|
+
import crypto from "node:crypto";
|
|
22
|
+
import { existsSync } from "node:fs";
|
|
23
|
+
import fs from "node:fs/promises";
|
|
24
|
+
import path from "node:path";
|
|
25
|
+
import { pathToFileURL } from "node:url";
|
|
26
|
+
import { logger } from "@elizaos/core";
|
|
27
|
+
import { applyAppManifestDefaults, applyPluginManifestVerdicts, evaluatePluginManifests, filterCandidatesByAppManifest, formatError, isMobilePlatform, readAppManifest, } from "@elizaos/shared";
|
|
28
|
+
import { saveElizaConfig } from "../config/config.js";
|
|
29
|
+
import { resolveStateDir, resolveUserPath } from "../config/paths.js";
|
|
30
|
+
import { diagnoseNoAIProvider } from "../services/version-compat.js";
|
|
31
|
+
import { CORE_PLUGINS, OPTIONAL_CORE_PLUGINS } from "./core-plugins.js";
|
|
32
|
+
import { CHANNEL_PLUGIN_MAP, collectPluginNames, OPTIONAL_PLUGIN_MAP, resolvePluginPackageAlias, } from "./plugin-collector.js";
|
|
33
|
+
import { CUSTOM_PLUGINS_DIRNAME, EJECTED_PLUGINS_DIRNAME, ensureBrowserServerLink, findRuntimePluginExport, mergeDropInPlugins, repairBrokenInstallRecord, resolveElizaPluginImportSpecifier, resolvePackageEntry, STATIC_ELIZA_PLUGINS, scanDropInPlugins, } from "./plugin-types.js";
|
|
34
|
+
const LAST_FAILED_PLUGIN_NAMES = Symbol.for("@elizaos/plugin-resolver/last-failed-plugin-names");
|
|
35
|
+
const RUNTIME_APP_PLUGIN_SUBPATHS = new Set([
|
|
36
|
+
"@elizaos/app-companion",
|
|
37
|
+
"@elizaos/app-contacts",
|
|
38
|
+
"@elizaos/app-elizamaker",
|
|
39
|
+
"@elizaos/app-lifeops",
|
|
40
|
+
"@elizaos/app-phone",
|
|
41
|
+
"@elizaos/app-polymarket",
|
|
42
|
+
"@elizaos/app-shopify",
|
|
43
|
+
"@elizaos/app-steward",
|
|
44
|
+
"@elizaos/app-vincent",
|
|
45
|
+
"@elizaos/app-wifi",
|
|
46
|
+
]);
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Helpers (private)
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
/** Missing npm package, Bun resolve, or browser stagehand — expected when optional plugins are allow-listed but not installed. */
|
|
51
|
+
function isBenignOptionalPluginFailure(msg) {
|
|
52
|
+
return (msg.includes("Cannot find module") ||
|
|
53
|
+
msg.includes("MODULE_NOT_FOUND") ||
|
|
54
|
+
msg.includes("ResolveMessage") ||
|
|
55
|
+
msg === "browser server binary not found");
|
|
56
|
+
}
|
|
57
|
+
function redactUserSegments(filepath) {
|
|
58
|
+
// Replace /Users/<name>/ or /home/<name>/ with /Users/<redacted>/ etc.
|
|
59
|
+
return filepath.replace(/\/(Users|home)\/[^/]+\//g, "/$1/<redacted>/");
|
|
60
|
+
}
|
|
61
|
+
export function resolveRuntimePluginImportSpecifier(pluginName) {
|
|
62
|
+
if (pluginName.startsWith("@elizaos/plugin-")) {
|
|
63
|
+
return resolveElizaPluginImportSpecifier(pluginName);
|
|
64
|
+
}
|
|
65
|
+
return runtimePluginImportSpecifier(pluginName);
|
|
66
|
+
}
|
|
67
|
+
function sanitizePluginCacheSegment(value) {
|
|
68
|
+
return value.replace(/[^a-zA-Z0-9._-]+/g, "_");
|
|
69
|
+
}
|
|
70
|
+
const SOURCE_STAGED_WORKSPACE_DEPENDENCIES = new Set(["@elizaos/agent"]);
|
|
71
|
+
const SOURCE_STAGED_ROOT_ENTRYPOINTS = {
|
|
72
|
+
"@elizaos/agent": {
|
|
73
|
+
path: "./src/staged-runtime-index.ts",
|
|
74
|
+
source: `export { extractActionParamsViaLlm } from "./actions/extract-params.ts";
|
|
75
|
+
export { renderGroundedActionReply } from "./actions/grounded-action-reply.ts";
|
|
76
|
+
export { extractConversationMetadataFromRoom, isPageScopedConversationMetadata } from "./api/conversation-metadata.ts";
|
|
77
|
+
export { handleConnectorAccountRoutes } from "./api/connector-account-routes.ts";
|
|
78
|
+
export { checkRateLimit } from "./api/rate-limiter.ts";
|
|
79
|
+
export { loadElizaConfig, saveElizaConfig } from "./config/config.ts";
|
|
80
|
+
export { loadOwnerContactRoutingHints, loadOwnerContactsConfig, resolveOwnerContactWithFallback } from "./config/owner-contacts.ts";
|
|
81
|
+
export { resolveOAuthDir, resolveStateDir } from "./config/paths.ts";
|
|
82
|
+
export { createIntegrationTelemetrySpan } from "./diagnostics/integration-observability.ts";
|
|
83
|
+
export { getAgentEventService } from "./runtime/agent-event-service.ts";
|
|
84
|
+
export { resolveOwnerEntityId } from "./runtime/owner-entity.ts";
|
|
85
|
+
export { hasOwnerAccess } from "./security/access.ts";
|
|
86
|
+
export { gatePluginSessionForHostedApp } from "./services/app-session-gate.ts";
|
|
87
|
+
export { registerEscalationChannel } from "./services/escalation.ts";
|
|
88
|
+
export { buildTriggerConfig, buildTriggerMetadata, computeNextCronRunAtMs, normalizeTriggerDraft, parseCronExpression } from "./triggers/scheduling.ts";
|
|
89
|
+
export { getTriggerLimit, listTriggerTasks, readTriggerConfig, taskToTriggerSummary, triggersFeatureEnabled, TRIGGER_TASK_NAME, TRIGGER_TASK_TAGS } from "./triggers/runtime.ts";
|
|
90
|
+
`,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
function packageNodeModulesEntryPath(nodeModulesDir, packageName) {
|
|
94
|
+
return path.join(nodeModulesDir, ...packageName.split("/"));
|
|
95
|
+
}
|
|
96
|
+
async function pathEntryExists(targetPath) {
|
|
97
|
+
try {
|
|
98
|
+
await fs.lstat(targetPath);
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (error.code === "ENOENT") {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function readPluginPackageManifest(packageRoot) {
|
|
109
|
+
try {
|
|
110
|
+
return JSON.parse(await fs.readFile(path.join(packageRoot, "package.json"), "utf8"));
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
if (error.code === "ENOENT") {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function collectDeclaredPluginDependencies(manifest) {
|
|
120
|
+
const collected = new Map();
|
|
121
|
+
for (const name of Object.keys(manifest.dependencies ?? {})) {
|
|
122
|
+
collected.set(name, { name, optional: false });
|
|
123
|
+
}
|
|
124
|
+
for (const name of Object.keys(manifest.optionalDependencies ?? {})) {
|
|
125
|
+
if (!collected.has(name)) {
|
|
126
|
+
collected.set(name, { name, optional: true });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
for (const name of Object.keys(manifest.peerDependencies ?? {})) {
|
|
130
|
+
if (collected.has(name)) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const optional = manifest.peerDependenciesMeta?.[name]?.optional === true;
|
|
134
|
+
collected.set(name, { name, optional });
|
|
135
|
+
}
|
|
136
|
+
return [...collected.values()].sort((left, right) => left.name.localeCompare(right.name));
|
|
137
|
+
}
|
|
138
|
+
async function stageDependencyIntoNodeModules(params) {
|
|
139
|
+
const sourcePath = packageNodeModulesEntryPath(params.sourceNodeModulesDir, params.dependencyName);
|
|
140
|
+
if (!(await pathEntryExists(sourcePath))) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
const targetPath = packageNodeModulesEntryPath(params.targetNodeModulesDir, params.dependencyName);
|
|
144
|
+
if (await pathEntryExists(targetPath)) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
148
|
+
const stat = await fs.lstat(sourcePath);
|
|
149
|
+
if (stat.isSymbolicLink()) {
|
|
150
|
+
const linkTarget = await resolveSymlinkTargetIfPresent(sourcePath);
|
|
151
|
+
if (!linkTarget) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
await fs.symlink(linkTarget, targetPath);
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
if (!stat.isDirectory()) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
await fs.cp(sourcePath, targetPath, {
|
|
161
|
+
recursive: true,
|
|
162
|
+
force: true,
|
|
163
|
+
dereference: true,
|
|
164
|
+
});
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
function rewriteDistExportTargetToSource(value) {
|
|
168
|
+
if (typeof value === "string") {
|
|
169
|
+
return value.replace(/^\.(\/dist\/)/, "./src/").replace(/\.js$/, ".ts");
|
|
170
|
+
}
|
|
171
|
+
if (Array.isArray(value)) {
|
|
172
|
+
return value.map(rewriteDistExportTargetToSource);
|
|
173
|
+
}
|
|
174
|
+
if (!value || typeof value !== "object") {
|
|
175
|
+
return value;
|
|
176
|
+
}
|
|
177
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => [
|
|
178
|
+
key,
|
|
179
|
+
rewriteDistExportTargetToSource(entry),
|
|
180
|
+
]));
|
|
181
|
+
}
|
|
182
|
+
async function writeSourceStagedPackageManifest(params) {
|
|
183
|
+
const sourcePackageJsonPath = path.join(params.sourcePackageRoot, "package.json");
|
|
184
|
+
const targetPackageJsonPath = path.join(params.targetPackageRoot, "package.json");
|
|
185
|
+
const manifest = JSON.parse(await fs.readFile(sourcePackageJsonPath, "utf8"));
|
|
186
|
+
const rootEntrypoint = SOURCE_STAGED_ROOT_ENTRYPOINTS[params.dependencyName];
|
|
187
|
+
const rootExport = rootEntrypoint
|
|
188
|
+
? {
|
|
189
|
+
types: rootEntrypoint.path,
|
|
190
|
+
import: rootEntrypoint.path,
|
|
191
|
+
default: rootEntrypoint.path,
|
|
192
|
+
}
|
|
193
|
+
: undefined;
|
|
194
|
+
const rewrittenExports = rewriteDistExportTargetToSource(manifest.exports);
|
|
195
|
+
const rewrittenManifest = {
|
|
196
|
+
...manifest,
|
|
197
|
+
main: rootEntrypoint?.path ?? "./src/index.ts",
|
|
198
|
+
module: rootEntrypoint?.path ?? "./src/index.ts",
|
|
199
|
+
types: rootEntrypoint?.path ?? "./src/index.ts",
|
|
200
|
+
exports: rootExport && rewrittenExports && typeof rewrittenExports === "object"
|
|
201
|
+
? { ...rewrittenExports, ".": rootExport }
|
|
202
|
+
: (rewrittenExports ?? rootEntrypoint?.path),
|
|
203
|
+
};
|
|
204
|
+
await fs.writeFile(targetPackageJsonPath, `${JSON.stringify(rewrittenManifest, null, 2)}\n`);
|
|
205
|
+
}
|
|
206
|
+
async function writeSourceStagedRootEntrypoint(params) {
|
|
207
|
+
const rootEntrypoint = SOURCE_STAGED_ROOT_ENTRYPOINTS[params.dependencyName];
|
|
208
|
+
if (!rootEntrypoint) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const relativeEntrypointPath = rootEntrypoint.path.replace(/^\.\//, "");
|
|
212
|
+
const targetPath = path.join(params.targetPackageRoot, relativeEntrypointPath);
|
|
213
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
214
|
+
await fs.writeFile(targetPath, rootEntrypoint.source);
|
|
215
|
+
}
|
|
216
|
+
async function stageWorkspaceSourceDependencyIntoNodeModules(params) {
|
|
217
|
+
const sourcePath = packageNodeModulesEntryPath(params.sourceNodeModulesDir, params.dependencyName);
|
|
218
|
+
if (!(await pathEntryExists(sourcePath))) {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
const resolvedSourcePath = (await resolveSymlinkTargetIfPresent(sourcePath)) ?? sourcePath;
|
|
222
|
+
const sourceSrcPath = path.join(resolvedSourcePath, "src");
|
|
223
|
+
const sourcePackageJsonPath = path.join(resolvedSourcePath, "package.json");
|
|
224
|
+
if (!(await pathEntryExists(sourceSrcPath)) ||
|
|
225
|
+
!(await pathEntryExists(sourcePackageJsonPath))) {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
const targetPath = packageNodeModulesEntryPath(params.targetNodeModulesDir, params.dependencyName);
|
|
229
|
+
if (await pathEntryExists(targetPath)) {
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
233
|
+
await fs.cp(resolvedSourcePath, targetPath, {
|
|
234
|
+
recursive: true,
|
|
235
|
+
force: true,
|
|
236
|
+
dereference: true,
|
|
237
|
+
filter: (src) => {
|
|
238
|
+
const relativePath = path.relative(resolvedSourcePath, src);
|
|
239
|
+
if (!relativePath)
|
|
240
|
+
return true;
|
|
241
|
+
const [topLevel] = relativePath.split(path.sep);
|
|
242
|
+
return (topLevel === "src" ||
|
|
243
|
+
relativePath === "package.json" ||
|
|
244
|
+
relativePath === "vite-env.d.ts");
|
|
245
|
+
},
|
|
246
|
+
});
|
|
247
|
+
await writeSourceStagedPackageManifest({
|
|
248
|
+
dependencyName: params.dependencyName,
|
|
249
|
+
sourcePackageRoot: resolvedSourcePath,
|
|
250
|
+
targetPackageRoot: targetPath,
|
|
251
|
+
});
|
|
252
|
+
await writeSourceStagedRootEntrypoint({
|
|
253
|
+
dependencyName: params.dependencyName,
|
|
254
|
+
targetPackageRoot: targetPath,
|
|
255
|
+
});
|
|
256
|
+
return true;
|
|
257
|
+
}
|
|
258
|
+
async function ensureStagedPackageDependencies(params) {
|
|
259
|
+
const stagedNodeModulesPath = path.join(params.stagedPackageRoot, "node_modules");
|
|
260
|
+
await fs.mkdir(stagedNodeModulesPath, { recursive: true });
|
|
261
|
+
const manifest = await readPluginPackageManifest(params.packageRoot);
|
|
262
|
+
if (!manifest) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const dependencies = collectDeclaredPluginDependencies(manifest);
|
|
266
|
+
if (dependencies.length === 0) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const sourceNodeModulesDirs = uniquePaths([
|
|
270
|
+
path.join(params.packageRoot, "node_modules"),
|
|
271
|
+
path.join(params.installRoot, "node_modules"),
|
|
272
|
+
...(await findAncestorNodeModulesDirs(params.packageRoot)),
|
|
273
|
+
]);
|
|
274
|
+
for (const dependency of dependencies) {
|
|
275
|
+
const stagedDependencyPath = packageNodeModulesEntryPath(stagedNodeModulesPath, dependency.name);
|
|
276
|
+
const shouldStageFromSource = SOURCE_STAGED_WORKSPACE_DEPENDENCIES.has(dependency.name);
|
|
277
|
+
if (await pathEntryExists(stagedDependencyPath)) {
|
|
278
|
+
if (!shouldStageFromSource) {
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
await fs.rm(stagedDependencyPath, { recursive: true, force: true });
|
|
282
|
+
}
|
|
283
|
+
let staged = false;
|
|
284
|
+
for (const sourceNodeModulesDir of sourceNodeModulesDirs) {
|
|
285
|
+
staged = shouldStageFromSource
|
|
286
|
+
? await stageWorkspaceSourceDependencyIntoNodeModules({
|
|
287
|
+
dependencyName: dependency.name,
|
|
288
|
+
sourceNodeModulesDir,
|
|
289
|
+
targetNodeModulesDir: stagedNodeModulesPath,
|
|
290
|
+
})
|
|
291
|
+
: await stageDependencyIntoNodeModules({
|
|
292
|
+
dependencyName: dependency.name,
|
|
293
|
+
sourceNodeModulesDir,
|
|
294
|
+
targetNodeModulesDir: stagedNodeModulesPath,
|
|
295
|
+
});
|
|
296
|
+
if (staged) {
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (!staged && !dependency.optional) {
|
|
301
|
+
logger.warn(`[eliza] Staged plugin ${params.packageName} is missing declared dependency ${dependency.name}`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// ---------------------------------------------------------------------------
|
|
306
|
+
// Workspace plugin overrides
|
|
307
|
+
// ---------------------------------------------------------------------------
|
|
308
|
+
function uniquePaths(paths) {
|
|
309
|
+
const seen = new Set();
|
|
310
|
+
const ordered = [];
|
|
311
|
+
for (const candidate of paths) {
|
|
312
|
+
const resolved = path.resolve(candidate);
|
|
313
|
+
if (!seen.has(resolved)) {
|
|
314
|
+
seen.add(resolved);
|
|
315
|
+
ordered.push(resolved);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return ordered;
|
|
319
|
+
}
|
|
320
|
+
function resolveWorkspaceRoots() {
|
|
321
|
+
const envRoot = process.env.ELIZA_WORKSPACE_ROOT?.trim();
|
|
322
|
+
if (envRoot) {
|
|
323
|
+
return uniquePaths([envRoot]);
|
|
324
|
+
}
|
|
325
|
+
// Phase 3: only search cwd — parent-directory and module-relative fallbacks
|
|
326
|
+
// removed. Repo-local ./eliza submodule + setup:upstreams symlinks handle
|
|
327
|
+
// plugin resolution for development. Set ELIZA_WORKSPACE_ROOT explicitly
|
|
328
|
+
// for external override scenarios.
|
|
329
|
+
return uniquePaths([process.cwd()]);
|
|
330
|
+
}
|
|
331
|
+
function legacyAppsWorkspaceDiscoveryEnabled() {
|
|
332
|
+
const raw = process.env.ELIZA_ENABLE_LEGACY_APPS_WORKSPACE_DISCOVERY;
|
|
333
|
+
if (!raw)
|
|
334
|
+
return false;
|
|
335
|
+
const normalized = raw.trim().toLowerCase();
|
|
336
|
+
return normalized === "1" || normalized === "true" || normalized === "yes";
|
|
337
|
+
}
|
|
338
|
+
function getWorkspacePluginOverridePath(pluginName) {
|
|
339
|
+
if (process.env.ELIZA_DISABLE_WORKSPACE_PLUGIN_OVERRIDES === "1") {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
const packageSegmentMatch = pluginName.match(/^@[^/]+\/((?:app|plugin)-[^/]+)$/);
|
|
343
|
+
const packageSegment = packageSegmentMatch?.[1];
|
|
344
|
+
if (!packageSegment)
|
|
345
|
+
return null;
|
|
346
|
+
for (const workspaceRoot of resolveWorkspaceRoots()) {
|
|
347
|
+
const candidates = [
|
|
348
|
+
path.join(workspaceRoot, "plugins", packageSegment, "typescript"),
|
|
349
|
+
path.join(workspaceRoot, "plugins", packageSegment),
|
|
350
|
+
path.join(workspaceRoot, "packages", packageSegment),
|
|
351
|
+
path.join(workspaceRoot, "eliza", "plugins", packageSegment, "typescript"),
|
|
352
|
+
path.join(workspaceRoot, "eliza", "plugins", packageSegment),
|
|
353
|
+
path.join(workspaceRoot, "eliza", "packages", packageSegment),
|
|
354
|
+
];
|
|
355
|
+
if (legacyAppsWorkspaceDiscoveryEnabled()) {
|
|
356
|
+
// Temporary opt-in for older external workspaces that have not moved
|
|
357
|
+
// app plugins from apps/app-* to plugins/app-* yet. The Eliza repo no
|
|
358
|
+
// longer depends on or scans top-level apps/* by default.
|
|
359
|
+
candidates.push(path.join(workspaceRoot, "apps", packageSegment), path.join(workspaceRoot, "eliza", "apps", packageSegment));
|
|
360
|
+
}
|
|
361
|
+
for (const candidate of uniquePaths(candidates)) {
|
|
362
|
+
if (existsSync(path.join(candidate, "package.json"))) {
|
|
363
|
+
return candidate;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
function runtimePluginExportSubpath(pluginName) {
|
|
370
|
+
return RUNTIME_APP_PLUGIN_SUBPATHS.has(pluginName) ? "./plugin" : ".";
|
|
371
|
+
}
|
|
372
|
+
function runtimePluginImportSpecifier(pluginName) {
|
|
373
|
+
return RUNTIME_APP_PLUGIN_SUBPATHS.has(pluginName)
|
|
374
|
+
? `${pluginName}/plugin`
|
|
375
|
+
: pluginName;
|
|
376
|
+
}
|
|
377
|
+
async function hasNonSymlinkWorkspaceNodeModulesPackage(pluginName) {
|
|
378
|
+
for (const workspaceRoot of uniquePaths([
|
|
379
|
+
process.cwd(),
|
|
380
|
+
...resolveWorkspaceRoots(),
|
|
381
|
+
])) {
|
|
382
|
+
const candidate = path.join(workspaceRoot, "node_modules", ...pluginName.split("/"));
|
|
383
|
+
try {
|
|
384
|
+
const stat = await fs.lstat(candidate);
|
|
385
|
+
if (stat.isDirectory() && !stat.isSymbolicLink()) {
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
if (error.code !== "ENOENT") {
|
|
391
|
+
throw error;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
// ---------------------------------------------------------------------------
|
|
398
|
+
// Plugin error boundary wrapper
|
|
399
|
+
// ---------------------------------------------------------------------------
|
|
400
|
+
/**
|
|
401
|
+
* Wrap a plugin's `init` and `providers` with error boundaries so that a
|
|
402
|
+
* crash in any single plugin does not take down the entire agent or GUI.
|
|
403
|
+
*
|
|
404
|
+
* NOTE: Actions are NOT wrapped here because elizaOS's action dispatch
|
|
405
|
+
* already has its own error boundary. Only `init` (startup) and
|
|
406
|
+
* `providers` (called every turn) need protection at this layer.
|
|
407
|
+
*
|
|
408
|
+
* The wrapper catches errors, logs them with the plugin name for easy
|
|
409
|
+
* debugging, and continues execution.
|
|
410
|
+
*/
|
|
411
|
+
function wrapPluginWithErrorBoundary(pluginName, plugin, _options) {
|
|
412
|
+
const wrapped = { ...plugin };
|
|
413
|
+
// Wrap init if present
|
|
414
|
+
if (plugin.init) {
|
|
415
|
+
const originalInit = plugin.init;
|
|
416
|
+
wrapped.init = async (...args) => {
|
|
417
|
+
try {
|
|
418
|
+
return await originalInit(...args);
|
|
419
|
+
}
|
|
420
|
+
catch (err) {
|
|
421
|
+
logger.error(`[eliza] Plugin "${pluginName}" crashed during init: ${formatError(err)}`);
|
|
422
|
+
throw err;
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
// Wrap providers with error boundaries
|
|
427
|
+
if (plugin.providers && plugin.providers.length > 0) {
|
|
428
|
+
wrapped.providers = plugin.providers.map((provider) => ({
|
|
429
|
+
...provider,
|
|
430
|
+
get: async (...args) => {
|
|
431
|
+
try {
|
|
432
|
+
return await provider.get(...args);
|
|
433
|
+
}
|
|
434
|
+
catch (err) {
|
|
435
|
+
const msg = formatError(err);
|
|
436
|
+
logger.error(`[eliza] Provider "${provider.name}" (plugin: ${pluginName}) crashed: ${msg}`);
|
|
437
|
+
throw err;
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
}));
|
|
441
|
+
}
|
|
442
|
+
return wrapped;
|
|
443
|
+
}
|
|
444
|
+
// ---------------------------------------------------------------------------
|
|
445
|
+
// Import helpers
|
|
446
|
+
// ---------------------------------------------------------------------------
|
|
447
|
+
/**
|
|
448
|
+
* Import a plugin module from its install directory on disk.
|
|
449
|
+
*
|
|
450
|
+
* Handles two install layouts:
|
|
451
|
+
* 1. npm layout: <installPath>/node_modules/@scope/package/ (from `bun add`)
|
|
452
|
+
* 2. git layout: <installPath>/ is the package root directly (from `git clone`)
|
|
453
|
+
*
|
|
454
|
+
* @param installPath Root directory of the installation (e.g. ~/.eliza/plugins/installed/foo/).
|
|
455
|
+
* @param packageName The npm package name (e.g. "@elizaos/plugin-discord") — used
|
|
456
|
+
* to navigate directly into node_modules when present.
|
|
457
|
+
*/
|
|
458
|
+
export async function importPluginModuleFromPath(installPath, packageName, exportSubpath = ".") {
|
|
459
|
+
const absPath = path.resolve(installPath);
|
|
460
|
+
// npm/bun layout: installPath/node_modules/@scope/name/
|
|
461
|
+
// git layout: installPath/ is the package itself
|
|
462
|
+
const nmCandidate = path.join(absPath, "node_modules", ...packageName.split("/"));
|
|
463
|
+
let pkgRoot = absPath;
|
|
464
|
+
try {
|
|
465
|
+
if ((await fs.stat(nmCandidate)).isDirectory())
|
|
466
|
+
pkgRoot = nmCandidate;
|
|
467
|
+
}
|
|
468
|
+
catch (err) {
|
|
469
|
+
if (err.code !== "ENOENT") {
|
|
470
|
+
throw err;
|
|
471
|
+
}
|
|
472
|
+
/* git layout — pkgRoot stays as absPath */
|
|
473
|
+
}
|
|
474
|
+
const packageRelativePath = pkgRoot === absPath ? [] : ["node_modules", ...packageName.split("/")];
|
|
475
|
+
const stagedPkgRoot = await stagePluginImportRoot({
|
|
476
|
+
installRoot: absPath,
|
|
477
|
+
packageRoot: pkgRoot,
|
|
478
|
+
packageRelativePath,
|
|
479
|
+
packageName,
|
|
480
|
+
});
|
|
481
|
+
// Resolve entry point from a staged filesystem snapshot so reloads pick up
|
|
482
|
+
// updated relative modules and bundled dependencies instead of reusing the
|
|
483
|
+
// previous ESM module graph from the original path.
|
|
484
|
+
const entryPoint = await resolvePackageEntry(stagedPkgRoot, exportSubpath);
|
|
485
|
+
return (await import(__rewriteRelativeImportExtension(pathToFileURL(entryPoint).href)));
|
|
486
|
+
}
|
|
487
|
+
async function findNearestNodeModulesDir(startDir) {
|
|
488
|
+
let currentDir = path.resolve(startDir);
|
|
489
|
+
while (true) {
|
|
490
|
+
const candidate = path.join(currentDir, "node_modules");
|
|
491
|
+
try {
|
|
492
|
+
if ((await fs.stat(candidate)).isDirectory()) {
|
|
493
|
+
return candidate;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
catch (error) {
|
|
497
|
+
if (error.code !== "ENOENT") {
|
|
498
|
+
throw error;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
const parentDir = path.dirname(currentDir);
|
|
502
|
+
if (parentDir === currentDir) {
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
currentDir = parentDir;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
function setLastFailedPluginNames(pluginNames) {
|
|
509
|
+
globalThis[LAST_FAILED_PLUGIN_NAMES] = [
|
|
510
|
+
...pluginNames,
|
|
511
|
+
];
|
|
512
|
+
}
|
|
513
|
+
export function getLastFailedPluginNames() {
|
|
514
|
+
return [
|
|
515
|
+
...(globalThis[LAST_FAILED_PLUGIN_NAMES] ?? []),
|
|
516
|
+
];
|
|
517
|
+
}
|
|
518
|
+
async function findAncestorNodeModulesDirs(startDir) {
|
|
519
|
+
const dirs = [];
|
|
520
|
+
let currentDir = path.resolve(startDir);
|
|
521
|
+
while (true) {
|
|
522
|
+
const candidate = path.join(currentDir, "node_modules");
|
|
523
|
+
try {
|
|
524
|
+
if ((await fs.stat(candidate)).isDirectory()) {
|
|
525
|
+
dirs.push(candidate);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
catch (error) {
|
|
529
|
+
if (error.code !== "ENOENT") {
|
|
530
|
+
throw error;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
const parentDir = path.dirname(currentDir);
|
|
534
|
+
if (parentDir === currentDir) {
|
|
535
|
+
return dirs;
|
|
536
|
+
}
|
|
537
|
+
currentDir = parentDir;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
async function linkAncestorNodeModulesIfNeeded(params) {
|
|
541
|
+
const stagedNodeModulesPath = path.join(params.stagedPackageRoot, "node_modules");
|
|
542
|
+
if (existsSync(stagedNodeModulesPath)) {
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
const ancestorNodeModules = await findNearestNodeModulesDir(params.packageRoot);
|
|
546
|
+
if (!ancestorNodeModules) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
const normalizedInstallRoot = path.resolve(params.installRoot);
|
|
550
|
+
const normalizedAncestorNodeModules = path.resolve(ancestorNodeModules);
|
|
551
|
+
if (normalizedAncestorNodeModules ===
|
|
552
|
+
path.join(normalizedInstallRoot, "node_modules") ||
|
|
553
|
+
normalizedAncestorNodeModules.startsWith(`${normalizedInstallRoot}${path.sep}`)) {
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
await fs.mkdir(stagedNodeModulesPath, { recursive: true });
|
|
557
|
+
await linkMissingPackagesFromNodeModules({
|
|
558
|
+
sourceNodeModulesDir: ancestorNodeModules,
|
|
559
|
+
targetNodeModulesDir: stagedNodeModulesPath,
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
async function linkMissingPackagesFromNodeModules(params) {
|
|
563
|
+
const entries = await fs.readdir(params.sourceNodeModulesDir, {
|
|
564
|
+
withFileTypes: true,
|
|
565
|
+
});
|
|
566
|
+
for (const entry of entries) {
|
|
567
|
+
if (entry.name === ".bin" || entry.name.startsWith(".")) {
|
|
568
|
+
continue;
|
|
569
|
+
}
|
|
570
|
+
const sourcePath = path.join(params.sourceNodeModulesDir, entry.name);
|
|
571
|
+
const targetPath = path.join(params.targetNodeModulesDir, entry.name);
|
|
572
|
+
if (entry.isDirectory() && entry.name.startsWith("@")) {
|
|
573
|
+
await fs.mkdir(targetPath, { recursive: true });
|
|
574
|
+
const scopedEntries = await fs.readdir(sourcePath, {
|
|
575
|
+
withFileTypes: true,
|
|
576
|
+
});
|
|
577
|
+
for (const scopedEntry of scopedEntries) {
|
|
578
|
+
if (scopedEntry.name.startsWith(".")) {
|
|
579
|
+
continue;
|
|
580
|
+
}
|
|
581
|
+
const scopedSourcePath = path.join(sourcePath, scopedEntry.name);
|
|
582
|
+
const scopedTargetPath = path.join(targetPath, scopedEntry.name);
|
|
583
|
+
if (existsSync(scopedTargetPath)) {
|
|
584
|
+
continue;
|
|
585
|
+
}
|
|
586
|
+
if (!scopedEntry.isDirectory() && !scopedEntry.isSymbolicLink()) {
|
|
587
|
+
continue;
|
|
588
|
+
}
|
|
589
|
+
const linkTarget = scopedEntry.isSymbolicLink()
|
|
590
|
+
? await resolveSymlinkTargetIfPresent(scopedSourcePath)
|
|
591
|
+
: scopedSourcePath;
|
|
592
|
+
if (!linkTarget) {
|
|
593
|
+
continue;
|
|
594
|
+
}
|
|
595
|
+
try {
|
|
596
|
+
await fs.symlink(linkTarget, scopedTargetPath, "dir");
|
|
597
|
+
}
|
|
598
|
+
catch (error) {
|
|
599
|
+
if (error.code !== "EEXIST") {
|
|
600
|
+
throw error;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
continue;
|
|
605
|
+
}
|
|
606
|
+
if ((!entry.isDirectory() && !entry.isSymbolicLink()) ||
|
|
607
|
+
existsSync(targetPath)) {
|
|
608
|
+
continue;
|
|
609
|
+
}
|
|
610
|
+
const linkTarget = entry.isSymbolicLink()
|
|
611
|
+
? await resolveSymlinkTargetIfPresent(sourcePath)
|
|
612
|
+
: sourcePath;
|
|
613
|
+
if (!linkTarget) {
|
|
614
|
+
continue;
|
|
615
|
+
}
|
|
616
|
+
try {
|
|
617
|
+
await fs.symlink(linkTarget, targetPath, "dir");
|
|
618
|
+
}
|
|
619
|
+
catch (error) {
|
|
620
|
+
if (error.code !== "EEXIST") {
|
|
621
|
+
throw error;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
async function resolveSymlinkTargetIfPresent(sourcePath) {
|
|
627
|
+
try {
|
|
628
|
+
return await fs.realpath(sourcePath);
|
|
629
|
+
}
|
|
630
|
+
catch (error) {
|
|
631
|
+
if (error.code === "ENOENT") {
|
|
632
|
+
return null;
|
|
633
|
+
}
|
|
634
|
+
throw error;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
async function stageNodeModulesEntries(params) {
|
|
638
|
+
const entries = await fs.readdir(params.sourceNodeModulesDir, {
|
|
639
|
+
withFileTypes: true,
|
|
640
|
+
});
|
|
641
|
+
for (const entry of entries) {
|
|
642
|
+
if (entry.name === ".bin" || entry.name.startsWith(".")) {
|
|
643
|
+
continue;
|
|
644
|
+
}
|
|
645
|
+
const sourcePath = path.join(params.sourceNodeModulesDir, entry.name);
|
|
646
|
+
const targetPath = path.join(params.targetNodeModulesDir, entry.name);
|
|
647
|
+
if (entry.isDirectory() && entry.name.startsWith("@")) {
|
|
648
|
+
await fs.mkdir(targetPath, { recursive: true });
|
|
649
|
+
const scopedEntries = await fs.readdir(sourcePath, {
|
|
650
|
+
withFileTypes: true,
|
|
651
|
+
});
|
|
652
|
+
for (const scopedEntry of scopedEntries) {
|
|
653
|
+
if (scopedEntry.name.startsWith(".")) {
|
|
654
|
+
continue;
|
|
655
|
+
}
|
|
656
|
+
const scopedSourcePath = path.join(sourcePath, scopedEntry.name);
|
|
657
|
+
const scopedTargetPath = path.join(targetPath, scopedEntry.name);
|
|
658
|
+
if (existsSync(scopedTargetPath)) {
|
|
659
|
+
continue;
|
|
660
|
+
}
|
|
661
|
+
if (scopedEntry.isSymbolicLink()) {
|
|
662
|
+
const linkTarget = await resolveSymlinkTargetIfPresent(scopedSourcePath);
|
|
663
|
+
if (!linkTarget)
|
|
664
|
+
continue;
|
|
665
|
+
await fs.symlink(linkTarget, scopedTargetPath);
|
|
666
|
+
continue;
|
|
667
|
+
}
|
|
668
|
+
if (!scopedEntry.isDirectory()) {
|
|
669
|
+
continue;
|
|
670
|
+
}
|
|
671
|
+
await fs.cp(scopedSourcePath, scopedTargetPath, {
|
|
672
|
+
recursive: true,
|
|
673
|
+
force: true,
|
|
674
|
+
dereference: true,
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
continue;
|
|
678
|
+
}
|
|
679
|
+
if (existsSync(targetPath)) {
|
|
680
|
+
continue;
|
|
681
|
+
}
|
|
682
|
+
if (entry.isSymbolicLink()) {
|
|
683
|
+
const linkTarget = await resolveSymlinkTargetIfPresent(sourcePath);
|
|
684
|
+
if (!linkTarget)
|
|
685
|
+
continue;
|
|
686
|
+
await fs.symlink(linkTarget, targetPath);
|
|
687
|
+
continue;
|
|
688
|
+
}
|
|
689
|
+
if (!entry.isDirectory()) {
|
|
690
|
+
continue;
|
|
691
|
+
}
|
|
692
|
+
await fs.cp(sourcePath, targetPath, {
|
|
693
|
+
recursive: true,
|
|
694
|
+
force: true,
|
|
695
|
+
dereference: true,
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
function stageAllHoistedNodeModulesEnabled() {
|
|
700
|
+
const raw = process.env.ELIZA_STAGE_ALL_HOISTED_NODE_MODULES;
|
|
701
|
+
if (!raw)
|
|
702
|
+
return false;
|
|
703
|
+
const normalized = raw.trim().toLowerCase();
|
|
704
|
+
return normalized === "1" || normalized === "true" || normalized === "yes";
|
|
705
|
+
}
|
|
706
|
+
function stageFullPluginPackageEnabled() {
|
|
707
|
+
const raw = process.env.ELIZA_STAGE_FULL_PLUGIN_PACKAGE;
|
|
708
|
+
if (!raw)
|
|
709
|
+
return false;
|
|
710
|
+
const normalized = raw.trim().toLowerCase();
|
|
711
|
+
return normalized === "1" || normalized === "true" || normalized === "yes";
|
|
712
|
+
}
|
|
713
|
+
const DEFAULT_PLUGIN_INSTANCE_KEEP = 3;
|
|
714
|
+
function pluginInstanceKeepCount() {
|
|
715
|
+
const raw = process.env.ELIZA_PLUGIN_INSTANCE_KEEP;
|
|
716
|
+
if (!raw)
|
|
717
|
+
return DEFAULT_PLUGIN_INSTANCE_KEEP;
|
|
718
|
+
const parsed = Number.parseInt(raw.trim(), 10);
|
|
719
|
+
if (!Number.isFinite(parsed) || parsed < 1) {
|
|
720
|
+
return DEFAULT_PLUGIN_INSTANCE_KEEP;
|
|
721
|
+
}
|
|
722
|
+
return parsed;
|
|
723
|
+
}
|
|
724
|
+
/**
|
|
725
|
+
* Prune sibling plugin staging directories under `stagingBaseDir`, keeping
|
|
726
|
+
* only the `keepCount` newest by mtime. Each call to `stagePluginImportRoot`
|
|
727
|
+
* mints a new `mkdtemp` directory and the previous ones are never reused, so
|
|
728
|
+
* without this cleanup the directory grows unbounded — on long-running dev
|
|
729
|
+
* boxes the same plugin can accumulate thousands of stale installs (each
|
|
730
|
+
* carrying its own `node_modules` copy) and consume hundreds of GB.
|
|
731
|
+
*
|
|
732
|
+
* Failures are logged but never thrown — staging the new install must not be
|
|
733
|
+
* blocked by failure to clean up old ones.
|
|
734
|
+
*
|
|
735
|
+
* Exported for unit testing.
|
|
736
|
+
*/
|
|
737
|
+
export async function pruneStalePluginInstances(stagingBaseDir, keepCount) {
|
|
738
|
+
let entries;
|
|
739
|
+
try {
|
|
740
|
+
entries = await fs.readdir(stagingBaseDir, { withFileTypes: true });
|
|
741
|
+
}
|
|
742
|
+
catch {
|
|
743
|
+
return;
|
|
744
|
+
}
|
|
745
|
+
const candidates = [];
|
|
746
|
+
for (const entry of entries) {
|
|
747
|
+
if (!entry.isDirectory())
|
|
748
|
+
continue;
|
|
749
|
+
const fullPath = path.join(stagingBaseDir, entry.name);
|
|
750
|
+
try {
|
|
751
|
+
const stat = await fs.stat(fullPath);
|
|
752
|
+
candidates.push({ path: fullPath, mtimeMs: stat.mtimeMs });
|
|
753
|
+
}
|
|
754
|
+
catch {
|
|
755
|
+
// dir vanished concurrently — fine, skip it
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
if (candidates.length <= keepCount)
|
|
759
|
+
return;
|
|
760
|
+
candidates.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
761
|
+
const toDelete = candidates.slice(keepCount);
|
|
762
|
+
let deleted = 0;
|
|
763
|
+
for (const victim of toDelete) {
|
|
764
|
+
try {
|
|
765
|
+
await fs.rm(victim.path, { recursive: true, force: true });
|
|
766
|
+
deleted += 1;
|
|
767
|
+
}
|
|
768
|
+
catch (error) {
|
|
769
|
+
logger.warn(`[eliza] Failed to prune stale plugin instance ${victim.path}: ${formatError(error)}`);
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
if (deleted > 0) {
|
|
773
|
+
logger.debug(`[eliza] Pruned ${deleted} stale plugin instance(s) under ${stagingBaseDir}, kept newest ${keepCount}`);
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
function createPluginPackageStageFilter(packageRoot) {
|
|
777
|
+
const distPath = path.join(packageRoot, "dist");
|
|
778
|
+
const stageBuiltPackageOnly = existsSync(distPath) && !stageFullPluginPackageEnabled();
|
|
779
|
+
return (src) => {
|
|
780
|
+
const relativePath = path.relative(packageRoot, src);
|
|
781
|
+
if (!relativePath)
|
|
782
|
+
return true;
|
|
783
|
+
const [topLevel] = relativePath.split(path.sep);
|
|
784
|
+
if (topLevel === "node_modules")
|
|
785
|
+
return false;
|
|
786
|
+
if (stageBuiltPackageOnly) {
|
|
787
|
+
return topLevel === "dist" || relativePath === "package.json";
|
|
788
|
+
}
|
|
789
|
+
return ![
|
|
790
|
+
".turbo",
|
|
791
|
+
"coverage",
|
|
792
|
+
"docs",
|
|
793
|
+
"node_modules",
|
|
794
|
+
"public_src",
|
|
795
|
+
"test",
|
|
796
|
+
"__tests__",
|
|
797
|
+
].includes(topLevel);
|
|
798
|
+
};
|
|
799
|
+
}
|
|
800
|
+
async function linkHoistedNodeModulesPackages(params) {
|
|
801
|
+
const stagedNodeModulesPath = path.join(params.stagedPackageRoot, "node_modules");
|
|
802
|
+
if (!existsSync(stagedNodeModulesPath)) {
|
|
803
|
+
return;
|
|
804
|
+
}
|
|
805
|
+
const stagedNodeModulesStat = await fs.lstat(stagedNodeModulesPath);
|
|
806
|
+
if (stagedNodeModulesStat.isSymbolicLink()) {
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
809
|
+
const normalizedInstallRoot = path.resolve(params.installRoot);
|
|
810
|
+
const internalNodeModulesRoot = path.join(normalizedInstallRoot, "node_modules");
|
|
811
|
+
const ancestorNodeModulesDirs = await findAncestorNodeModulesDirs(path.dirname(params.packageRoot));
|
|
812
|
+
for (const ancestorNodeModules of ancestorNodeModulesDirs) {
|
|
813
|
+
const normalizedAncestorNodeModules = path.resolve(ancestorNodeModules);
|
|
814
|
+
if (normalizedAncestorNodeModules === internalNodeModulesRoot ||
|
|
815
|
+
normalizedAncestorNodeModules.startsWith(`${normalizedInstallRoot}${path.sep}`)) {
|
|
816
|
+
continue;
|
|
817
|
+
}
|
|
818
|
+
await linkMissingPackagesFromNodeModules({
|
|
819
|
+
sourceNodeModulesDir: ancestorNodeModules,
|
|
820
|
+
targetNodeModulesDir: stagedNodeModulesPath,
|
|
821
|
+
});
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
async function stagePluginImportRoot(params) {
|
|
825
|
+
const stagingBaseDir = path.join(resolveStateDir(), "plugins", ".runtime-imports", sanitizePluginCacheSegment(params.packageName));
|
|
826
|
+
await fs.mkdir(stagingBaseDir, { recursive: true });
|
|
827
|
+
// Prune BEFORE mkdtemp so concurrent stages of the same plugin can't have
|
|
828
|
+
// their just-minted (still-empty) sibling deleted by another process's pruner
|
|
829
|
+
// that ranks it as the oldest in the batch.
|
|
830
|
+
await pruneStalePluginInstances(stagingBaseDir, pluginInstanceKeepCount());
|
|
831
|
+
const stagingDir = await fs.mkdtemp(path.join(stagingBaseDir, `${Date.now()}-${crypto.randomUUID()}-`));
|
|
832
|
+
const stagedInstallRoot = path.join(stagingDir, "root");
|
|
833
|
+
const stagedPackageRoot = params.packageRelativePath.length > 0
|
|
834
|
+
? path.join(stagedInstallRoot, ...params.packageRelativePath)
|
|
835
|
+
: stagedInstallRoot;
|
|
836
|
+
await fs.mkdir(path.dirname(stagedPackageRoot), { recursive: true });
|
|
837
|
+
await fs.cp(params.packageRoot, stagedPackageRoot, {
|
|
838
|
+
recursive: true,
|
|
839
|
+
force: true,
|
|
840
|
+
dereference: true,
|
|
841
|
+
filter: createPluginPackageStageFilter(params.packageRoot),
|
|
842
|
+
});
|
|
843
|
+
const installNodeModulesPath = path.join(params.installRoot, "node_modules");
|
|
844
|
+
try {
|
|
845
|
+
if ((await fs.stat(installNodeModulesPath)).isDirectory()) {
|
|
846
|
+
const stagedInstallNodeModulesPath = path.join(stagedInstallRoot, "node_modules");
|
|
847
|
+
await fs.mkdir(stagedInstallNodeModulesPath, { recursive: true });
|
|
848
|
+
await stageNodeModulesEntries({
|
|
849
|
+
sourceNodeModulesDir: installNodeModulesPath,
|
|
850
|
+
targetNodeModulesDir: stagedInstallNodeModulesPath,
|
|
851
|
+
});
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
catch (error) {
|
|
855
|
+
if (error.code !== "ENOENT") {
|
|
856
|
+
throw error;
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
if (params.packageRoot !== params.installRoot) {
|
|
860
|
+
const packageNodeModulesPath = path.join(params.packageRoot, "node_modules");
|
|
861
|
+
try {
|
|
862
|
+
if ((await fs.stat(packageNodeModulesPath)).isDirectory()) {
|
|
863
|
+
const stagedPackageNodeModulesPath = path.join(stagedPackageRoot, "node_modules");
|
|
864
|
+
await fs.mkdir(stagedPackageNodeModulesPath, { recursive: true });
|
|
865
|
+
await stageNodeModulesEntries({
|
|
866
|
+
sourceNodeModulesDir: packageNodeModulesPath,
|
|
867
|
+
targetNodeModulesDir: stagedPackageNodeModulesPath,
|
|
868
|
+
});
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
catch (error) {
|
|
872
|
+
if (error.code !== "ENOENT") {
|
|
873
|
+
throw error;
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
await ensureStagedPackageDependencies({
|
|
878
|
+
installRoot: params.installRoot,
|
|
879
|
+
packageName: params.packageName,
|
|
880
|
+
packageRoot: params.packageRoot,
|
|
881
|
+
stagedPackageRoot,
|
|
882
|
+
});
|
|
883
|
+
const shouldLinkHoistedWorkspaceDeps = stageAllHoistedNodeModulesEnabled() ||
|
|
884
|
+
params.packageName.startsWith("@elizaos/app-");
|
|
885
|
+
if (shouldLinkHoistedWorkspaceDeps) {
|
|
886
|
+
await linkAncestorNodeModulesIfNeeded({
|
|
887
|
+
installRoot: params.installRoot,
|
|
888
|
+
packageRoot: params.packageRoot,
|
|
889
|
+
stagedPackageRoot,
|
|
890
|
+
});
|
|
891
|
+
await linkHoistedNodeModulesPackages({
|
|
892
|
+
installRoot: params.installRoot,
|
|
893
|
+
packageRoot: params.packageRoot,
|
|
894
|
+
stagedPackageRoot,
|
|
895
|
+
});
|
|
896
|
+
}
|
|
897
|
+
return stagedPackageRoot;
|
|
898
|
+
}
|
|
899
|
+
/**
|
|
900
|
+
* Resolve a statically-imported @elizaos plugin by name.
|
|
901
|
+
* Returns the module if found in STATIC_ELIZA_PLUGINS, otherwise null.
|
|
902
|
+
*/
|
|
903
|
+
function resolveStaticElizaPlugin(pluginName) {
|
|
904
|
+
return STATIC_ELIZA_PLUGINS[pluginName] ?? null;
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Walk the @elizaos scope in node_modules + workspace `plugins/` dirs and
|
|
908
|
+
* return every package that has a `package.json`. The manifest evaluator
|
|
909
|
+
* filters these down to the ones that actually declare an `elizaos.plugin`
|
|
910
|
+
* block — this discovery step is intentionally cheap (a single readdir + stat
|
|
911
|
+
* per candidate, no module imports).
|
|
912
|
+
*/
|
|
913
|
+
async function discoverPluginCandidates() {
|
|
914
|
+
const seen = new Set();
|
|
915
|
+
const candidates = [];
|
|
916
|
+
const tryAdd = async (pkgRoot, pkgName) => {
|
|
917
|
+
if (seen.has(pkgName))
|
|
918
|
+
return;
|
|
919
|
+
if (!(await pathEntryExists(path.join(pkgRoot, "package.json"))))
|
|
920
|
+
return;
|
|
921
|
+
seen.add(pkgName);
|
|
922
|
+
candidates.push({ packageName: pkgName, packageRoot: pkgRoot });
|
|
923
|
+
};
|
|
924
|
+
// 1. node_modules/@elizaos/* — covers npm-installed plugins and dev symlinks
|
|
925
|
+
// pointing at workspace packages.
|
|
926
|
+
for (const root of resolveWorkspaceRoots()) {
|
|
927
|
+
const elizaScope = path.join(root, "node_modules", "@elizaos");
|
|
928
|
+
let entries;
|
|
929
|
+
try {
|
|
930
|
+
entries = (await fs.readdir(elizaScope, {
|
|
931
|
+
withFileTypes: true,
|
|
932
|
+
}));
|
|
933
|
+
}
|
|
934
|
+
catch (err) {
|
|
935
|
+
if (err.code === "ENOENT")
|
|
936
|
+
continue;
|
|
937
|
+
throw err;
|
|
938
|
+
}
|
|
939
|
+
for (const entry of entries) {
|
|
940
|
+
if (!entry.isDirectory() && !entry.isSymbolicLink())
|
|
941
|
+
continue;
|
|
942
|
+
if (entry.name.startsWith("."))
|
|
943
|
+
continue;
|
|
944
|
+
// Only plugin/app packages — skip core, shared, agent, ui, etc. (those
|
|
945
|
+
// aren't auto-enable participants and reading their package.json is
|
|
946
|
+
// wasted work).
|
|
947
|
+
if (!entry.name.startsWith("plugin-") && !entry.name.startsWith("app-")) {
|
|
948
|
+
continue;
|
|
949
|
+
}
|
|
950
|
+
const pkgRoot = path.join(elizaScope, entry.name);
|
|
951
|
+
await tryAdd(pkgRoot, `@elizaos/${entry.name}`);
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
// 2. workspace `plugins/` dir — covers cases where the plugin is in the
|
|
955
|
+
// repo but not yet symlinked into node_modules. Cheap fall-through.
|
|
956
|
+
for (const root of resolveWorkspaceRoots()) {
|
|
957
|
+
const pluginsDir = path.join(root, "plugins");
|
|
958
|
+
let entries;
|
|
959
|
+
try {
|
|
960
|
+
entries = (await fs.readdir(pluginsDir, {
|
|
961
|
+
withFileTypes: true,
|
|
962
|
+
}));
|
|
963
|
+
}
|
|
964
|
+
catch (err) {
|
|
965
|
+
if (err.code === "ENOENT")
|
|
966
|
+
continue;
|
|
967
|
+
throw err;
|
|
968
|
+
}
|
|
969
|
+
for (const entry of entries) {
|
|
970
|
+
if (!entry.isDirectory())
|
|
971
|
+
continue;
|
|
972
|
+
if (!entry.name.startsWith("plugin-") && !entry.name.startsWith("app-")) {
|
|
973
|
+
continue;
|
|
974
|
+
}
|
|
975
|
+
// Some workspace plugins keep their package at `<name>/typescript`; try
|
|
976
|
+
// the typescript subdir first, fall back to the dir itself.
|
|
977
|
+
const tsRoot = path.join(pluginsDir, entry.name, "typescript");
|
|
978
|
+
const tsManifest = path.join(tsRoot, "package.json");
|
|
979
|
+
if (await pathEntryExists(tsManifest)) {
|
|
980
|
+
try {
|
|
981
|
+
const raw = await fs.readFile(tsManifest, "utf8");
|
|
982
|
+
const parsed = JSON.parse(raw);
|
|
983
|
+
if (parsed.name)
|
|
984
|
+
await tryAdd(tsRoot, parsed.name);
|
|
985
|
+
}
|
|
986
|
+
catch {
|
|
987
|
+
// ignore unreadable / malformed
|
|
988
|
+
}
|
|
989
|
+
continue;
|
|
990
|
+
}
|
|
991
|
+
const flatRoot = path.join(pluginsDir, entry.name);
|
|
992
|
+
const flatManifest = path.join(flatRoot, "package.json");
|
|
993
|
+
if (await pathEntryExists(flatManifest)) {
|
|
994
|
+
try {
|
|
995
|
+
const raw = await fs.readFile(flatManifest, "utf8");
|
|
996
|
+
const parsed = JSON.parse(raw);
|
|
997
|
+
if (parsed.name)
|
|
998
|
+
await tryAdd(flatRoot, parsed.name);
|
|
999
|
+
}
|
|
1000
|
+
catch {
|
|
1001
|
+
// ignore
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
return candidates;
|
|
1007
|
+
}
|
|
1008
|
+
// ---------------------------------------------------------------------------
|
|
1009
|
+
// Main function
|
|
1010
|
+
// ---------------------------------------------------------------------------
|
|
1011
|
+
/**
|
|
1012
|
+
* Resolve Eliza plugins from config and auto-enable logic.
|
|
1013
|
+
* Returns an array of elizaOS Plugin instances ready for AgentRuntime.
|
|
1014
|
+
*
|
|
1015
|
+
* Handles three categories of plugins:
|
|
1016
|
+
* 1. Built-in/npm plugins — imported by package name
|
|
1017
|
+
* 2. User-installed plugins — from ~/.eliza/plugins/installed/
|
|
1018
|
+
* 3. Custom/drop-in plugins — from ~/.eliza/plugins/custom/ and plugins.load.paths
|
|
1019
|
+
*
|
|
1020
|
+
* Each plugin is loaded inside an error boundary so a single failing plugin
|
|
1021
|
+
* cannot crash the entire agent startup.
|
|
1022
|
+
*/
|
|
1023
|
+
export async function resolvePlugins(config, opts) {
|
|
1024
|
+
const plugins = [];
|
|
1025
|
+
const failedPlugins = [];
|
|
1026
|
+
const repairedInstallRecords = new Set();
|
|
1027
|
+
// NOTE: Auto-enable runs before dependency validation intentionally.
|
|
1028
|
+
// It returns a new config object (structuredClone under the hood) with
|
|
1029
|
+
// `plugins.allow` populated based on env vars and connector configuration.
|
|
1030
|
+
// We have to USE the returned config for collectPluginNames — the previous
|
|
1031
|
+
// code discarded the return value and kept using the original `config`,
|
|
1032
|
+
// which meant every env-gated plugin (plugin-wallet, etc.) was
|
|
1033
|
+
// silently dropped. Capture the result and assign back so both the allow
|
|
1034
|
+
// list and any downstream config reads see the mutation.
|
|
1035
|
+
//
|
|
1036
|
+
// Auto-enable is sourced exclusively from per-plugin manifests: walk every
|
|
1037
|
+
// @elizaos/* package.json on disk and run each plugin's
|
|
1038
|
+
// autoEnableModule.shouldEnable(ctx). Each plugin owns its own enable
|
|
1039
|
+
// conditions in auto-enable.ts — no central map exists.
|
|
1040
|
+
//
|
|
1041
|
+
// App-level manifest (host app's package.json `elizaos.app` block) can:
|
|
1042
|
+
// - restrict the candidate list to a curated subset
|
|
1043
|
+
// - prepopulate config.plugins.entries with default { enabled } flags
|
|
1044
|
+
// (user config still wins; defaults only fill keys the user hasn't set)
|
|
1045
|
+
const changes = [];
|
|
1046
|
+
try {
|
|
1047
|
+
const appManifest = await readAppManifest(process.cwd()).catch(() => null);
|
|
1048
|
+
const defaultedEntries = applyAppManifestDefaults(config, appManifest);
|
|
1049
|
+
if (defaultedEntries.length > 0) {
|
|
1050
|
+
logger.info(`[eliza] App manifest defaults applied to entries: ${defaultedEntries.join(", ")}`);
|
|
1051
|
+
}
|
|
1052
|
+
const allCandidates = await discoverPluginCandidates();
|
|
1053
|
+
const candidates = filterCandidatesByAppManifest(allCandidates, appManifest);
|
|
1054
|
+
if (appManifest?.candidates && candidates.length < allCandidates.length) {
|
|
1055
|
+
logger.info(`[eliza] App manifest restricted candidate set: ${candidates.length}/${allCandidates.length} plugins considered`);
|
|
1056
|
+
}
|
|
1057
|
+
const verdicts = await evaluatePluginManifests(candidates, {
|
|
1058
|
+
env: process.env,
|
|
1059
|
+
config,
|
|
1060
|
+
isNativePlatform: isMobilePlatform(),
|
|
1061
|
+
});
|
|
1062
|
+
applyPluginManifestVerdicts(config, verdicts, changes);
|
|
1063
|
+
}
|
|
1064
|
+
catch (err) {
|
|
1065
|
+
logger.warn(`[eliza] Plugin manifest auto-enable failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
1066
|
+
}
|
|
1067
|
+
if (changes.length > 0) {
|
|
1068
|
+
logger.info(`[eliza] Plugin auto-enable: ${changes.join("; ")}`);
|
|
1069
|
+
}
|
|
1070
|
+
// Provenance for "why is this package in the load set?" — surfaced when an
|
|
1071
|
+
// optional plugin fails to resolve so logs point at config/env, not "eliza broke".
|
|
1072
|
+
const loadReasons = new Map();
|
|
1073
|
+
const pluginsToLoad = collectPluginNames(config, loadReasons);
|
|
1074
|
+
const corePluginSet = new Set(CORE_PLUGINS);
|
|
1075
|
+
// Build a mutable map of install records so we can merge drop-in discoveries
|
|
1076
|
+
const installRecords = {
|
|
1077
|
+
...(config.plugins?.installs ?? {}),
|
|
1078
|
+
};
|
|
1079
|
+
const denyList = new Set((config.plugins?.deny || []));
|
|
1080
|
+
const envSkipPlugins = (process.env.ELIZA_SKIP_PLUGINS ?? "")
|
|
1081
|
+
.split(",")
|
|
1082
|
+
.map((value) => value.trim())
|
|
1083
|
+
.filter(Boolean);
|
|
1084
|
+
for (const pluginName of envSkipPlugins) {
|
|
1085
|
+
denyList.add(pluginName);
|
|
1086
|
+
}
|
|
1087
|
+
if (envSkipPlugins.length > 0) {
|
|
1088
|
+
logger.info(`[eliza] Skipping ${envSkipPlugins.length} plugin(s) via ELIZA_SKIP_PLUGINS: ${envSkipPlugins.join(", ")}`);
|
|
1089
|
+
}
|
|
1090
|
+
for (const pluginName of denyList) {
|
|
1091
|
+
pluginsToLoad.delete(pluginName);
|
|
1092
|
+
const canonical = resolvePluginPackageAlias(pluginName);
|
|
1093
|
+
if (canonical !== pluginName) {
|
|
1094
|
+
pluginsToLoad.delete(canonical);
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
// ── Auto-discover ejected plugins ───────────────────────────────────────
|
|
1098
|
+
// Ejected plugins override npm/core versions, so they are tracked
|
|
1099
|
+
// separately and consulted first at import time.
|
|
1100
|
+
const ejectedRecords = await scanDropInPlugins(path.join(resolveStateDir(), EJECTED_PLUGINS_DIRNAME));
|
|
1101
|
+
const ejectedPluginNames = [];
|
|
1102
|
+
for (const [name, _record] of Object.entries(ejectedRecords)) {
|
|
1103
|
+
if (denyList.has(name))
|
|
1104
|
+
continue;
|
|
1105
|
+
pluginsToLoad.add(name);
|
|
1106
|
+
if (!loadReasons.has(name))
|
|
1107
|
+
loadReasons.set(name, "ejected plugins dir");
|
|
1108
|
+
ejectedPluginNames.push(name);
|
|
1109
|
+
}
|
|
1110
|
+
if (ejectedPluginNames.length > 0) {
|
|
1111
|
+
logger.info(`[eliza] Discovered ${ejectedPluginNames.length} ejected plugin(s): ${ejectedPluginNames.join(", ")}`);
|
|
1112
|
+
}
|
|
1113
|
+
// ── Auto-discover drop-in custom plugins ────────────────────────────────
|
|
1114
|
+
// Scan well-known dir + any extra dirs from plugins.load.paths (first wins).
|
|
1115
|
+
const scanDirs = [
|
|
1116
|
+
path.join(resolveStateDir(), CUSTOM_PLUGINS_DIRNAME),
|
|
1117
|
+
...(config.plugins?.load?.paths ?? []).map(resolveUserPath),
|
|
1118
|
+
];
|
|
1119
|
+
const dropInRecords = {};
|
|
1120
|
+
for (const dir of scanDirs) {
|
|
1121
|
+
for (const [name, record] of Object.entries(await scanDropInPlugins(dir))) {
|
|
1122
|
+
if (!dropInRecords[name])
|
|
1123
|
+
dropInRecords[name] = record;
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
// Merge into load set — deny list and core collisions are filtered out.
|
|
1127
|
+
const { accepted: customPluginNames, skipped } = mergeDropInPlugins({
|
|
1128
|
+
dropInRecords,
|
|
1129
|
+
installRecords,
|
|
1130
|
+
corePluginNames: corePluginSet,
|
|
1131
|
+
denyList,
|
|
1132
|
+
pluginsToLoad,
|
|
1133
|
+
});
|
|
1134
|
+
for (const msg of skipped)
|
|
1135
|
+
logger.warn(msg);
|
|
1136
|
+
if (customPluginNames.length > 0) {
|
|
1137
|
+
logger.info(`[eliza] Discovered ${customPluginNames.length} custom plugin(s): ${customPluginNames.join(", ")}`);
|
|
1138
|
+
}
|
|
1139
|
+
logger.info(`[eliza] Resolving ${pluginsToLoad.size} plugins...`);
|
|
1140
|
+
const loadStartTime = Date.now();
|
|
1141
|
+
// Built once so we don't rebuild on every optional plugin failure.
|
|
1142
|
+
const optionalPluginNames = new Set([
|
|
1143
|
+
...Object.values(OPTIONAL_PLUGIN_MAP),
|
|
1144
|
+
...Object.values(CHANNEL_PLUGIN_MAP),
|
|
1145
|
+
...OPTIONAL_CORE_PLUGINS,
|
|
1146
|
+
]);
|
|
1147
|
+
// Load a single plugin - returns result or null on skip/failure
|
|
1148
|
+
async function loadSinglePlugin(pluginName) {
|
|
1149
|
+
const isCore = corePluginSet.has(pluginName);
|
|
1150
|
+
const isOfficialElizaPlugin = pluginName.startsWith("@elizaos/plugin-");
|
|
1151
|
+
const ejectedRecord = ejectedRecords[pluginName];
|
|
1152
|
+
const installRecord = installRecords[pluginName];
|
|
1153
|
+
const workspaceOverridePath = getWorkspacePluginOverridePath(pluginName);
|
|
1154
|
+
const staticElizaPlugin = await resolveStaticElizaPlugin(pluginName);
|
|
1155
|
+
const exportSubpath = runtimePluginExportSubpath(pluginName);
|
|
1156
|
+
const importOfficialPluginFromNodeModules = async () => (await import(__rewriteRelativeImportExtension(resolveElizaPluginImportSpecifier(pluginName))));
|
|
1157
|
+
// Pre-flight: ensure native dependencies are available for special plugins.
|
|
1158
|
+
if (pluginName === "@elizaos/plugin-browser") {
|
|
1159
|
+
if (!ensureBrowserServerLink()) {
|
|
1160
|
+
failedPlugins.push({
|
|
1161
|
+
name: pluginName,
|
|
1162
|
+
error: "browser server binary not found",
|
|
1163
|
+
});
|
|
1164
|
+
// ensureBrowserServerLink() already logged one debug line with setup hints.
|
|
1165
|
+
return null;
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
try {
|
|
1169
|
+
let mod;
|
|
1170
|
+
if (ejectedRecord?.installPath) {
|
|
1171
|
+
// Ejected plugin — always prefer local source over npm/core.
|
|
1172
|
+
logger.debug(`[eliza] Loading ejected plugin: ${pluginName} from ${ejectedRecord.installPath}`);
|
|
1173
|
+
mod = await importPluginModuleFromPath(ejectedRecord.installPath, pluginName, exportSubpath);
|
|
1174
|
+
}
|
|
1175
|
+
else if (staticElizaPlugin) {
|
|
1176
|
+
// Prefer statically imported official plugins over workspace staging.
|
|
1177
|
+
// This keeps local node_modules links working while avoiding staging
|
|
1178
|
+
// bugs in workspace packages with nested symlinked dependencies.
|
|
1179
|
+
mod = staticElizaPlugin;
|
|
1180
|
+
}
|
|
1181
|
+
else if (pluginName === "@elizaos/plugin-sql") {
|
|
1182
|
+
// Mobile bundles run without a node_modules tree. The static plugin
|
|
1183
|
+
// registry is the normal fast path, but use a literal import fallback
|
|
1184
|
+
// so Bun can still inline the required SQL plugin if module init order
|
|
1185
|
+
// leaves the registry empty.
|
|
1186
|
+
const sqlPluginModule = await import("@elizaos/plugin-sql");
|
|
1187
|
+
mod = Object.fromEntries(Object.entries(sqlPluginModule));
|
|
1188
|
+
}
|
|
1189
|
+
else if (workspaceOverridePath) {
|
|
1190
|
+
const shouldPreferRepoNodeModules = isOfficialElizaPlugin &&
|
|
1191
|
+
(await hasNonSymlinkWorkspaceNodeModulesPackage(pluginName));
|
|
1192
|
+
if (shouldPreferRepoNodeModules) {
|
|
1193
|
+
logger.debug(`[eliza] Loading repo node_modules plugin: ${pluginName}`);
|
|
1194
|
+
try {
|
|
1195
|
+
mod = await importOfficialPluginFromNodeModules();
|
|
1196
|
+
}
|
|
1197
|
+
catch (error) {
|
|
1198
|
+
logger.warn(`[eliza] Repo node_modules plugin import failed for ${pluginName}; falling back to workspace override: ${formatError(error)}`);
|
|
1199
|
+
mod = await importPluginModuleFromPath(workspaceOverridePath, pluginName, exportSubpath);
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
else {
|
|
1203
|
+
logger.debug(`[eliza] Loading workspace plugin override: ${pluginName} from ${workspaceOverridePath}`);
|
|
1204
|
+
// Always stage workspace overrides instead of re-importing the bare
|
|
1205
|
+
// package specifier from node_modules. Bun can wedge a subsequent
|
|
1206
|
+
// restart when an earlier bare import of the same specifier failed
|
|
1207
|
+
// during module evaluation. Staging also guarantees local edits reload.
|
|
1208
|
+
mod = await importPluginModuleFromPath(workspaceOverridePath, pluginName, exportSubpath);
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
else if (installRecord?.installPath) {
|
|
1212
|
+
// Prefer bundled/node_modules copies for official Eliza plugins.
|
|
1213
|
+
if (isOfficialElizaPlugin) {
|
|
1214
|
+
try {
|
|
1215
|
+
mod = await importOfficialPluginFromNodeModules();
|
|
1216
|
+
if (repairBrokenInstallRecord(config, pluginName)) {
|
|
1217
|
+
repairedInstallRecords.add(pluginName);
|
|
1218
|
+
}
|
|
1219
|
+
}
|
|
1220
|
+
catch (npmErr) {
|
|
1221
|
+
logger.warn(`[eliza] Node_modules resolution failed for ${pluginName} (${formatError(npmErr)}). Trying installed path at ${redactUserSegments(installRecord.installPath)}.`);
|
|
1222
|
+
mod = await importPluginModuleFromPath(installRecord.installPath, pluginName, exportSubpath);
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
else {
|
|
1226
|
+
// User-installed plugin — load from its install directory on disk.
|
|
1227
|
+
try {
|
|
1228
|
+
mod = await importPluginModuleFromPath(installRecord.installPath, pluginName, exportSubpath);
|
|
1229
|
+
}
|
|
1230
|
+
catch (installErr) {
|
|
1231
|
+
logger.warn(`[eliza] Installed plugin ${pluginName} failed at ${redactUserSegments(installRecord.installPath)} (${formatError(installErr)}). Falling back to node_modules resolution.`);
|
|
1232
|
+
const staticMod = await resolveStaticElizaPlugin(pluginName);
|
|
1233
|
+
mod = staticMod
|
|
1234
|
+
? staticMod
|
|
1235
|
+
: (await import(__rewriteRelativeImportExtension(runtimePluginImportSpecifier(pluginName))));
|
|
1236
|
+
if (repairBrokenInstallRecord(config, pluginName)) {
|
|
1237
|
+
repairedInstallRecords.add(pluginName);
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
else if (isOfficialElizaPlugin) {
|
|
1243
|
+
// Eliza plugins can resolve either from bundled local wrappers
|
|
1244
|
+
// under eliza-dist/plugins/* or from packaged node_modules.
|
|
1245
|
+
mod = await importOfficialPluginFromNodeModules();
|
|
1246
|
+
}
|
|
1247
|
+
else {
|
|
1248
|
+
// Built-in/npm plugin — prefer a bundled static import regardless of
|
|
1249
|
+
// naming convention (short-name plugins like "agent-orchestrator" are
|
|
1250
|
+
// registered in STATIC_ELIZA_PLUGINS and would otherwise fail a bare
|
|
1251
|
+
// node_modules resolution).
|
|
1252
|
+
mod = staticElizaPlugin
|
|
1253
|
+
? staticElizaPlugin
|
|
1254
|
+
: (await import(__rewriteRelativeImportExtension(runtimePluginImportSpecifier(pluginName))));
|
|
1255
|
+
}
|
|
1256
|
+
const pluginInstance = findRuntimePluginExport(mod);
|
|
1257
|
+
if (pluginInstance) {
|
|
1258
|
+
// Wrap the plugin's init function with an error boundary.
|
|
1259
|
+
// Core plugins re-throw on init failure; optional plugins degrade gracefully.
|
|
1260
|
+
const wrappedPlugin = wrapPluginWithErrorBoundary(pluginName, pluginInstance, { isCore });
|
|
1261
|
+
logger.debug(`[eliza] ✓ Loaded plugin: ${pluginName}`);
|
|
1262
|
+
return { name: pluginName, plugin: wrappedPlugin };
|
|
1263
|
+
}
|
|
1264
|
+
else {
|
|
1265
|
+
const msg = `[eliza] Plugin ${pluginName} did not export a valid Plugin object`;
|
|
1266
|
+
failedPlugins.push({
|
|
1267
|
+
name: pluginName,
|
|
1268
|
+
error: "no valid Plugin export",
|
|
1269
|
+
});
|
|
1270
|
+
if (isCore) {
|
|
1271
|
+
logger.error(msg);
|
|
1272
|
+
}
|
|
1273
|
+
else {
|
|
1274
|
+
logger.warn(msg);
|
|
1275
|
+
}
|
|
1276
|
+
return null;
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
catch (err) {
|
|
1280
|
+
const msg = formatError(err);
|
|
1281
|
+
failedPlugins.push({ name: pluginName, error: msg });
|
|
1282
|
+
if (isCore) {
|
|
1283
|
+
logger.error(`[eliza] Failed to load core plugin ${pluginName}: ${msg}`);
|
|
1284
|
+
}
|
|
1285
|
+
else {
|
|
1286
|
+
if (optionalPluginNames.has(pluginName)) {
|
|
1287
|
+
if (!isBenignOptionalPluginFailure(msg)) {
|
|
1288
|
+
logger.warn(`[eliza] Optional plugin ${pluginName} failed to load: ${msg}`);
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
else {
|
|
1292
|
+
logger.info(`[eliza] Could not load plugin ${pluginName}: ${msg}`);
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
return null;
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
// Load all plugins in parallel for faster startup.
|
|
1299
|
+
// SECURITY NOTE: Plugins that modify process.env during import or init
|
|
1300
|
+
// may race with each other. This is an accepted trade-off for startup
|
|
1301
|
+
// performance. Critical env vars (database, AI provider keys) are set
|
|
1302
|
+
// before this point in buildCharacterFromConfig / resolveDbEnv.
|
|
1303
|
+
const serializePluginLoads = process.env.ELIZA_SERIALIZE_PLUGIN_LOADS === "1";
|
|
1304
|
+
logger.info(`[eliza] Loading ${pluginsToLoad.size} plugins${serializePluginLoads ? " sequentially" : ""}...`);
|
|
1305
|
+
const pluginResults = serializePluginLoads
|
|
1306
|
+
? await (async () => {
|
|
1307
|
+
const results = [];
|
|
1308
|
+
let index = 0;
|
|
1309
|
+
for (const pluginName of pluginsToLoad) {
|
|
1310
|
+
index += 1;
|
|
1311
|
+
logger.info(`[eliza] Loading plugin ${index}/${pluginsToLoad.size}: ${pluginName}`);
|
|
1312
|
+
results.push(await loadSinglePlugin(pluginName));
|
|
1313
|
+
}
|
|
1314
|
+
return results;
|
|
1315
|
+
})()
|
|
1316
|
+
: await Promise.all(Array.from(pluginsToLoad).map(loadSinglePlugin));
|
|
1317
|
+
// Collect successful loads
|
|
1318
|
+
for (const result of pluginResults) {
|
|
1319
|
+
if (result) {
|
|
1320
|
+
plugins.push(result);
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
const loadDuration = Date.now() - loadStartTime;
|
|
1324
|
+
logger.info(`[eliza] Plugin loading took ${loadDuration}ms`);
|
|
1325
|
+
// Summary logging — do not treat “optional + not installed” as top-level failures.
|
|
1326
|
+
const optionalFailed = failedPlugins.filter((f) => optionalPluginNames.has(f.name));
|
|
1327
|
+
const seriousFailed = failedPlugins.filter((f) => !optionalPluginNames.has(f.name));
|
|
1328
|
+
const benignOptionalFailed = optionalFailed.filter((f) => isBenignOptionalPluginFailure(f.error));
|
|
1329
|
+
const noisyOptionalFailed = optionalFailed.filter((f) => !isBenignOptionalPluginFailure(f.error));
|
|
1330
|
+
const detailFailures = [...seriousFailed, ...noisyOptionalFailed];
|
|
1331
|
+
let completeMsg = `[eliza] Plugin resolution complete: ${plugins.length}/${pluginsToLoad.size} loaded`;
|
|
1332
|
+
if (detailFailures.length > 0) {
|
|
1333
|
+
completeMsg += `, ${detailFailures.length} failed`;
|
|
1334
|
+
}
|
|
1335
|
+
if (benignOptionalFailed.length > 0) {
|
|
1336
|
+
completeMsg += ` (${benignOptionalFailed.length} optional unavailable)`;
|
|
1337
|
+
}
|
|
1338
|
+
logger.info(completeMsg);
|
|
1339
|
+
if (detailFailures.length > 0) {
|
|
1340
|
+
logger.info(`[eliza] Failed plugins: ${detailFailures.map((f) => `${f.name} (${f.error})`).join(", ")}`);
|
|
1341
|
+
}
|
|
1342
|
+
if (benignOptionalFailed.length > 0) {
|
|
1343
|
+
const withReasons = benignOptionalFailed.map((f) => {
|
|
1344
|
+
const reason = loadReasons.get(f.name);
|
|
1345
|
+
return reason ? `${f.name} (added by: ${reason})` : f.name;
|
|
1346
|
+
});
|
|
1347
|
+
logger.info(`[eliza] Optional plugins not installed: ${withReasons.join(", ")}`);
|
|
1348
|
+
}
|
|
1349
|
+
setLastFailedPluginNames(failedPlugins.map((plugin) => plugin.name));
|
|
1350
|
+
// Diagnose version-skew issues when AI providers failed to load (#10)
|
|
1351
|
+
const loadedNames = plugins.map((p) => p.name);
|
|
1352
|
+
const diagnostic = diagnoseNoAIProvider(loadedNames, failedPlugins);
|
|
1353
|
+
if (diagnostic) {
|
|
1354
|
+
if (opts?.quiet) {
|
|
1355
|
+
// In headless/GUI mode before onboarding, this is expected — the user
|
|
1356
|
+
// will configure a provider through the onboarding wizard and restart.
|
|
1357
|
+
logger.info(`[eliza] ${diagnostic}`);
|
|
1358
|
+
}
|
|
1359
|
+
else {
|
|
1360
|
+
logger.error(`[eliza] ${diagnostic}`);
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
1363
|
+
// Persist repaired install records so future startups do not keep trying
|
|
1364
|
+
// to import from stale install directories.
|
|
1365
|
+
if (repairedInstallRecords.size > 0) {
|
|
1366
|
+
try {
|
|
1367
|
+
saveElizaConfig(config);
|
|
1368
|
+
logger.info(`[eliza] Repaired ${repairedInstallRecords.size} plugin install record(s): ${Array.from(repairedInstallRecords).join(", ")}`);
|
|
1369
|
+
}
|
|
1370
|
+
catch (err) {
|
|
1371
|
+
logger.warn(`[eliza] Failed to persist plugin install repairs: ${formatError(err)}`);
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
1374
|
+
return plugins;
|
|
1375
|
+
}
|