@elizaos/ui 2.0.0-alpha.525 → 2.0.0-alpha.527
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/apps/app-elizamaker/src/index.d.ts +2 -0
- package/apps/app-elizamaker/src/index.d.ts.map +1 -1
- package/apps/app-elizamaker/src/index.js +2 -0
- package/apps/app-elizamaker/src/init-registry-services.d.ts +18 -0
- package/apps/app-elizamaker/src/init-registry-services.d.ts.map +1 -0
- package/apps/app-elizamaker/src/init-registry-services.js +63 -0
- package/apps/app-elizamaker/src/plugin.d.ts.map +1 -1
- package/apps/app-elizamaker/src/plugin.js +7 -0
- package/apps/app-elizamaker/src/registry-service-registry.d.ts +4 -0
- package/apps/app-elizamaker/src/registry-service-registry.d.ts.map +1 -0
- package/apps/app-elizamaker/src/registry-service-registry.js +7 -0
- package/apps/app-lifeops/src/automation-node-contributor.d.ts +2 -0
- package/apps/app-lifeops/src/automation-node-contributor.d.ts.map +1 -0
- package/apps/app-lifeops/src/automation-node-contributor.js +93 -0
- package/apps/app-lifeops/src/public.d.ts.map +1 -1
- package/apps/app-lifeops/src/public.js +2 -0
- package/apps/app-training/src/services/training-service-registry.d.ts +4 -0
- package/apps/app-training/src/services/training-service-registry.d.ts.map +1 -0
- package/apps/app-training/src/services/training-service-registry.js +7 -0
- package/package.json +1 -1
- package/packages/agent/src/api/agent-status-routes.d.ts +3 -23
- package/packages/agent/src/api/agent-status-routes.d.ts.map +1 -1
- package/packages/agent/src/api/agent-status-routes.js +7 -40
- package/packages/agent/src/api/coordinator-wiring.d.ts.map +1 -0
- package/packages/agent/src/api/misc-routes.d.ts.map +1 -1
- package/packages/agent/src/api/misc-routes.js +3 -37
- package/packages/agent/src/api/nfa-routes.d.ts.map +1 -1
- package/packages/agent/src/api/nfa-routes.js +1 -9
- package/packages/agent/src/api/provider-switch-routes.d.ts +8 -7
- package/packages/agent/src/api/provider-switch-routes.d.ts.map +1 -1
- package/packages/agent/src/api/provider-switch-routes.js +41 -26
- package/packages/agent/src/api/server-types.d.ts +0 -6
- package/packages/agent/src/api/server-types.d.ts.map +1 -1
- package/packages/agent/src/api/server.d.ts.map +1 -1
- package/packages/agent/src/api/server.js +31 -138
- package/packages/agent/src/api/stream-routes.d.ts.map +1 -1
- package/packages/agent/src/api/stream-routes.js +6 -8
- package/packages/agent/src/api/wallet-trading-profile.d.ts.map +1 -1
- package/packages/agent/src/api/wallet-trading-profile.js +2 -23
- package/packages/agent/src/auth/account-storage.d.ts.map +1 -1
- package/packages/agent/src/auth/account-storage.js +4 -15
- package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
- package/packages/agent/src/runtime/eliza.js +2 -6
- package/packages/agent/src/runtime/first-time-setup.d.ts.map +1 -1
- package/packages/agent/src/runtime/first-time-setup.js +1 -7
- package/packages/agent/src/runtime/operations/cold-strategy.d.ts +4 -4
- package/packages/agent/src/runtime/operations/cold-strategy.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/cold-strategy.js +13 -46
- package/packages/agent/src/runtime/operations/health-checks.d.ts +1 -0
- package/packages/agent/src/runtime/operations/health-checks.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/health-checks.js +1 -1
- package/packages/agent/src/runtime/operations/health.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/health.js +1 -13
- package/packages/agent/src/runtime/operations/index.d.ts +1 -0
- package/packages/agent/src/runtime/operations/index.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/index.js +1 -0
- package/packages/agent/src/runtime/operations/manager.d.ts +2 -0
- package/packages/agent/src/runtime/operations/manager.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/manager.js +27 -7
- package/packages/agent/src/runtime/operations/reload-hot.d.ts +4 -1
- package/packages/agent/src/runtime/operations/reload-hot.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/reload-hot.js +46 -41
- package/packages/agent/src/runtime/operations/repository.d.ts +30 -8
- package/packages/agent/src/runtime/operations/repository.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/repository.js +140 -54
- package/packages/agent/src/runtime/operations/types.d.ts +26 -24
- package/packages/agent/src/runtime/operations/types.d.ts.map +1 -1
- package/packages/agent/src/runtime/operations/types.js +8 -20
- package/packages/agent/src/runtime/operations/vault-bridge.d.ts +60 -0
- package/packages/agent/src/runtime/operations/vault-bridge.d.ts.map +1 -0
- package/packages/agent/src/runtime/operations/vault-bridge.js +80 -0
- package/packages/agent/src/runtime/plugin-resolver.d.ts.map +1 -1
- package/packages/agent/src/runtime/plugin-resolver.js +1 -3
- package/packages/agent/src/runtime/plugin-types.d.ts.map +1 -1
- package/packages/agent/src/runtime/plugin-types.js +1 -3
- package/packages/agent/src/services/app-package-modules.d.ts.map +1 -1
- package/packages/agent/src/services/app-package-modules.js +1 -8
- package/packages/agent/src/services/app-run-store.d.ts.map +1 -1
- package/packages/agent/src/services/app-run-store.js +2 -23
- package/packages/agent/src/services/registry-client-local.d.ts.map +1 -1
- package/packages/agent/src/services/registry-client-local.js +1 -9
- 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/app-core/src/api/automation-node-contributors.d.ts +14 -0
- package/packages/app-core/src/api/automation-node-contributors.d.ts.map +1 -0
- package/packages/app-core/src/api/automation-node-contributors.js +14 -0
- package/packages/app-core/src/api/client-agent.d.ts +627 -0
- package/packages/app-core/src/api/client-agent.d.ts.map +1 -0
- package/packages/app-core/src/api/client-agent.js +1442 -0
- package/packages/app-core/src/api/client-automations.d.ts +8 -0
- package/packages/app-core/src/api/client-automations.d.ts.map +1 -0
- package/packages/app-core/src/api/client-automations.js +7 -0
- package/packages/app-core/src/api/client-base.d.ts +82 -0
- package/packages/app-core/src/api/client-base.d.ts.map +1 -0
- package/packages/app-core/src/api/client-base.js +729 -0
- package/packages/app-core/src/api/client-browser-workspace.d.ts +25 -0
- package/packages/app-core/src/api/client-browser-workspace.d.ts.map +1 -0
- package/packages/app-core/src/api/client-browser-workspace.js +98 -0
- package/packages/app-core/src/api/client-chat.d.ts +355 -0
- package/packages/app-core/src/api/client-chat.d.ts.map +1 -0
- package/packages/app-core/src/api/client-chat.js +582 -0
- package/packages/app-core/src/api/client-cloud.d.ts +286 -0
- package/packages/app-core/src/api/client-cloud.d.ts.map +1 -0
- package/packages/app-core/src/api/client-cloud.js +410 -0
- package/packages/app-core/src/api/client-computeruse.d.ts +32 -0
- package/packages/app-core/src/api/client-computeruse.d.ts.map +1 -0
- package/packages/app-core/src/api/client-computeruse.js +16 -0
- package/packages/app-core/src/api/client-imessage.d.ts +68 -0
- package/packages/app-core/src/api/client-imessage.d.ts.map +1 -0
- package/packages/app-core/src/api/client-imessage.js +74 -0
- package/packages/app-core/src/api/client-local-inference.d.ts +62 -0
- package/packages/app-core/src/api/client-local-inference.d.ts.map +1 -0
- package/packages/app-core/src/api/client-local-inference.js +87 -0
- package/packages/app-core/src/api/client-n8n.d.ts +27 -0
- package/packages/app-core/src/api/client-n8n.d.ts.map +1 -0
- package/packages/app-core/src/api/client-n8n.js +61 -0
- package/packages/app-core/src/api/client-skills.d.ts +475 -0
- package/packages/app-core/src/api/client-skills.d.ts.map +1 -0
- package/packages/app-core/src/api/client-skills.js +608 -0
- package/packages/app-core/src/api/client-types-babylon.d.ts +254 -0
- package/packages/app-core/src/api/client-types-babylon.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types-babylon.js +2 -0
- package/packages/app-core/src/api/client-types-character.d.ts +39 -0
- package/packages/app-core/src/api/client-types-character.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types-character.js +1 -0
- package/packages/app-core/src/api/client-types-chat.d.ts +428 -0
- package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types-chat.js +9 -0
- package/packages/app-core/src/api/client-types-config.d.ts +587 -0
- package/packages/app-core/src/api/client-types-config.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types-config.js +5 -0
- package/packages/app-core/src/api/client-types-experience.d.ts +97 -0
- package/packages/app-core/src/api/client-types-experience.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types-experience.js +1 -0
- package/packages/app-core/src/api/client-types-relationships.d.ts +181 -0
- package/packages/app-core/src/api/client-types-relationships.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types-relationships.js +1 -0
- package/packages/app-core/src/api/client-types-steward.d.ts +85 -0
- package/packages/app-core/src/api/client-types-steward.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types-steward.js +9 -0
- package/packages/app-core/src/api/client-types.d.ts +9 -0
- package/packages/app-core/src/api/client-types.d.ts.map +1 -0
- package/packages/app-core/src/api/client-types.js +12 -0
- package/packages/app-core/src/api/client-wallet.d.ts +130 -0
- package/packages/app-core/src/api/client-wallet.d.ts.map +1 -0
- package/packages/app-core/src/api/client-wallet.js +228 -0
- package/packages/app-core/src/api/client.d.ts +36 -0
- package/packages/app-core/src/api/client.d.ts.map +1 -0
- package/packages/app-core/src/api/client.js +36 -0
- package/packages/app-core/src/api/index.d.ts +2 -0
- package/packages/app-core/src/api/index.d.ts.map +1 -0
- package/packages/app-core/src/api/index.js +1 -0
- package/packages/app-core/src/bridge/electrobun-rpc.d.ts +57 -0
- package/packages/app-core/src/bridge/electrobun-rpc.d.ts.map +1 -0
- package/packages/app-core/src/bridge/electrobun-rpc.js +87 -0
- package/packages/app-core/src/bridge/electrobun-runtime.d.ts +3 -0
- package/packages/app-core/src/bridge/electrobun-runtime.d.ts.map +1 -0
- package/packages/app-core/src/bridge/electrobun-runtime.js +34 -0
- package/packages/app-core/src/bridge/native-plugins.d.ts +504 -0
- package/packages/app-core/src/bridge/native-plugins.d.ts.map +1 -0
- package/packages/app-core/src/bridge/native-plugins.js +67 -0
- package/packages/app-core/src/chat/coding-agent-session-state.d.ts +16 -0
- package/packages/app-core/src/chat/coding-agent-session-state.d.ts.map +1 -0
- package/packages/app-core/src/chat/coding-agent-session-state.js +27 -0
- package/packages/app-core/src/components/pages/browser-workspace-wallet.d.ts +80 -0
- package/packages/app-core/src/components/pages/browser-workspace-wallet.d.ts.map +1 -0
- package/packages/app-core/src/components/pages/browser-workspace-wallet.js +135 -0
- package/packages/app-core/src/services/account-pool.d.ts +98 -0
- package/packages/app-core/src/services/account-pool.d.ts.map +1 -0
- package/packages/app-core/src/services/account-pool.js +506 -0
- package/packages/app-core/src/services/account-usage.d.ts +75 -0
- package/packages/app-core/src/services/account-usage.d.ts.map +1 -0
- package/packages/app-core/src/services/account-usage.js +179 -0
- package/packages/app-core/src/services/local-inference/active-model.d.ts +59 -0
- package/packages/app-core/src/services/local-inference/active-model.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/active-model.js +120 -0
- package/packages/app-core/src/services/local-inference/device-bridge.d.ts +131 -0
- package/packages/app-core/src/services/local-inference/device-bridge.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/device-bridge.js +748 -0
- package/packages/app-core/src/services/local-inference/engine.d.ts +52 -0
- package/packages/app-core/src/services/local-inference/engine.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/engine.js +138 -0
- package/packages/app-core/src/services/local-inference/external-scanner.d.ts +17 -0
- package/packages/app-core/src/services/local-inference/external-scanner.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/external-scanner.js +261 -0
- package/packages/app-core/src/services/local-inference/handler-registry.d.ts +72 -0
- package/packages/app-core/src/services/local-inference/handler-registry.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/handler-registry.js +160 -0
- package/packages/app-core/src/services/local-inference/paths.d.ts +24 -0
- package/packages/app-core/src/services/local-inference/paths.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/paths.js +41 -0
- package/packages/app-core/src/services/local-inference/providers.d.ts +61 -0
- package/packages/app-core/src/services/local-inference/providers.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/providers.js +277 -0
- package/packages/app-core/src/services/local-inference/registry.d.ts +35 -0
- package/packages/app-core/src/services/local-inference/registry.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/registry.js +108 -0
- package/packages/app-core/src/services/local-inference/routing-preferences.d.ts +31 -0
- package/packages/app-core/src/services/local-inference/routing-preferences.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/routing-preferences.js +72 -0
- package/packages/app-core/src/services/local-inference/types.d.ts +121 -0
- package/packages/app-core/src/services/local-inference/types.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/types.js +14 -0
- package/packages/app-core/src/services/local-inference/verify.d.ts +39 -0
- package/packages/app-core/src/services/local-inference/verify.d.ts.map +1 -0
- package/packages/app-core/src/services/local-inference/verify.js +104 -0
- package/packages/app-core/src/types/index.d.ts +658 -0
- package/packages/app-core/src/types/index.d.ts.map +1 -0
- package/packages/app-core/src/types/index.js +4 -0
- package/packages/app-core/src/utils/assistant-text.d.ts +2 -0
- package/packages/app-core/src/utils/assistant-text.d.ts.map +1 -0
- package/packages/app-core/src/utils/assistant-text.js +167 -0
- package/packages/app-core/src/utils/eliza-globals.d.ts +15 -0
- package/packages/app-core/src/utils/eliza-globals.d.ts.map +1 -0
- package/packages/app-core/src/utils/eliza-globals.js +50 -0
- package/packages/app-core/src/utils/streaming-text.d.ts +9 -0
- package/packages/app-core/src/utils/streaming-text.d.ts.map +1 -0
- package/packages/app-core/src/utils/streaming-text.js +112 -0
- package/packages/shared/src/format-error.d.ts +14 -0
- package/packages/shared/src/format-error.d.ts.map +1 -0
- package/packages/shared/src/format-error.js +17 -0
- package/packages/shared/src/index.d.ts +1 -0
- package/packages/shared/src/index.d.ts.map +1 -1
- package/packages/shared/src/index.js +1 -0
- package/packages/typescript/src/runtime.d.ts +14 -0
- package/packages/typescript/src/runtime.d.ts.map +1 -1
- package/packages/typescript/src/runtime.js +42 -0
- package/packages/typescript/src/services/message.d.ts +8 -0
- package/packages/typescript/src/services/message.d.ts.map +1 -1
- package/packages/typescript/src/services/message.js +51 -0
- package/packages/typescript/src/services/task.d.ts +1 -0
- package/packages/typescript/src/services/task.d.ts.map +1 -1
- package/packages/typescript/src/services/task.js +26 -3
- package/apps/app-task-coordinator/src/api/coordinator-wiring.d.ts.map +0 -1
- /package/{apps/app-task-coordinator → packages/agent}/src/api/coordinator-wiring.d.ts +0 -0
- /package/{apps/app-task-coordinator → packages/agent}/src/api/coordinator-wiring.js +0 -0
|
@@ -2,6 +2,8 @@ export { handleDropRoutes } from "./drop-routes.js";
|
|
|
2
2
|
export type { DropStatus, MintResult } from "./drop-service.js";
|
|
3
3
|
export { DropService } from "./drop-service.js";
|
|
4
4
|
export { getElizaMakerDropService, setElizaMakerDropService, } from "./drop-service-registry.js";
|
|
5
|
+
export { initializeRegistryAndDropServices } from "./init-registry-services.js";
|
|
6
|
+
export { getElizaMakerRegistryService, setElizaMakerRegistryService, } from "./registry-service-registry.js";
|
|
5
7
|
export { buildWhitelistTree, generateProof } from "./merkle-tree.js";
|
|
6
8
|
export { initializeOGCode } from "./og-tracker.js";
|
|
7
9
|
export { default, elizaMakerPlugin } from "./plugin.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-elizamaker/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-elizamaker/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { handleDropRoutes } from "./drop-routes.js";
|
|
2
2
|
export { DropService } from "./drop-service.js";
|
|
3
3
|
export { getElizaMakerDropService, setElizaMakerDropService, } from "./drop-service-registry.js";
|
|
4
|
+
export { initializeRegistryAndDropServices } from "./init-registry-services.js";
|
|
5
|
+
export { getElizaMakerRegistryService, setElizaMakerRegistryService, } from "./registry-service-registry.js";
|
|
4
6
|
export { buildWhitelistTree, generateProof } from "./merkle-tree.js";
|
|
5
7
|
export { initializeOGCode } from "./og-tracker.js";
|
|
6
8
|
export { default, elizaMakerPlugin } from "./plugin.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERC-8004 RegistryService + DropService bootstrap.
|
|
3
|
+
*
|
|
4
|
+
* Previously inlined in `packages/agent/src/api/server.ts`
|
|
5
|
+
* (`startDeferredStartupWork`). Moving the construction here keeps the
|
|
6
|
+
* agent server out of the ERC-8004 contract wiring; consumers that need
|
|
7
|
+
* the live services read them through the in-process registries
|
|
8
|
+
* (drop-service-registry / registry-service-registry).
|
|
9
|
+
*
|
|
10
|
+
* Timing: the original block ran post-listen via setImmediate-equivalent
|
|
11
|
+
* deferred startup. This function preserves that behavior by spawning the
|
|
12
|
+
* actual work asynchronously — callers invoke it without awaiting from
|
|
13
|
+
* within Plugin.init, which lets the runtime finish booting before the
|
|
14
|
+
* outbound RPC probe runs.
|
|
15
|
+
*/
|
|
16
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
17
|
+
export declare function initializeRegistryAndDropServices(runtime: IAgentRuntime): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=init-registry-services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-registry-services.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-elizamaker/src/init-registry-services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA+BnD,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAuDf"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERC-8004 RegistryService + DropService bootstrap.
|
|
3
|
+
*
|
|
4
|
+
* Previously inlined in `packages/agent/src/api/server.ts`
|
|
5
|
+
* (`startDeferredStartupWork`). Moving the construction here keeps the
|
|
6
|
+
* agent server out of the ERC-8004 contract wiring; consumers that need
|
|
7
|
+
* the live services read them through the in-process registries
|
|
8
|
+
* (drop-service-registry / registry-service-registry).
|
|
9
|
+
*
|
|
10
|
+
* Timing: the original block ran post-listen via setImmediate-equivalent
|
|
11
|
+
* deferred startup. This function preserves that behavior by spawning the
|
|
12
|
+
* actual work asynchronously — callers invoke it without awaiting from
|
|
13
|
+
* within Plugin.init, which lets the runtime finish booting before the
|
|
14
|
+
* outbound RPC probe runs.
|
|
15
|
+
*/
|
|
16
|
+
import { RegistryService } from "@elizaos/agent/api/registry-service";
|
|
17
|
+
import { normalizeJsonRpcUrl, probeJsonRpcEndpoint, TxService, } from "@elizaos/agent/api/tx-service";
|
|
18
|
+
import { logger } from "@elizaos/core";
|
|
19
|
+
import { DropService } from "./drop-service.js";
|
|
20
|
+
import { setElizaMakerDropService } from "./drop-service-registry.js";
|
|
21
|
+
import { initializeOGCode } from "./og-tracker.js";
|
|
22
|
+
import { setElizaMakerRegistryService } from "./registry-service-registry.js";
|
|
23
|
+
function readRuntimeSetting(runtime, key) {
|
|
24
|
+
const value = runtime.getSetting?.(key);
|
|
25
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
26
|
+
}
|
|
27
|
+
export async function initializeRegistryAndDropServices(runtime) {
|
|
28
|
+
initializeOGCode();
|
|
29
|
+
const { loadElizaConfig } = await import("@elizaos/agent/config/config");
|
|
30
|
+
const config = loadElizaConfig();
|
|
31
|
+
const evmKey = readRuntimeSetting(runtime, "EVM_PRIVATE_KEY") ?? config.env?.EVM_PRIVATE_KEY;
|
|
32
|
+
const registryConfig = config.registry;
|
|
33
|
+
if (!evmKey ||
|
|
34
|
+
!registryConfig?.registryAddress ||
|
|
35
|
+
!registryConfig.mainnetRpc) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const registryRpcUrl = normalizeJsonRpcUrl(registryConfig.mainnetRpc);
|
|
40
|
+
const registryRpcProbe = await probeJsonRpcEndpoint(registryRpcUrl);
|
|
41
|
+
if (!registryRpcProbe.ok) {
|
|
42
|
+
logger.warn({
|
|
43
|
+
reason: registryRpcProbe.reason,
|
|
44
|
+
}, "ERC-8004 registry service disabled because mainnetRpc is unavailable");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const txService = new TxService(registryRpcUrl, evmKey);
|
|
48
|
+
const registryService = new RegistryService(txService, registryConfig.registryAddress);
|
|
49
|
+
setElizaMakerRegistryService(registryService);
|
|
50
|
+
if (registryConfig.collectionAddress) {
|
|
51
|
+
const dropEnabled = config.features?.dropEnabled === true;
|
|
52
|
+
const dropService = new DropService(txService, registryConfig.collectionAddress, dropEnabled);
|
|
53
|
+
setElizaMakerDropService(dropService);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
setElizaMakerDropService(null);
|
|
57
|
+
}
|
|
58
|
+
logger.info(`ERC-8004 registry service initialised (${registryConfig.registryAddress})`);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
logger.warn({ err }, "Failed to initialize ERC-8004 registry service");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-elizamaker/src/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAgB,MAAM,EAAS,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-elizamaker/src/plugin.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAgB,MAAM,EAAS,MAAM,eAAe,CAAC;AA2FjE,eAAO,MAAM,gBAAgB,EAAE,MAW9B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getWalletAddresses, readJsonBody as httpReadJsonBody, sendJson as httpSendJson, sendJsonError as httpSendJsonError, } from "@elizaos/agent";
|
|
2
2
|
import { handleDropRoutes } from "./drop-routes.js";
|
|
3
3
|
import { getElizaMakerDropService } from "./drop-service-registry.js";
|
|
4
|
+
import { initializeRegistryAndDropServices } from "./init-registry-services.js";
|
|
4
5
|
import { readOGCode } from "./og-tracker.js";
|
|
5
6
|
function json(res, data, status = 200) {
|
|
6
7
|
httpSendJson(res, data, status);
|
|
@@ -76,5 +77,11 @@ export const elizaMakerPlugin = {
|
|
|
76
77
|
name: "@elizaos/app-elizamaker",
|
|
77
78
|
description: "ElizaMaker ERC-8041 drop, mint, whitelist, and Merkle proof routes.",
|
|
78
79
|
routes: elizaMakerRoutes,
|
|
80
|
+
init: async (_config, runtime) => {
|
|
81
|
+
// Bootstrap RegistryService + DropService asynchronously so that plugin
|
|
82
|
+
// registration does not block on outbound RPC probes. Mirrors the
|
|
83
|
+
// pre-extraction startDeferredStartupWork timing in server.ts.
|
|
84
|
+
void initializeRegistryAndDropServices(runtime);
|
|
85
|
+
},
|
|
79
86
|
};
|
|
80
87
|
export default elizaMakerPlugin;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RegistryService } from "@elizaos/agent/api/registry-service";
|
|
2
|
+
export declare function setElizaMakerRegistryService(service: RegistryService | null): void;
|
|
3
|
+
export declare function getElizaMakerRegistryService(): RegistryService | null;
|
|
4
|
+
//# sourceMappingURL=registry-service-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-service-registry.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-elizamaker/src/registry-service-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAI3E,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,eAAe,GAAG,IAAI,GAC9B,IAAI,CAEN;AAED,wBAAgB,4BAA4B,IAAI,eAAe,GAAG,IAAI,CAErE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-node-contributor.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-lifeops/src/automation-node-contributor.ts"],"names":[],"mappings":"AAoMA,wBAAgB,wCAAwC,IAAI,IAAI,CAE/D"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { registerAutomationNodeContributor, } from "@elizaos/app-core/api/automation-node-contributors";
|
|
2
|
+
import { logger } from "@elizaos/core";
|
|
3
|
+
import { LifeOpsService } from "./lifeops/service";
|
|
4
|
+
async function resolveGoogleStatus(lifeOps) {
|
|
5
|
+
try {
|
|
6
|
+
return await lifeOps.getGoogleConnectorStatus(new URL("http://127.0.0.1/api/lifeops/connectors/google/status"), undefined, "owner");
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
logger.warn(`[lifeops] Failed to resolve Google connector status: ${error instanceof Error ? error.message : String(error)}`);
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
async function resolveTelegramStatus(lifeOps) {
|
|
14
|
+
try {
|
|
15
|
+
return await lifeOps.getTelegramConnectorStatus("owner");
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
logger.warn(`[lifeops] Failed to resolve Telegram connector status: ${error instanceof Error ? error.message : String(error)}`);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function resolveSignalStatus(lifeOps) {
|
|
23
|
+
try {
|
|
24
|
+
return await lifeOps.getSignalConnectorStatus("owner");
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
logger.warn(`[lifeops] Failed to resolve Signal connector status: ${error instanceof Error ? error.message : String(error)}`);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function resolveDiscordStatus(lifeOps) {
|
|
32
|
+
try {
|
|
33
|
+
return await lifeOps.getDiscordConnectorStatus("owner");
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
logger.warn(`[lifeops] Failed to resolve Discord connector status: ${error instanceof Error ? error.message : String(error)}`);
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function buildLifeOpsNode(id, label, description, enabled, disabledReason) {
|
|
41
|
+
return {
|
|
42
|
+
id,
|
|
43
|
+
label,
|
|
44
|
+
description,
|
|
45
|
+
class: "integration",
|
|
46
|
+
source: "lifeops",
|
|
47
|
+
backingCapability: id,
|
|
48
|
+
ownerScoped: true,
|
|
49
|
+
requiresSetup: true,
|
|
50
|
+
availability: enabled ? "enabled" : "disabled",
|
|
51
|
+
...(enabled ? {} : { disabledReason }),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function buildLifeOpsEventNode(eventKind, label, description, enabled, disabledReason) {
|
|
55
|
+
return {
|
|
56
|
+
id: `event:${eventKind}`,
|
|
57
|
+
label,
|
|
58
|
+
description,
|
|
59
|
+
class: "trigger",
|
|
60
|
+
source: "lifeops_event",
|
|
61
|
+
backingCapability: eventKind,
|
|
62
|
+
ownerScoped: true,
|
|
63
|
+
requiresSetup: !enabled,
|
|
64
|
+
availability: enabled ? "enabled" : "disabled",
|
|
65
|
+
...(enabled ? {} : { disabledReason }),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
async function buildLifeOpsAutomationNodes({ runtime, adminEntityId, }) {
|
|
69
|
+
const lifeOps = new LifeOpsService(runtime, { ownerEntityId: adminEntityId });
|
|
70
|
+
const [googleStatus, telegramStatus, signalStatus, discordStatus] = await Promise.all([
|
|
71
|
+
resolveGoogleStatus(lifeOps),
|
|
72
|
+
resolveTelegramStatus(lifeOps),
|
|
73
|
+
resolveSignalStatus(lifeOps),
|
|
74
|
+
resolveDiscordStatus(lifeOps),
|
|
75
|
+
]);
|
|
76
|
+
const googleCapabilities = new Set(googleStatus?.grantedCapabilities ?? []);
|
|
77
|
+
const hasGoogleCapability = (needle) => [...googleCapabilities].some((capability) => capability.includes(needle));
|
|
78
|
+
const githubToken = runtime.getSetting("GITHUB_TOKEN");
|
|
79
|
+
const githubConnected = typeof githubToken === "string" && githubToken.trim().length > 0;
|
|
80
|
+
const calendarConnected = Boolean(googleStatus?.connected && hasGoogleCapability("calendar"));
|
|
81
|
+
return [
|
|
82
|
+
buildLifeOpsNode("lifeops:gmail", "Gmail", "Owner-scoped Gmail triage, drafting, and send operations.", Boolean(googleStatus?.connected && hasGoogleCapability("gmail")), "Connect the owner Google account with Gmail access."),
|
|
83
|
+
buildLifeOpsNode("lifeops:calendar", "Calendar", "Owner-scoped calendar reading and event creation.", calendarConnected, "Connect the owner Google account with Calendar access."),
|
|
84
|
+
buildLifeOpsNode("lifeops:telegram", "Telegram", "Owner-scoped Telegram account messaging.", Boolean(telegramStatus?.connected), "Connect the owner Telegram account."),
|
|
85
|
+
buildLifeOpsNode("lifeops:signal", "Signal", "Owner-scoped Signal messaging.", Boolean(signalStatus?.connected), "Pair the owner Signal account."),
|
|
86
|
+
buildLifeOpsNode("lifeops:discord", "Discord", "Owner-scoped Discord messaging through the active owner session.", Boolean(discordStatus?.connected && discordStatus.available), "Connect the owner Discord session."),
|
|
87
|
+
buildLifeOpsNode("lifeops:github", "GitHub", "Owner-scoped GitHub access for repositories, issues, and pull requests.", githubConnected, "Link the owner GitHub account."),
|
|
88
|
+
buildLifeOpsEventNode("calendar.event.ended", "Calendar event ended", "Fires a workflow after a synced calendar event's end time has passed.", calendarConnected, "Connect the owner Google account with Calendar access."),
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
export function registerLifeOpsAutomationNodeContributor() {
|
|
92
|
+
registerAutomationNodeContributor("lifeops", buildLifeOpsAutomationNodes);
|
|
93
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-lifeops/src/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../../../../apps/app-lifeops/src/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,gCAAgC,CAAC;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,iCAAiC,EACjC,4BAA4B,EAC5B,sCAAsC,GACvC,MAAM,6BAA6B,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { getBrowserBridgeCompanionPackageStatus } from "@elizaos/plugin-browser-bridge";
|
|
2
|
+
import { registerLifeOpsAutomationNodeContributor } from "./automation-node-contributor.js";
|
|
2
3
|
export { lifeopsPlugin } from "./routes/plugin.js";
|
|
3
4
|
export { blockWebsitesAction, getSelfControlPermissionState, openSelfControlPermissionLocation, requestSelfControlPermission, requestWebsiteBlockingPermissionAction, } from "./website-blocker/public.js";
|
|
5
|
+
registerLifeOpsAutomationNodeContributor();
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TrainingServiceWithRuntime } from "./training-service-like.js";
|
|
2
|
+
export declare function setActiveTrainingService(service: TrainingServiceWithRuntime | null): void;
|
|
3
|
+
export declare function getActiveTrainingService(): TrainingServiceWithRuntime | null;
|
|
4
|
+
//# sourceMappingURL=training-service-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training-service-registry.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-training/src/services/training-service-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAI7E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,0BAA0B,GAAG,IAAI,GACzC,IAAI,CAEN;AAED,wBAAgB,wBAAwB,IAAI,0BAA0B,GAAG,IAAI,CAE5E"}
|
package/package.json
CHANGED
|
@@ -1,29 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agent self-status
|
|
3
|
-
* inline routes.
|
|
2
|
+
* Agent self-status and ERC-8004 registry inline routes.
|
|
4
3
|
*
|
|
5
|
-
* Extracted from server.ts to reduce file size.
|
|
4
|
+
* Extracted from server.ts to reduce file size. Privy wallet provisioning
|
|
5
|
+
* routes were moved to @elizaos/app-steward (setup-routes-privy.ts).
|
|
6
6
|
*/
|
|
7
7
|
import type http from "node:http";
|
|
8
8
|
import type { ElizaConfig } from "../config/config.js";
|
|
9
9
|
import type { ReadJsonBodyOptions } from "./http-helpers.js";
|
|
10
|
-
interface RegistryServiceLike {
|
|
11
|
-
getStatus: () => Promise<Record<string, unknown>>;
|
|
12
|
-
register: (args: {
|
|
13
|
-
name: string;
|
|
14
|
-
endpoint: string;
|
|
15
|
-
capabilitiesHash: string;
|
|
16
|
-
tokenURI: string;
|
|
17
|
-
}) => Promise<unknown>;
|
|
18
|
-
updateTokenURI: (tokenURI: string) => Promise<string>;
|
|
19
|
-
syncProfile: (args: {
|
|
20
|
-
name: string;
|
|
21
|
-
endpoint: string;
|
|
22
|
-
capabilitiesHash: string;
|
|
23
|
-
tokenURI: string;
|
|
24
|
-
}) => Promise<string>;
|
|
25
|
-
getChainId: () => Promise<number>;
|
|
26
|
-
}
|
|
27
10
|
interface RegistryServiceStatic {
|
|
28
11
|
defaultCapabilitiesHash: () => string;
|
|
29
12
|
}
|
|
@@ -58,8 +41,6 @@ export interface AgentStatusRouteDeps {
|
|
|
58
41
|
detectRuntimeModel: (runtime: unknown, config: ElizaConfig) => string | undefined;
|
|
59
42
|
resolveProviderFromModel: (model: string) => string | null;
|
|
60
43
|
getGlobalAwarenessRegistry: () => AwarenessRegistryLike | null;
|
|
61
|
-
isPrivyWalletProvisioningEnabled: () => boolean;
|
|
62
|
-
ensurePrivyWalletsForCustomUser: (userId: string) => Promise<Record<string, unknown>>;
|
|
63
44
|
RegistryService: RegistryServiceStatic;
|
|
64
45
|
}
|
|
65
46
|
export interface AgentStatusRouteState {
|
|
@@ -77,7 +58,6 @@ export interface AgentStatusRouteState {
|
|
|
77
58
|
model?: string;
|
|
78
59
|
startedAt?: number;
|
|
79
60
|
shellEnabled?: boolean;
|
|
80
|
-
registryService: RegistryServiceLike | null;
|
|
81
61
|
}
|
|
82
62
|
export interface AgentStatusRouteContext {
|
|
83
63
|
req: http.IncomingMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-status-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/agent-status-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM7D,UAAU,
|
|
1
|
+
{"version":3,"file":"agent-status-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/agent-status-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM7D,UAAU,qBAAqB;IAC7B,uBAAuB,EAAE,MAAM,MAAM,CAAC;CACvC;AAED,UAAU,qBAAqB;IAC7B,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,MAAM;QACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,6BAA6B,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;QACjD,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,QAAQ,EAAE,OAAO,CAAC;QAClB,eAAe,EAAE,OAAO,CAAC;QACzB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,cAAc,EAAE,OAAO,CAAC;QACxB,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;QACtC,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,yBAAyB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK;QAClD,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,0BAA0B,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;IAC5D,yBAAyB,EAAE,CACzB,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,OAAO,EACvB,MAAM,CAAC,EAAE,SAAS,EAClB,IAAI,CAAC,EAAE;QAAE,iBAAiB,EAAE,OAAO,CAAA;KAAE,KAClC,OAAO,CAAC;IACb,kBAAkB,EAAE,CAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,KAChB,MAAM,GAAG,SAAS,CAAC;IACxB,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3D,0BAA0B,EAAE,MAAM,qBAAqB,GAAG,IAAI,CAAC;IAC/D,eAAe,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE;QACP,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACjC,SAAS,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9B,GAAG,IAAI,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC;IAC1B,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,qBAAqB,CAAC;IAC7B,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,YAAY,EAAE,CAAC,CAAC,SAAS,MAAM,EAC7B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,CAAC,EAAE,mBAAmB,KAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAMD,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAoRlB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agent self-status
|
|
3
|
-
* inline routes.
|
|
2
|
+
* Agent self-status and ERC-8004 registry inline routes.
|
|
4
3
|
*
|
|
5
|
-
* Extracted from server.ts to reduce file size.
|
|
4
|
+
* Extracted from server.ts to reduce file size. Privy wallet provisioning
|
|
5
|
+
* routes were moved to @elizaos/app-steward (setup-routes-privy.ts).
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { getElizaMakerRegistryService } from "@elizaos/app-elizamaker/registry-service-registry";
|
|
8
8
|
// ---------------------------------------------------------------------------
|
|
9
9
|
// Route handler
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
@@ -130,45 +130,12 @@ export async function handleAgentStatusRoutes(ctx) {
|
|
|
130
130
|
});
|
|
131
131
|
return true;
|
|
132
132
|
}
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
136
|
-
if (method === "GET" && pathname === "/api/privy/status") {
|
|
137
|
-
const enabled = deps.isPrivyWalletProvisioningEnabled();
|
|
138
|
-
json(res, { enabled, configured: enabled });
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
if (method === "POST" && pathname === "/api/privy/login") {
|
|
142
|
-
if (!deps.isPrivyWalletProvisioningEnabled()) {
|
|
143
|
-
error(res, "Privy wallet provisioning is not configured.", 503);
|
|
144
|
-
return true;
|
|
145
|
-
}
|
|
146
|
-
const body = await readJsonBody(req, res);
|
|
147
|
-
if (!body)
|
|
148
|
-
return true;
|
|
149
|
-
const userId = (body.userId ?? "").trim();
|
|
150
|
-
if (!userId) {
|
|
151
|
-
error(res, "userId is required", 400);
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
try {
|
|
155
|
-
const result = await deps.ensurePrivyWalletsForCustomUser(userId);
|
|
156
|
-
json(res, { ok: true, ...result });
|
|
157
|
-
}
|
|
158
|
-
catch (err) {
|
|
159
|
-
logger.error(`[api] Privy login failed: ${err instanceof Error ? err.message : err}`);
|
|
160
|
-
error(res, `Privy login failed: ${err instanceof Error ? err.message : "unknown error"}`, 500);
|
|
161
|
-
}
|
|
162
|
-
return true;
|
|
163
|
-
}
|
|
164
|
-
if (method === "POST" && pathname === "/api/privy/logout") {
|
|
165
|
-
json(res, { ok: true });
|
|
166
|
-
return true;
|
|
167
|
-
}
|
|
133
|
+
// Privy wallet routes (/api/privy/*) are now provided by the
|
|
134
|
+
// @elizaos/app-steward plugin via the runtime route registry.
|
|
168
135
|
// ═══════════════════════════════════════════════════════════════════════
|
|
169
136
|
// ERC-8004 Registry Routes
|
|
170
137
|
// ═══════════════════════════════════════════════════════════════════════
|
|
171
|
-
const
|
|
138
|
+
const registryService = getElizaMakerRegistryService();
|
|
172
139
|
if (method === "GET" && pathname === "/api/registry/status") {
|
|
173
140
|
if (!registryService) {
|
|
174
141
|
json(res, {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator-wiring.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/coordinator-wiring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACxE,qDAAqD;IACrD,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,0DAA0D;IAC1D,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,8DAA8D;IAC9D,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACxE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAsB,+BAA+B,CAAC,CAAC,SAAS,YAAY,EAC1E,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,UAAU,CAAC,CAuGrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/misc-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"misc-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/misc-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
2
|
import { EMOTE_BY_ID, EMOTE_CATALOG } from "@elizaos/app-companion/emotes";
|
|
3
|
-
import {
|
|
4
|
-
import { logger, ModelType } from "@elizaos/core";
|
|
3
|
+
import { ModelType } from "@elizaos/core";
|
|
5
4
|
import { asRecord } from "@elizaos/shared";
|
|
6
5
|
import { loadElizaConfig, saveElizaConfig } from "../config/config.js";
|
|
7
6
|
import { buildTestHandler, registerCustomActionLive, } from "../runtime/custom-actions.js";
|
|
@@ -550,40 +549,7 @@ export async function handleMiscRoutes(ctx) {
|
|
|
550
549
|
json(res, { ok: true });
|
|
551
550
|
return true;
|
|
552
551
|
}
|
|
553
|
-
//
|
|
554
|
-
|
|
555
|
-
const enabled = isPrivyWalletProvisioningEnabled();
|
|
556
|
-
json(res, { enabled, configured: enabled });
|
|
557
|
-
return true;
|
|
558
|
-
}
|
|
559
|
-
// ── POST /api/privy/login ───────────────────────────────────────────────
|
|
560
|
-
if (method === "POST" && pathname === "/api/privy/login") {
|
|
561
|
-
if (!isPrivyWalletProvisioningEnabled()) {
|
|
562
|
-
error(res, "Privy wallet provisioning is not configured.", 503);
|
|
563
|
-
return true;
|
|
564
|
-
}
|
|
565
|
-
const body = await readJsonBody(req, res);
|
|
566
|
-
if (!body)
|
|
567
|
-
return true;
|
|
568
|
-
const userId = (body.userId ?? "").trim();
|
|
569
|
-
if (!userId) {
|
|
570
|
-
error(res, "userId is required", 400);
|
|
571
|
-
return true;
|
|
572
|
-
}
|
|
573
|
-
try {
|
|
574
|
-
const result = await ensurePrivyWalletsForCustomUser(userId);
|
|
575
|
-
json(res, { ok: true, ...result });
|
|
576
|
-
}
|
|
577
|
-
catch (err) {
|
|
578
|
-
logger.error(`[api] Privy login failed: ${err instanceof Error ? err.message : err}`);
|
|
579
|
-
error(res, `Privy login failed: ${err instanceof Error ? err.message : "unknown error"}`, 500);
|
|
580
|
-
}
|
|
581
|
-
return true;
|
|
582
|
-
}
|
|
583
|
-
// ── POST /api/privy/logout ──────────────────────────────────────────────
|
|
584
|
-
if (method === "POST" && pathname === "/api/privy/logout") {
|
|
585
|
-
json(res, { ok: true });
|
|
586
|
-
return true;
|
|
587
|
-
}
|
|
552
|
+
// Privy wallet routes (/api/privy/*) are now provided by the
|
|
553
|
+
// @elizaos/app-steward plugin via the runtime route registry.
|
|
588
554
|
return false;
|
|
589
555
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nfa-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/nfa-routes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nfa-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/nfa-routes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAmCzE,MAAM,WAAW,eACf,SAAQ,gBAAgB,EACtB,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;CAAG;AAuB3C,wBAAsB,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CA+F5E"}
|
|
@@ -10,6 +10,7 @@ import { createHash } from "node:crypto";
|
|
|
10
10
|
import { readFile } from "node:fs/promises";
|
|
11
11
|
import { homedir } from "node:os";
|
|
12
12
|
import { join } from "node:path";
|
|
13
|
+
import { readJsonFile } from "../utils/atomic-json.js";
|
|
13
14
|
function emptyMerkleRoot() {
|
|
14
15
|
return createHash("sha256").update("", "utf8").digest("hex");
|
|
15
16
|
}
|
|
@@ -36,15 +37,6 @@ async function getNfaPlugin() {
|
|
|
36
37
|
}
|
|
37
38
|
return nfaPlugin;
|
|
38
39
|
}
|
|
39
|
-
async function readJsonFile(filePath) {
|
|
40
|
-
try {
|
|
41
|
-
const raw = await readFile(filePath, "utf8");
|
|
42
|
-
return JSON.parse(raw);
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
40
|
export async function handleNfaRoutes(ctx) {
|
|
49
41
|
const { res, method, pathname, json } = ctx;
|
|
50
42
|
if (method === "GET" && pathname === "/api/nfa/status") {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type http from "node:http";
|
|
2
|
+
import type { SecretsManager } from "@elizaos/vault";
|
|
2
3
|
import type { ElizaConfig } from "../config/config.js";
|
|
3
|
-
import type
|
|
4
|
+
import { type RuntimeOperationManager } from "../runtime/operations/index.js";
|
|
4
5
|
import type { ReadJsonBodyOptions } from "./http-helpers.js";
|
|
5
6
|
export interface ProviderSwitchRouteContext {
|
|
6
7
|
req: http.IncomingMessage;
|
|
@@ -15,14 +16,14 @@ export interface ProviderSwitchRouteContext {
|
|
|
15
16
|
readJsonBody: <T extends object>(req: http.IncomingMessage, res: http.ServerResponse, options?: ReadJsonBodyOptions) => Promise<T | null>;
|
|
16
17
|
saveElizaConfig: (config: ElizaConfig) => void;
|
|
17
18
|
scheduleRuntimeRestart: (reason: string) => void;
|
|
19
|
+
runtimeOperationManager: RuntimeOperationManager;
|
|
18
20
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* the
|
|
21
|
+
* Vault-backed secrets manager. Tests inject; production resolves to the
|
|
22
|
+
* OS-keychain default. The route writes the API key here BEFORE
|
|
23
|
+
* constructing the intent so the secret never lands on disk in plaintext
|
|
24
|
+
* inside an operation record.
|
|
22
25
|
*/
|
|
23
|
-
|
|
24
|
-
setProviderSwitchInProgress: (value: boolean) => void;
|
|
25
|
-
runtimeOperationManager: RuntimeOperationManager;
|
|
26
|
+
secretsManager?: SecretsManager;
|
|
26
27
|
}
|
|
27
28
|
export declare function handleProviderSwitchRoutes(ctx: ProviderSwitchRouteContext): Promise<boolean>;
|
|
28
29
|
//# sourceMappingURL=provider-switch-routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-switch-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/provider-switch-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"provider-switch-routes.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/api/provider-switch-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAU7D,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC;IAC1B,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,YAAY,EAAE,CAAC,CAAC,SAAS,MAAM,EAC7B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,CAAC,EAAE,mBAAmB,KAC1B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,eAAe,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,uBAAuB,CAAC;IACjD;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAgBD,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,0BAA0B,GAC9B,OAAO,CAAC,OAAO,CAAC,CAiLlB"}
|