@silicaclaw/cli 2026.3.19-2 → 2026.3.19-21
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/CHANGELOG.md +85 -1
- package/INSTALL.md +65 -2
- package/README.md +101 -4
- package/VERSION +1 -1
- package/apps/local-console/dist/apps/local-console/src/server.d.ts +752 -0
- package/apps/local-console/dist/apps/local-console/src/server.js +3063 -0
- package/apps/local-console/dist/apps/local-console/src/socialRoutes.d.ts +16 -0
- package/apps/local-console/dist/apps/local-console/src/socialRoutes.js +72 -0
- package/apps/local-console/dist/config/silicaclaw-defaults.json +19 -0
- package/apps/local-console/dist/packages/core/src/crypto.d.ts +6 -0
- package/apps/local-console/dist/packages/core/src/crypto.js +50 -0
- package/apps/local-console/dist/packages/core/src/directory.d.ts +17 -0
- package/apps/local-console/dist/packages/core/src/directory.js +145 -0
- package/apps/local-console/dist/packages/core/src/identity.d.ts +2 -0
- package/apps/local-console/dist/packages/core/src/identity.js +18 -0
- package/apps/local-console/dist/packages/core/src/index.d.ts +12 -0
- package/apps/local-console/dist/packages/core/src/index.js +28 -0
- package/apps/local-console/dist/packages/core/src/indexing.d.ts +6 -0
- package/apps/local-console/dist/packages/core/src/indexing.js +43 -0
- package/apps/local-console/dist/packages/core/src/presence.d.ts +4 -0
- package/apps/local-console/dist/packages/core/src/presence.js +23 -0
- package/apps/local-console/dist/packages/core/src/profile.d.ts +4 -0
- package/apps/local-console/dist/packages/core/src/profile.js +39 -0
- package/apps/local-console/dist/packages/core/src/publicProfileSummary.d.ts +70 -0
- package/apps/local-console/dist/packages/core/src/publicProfileSummary.js +103 -0
- package/apps/local-console/dist/packages/core/src/socialConfig.d.ts +100 -0
- package/apps/local-console/dist/packages/core/src/socialConfig.js +300 -0
- package/apps/local-console/dist/packages/core/src/socialMessage.d.ts +19 -0
- package/apps/local-console/dist/packages/core/src/socialMessage.js +69 -0
- package/apps/local-console/dist/packages/core/src/socialResolver.d.ts +46 -0
- package/apps/local-console/dist/packages/core/src/socialResolver.js +237 -0
- package/apps/local-console/dist/packages/core/src/socialTemplate.d.ts +2 -0
- package/apps/local-console/dist/packages/core/src/socialTemplate.js +90 -0
- package/apps/local-console/dist/packages/core/src/types.d.ts +59 -0
- package/apps/local-console/dist/packages/core/src/types.js +2 -0
- package/apps/local-console/dist/packages/network/src/abstractions/messageEnvelope.d.ts +28 -0
- package/apps/local-console/dist/packages/network/src/abstractions/messageEnvelope.js +36 -0
- package/apps/local-console/dist/packages/network/src/abstractions/peerDiscovery.d.ts +43 -0
- package/apps/local-console/dist/packages/network/src/abstractions/peerDiscovery.js +2 -0
- package/apps/local-console/dist/packages/network/src/abstractions/topicCodec.d.ts +4 -0
- package/apps/local-console/dist/packages/network/src/abstractions/topicCodec.js +2 -0
- package/apps/local-console/dist/packages/network/src/abstractions/transport.d.ts +36 -0
- package/apps/local-console/dist/packages/network/src/abstractions/transport.js +2 -0
- package/apps/local-console/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.d.ts +5 -0
- package/apps/local-console/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.js +24 -0
- package/apps/local-console/dist/packages/network/src/codec/jsonTopicCodec.d.ts +5 -0
- package/apps/local-console/dist/packages/network/src/codec/jsonTopicCodec.js +12 -0
- package/apps/local-console/dist/packages/network/src/discovery/heartbeatPeerDiscovery.d.ts +28 -0
- package/apps/local-console/dist/packages/network/src/discovery/heartbeatPeerDiscovery.js +144 -0
- package/apps/local-console/dist/packages/network/src/index.d.ts +14 -0
- package/apps/local-console/dist/packages/network/src/index.js +30 -0
- package/apps/local-console/dist/packages/network/src/localEventBus.d.ts +9 -0
- package/apps/local-console/dist/packages/network/src/localEventBus.js +47 -0
- package/apps/local-console/dist/packages/network/src/mock.d.ts +8 -0
- package/apps/local-console/dist/packages/network/src/mock.js +24 -0
- package/apps/local-console/dist/packages/network/src/realPreview.d.ts +105 -0
- package/apps/local-console/dist/packages/network/src/realPreview.js +331 -0
- package/apps/local-console/dist/packages/network/src/relayPreview.d.ts +166 -0
- package/apps/local-console/dist/packages/network/src/relayPreview.js +448 -0
- package/apps/local-console/dist/packages/network/src/transport/udpLanBroadcastTransport.d.ts +23 -0
- package/apps/local-console/dist/packages/network/src/transport/udpLanBroadcastTransport.js +154 -0
- package/apps/local-console/dist/packages/network/src/types.d.ts +6 -0
- package/apps/local-console/dist/packages/network/src/types.js +2 -0
- package/apps/local-console/dist/packages/network/src/webrtcPreview.d.ts +163 -0
- package/apps/local-console/dist/packages/network/src/webrtcPreview.js +848 -0
- package/apps/local-console/dist/packages/storage/config/silicaclaw-defaults.json +19 -0
- package/apps/local-console/dist/packages/storage/src/index.d.ts +3 -0
- package/apps/local-console/dist/packages/storage/src/index.js +19 -0
- package/apps/local-console/dist/packages/storage/src/jsonRepo.d.ts +7 -0
- package/apps/local-console/dist/packages/storage/src/jsonRepo.js +29 -0
- package/apps/local-console/dist/packages/storage/src/repos.d.ts +61 -0
- package/apps/local-console/dist/packages/storage/src/repos.js +67 -0
- package/apps/local-console/dist/packages/storage/src/socialRuntimeRepo.d.ts +5 -0
- package/apps/local-console/dist/packages/storage/src/socialRuntimeRepo.js +57 -0
- package/apps/local-console/package.json +1 -1
- package/apps/local-console/public/app/app.js +493 -0
- package/apps/local-console/public/app/events.js +460 -0
- package/apps/local-console/public/app/i18n.js +43 -0
- package/apps/local-console/public/app/network.js +241 -0
- package/apps/local-console/public/app/overview.js +339 -0
- package/apps/local-console/public/app/profile.js +234 -0
- package/apps/local-console/public/app/shell.js +128 -0
- package/apps/local-console/public/app/social.js +664 -0
- package/apps/local-console/public/app/styles.css +2534 -0
- package/apps/local-console/public/app/template.js +838 -0
- package/apps/local-console/public/app/translations.js +1124 -0
- package/apps/local-console/public/app/utils.js +77 -0
- package/apps/local-console/public/index.html +3 -5826
- package/apps/local-console/src/server.ts +775 -146
- package/apps/public-explorer/dist/apps/public-explorer/src/server.d.ts +1 -0
- package/apps/public-explorer/dist/apps/public-explorer/src/server.js +41 -0
- package/apps/public-explorer/dist/config/silicaclaw-defaults.json +19 -0
- package/apps/public-explorer/dist/server.d.ts +1 -0
- package/apps/public-explorer/dist/server.js +31 -0
- package/apps/public-explorer/package.json +1 -0
- package/apps/public-explorer/public/app/app.js +322 -0
- package/apps/public-explorer/public/app/i18n.js +46 -0
- package/apps/public-explorer/public/app/styles.css +297 -0
- package/apps/public-explorer/public/app/template.js +45 -0
- package/apps/public-explorer/public/app/translations.js +192 -0
- package/apps/public-explorer/public/app/utils.js +37 -0
- package/apps/public-explorer/public/index.html +3 -831
- package/apps/public-explorer/src/server.ts +11 -1
- package/config/silicaclaw-defaults.json +19 -0
- package/dist/apps/local-console/src/server.d.ts +1 -0
- package/dist/apps/local-console/src/server.js +555 -0
- package/docs/NEW_USER_INSTALL.md +7 -0
- package/docs/OPENCLAW_BRIDGE.md +15 -0
- package/docs/OPENCLAW_BRIDGE_ZH.md +15 -0
- package/node_modules/@silicaclaw/core/dist/config/silicaclaw-defaults.json +19 -0
- package/node_modules/@silicaclaw/core/dist/crypto.d.ts +6 -0
- package/node_modules/@silicaclaw/core/dist/crypto.js +50 -0
- package/node_modules/@silicaclaw/core/dist/directory.d.ts +17 -0
- package/node_modules/@silicaclaw/core/dist/directory.js +145 -0
- package/node_modules/@silicaclaw/core/dist/identity.d.ts +2 -0
- package/node_modules/@silicaclaw/core/dist/identity.js +18 -0
- package/node_modules/@silicaclaw/core/dist/index.d.ts +12 -0
- package/node_modules/@silicaclaw/core/dist/index.js +28 -0
- package/node_modules/@silicaclaw/core/dist/indexing.d.ts +6 -0
- package/node_modules/@silicaclaw/core/dist/indexing.js +43 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/crypto.d.ts +6 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/crypto.js +50 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/directory.d.ts +17 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/directory.js +145 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/identity.d.ts +2 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/identity.js +18 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/index.d.ts +12 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/index.js +28 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/indexing.d.ts +6 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/indexing.js +43 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/presence.d.ts +4 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/presence.js +23 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/profile.d.ts +4 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/profile.js +39 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.d.ts +70 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.js +103 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialConfig.d.ts +100 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialConfig.js +300 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialMessage.d.ts +19 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialMessage.js +69 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialResolver.d.ts +46 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialResolver.js +237 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialTemplate.d.ts +2 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/socialTemplate.js +90 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/types.d.ts +59 -0
- package/node_modules/@silicaclaw/core/dist/packages/core/src/types.js +2 -0
- package/node_modules/@silicaclaw/core/dist/presence.d.ts +4 -0
- package/node_modules/@silicaclaw/core/dist/presence.js +23 -0
- package/node_modules/@silicaclaw/core/dist/profile.d.ts +4 -0
- package/node_modules/@silicaclaw/core/dist/profile.js +39 -0
- package/node_modules/@silicaclaw/core/dist/publicProfileSummary.d.ts +70 -0
- package/node_modules/@silicaclaw/core/dist/publicProfileSummary.js +103 -0
- package/node_modules/@silicaclaw/core/dist/socialConfig.d.ts +100 -0
- package/node_modules/@silicaclaw/core/dist/socialConfig.js +296 -0
- package/node_modules/@silicaclaw/core/dist/socialMessage.d.ts +19 -0
- package/node_modules/@silicaclaw/core/dist/socialMessage.js +69 -0
- package/node_modules/@silicaclaw/core/dist/socialResolver.d.ts +46 -0
- package/node_modules/@silicaclaw/core/dist/socialResolver.js +237 -0
- package/node_modules/@silicaclaw/core/dist/socialTemplate.d.ts +2 -0
- package/node_modules/@silicaclaw/core/dist/socialTemplate.js +90 -0
- package/node_modules/@silicaclaw/core/dist/types.d.ts +59 -0
- package/node_modules/@silicaclaw/core/dist/types.js +2 -0
- package/node_modules/@silicaclaw/core/package.json +13 -0
- package/node_modules/@silicaclaw/core/src/crypto.ts +55 -0
- package/node_modules/@silicaclaw/core/src/directory.ts +171 -0
- package/node_modules/@silicaclaw/core/src/identity.ts +14 -0
- package/node_modules/@silicaclaw/core/src/index.ts +12 -0
- package/node_modules/@silicaclaw/core/src/indexing.ts +42 -0
- package/node_modules/@silicaclaw/core/src/presence.ts +24 -0
- package/node_modules/@silicaclaw/core/src/profile.ts +39 -0
- package/node_modules/@silicaclaw/core/src/publicProfileSummary.ts +180 -0
- package/node_modules/@silicaclaw/core/src/socialConfig.ts +455 -0
- package/node_modules/@silicaclaw/core/src/socialMessage.ts +86 -0
- package/node_modules/@silicaclaw/core/src/socialResolver.ts +293 -0
- package/node_modules/@silicaclaw/core/src/socialTemplate.ts +99 -0
- package/node_modules/@silicaclaw/core/src/types.ts +67 -0
- package/node_modules/@silicaclaw/core/tsconfig.json +7 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/messageEnvelope.d.ts +28 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/messageEnvelope.js +36 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/peerDiscovery.d.ts +43 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/peerDiscovery.js +2 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/topicCodec.d.ts +4 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/topicCodec.js +2 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/transport.d.ts +36 -0
- package/node_modules/@silicaclaw/network/dist/abstractions/transport.js +2 -0
- package/node_modules/@silicaclaw/network/dist/codec/jsonMessageEnvelopeCodec.d.ts +5 -0
- package/node_modules/@silicaclaw/network/dist/codec/jsonMessageEnvelopeCodec.js +24 -0
- package/node_modules/@silicaclaw/network/dist/codec/jsonTopicCodec.d.ts +5 -0
- package/node_modules/@silicaclaw/network/dist/codec/jsonTopicCodec.js +12 -0
- package/node_modules/@silicaclaw/network/dist/config/silicaclaw-defaults.json +19 -0
- package/node_modules/@silicaclaw/network/dist/discovery/heartbeatPeerDiscovery.d.ts +28 -0
- package/node_modules/@silicaclaw/network/dist/discovery/heartbeatPeerDiscovery.js +144 -0
- package/node_modules/@silicaclaw/network/dist/index.d.ts +14 -0
- package/node_modules/@silicaclaw/network/dist/index.js +30 -0
- package/node_modules/@silicaclaw/network/dist/localEventBus.d.ts +9 -0
- package/node_modules/@silicaclaw/network/dist/localEventBus.js +47 -0
- package/node_modules/@silicaclaw/network/dist/mock.d.ts +8 -0
- package/node_modules/@silicaclaw/network/dist/mock.js +24 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/messageEnvelope.d.ts +28 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/messageEnvelope.js +36 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/peerDiscovery.d.ts +43 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/peerDiscovery.js +2 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/topicCodec.d.ts +4 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/topicCodec.js +2 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/transport.d.ts +36 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/transport.js +2 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.d.ts +5 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.js +24 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonTopicCodec.d.ts +5 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonTopicCodec.js +12 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.d.ts +28 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.js +144 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/index.d.ts +14 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/index.js +30 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/localEventBus.d.ts +9 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/localEventBus.js +47 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/mock.d.ts +8 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/mock.js +24 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/realPreview.d.ts +105 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/realPreview.js +331 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.d.ts +166 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.js +448 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/transport/udpLanBroadcastTransport.d.ts +23 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/transport/udpLanBroadcastTransport.js +154 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/types.d.ts +6 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/types.js +2 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/webrtcPreview.d.ts +163 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/webrtcPreview.js +848 -0
- package/node_modules/@silicaclaw/network/dist/realPreview.d.ts +105 -0
- package/node_modules/@silicaclaw/network/dist/realPreview.js +327 -0
- package/node_modules/@silicaclaw/network/dist/relayPreview.d.ts +166 -0
- package/node_modules/@silicaclaw/network/dist/relayPreview.js +442 -0
- package/node_modules/@silicaclaw/network/dist/transport/udpLanBroadcastTransport.d.ts +23 -0
- package/node_modules/@silicaclaw/network/dist/transport/udpLanBroadcastTransport.js +153 -0
- package/node_modules/@silicaclaw/network/dist/types.d.ts +6 -0
- package/node_modules/@silicaclaw/network/dist/types.js +2 -0
- package/node_modules/@silicaclaw/network/dist/webrtcPreview.d.ts +163 -0
- package/node_modules/@silicaclaw/network/dist/webrtcPreview.js +844 -0
- package/node_modules/@silicaclaw/network/package.json +10 -0
- package/node_modules/@silicaclaw/network/src/abstractions/messageEnvelope.ts +80 -0
- package/node_modules/@silicaclaw/network/src/abstractions/peerDiscovery.ts +49 -0
- package/node_modules/@silicaclaw/network/src/abstractions/topicCodec.ts +4 -0
- package/node_modules/@silicaclaw/network/src/abstractions/transport.ts +40 -0
- package/node_modules/@silicaclaw/network/src/codec/jsonMessageEnvelopeCodec.ts +22 -0
- package/node_modules/@silicaclaw/network/src/codec/jsonTopicCodec.ts +11 -0
- package/node_modules/@silicaclaw/network/src/discovery/heartbeatPeerDiscovery.ts +173 -0
- package/node_modules/@silicaclaw/network/src/index.ts +17 -0
- package/node_modules/@silicaclaw/network/src/localEventBus.ts +61 -0
- package/node_modules/@silicaclaw/network/src/mock.ts +27 -0
- package/node_modules/@silicaclaw/network/src/realPreview.ts +437 -0
- package/node_modules/@silicaclaw/network/src/relayPreview.ts +568 -0
- package/node_modules/@silicaclaw/network/src/transport/udpLanBroadcastTransport.ts +174 -0
- package/node_modules/@silicaclaw/network/src/types.ts +6 -0
- package/node_modules/@silicaclaw/network/src/webrtcPreview.ts +1053 -0
- package/node_modules/@silicaclaw/network/tsconfig.json +7 -0
- package/node_modules/@silicaclaw/storage/config/silicaclaw-defaults.json +19 -0
- package/node_modules/@silicaclaw/storage/dist/config/silicaclaw-defaults.json +19 -0
- package/node_modules/@silicaclaw/storage/dist/index.d.ts +3 -0
- package/node_modules/@silicaclaw/storage/dist/index.js +19 -0
- package/node_modules/@silicaclaw/storage/dist/jsonRepo.d.ts +7 -0
- package/node_modules/@silicaclaw/storage/dist/jsonRepo.js +29 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/crypto.d.ts +6 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/crypto.js +50 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/directory.d.ts +17 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/directory.js +145 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/identity.d.ts +2 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/identity.js +18 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.d.ts +12 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.js +28 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/indexing.d.ts +6 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/indexing.js +43 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/presence.d.ts +4 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/presence.js +23 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/profile.d.ts +4 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/profile.js +39 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.d.ts +70 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.js +103 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialConfig.d.ts +100 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialConfig.js +300 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialMessage.d.ts +19 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialMessage.js +69 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialResolver.d.ts +46 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialResolver.js +237 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialTemplate.d.ts +2 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialTemplate.js +90 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/types.d.ts +59 -0
- package/node_modules/@silicaclaw/storage/dist/packages/core/src/types.js +2 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/config/silicaclaw-defaults.json +19 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/index.d.ts +3 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/index.js +19 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/jsonRepo.d.ts +7 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/jsonRepo.js +29 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.d.ts +61 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.js +67 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/socialRuntimeRepo.d.ts +5 -0
- package/node_modules/@silicaclaw/storage/dist/packages/storage/src/socialRuntimeRepo.js +57 -0
- package/node_modules/@silicaclaw/storage/dist/repos.d.ts +61 -0
- package/node_modules/@silicaclaw/storage/dist/repos.js +67 -0
- package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.d.ts +5 -0
- package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.js +57 -0
- package/node_modules/@silicaclaw/storage/package.json +13 -0
- package/node_modules/@silicaclaw/storage/src/index.ts +3 -0
- package/node_modules/@silicaclaw/storage/src/jsonRepo.ts +25 -0
- package/node_modules/@silicaclaw/storage/src/repos.ts +106 -0
- package/node_modules/@silicaclaw/storage/src/socialRuntimeRepo.ts +53 -0
- package/node_modules/@silicaclaw/storage/tsconfig.json +7 -0
- package/node_modules/accepts/HISTORY.md +243 -0
- package/node_modules/accepts/LICENSE +23 -0
- package/node_modules/accepts/README.md +140 -0
- package/node_modules/accepts/index.js +238 -0
- package/node_modules/accepts/package.json +47 -0
- package/node_modules/array-flatten/LICENSE +21 -0
- package/node_modules/array-flatten/README.md +43 -0
- package/node_modules/array-flatten/array-flatten.js +64 -0
- package/node_modules/array-flatten/package.json +39 -0
- package/node_modules/body-parser/HISTORY.md +680 -0
- package/node_modules/body-parser/LICENSE +23 -0
- package/node_modules/body-parser/README.md +476 -0
- package/node_modules/body-parser/index.js +156 -0
- package/node_modules/body-parser/lib/read.js +205 -0
- package/node_modules/body-parser/lib/types/json.js +247 -0
- package/node_modules/body-parser/lib/types/raw.js +101 -0
- package/node_modules/body-parser/lib/types/text.js +121 -0
- package/node_modules/body-parser/lib/types/urlencoded.js +300 -0
- package/node_modules/body-parser/package.json +55 -0
- package/node_modules/bytes/History.md +97 -0
- package/node_modules/bytes/LICENSE +23 -0
- package/node_modules/bytes/Readme.md +152 -0
- package/node_modules/bytes/index.js +170 -0
- package/node_modules/bytes/package.json +42 -0
- package/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
- package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- package/node_modules/call-bind-apply-helpers/.nycrc +9 -0
- package/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- package/node_modules/call-bind-apply-helpers/LICENSE +21 -0
- package/node_modules/call-bind-apply-helpers/README.md +62 -0
- package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- package/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
- package/node_modules/call-bind-apply-helpers/index.js +15 -0
- package/node_modules/call-bind-apply-helpers/package.json +85 -0
- package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- package/node_modules/call-bound/.eslintrc +13 -0
- package/node_modules/call-bound/.github/FUNDING.yml +12 -0
- package/node_modules/call-bound/.nycrc +9 -0
- package/node_modules/call-bound/CHANGELOG.md +42 -0
- package/node_modules/call-bound/LICENSE +21 -0
- package/node_modules/call-bound/README.md +53 -0
- package/node_modules/call-bound/index.d.ts +94 -0
- package/node_modules/call-bound/index.js +19 -0
- package/node_modules/call-bound/package.json +99 -0
- package/node_modules/call-bound/test/index.js +61 -0
- package/node_modules/call-bound/tsconfig.json +10 -0
- package/node_modules/content-disposition/HISTORY.md +60 -0
- package/node_modules/content-disposition/LICENSE +22 -0
- package/node_modules/content-disposition/README.md +142 -0
- package/node_modules/content-disposition/index.js +458 -0
- package/node_modules/content-disposition/package.json +44 -0
- package/node_modules/content-type/HISTORY.md +29 -0
- package/node_modules/content-type/LICENSE +22 -0
- package/node_modules/content-type/README.md +94 -0
- package/node_modules/content-type/index.js +225 -0
- package/node_modules/content-type/package.json +42 -0
- package/node_modules/cookie/LICENSE +24 -0
- package/node_modules/cookie/README.md +317 -0
- package/node_modules/cookie/SECURITY.md +25 -0
- package/node_modules/cookie/index.js +335 -0
- package/node_modules/cookie/package.json +44 -0
- package/node_modules/cookie-signature/History.md +42 -0
- package/node_modules/cookie-signature/Readme.md +42 -0
- package/node_modules/cookie-signature/index.js +51 -0
- package/node_modules/cookie-signature/package.json +18 -0
- package/node_modules/cors/LICENSE +22 -0
- package/node_modules/cors/README.md +277 -0
- package/node_modules/cors/lib/index.js +238 -0
- package/node_modules/cors/package.json +42 -0
- package/node_modules/debug/.coveralls.yml +1 -0
- package/node_modules/debug/.eslintrc +11 -0
- package/node_modules/debug/.npmignore +9 -0
- package/node_modules/debug/.travis.yml +14 -0
- package/node_modules/debug/CHANGELOG.md +362 -0
- package/node_modules/debug/LICENSE +19 -0
- package/node_modules/debug/Makefile +50 -0
- package/node_modules/debug/README.md +312 -0
- package/node_modules/debug/component.json +19 -0
- package/node_modules/debug/karma.conf.js +70 -0
- package/node_modules/debug/node.js +1 -0
- package/node_modules/debug/package.json +49 -0
- package/node_modules/debug/src/browser.js +185 -0
- package/node_modules/debug/src/debug.js +202 -0
- package/node_modules/debug/src/index.js +10 -0
- package/node_modules/debug/src/inspector-log.js +15 -0
- package/node_modules/debug/src/node.js +248 -0
- package/node_modules/depd/History.md +103 -0
- package/node_modules/depd/LICENSE +22 -0
- package/node_modules/depd/Readme.md +280 -0
- package/node_modules/depd/index.js +538 -0
- package/node_modules/depd/lib/browser/index.js +77 -0
- package/node_modules/depd/package.json +45 -0
- package/node_modules/destroy/LICENSE +23 -0
- package/node_modules/destroy/README.md +63 -0
- package/node_modules/destroy/index.js +209 -0
- package/node_modules/destroy/package.json +48 -0
- package/node_modules/dunder-proto/.eslintrc +5 -0
- package/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
- package/node_modules/dunder-proto/.nycrc +13 -0
- package/node_modules/dunder-proto/CHANGELOG.md +24 -0
- package/node_modules/dunder-proto/LICENSE +21 -0
- package/node_modules/dunder-proto/README.md +54 -0
- package/node_modules/dunder-proto/get.d.ts +5 -0
- package/node_modules/dunder-proto/get.js +30 -0
- package/node_modules/dunder-proto/package.json +76 -0
- package/node_modules/dunder-proto/set.d.ts +5 -0
- package/node_modules/dunder-proto/set.js +35 -0
- package/node_modules/dunder-proto/test/get.js +34 -0
- package/node_modules/dunder-proto/test/index.js +4 -0
- package/node_modules/dunder-proto/test/set.js +50 -0
- package/node_modules/dunder-proto/tsconfig.json +9 -0
- package/node_modules/ee-first/LICENSE +22 -0
- package/node_modules/ee-first/README.md +80 -0
- package/node_modules/ee-first/index.js +95 -0
- package/node_modules/ee-first/package.json +29 -0
- package/node_modules/encodeurl/LICENSE +22 -0
- package/node_modules/encodeurl/README.md +109 -0
- package/node_modules/encodeurl/index.js +60 -0
- package/node_modules/encodeurl/package.json +40 -0
- package/node_modules/es-define-property/.eslintrc +13 -0
- package/node_modules/es-define-property/.github/FUNDING.yml +12 -0
- package/node_modules/es-define-property/.nycrc +9 -0
- package/node_modules/es-define-property/CHANGELOG.md +29 -0
- package/node_modules/es-define-property/LICENSE +21 -0
- package/node_modules/es-define-property/README.md +49 -0
- package/node_modules/es-define-property/index.d.ts +3 -0
- package/node_modules/es-define-property/index.js +14 -0
- package/node_modules/es-define-property/package.json +81 -0
- package/node_modules/es-define-property/test/index.js +56 -0
- package/node_modules/es-define-property/tsconfig.json +10 -0
- package/node_modules/es-errors/.eslintrc +5 -0
- package/node_modules/es-errors/.github/FUNDING.yml +12 -0
- package/node_modules/es-errors/CHANGELOG.md +40 -0
- package/node_modules/es-errors/LICENSE +21 -0
- package/node_modules/es-errors/README.md +55 -0
- package/node_modules/es-errors/eval.d.ts +3 -0
- package/node_modules/es-errors/eval.js +4 -0
- package/node_modules/es-errors/index.d.ts +3 -0
- package/node_modules/es-errors/index.js +4 -0
- package/node_modules/es-errors/package.json +80 -0
- package/node_modules/es-errors/range.d.ts +3 -0
- package/node_modules/es-errors/range.js +4 -0
- package/node_modules/es-errors/ref.d.ts +3 -0
- package/node_modules/es-errors/ref.js +4 -0
- package/node_modules/es-errors/syntax.d.ts +3 -0
- package/node_modules/es-errors/syntax.js +4 -0
- package/node_modules/es-errors/test/index.js +19 -0
- package/node_modules/es-errors/tsconfig.json +49 -0
- package/node_modules/es-errors/type.d.ts +3 -0
- package/node_modules/es-errors/type.js +4 -0
- package/node_modules/es-errors/uri.d.ts +3 -0
- package/node_modules/es-errors/uri.js +4 -0
- package/node_modules/es-object-atoms/.eslintrc +16 -0
- package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- package/node_modules/es-object-atoms/LICENSE +21 -0
- package/node_modules/es-object-atoms/README.md +63 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- package/node_modules/es-object-atoms/ToObject.js +10 -0
- package/node_modules/es-object-atoms/index.d.ts +3 -0
- package/node_modules/es-object-atoms/index.js +4 -0
- package/node_modules/es-object-atoms/isObject.d.ts +3 -0
- package/node_modules/es-object-atoms/isObject.js +6 -0
- package/node_modules/es-object-atoms/package.json +80 -0
- package/node_modules/es-object-atoms/test/index.js +38 -0
- package/node_modules/es-object-atoms/tsconfig.json +6 -0
- package/node_modules/escape-html/LICENSE +24 -0
- package/node_modules/escape-html/Readme.md +43 -0
- package/node_modules/escape-html/index.js +78 -0
- package/node_modules/escape-html/package.json +24 -0
- package/node_modules/etag/HISTORY.md +83 -0
- package/node_modules/etag/LICENSE +22 -0
- package/node_modules/etag/README.md +159 -0
- package/node_modules/etag/index.js +131 -0
- package/node_modules/etag/package.json +47 -0
- package/node_modules/express/History.md +3667 -0
- package/node_modules/express/LICENSE +24 -0
- package/node_modules/express/Readme.md +260 -0
- package/node_modules/express/index.js +11 -0
- package/node_modules/express/lib/application.js +661 -0
- package/node_modules/express/lib/express.js +116 -0
- package/node_modules/express/lib/middleware/init.js +43 -0
- package/node_modules/express/lib/middleware/query.js +47 -0
- package/node_modules/express/lib/request.js +525 -0
- package/node_modules/express/lib/response.js +1179 -0
- package/node_modules/express/lib/router/index.js +673 -0
- package/node_modules/express/lib/router/layer.js +181 -0
- package/node_modules/express/lib/router/route.js +230 -0
- package/node_modules/express/lib/utils.js +303 -0
- package/node_modules/express/lib/view.js +182 -0
- package/node_modules/express/package.json +102 -0
- package/node_modules/finalhandler/HISTORY.md +216 -0
- package/node_modules/finalhandler/LICENSE +22 -0
- package/node_modules/finalhandler/README.md +147 -0
- package/node_modules/finalhandler/SECURITY.md +25 -0
- package/node_modules/finalhandler/index.js +341 -0
- package/node_modules/finalhandler/package.json +47 -0
- package/node_modules/forwarded/HISTORY.md +21 -0
- package/node_modules/forwarded/LICENSE +22 -0
- package/node_modules/forwarded/README.md +57 -0
- package/node_modules/forwarded/index.js +90 -0
- package/node_modules/forwarded/package.json +45 -0
- package/node_modules/fresh/HISTORY.md +70 -0
- package/node_modules/fresh/LICENSE +23 -0
- package/node_modules/fresh/README.md +119 -0
- package/node_modules/fresh/index.js +137 -0
- package/node_modules/fresh/package.json +46 -0
- package/node_modules/function-bind/.eslintrc +21 -0
- package/node_modules/function-bind/.github/FUNDING.yml +12 -0
- package/node_modules/function-bind/.github/SECURITY.md +3 -0
- package/node_modules/function-bind/.nycrc +13 -0
- package/node_modules/function-bind/CHANGELOG.md +136 -0
- package/node_modules/function-bind/LICENSE +20 -0
- package/node_modules/function-bind/README.md +46 -0
- package/node_modules/function-bind/implementation.js +84 -0
- package/node_modules/function-bind/index.js +5 -0
- package/node_modules/function-bind/package.json +87 -0
- package/node_modules/function-bind/test/.eslintrc +9 -0
- package/node_modules/function-bind/test/index.js +252 -0
- package/node_modules/get-intrinsic/.eslintrc +42 -0
- package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- package/node_modules/get-intrinsic/.nycrc +9 -0
- package/node_modules/get-intrinsic/CHANGELOG.md +186 -0
- package/node_modules/get-intrinsic/LICENSE +21 -0
- package/node_modules/get-intrinsic/README.md +71 -0
- package/node_modules/get-intrinsic/index.js +378 -0
- package/node_modules/get-intrinsic/package.json +97 -0
- package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- package/node_modules/get-proto/.eslintrc +10 -0
- package/node_modules/get-proto/.github/FUNDING.yml +12 -0
- package/node_modules/get-proto/.nycrc +9 -0
- package/node_modules/get-proto/CHANGELOG.md +21 -0
- package/node_modules/get-proto/LICENSE +21 -0
- package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- package/node_modules/get-proto/README.md +50 -0
- package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- package/node_modules/get-proto/index.d.ts +5 -0
- package/node_modules/get-proto/index.js +27 -0
- package/node_modules/get-proto/package.json +81 -0
- package/node_modules/get-proto/test/index.js +68 -0
- package/node_modules/get-proto/tsconfig.json +9 -0
- package/node_modules/gopd/.eslintrc +16 -0
- package/node_modules/gopd/.github/FUNDING.yml +12 -0
- package/node_modules/gopd/CHANGELOG.md +45 -0
- package/node_modules/gopd/LICENSE +21 -0
- package/node_modules/gopd/README.md +40 -0
- package/node_modules/gopd/gOPD.d.ts +1 -0
- package/node_modules/gopd/gOPD.js +4 -0
- package/node_modules/gopd/index.d.ts +5 -0
- package/node_modules/gopd/index.js +15 -0
- package/node_modules/gopd/package.json +77 -0
- package/node_modules/gopd/test/index.js +36 -0
- package/node_modules/gopd/tsconfig.json +9 -0
- package/node_modules/has-symbols/.eslintrc +11 -0
- package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- package/node_modules/has-symbols/.nycrc +9 -0
- package/node_modules/has-symbols/CHANGELOG.md +91 -0
- package/node_modules/has-symbols/LICENSE +21 -0
- package/node_modules/has-symbols/README.md +46 -0
- package/node_modules/has-symbols/index.d.ts +3 -0
- package/node_modules/has-symbols/index.js +14 -0
- package/node_modules/has-symbols/package.json +111 -0
- package/node_modules/has-symbols/shams.d.ts +3 -0
- package/node_modules/has-symbols/shams.js +45 -0
- package/node_modules/has-symbols/test/index.js +22 -0
- package/node_modules/has-symbols/test/shams/core-js.js +29 -0
- package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- package/node_modules/has-symbols/test/tests.js +58 -0
- package/node_modules/has-symbols/tsconfig.json +10 -0
- package/node_modules/hasown/.eslintrc +5 -0
- package/node_modules/hasown/.github/FUNDING.yml +12 -0
- package/node_modules/hasown/.nycrc +13 -0
- package/node_modules/hasown/CHANGELOG.md +40 -0
- package/node_modules/hasown/LICENSE +21 -0
- package/node_modules/hasown/README.md +40 -0
- package/node_modules/hasown/index.d.ts +3 -0
- package/node_modules/hasown/index.js +8 -0
- package/node_modules/hasown/package.json +92 -0
- package/node_modules/hasown/tsconfig.json +6 -0
- package/node_modules/http-errors/HISTORY.md +186 -0
- package/node_modules/http-errors/LICENSE +23 -0
- package/node_modules/http-errors/README.md +169 -0
- package/node_modules/http-errors/index.js +290 -0
- package/node_modules/http-errors/package.json +54 -0
- package/node_modules/iconv-lite/Changelog.md +162 -0
- package/node_modules/iconv-lite/LICENSE +21 -0
- package/node_modules/iconv-lite/README.md +156 -0
- package/node_modules/iconv-lite/encodings/dbcs-codec.js +555 -0
- package/node_modules/iconv-lite/encodings/dbcs-data.js +176 -0
- package/node_modules/iconv-lite/encodings/index.js +22 -0
- package/node_modules/iconv-lite/encodings/internal.js +188 -0
- package/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- package/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- package/node_modules/iconv-lite/encodings/sbcs-data.js +174 -0
- package/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- package/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- package/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- package/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- package/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- package/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- package/node_modules/iconv-lite/encodings/tables/gbk-added.json +55 -0
- package/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- package/node_modules/iconv-lite/encodings/utf16.js +177 -0
- package/node_modules/iconv-lite/encodings/utf7.js +290 -0
- package/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- package/node_modules/iconv-lite/lib/extend-node.js +217 -0
- package/node_modules/iconv-lite/lib/index.d.ts +24 -0
- package/node_modules/iconv-lite/lib/index.js +153 -0
- package/node_modules/iconv-lite/lib/streams.js +121 -0
- package/node_modules/iconv-lite/package.json +46 -0
- package/node_modules/inherits/LICENSE +16 -0
- package/node_modules/inherits/README.md +42 -0
- package/node_modules/inherits/inherits.js +9 -0
- package/node_modules/inherits/inherits_browser.js +27 -0
- package/node_modules/inherits/package.json +29 -0
- package/node_modules/ipaddr.js/LICENSE +19 -0
- package/node_modules/ipaddr.js/README.md +233 -0
- package/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- package/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- package/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- package/node_modules/ipaddr.js/package.json +35 -0
- package/node_modules/math-intrinsics/.eslintrc +16 -0
- package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- package/node_modules/math-intrinsics/LICENSE +21 -0
- package/node_modules/math-intrinsics/README.md +50 -0
- package/node_modules/math-intrinsics/abs.d.ts +1 -0
- package/node_modules/math-intrinsics/abs.js +4 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- package/node_modules/math-intrinsics/floor.d.ts +1 -0
- package/node_modules/math-intrinsics/floor.js +4 -0
- package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- package/node_modules/math-intrinsics/isFinite.js +12 -0
- package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/isInteger.js +16 -0
- package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- package/node_modules/math-intrinsics/isNaN.js +6 -0
- package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- package/node_modules/math-intrinsics/max.d.ts +1 -0
- package/node_modules/math-intrinsics/max.js +4 -0
- package/node_modules/math-intrinsics/min.d.ts +1 -0
- package/node_modules/math-intrinsics/min.js +4 -0
- package/node_modules/math-intrinsics/mod.d.ts +3 -0
- package/node_modules/math-intrinsics/mod.js +9 -0
- package/node_modules/math-intrinsics/package.json +86 -0
- package/node_modules/math-intrinsics/pow.d.ts +1 -0
- package/node_modules/math-intrinsics/pow.js +4 -0
- package/node_modules/math-intrinsics/round.d.ts +1 -0
- package/node_modules/math-intrinsics/round.js +4 -0
- package/node_modules/math-intrinsics/sign.d.ts +3 -0
- package/node_modules/math-intrinsics/sign.js +11 -0
- package/node_modules/math-intrinsics/test/index.js +192 -0
- package/node_modules/math-intrinsics/tsconfig.json +3 -0
- package/node_modules/media-typer/HISTORY.md +22 -0
- package/node_modules/media-typer/LICENSE +22 -0
- package/node_modules/media-typer/README.md +81 -0
- package/node_modules/media-typer/index.js +270 -0
- package/node_modules/media-typer/package.json +26 -0
- package/node_modules/merge-descriptors/HISTORY.md +21 -0
- package/node_modules/merge-descriptors/LICENSE +23 -0
- package/node_modules/merge-descriptors/README.md +49 -0
- package/node_modules/merge-descriptors/index.js +60 -0
- package/node_modules/merge-descriptors/package.json +39 -0
- package/node_modules/methods/HISTORY.md +29 -0
- package/node_modules/methods/LICENSE +24 -0
- package/node_modules/methods/README.md +51 -0
- package/node_modules/methods/index.js +69 -0
- package/node_modules/methods/package.json +36 -0
- package/node_modules/mime/.npmignore +0 -0
- package/node_modules/mime/CHANGELOG.md +164 -0
- package/node_modules/mime/LICENSE +21 -0
- package/node_modules/mime/README.md +90 -0
- package/node_modules/mime/cli.js +8 -0
- package/node_modules/mime/mime.js +108 -0
- package/node_modules/mime/package.json +44 -0
- package/node_modules/mime/src/build.js +53 -0
- package/node_modules/mime/src/test.js +60 -0
- package/node_modules/mime/types.json +1 -0
- package/node_modules/mime-db/HISTORY.md +507 -0
- package/node_modules/mime-db/LICENSE +23 -0
- package/node_modules/mime-db/README.md +100 -0
- package/node_modules/mime-db/db.json +8519 -0
- package/node_modules/mime-db/index.js +12 -0
- package/node_modules/mime-db/package.json +60 -0
- package/node_modules/mime-types/HISTORY.md +397 -0
- package/node_modules/mime-types/LICENSE +23 -0
- package/node_modules/mime-types/README.md +113 -0
- package/node_modules/mime-types/index.js +188 -0
- package/node_modules/mime-types/package.json +44 -0
- package/node_modules/ms/index.js +152 -0
- package/node_modules/ms/license.md +21 -0
- package/node_modules/ms/package.json +37 -0
- package/node_modules/ms/readme.md +51 -0
- package/node_modules/negotiator/HISTORY.md +108 -0
- package/node_modules/negotiator/LICENSE +24 -0
- package/node_modules/negotiator/README.md +203 -0
- package/node_modules/negotiator/index.js +82 -0
- package/node_modules/negotiator/lib/charset.js +169 -0
- package/node_modules/negotiator/lib/encoding.js +184 -0
- package/node_modules/negotiator/lib/language.js +179 -0
- package/node_modules/negotiator/lib/mediaType.js +294 -0
- package/node_modules/negotiator/package.json +42 -0
- package/node_modules/object-assign/index.js +90 -0
- package/node_modules/object-assign/license +21 -0
- package/node_modules/object-assign/package.json +42 -0
- package/node_modules/object-assign/readme.md +61 -0
- package/node_modules/object-inspect/.eslintrc +53 -0
- package/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- package/node_modules/object-inspect/.nycrc +13 -0
- package/node_modules/object-inspect/CHANGELOG.md +424 -0
- package/node_modules/object-inspect/LICENSE +21 -0
- package/node_modules/object-inspect/example/all.js +23 -0
- package/node_modules/object-inspect/example/circular.js +6 -0
- package/node_modules/object-inspect/example/fn.js +5 -0
- package/node_modules/object-inspect/example/inspect.js +10 -0
- package/node_modules/object-inspect/index.js +544 -0
- package/node_modules/object-inspect/package-support.json +20 -0
- package/node_modules/object-inspect/package.json +105 -0
- package/node_modules/object-inspect/readme.markdown +84 -0
- package/node_modules/object-inspect/test/bigint.js +58 -0
- package/node_modules/object-inspect/test/browser/dom.js +15 -0
- package/node_modules/object-inspect/test/circular.js +16 -0
- package/node_modules/object-inspect/test/deep.js +12 -0
- package/node_modules/object-inspect/test/element.js +53 -0
- package/node_modules/object-inspect/test/err.js +48 -0
- package/node_modules/object-inspect/test/fakes.js +29 -0
- package/node_modules/object-inspect/test/fn.js +76 -0
- package/node_modules/object-inspect/test/global.js +17 -0
- package/node_modules/object-inspect/test/has.js +15 -0
- package/node_modules/object-inspect/test/holes.js +15 -0
- package/node_modules/object-inspect/test/indent-option.js +271 -0
- package/node_modules/object-inspect/test/inspect.js +139 -0
- package/node_modules/object-inspect/test/lowbyte.js +12 -0
- package/node_modules/object-inspect/test/number.js +58 -0
- package/node_modules/object-inspect/test/quoteStyle.js +26 -0
- package/node_modules/object-inspect/test/toStringTag.js +40 -0
- package/node_modules/object-inspect/test/undef.js +12 -0
- package/node_modules/object-inspect/test/values.js +261 -0
- package/node_modules/object-inspect/test-core-js.js +26 -0
- package/node_modules/object-inspect/util.inspect.js +1 -0
- package/node_modules/on-finished/HISTORY.md +98 -0
- package/node_modules/on-finished/LICENSE +23 -0
- package/node_modules/on-finished/README.md +162 -0
- package/node_modules/on-finished/index.js +234 -0
- package/node_modules/on-finished/package.json +39 -0
- package/node_modules/parseurl/HISTORY.md +58 -0
- package/node_modules/parseurl/LICENSE +24 -0
- package/node_modules/parseurl/README.md +133 -0
- package/node_modules/parseurl/index.js +158 -0
- package/node_modules/parseurl/package.json +40 -0
- package/node_modules/path-to-regexp/LICENSE +21 -0
- package/node_modules/path-to-regexp/Readme.md +35 -0
- package/node_modules/path-to-regexp/index.js +156 -0
- package/node_modules/path-to-regexp/package.json +30 -0
- package/node_modules/proxy-addr/HISTORY.md +161 -0
- package/node_modules/proxy-addr/LICENSE +22 -0
- package/node_modules/proxy-addr/README.md +139 -0
- package/node_modules/proxy-addr/index.js +327 -0
- package/node_modules/proxy-addr/package.json +47 -0
- package/node_modules/qs/.editorconfig +46 -0
- package/node_modules/qs/.github/FUNDING.yml +12 -0
- package/node_modules/qs/.github/SECURITY.md +11 -0
- package/node_modules/qs/.github/THREAT_MODEL.md +78 -0
- package/node_modules/qs/.nycrc +13 -0
- package/node_modules/qs/CHANGELOG.md +644 -0
- package/node_modules/qs/LICENSE.md +29 -0
- package/node_modules/qs/README.md +740 -0
- package/node_modules/qs/dist/qs.js +141 -0
- package/node_modules/qs/eslint.config.mjs +56 -0
- package/node_modules/qs/lib/formats.js +23 -0
- package/node_modules/qs/lib/index.js +11 -0
- package/node_modules/qs/lib/parse.js +371 -0
- package/node_modules/qs/lib/stringify.js +356 -0
- package/node_modules/qs/lib/utils.js +340 -0
- package/node_modules/qs/package.json +94 -0
- package/node_modules/qs/test/empty-keys-cases.js +267 -0
- package/node_modules/qs/test/parse.js +1512 -0
- package/node_modules/qs/test/stringify.js +1310 -0
- package/node_modules/qs/test/utils.js +397 -0
- package/node_modules/range-parser/HISTORY.md +56 -0
- package/node_modules/range-parser/LICENSE +23 -0
- package/node_modules/range-parser/README.md +84 -0
- package/node_modules/range-parser/index.js +162 -0
- package/node_modules/range-parser/package.json +44 -0
- package/node_modules/raw-body/LICENSE +22 -0
- package/node_modules/raw-body/README.md +223 -0
- package/node_modules/raw-body/index.d.ts +87 -0
- package/node_modules/raw-body/index.js +336 -0
- package/node_modules/raw-body/package.json +47 -0
- package/node_modules/safe-buffer/LICENSE +21 -0
- package/node_modules/safe-buffer/README.md +584 -0
- package/node_modules/safe-buffer/index.d.ts +187 -0
- package/node_modules/safe-buffer/index.js +65 -0
- package/node_modules/safe-buffer/package.json +51 -0
- package/node_modules/safer-buffer/LICENSE +21 -0
- package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/node_modules/safer-buffer/Readme.md +156 -0
- package/node_modules/safer-buffer/dangerous.js +58 -0
- package/node_modules/safer-buffer/package.json +34 -0
- package/node_modules/safer-buffer/safer.js +77 -0
- package/node_modules/safer-buffer/tests.js +406 -0
- package/node_modules/send/HISTORY.md +538 -0
- package/node_modules/send/LICENSE +23 -0
- package/node_modules/send/README.md +327 -0
- package/node_modules/send/SECURITY.md +24 -0
- package/node_modules/send/index.js +1142 -0
- package/node_modules/send/node_modules/ms/index.js +162 -0
- package/node_modules/send/node_modules/ms/license.md +21 -0
- package/node_modules/send/node_modules/ms/package.json +38 -0
- package/node_modules/send/node_modules/ms/readme.md +59 -0
- package/node_modules/send/package.json +62 -0
- package/node_modules/serve-static/HISTORY.md +493 -0
- package/node_modules/serve-static/LICENSE +25 -0
- package/node_modules/serve-static/README.md +257 -0
- package/node_modules/serve-static/index.js +209 -0
- package/node_modules/serve-static/package.json +42 -0
- package/node_modules/setprototypeof/LICENSE +13 -0
- package/node_modules/setprototypeof/README.md +31 -0
- package/node_modules/setprototypeof/index.d.ts +2 -0
- package/node_modules/setprototypeof/index.js +17 -0
- package/node_modules/setprototypeof/package.json +38 -0
- package/node_modules/setprototypeof/test/index.js +24 -0
- package/node_modules/side-channel/.editorconfig +9 -0
- package/node_modules/side-channel/.eslintrc +12 -0
- package/node_modules/side-channel/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel/.nycrc +13 -0
- package/node_modules/side-channel/CHANGELOG.md +110 -0
- package/node_modules/side-channel/LICENSE +21 -0
- package/node_modules/side-channel/README.md +61 -0
- package/node_modules/side-channel/index.d.ts +14 -0
- package/node_modules/side-channel/index.js +43 -0
- package/node_modules/side-channel/package.json +85 -0
- package/node_modules/side-channel/test/index.js +104 -0
- package/node_modules/side-channel/tsconfig.json +9 -0
- package/node_modules/side-channel-list/.editorconfig +9 -0
- package/node_modules/side-channel-list/.eslintrc +11 -0
- package/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-list/.nycrc +13 -0
- package/node_modules/side-channel-list/CHANGELOG.md +15 -0
- package/node_modules/side-channel-list/LICENSE +21 -0
- package/node_modules/side-channel-list/README.md +62 -0
- package/node_modules/side-channel-list/index.d.ts +13 -0
- package/node_modules/side-channel-list/index.js +113 -0
- package/node_modules/side-channel-list/list.d.ts +14 -0
- package/node_modules/side-channel-list/package.json +77 -0
- package/node_modules/side-channel-list/test/index.js +104 -0
- package/node_modules/side-channel-list/tsconfig.json +9 -0
- package/node_modules/side-channel-map/.editorconfig +9 -0
- package/node_modules/side-channel-map/.eslintrc +11 -0
- package/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-map/.nycrc +13 -0
- package/node_modules/side-channel-map/CHANGELOG.md +22 -0
- package/node_modules/side-channel-map/LICENSE +21 -0
- package/node_modules/side-channel-map/README.md +62 -0
- package/node_modules/side-channel-map/index.d.ts +15 -0
- package/node_modules/side-channel-map/index.js +68 -0
- package/node_modules/side-channel-map/package.json +80 -0
- package/node_modules/side-channel-map/test/index.js +114 -0
- package/node_modules/side-channel-map/tsconfig.json +9 -0
- package/node_modules/side-channel-weakmap/.editorconfig +9 -0
- package/node_modules/side-channel-weakmap/.eslintrc +12 -0
- package/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-weakmap/.nycrc +13 -0
- package/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- package/node_modules/side-channel-weakmap/LICENSE +21 -0
- package/node_modules/side-channel-weakmap/README.md +62 -0
- package/node_modules/side-channel-weakmap/index.d.ts +15 -0
- package/node_modules/side-channel-weakmap/index.js +84 -0
- package/node_modules/side-channel-weakmap/package.json +87 -0
- package/node_modules/side-channel-weakmap/test/index.js +114 -0
- package/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- package/node_modules/statuses/HISTORY.md +87 -0
- package/node_modules/statuses/LICENSE +23 -0
- package/node_modules/statuses/README.md +139 -0
- package/node_modules/statuses/codes.json +65 -0
- package/node_modules/statuses/index.js +146 -0
- package/node_modules/statuses/package.json +49 -0
- package/node_modules/toidentifier/HISTORY.md +9 -0
- package/node_modules/toidentifier/LICENSE +21 -0
- package/node_modules/toidentifier/README.md +61 -0
- package/node_modules/toidentifier/index.js +32 -0
- package/node_modules/toidentifier/package.json +38 -0
- package/node_modules/tweetnacl/AUTHORS.md +27 -0
- package/node_modules/tweetnacl/CHANGELOG.md +283 -0
- package/node_modules/tweetnacl/LICENSE +24 -0
- package/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +20 -0
- package/node_modules/tweetnacl/README.md +494 -0
- package/node_modules/tweetnacl/nacl-fast.js +2391 -0
- package/node_modules/tweetnacl/nacl-fast.min.js +1 -0
- package/node_modules/tweetnacl/nacl.d.ts +98 -0
- package/node_modules/tweetnacl/nacl.js +1178 -0
- package/node_modules/tweetnacl/nacl.min.js +1 -0
- package/node_modules/tweetnacl/package.json +56 -0
- package/node_modules/type-is/HISTORY.md +259 -0
- package/node_modules/type-is/LICENSE +23 -0
- package/node_modules/type-is/README.md +170 -0
- package/node_modules/type-is/index.js +266 -0
- package/node_modules/type-is/package.json +45 -0
- package/node_modules/unpipe/HISTORY.md +4 -0
- package/node_modules/unpipe/LICENSE +22 -0
- package/node_modules/unpipe/README.md +43 -0
- package/node_modules/unpipe/index.js +69 -0
- package/node_modules/unpipe/package.json +27 -0
- package/node_modules/utils-merge/.npmignore +9 -0
- package/node_modules/utils-merge/LICENSE +20 -0
- package/node_modules/utils-merge/README.md +34 -0
- package/node_modules/utils-merge/index.js +23 -0
- package/node_modules/utils-merge/package.json +40 -0
- package/node_modules/vary/HISTORY.md +39 -0
- package/node_modules/vary/LICENSE +22 -0
- package/node_modules/vary/README.md +101 -0
- package/node_modules/vary/index.js +149 -0
- package/node_modules/vary/package.json +43 -0
- package/openclaw-skills/silicaclaw-bridge-setup/SKILL.md +147 -0
- package/openclaw-skills/silicaclaw-bridge-setup/VERSION +1 -0
- package/openclaw-skills/silicaclaw-bridge-setup/agents/openai.yaml +6 -0
- package/openclaw-skills/silicaclaw-bridge-setup/manifest.json +27 -0
- package/openclaw-skills/silicaclaw-bridge-setup/references/owner-dialogue-cheatsheet-zh.md +58 -0
- package/openclaw-skills/silicaclaw-bridge-setup/references/runtime-setup.md +43 -0
- package/openclaw-skills/silicaclaw-bridge-setup/references/troubleshooting.md +24 -0
- package/openclaw-skills/silicaclaw-broadcast/SKILL.md +132 -0
- package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
- package/openclaw-skills/silicaclaw-broadcast/agents/openai.yaml +2 -2
- package/openclaw-skills/silicaclaw-broadcast/manifest.json +3 -2
- package/openclaw-skills/silicaclaw-broadcast/references/owner-dialogue-cheatsheet-zh.md +81 -0
- package/openclaw-skills/silicaclaw-owner-push/SKILL.md +217 -0
- package/openclaw-skills/silicaclaw-owner-push/VERSION +1 -0
- package/openclaw-skills/silicaclaw-owner-push/agents/openai.yaml +6 -0
- package/openclaw-skills/silicaclaw-owner-push/manifest.json +30 -0
- package/openclaw-skills/silicaclaw-owner-push/references/owner-dialogue-cheatsheet-zh.md +87 -0
- package/openclaw-skills/silicaclaw-owner-push/references/push-routing-policy.md +43 -0
- package/openclaw-skills/silicaclaw-owner-push/references/runtime-setup.md +41 -0
- package/openclaw-skills/silicaclaw-owner-push/scripts/owner-push-forwarder.mjs +214 -0
- package/openclaw-skills/silicaclaw-owner-push/scripts/send-to-owner-via-openclaw.mjs +69 -0
- package/package.json +24 -2
- package/packages/core/dist/config/silicaclaw-defaults.json +19 -0
- package/packages/core/dist/packages/core/src/crypto.d.ts +6 -0
- package/packages/core/dist/packages/core/src/crypto.js +50 -0
- package/packages/core/dist/packages/core/src/directory.d.ts +17 -0
- package/packages/core/dist/packages/core/src/directory.js +145 -0
- package/packages/core/dist/packages/core/src/identity.d.ts +2 -0
- package/packages/core/dist/packages/core/src/identity.js +18 -0
- package/packages/core/dist/packages/core/src/index.d.ts +12 -0
- package/packages/core/dist/packages/core/src/index.js +28 -0
- package/packages/core/dist/packages/core/src/indexing.d.ts +6 -0
- package/packages/core/dist/packages/core/src/indexing.js +43 -0
- package/packages/core/dist/packages/core/src/presence.d.ts +4 -0
- package/packages/core/dist/packages/core/src/presence.js +23 -0
- package/packages/core/dist/packages/core/src/profile.d.ts +4 -0
- package/packages/core/dist/packages/core/src/profile.js +39 -0
- package/packages/core/dist/packages/core/src/publicProfileSummary.d.ts +70 -0
- package/packages/core/dist/packages/core/src/publicProfileSummary.js +103 -0
- package/packages/core/dist/packages/core/src/socialConfig.d.ts +100 -0
- package/packages/core/dist/packages/core/src/socialConfig.js +300 -0
- package/packages/core/dist/packages/core/src/socialMessage.d.ts +19 -0
- package/packages/core/dist/packages/core/src/socialMessage.js +69 -0
- package/packages/core/dist/packages/core/src/socialResolver.d.ts +46 -0
- package/packages/core/dist/packages/core/src/socialResolver.js +237 -0
- package/packages/core/dist/packages/core/src/socialTemplate.d.ts +2 -0
- package/packages/core/dist/packages/core/src/socialTemplate.js +90 -0
- package/packages/core/dist/packages/core/src/types.d.ts +59 -0
- package/packages/core/dist/packages/core/src/types.js +2 -0
- package/packages/core/src/socialConfig.ts +7 -5
- package/packages/network/dist/config/silicaclaw-defaults.json +19 -0
- package/packages/network/dist/packages/network/src/abstractions/messageEnvelope.d.ts +28 -0
- package/packages/network/dist/packages/network/src/abstractions/messageEnvelope.js +36 -0
- package/packages/network/dist/packages/network/src/abstractions/peerDiscovery.d.ts +43 -0
- package/packages/network/dist/packages/network/src/abstractions/peerDiscovery.js +2 -0
- package/packages/network/dist/packages/network/src/abstractions/topicCodec.d.ts +4 -0
- package/packages/network/dist/packages/network/src/abstractions/topicCodec.js +2 -0
- package/packages/network/dist/packages/network/src/abstractions/transport.d.ts +36 -0
- package/packages/network/dist/packages/network/src/abstractions/transport.js +2 -0
- package/packages/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.d.ts +5 -0
- package/packages/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.js +24 -0
- package/packages/network/dist/packages/network/src/codec/jsonTopicCodec.d.ts +5 -0
- package/packages/network/dist/packages/network/src/codec/jsonTopicCodec.js +12 -0
- package/packages/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.d.ts +28 -0
- package/packages/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.js +144 -0
- package/packages/network/dist/packages/network/src/index.d.ts +14 -0
- package/packages/network/dist/packages/network/src/index.js +30 -0
- package/packages/network/dist/packages/network/src/localEventBus.d.ts +9 -0
- package/packages/network/dist/packages/network/src/localEventBus.js +47 -0
- package/packages/network/dist/packages/network/src/mock.d.ts +8 -0
- package/packages/network/dist/packages/network/src/mock.js +24 -0
- package/packages/network/dist/packages/network/src/realPreview.d.ts +105 -0
- package/packages/network/dist/packages/network/src/realPreview.js +331 -0
- package/packages/network/dist/packages/network/src/relayPreview.d.ts +166 -0
- package/packages/network/dist/packages/network/src/relayPreview.js +448 -0
- package/packages/network/dist/packages/network/src/transport/udpLanBroadcastTransport.d.ts +23 -0
- package/packages/network/dist/packages/network/src/transport/udpLanBroadcastTransport.js +154 -0
- package/packages/network/dist/packages/network/src/types.d.ts +6 -0
- package/packages/network/dist/packages/network/src/types.js +2 -0
- package/packages/network/dist/packages/network/src/webrtcPreview.d.ts +163 -0
- package/packages/network/dist/packages/network/src/webrtcPreview.js +848 -0
- package/packages/network/src/realPreview.ts +3 -2
- package/packages/network/src/relayPreview.ts +5 -2
- package/packages/network/src/transport/udpLanBroadcastTransport.ts +2 -1
- package/packages/network/src/webrtcPreview.ts +2 -1
- package/packages/storage/config/silicaclaw-defaults.json +19 -0
- package/packages/storage/dist/config/silicaclaw-defaults.json +19 -0
- package/packages/storage/dist/packages/core/src/crypto.d.ts +6 -0
- package/packages/storage/dist/packages/core/src/crypto.js +50 -0
- package/packages/storage/dist/packages/core/src/directory.d.ts +17 -0
- package/packages/storage/dist/packages/core/src/directory.js +145 -0
- package/packages/storage/dist/packages/core/src/identity.d.ts +2 -0
- package/packages/storage/dist/packages/core/src/identity.js +18 -0
- package/packages/storage/dist/packages/core/src/index.d.ts +12 -0
- package/packages/storage/dist/packages/core/src/index.js +28 -0
- package/packages/storage/dist/packages/core/src/indexing.d.ts +6 -0
- package/packages/storage/dist/packages/core/src/indexing.js +43 -0
- package/packages/storage/dist/packages/core/src/presence.d.ts +4 -0
- package/packages/storage/dist/packages/core/src/presence.js +23 -0
- package/packages/storage/dist/packages/core/src/profile.d.ts +4 -0
- package/packages/storage/dist/packages/core/src/profile.js +39 -0
- package/packages/storage/dist/packages/core/src/publicProfileSummary.d.ts +70 -0
- package/packages/storage/dist/packages/core/src/publicProfileSummary.js +103 -0
- package/packages/storage/dist/packages/core/src/socialConfig.d.ts +100 -0
- package/packages/storage/dist/packages/core/src/socialConfig.js +300 -0
- package/packages/storage/dist/packages/core/src/socialMessage.d.ts +19 -0
- package/packages/storage/dist/packages/core/src/socialMessage.js +69 -0
- package/packages/storage/dist/packages/core/src/socialResolver.d.ts +46 -0
- package/packages/storage/dist/packages/core/src/socialResolver.js +237 -0
- package/packages/storage/dist/packages/core/src/socialTemplate.d.ts +2 -0
- package/packages/storage/dist/packages/core/src/socialTemplate.js +90 -0
- package/packages/storage/dist/packages/core/src/types.d.ts +59 -0
- package/packages/storage/dist/packages/core/src/types.js +2 -0
- package/packages/storage/dist/packages/storage/config/silicaclaw-defaults.json +19 -0
- package/packages/storage/dist/packages/storage/src/index.d.ts +3 -0
- package/packages/storage/dist/packages/storage/src/index.js +19 -0
- package/packages/storage/dist/packages/storage/src/jsonRepo.d.ts +7 -0
- package/packages/storage/dist/packages/storage/src/jsonRepo.js +29 -0
- package/packages/storage/dist/packages/storage/src/repos.d.ts +61 -0
- package/packages/storage/dist/packages/storage/src/repos.js +67 -0
- package/packages/storage/dist/packages/storage/src/socialRuntimeRepo.d.ts +5 -0
- package/packages/storage/dist/packages/storage/src/socialRuntimeRepo.js +57 -0
- package/packages/storage/dist/socialRuntimeRepo.js +8 -4
- package/packages/storage/src/socialRuntimeRepo.ts +5 -4
- package/packages/storage/tsconfig.json +1 -6
- package/scripts/functional-check.mjs +35 -6
- package/scripts/install-openclaw-skill.mjs +9 -2
- package/scripts/openclaw-bridge-adapter.mjs +3 -1
- package/scripts/openclaw-bridge-client.mjs +3 -1
- package/scripts/openclaw-runtime-demo.mjs +3 -1
- package/scripts/quickstart.sh +14 -10
- package/scripts/release-pack.mjs +147 -0
- package/scripts/silicaclaw-cli.mjs +47 -13
- package/scripts/silicaclaw-gateway.mjs +369 -94
- package/scripts/validate-openclaw-skill.mjs +79 -21
|
@@ -2,10 +2,11 @@ import express, { NextFunction, Request, Response } from "express";
|
|
|
2
2
|
import cors from "cors";
|
|
3
3
|
import { execFile, spawnSync } from "child_process";
|
|
4
4
|
import { resolve } from "path";
|
|
5
|
-
import { accessSync, constants, copyFileSync, existsSync, mkdirSync, readFileSync } from "fs";
|
|
5
|
+
import { accessSync, constants, copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync } from "fs";
|
|
6
6
|
import { createHash } from "crypto";
|
|
7
|
-
import { hostname } from "os";
|
|
7
|
+
import { homedir, hostname } from "os";
|
|
8
8
|
import { promisify } from "util";
|
|
9
|
+
import defaults from "../../../config/silicaclaw-defaults.json";
|
|
9
10
|
import {
|
|
10
11
|
AgentIdentity,
|
|
11
12
|
DirectoryState,
|
|
@@ -27,6 +28,7 @@ import {
|
|
|
27
28
|
ingestPresenceRecord,
|
|
28
29
|
ingestProfileRecord,
|
|
29
30
|
isAgentOnline,
|
|
31
|
+
rebuildIndexForProfile,
|
|
30
32
|
loadSocialConfig,
|
|
31
33
|
getSocialConfigSearchPaths,
|
|
32
34
|
resolveIdentityWithSocial,
|
|
@@ -78,14 +80,23 @@ const NETWORK_MAX_FUTURE_DRIFT_MS = Number(process.env.NETWORK_MAX_FUTURE_DRIFT_
|
|
|
78
80
|
const NETWORK_MAX_PAST_DRIFT_MS = Number(process.env.NETWORK_MAX_PAST_DRIFT_MS || 120_000);
|
|
79
81
|
const NETWORK_HEARTBEAT_INTERVAL_MS = Number(process.env.NETWORK_HEARTBEAT_INTERVAL_MS || 12_000);
|
|
80
82
|
const NETWORK_PEER_STALE_AFTER_MS = Number(process.env.NETWORK_PEER_STALE_AFTER_MS || 45_000);
|
|
83
|
+
const OPENCLAW_GATEWAY_HOST = "127.0.0.1";
|
|
84
|
+
const DEFAULT_NETWORK_MODE = defaults.network.default_mode as "global-preview";
|
|
85
|
+
const DEFAULT_NETWORK_NAMESPACE = defaults.network.default_namespace;
|
|
86
|
+
const DEFAULT_NETWORK_PORT = defaults.ports.network_default;
|
|
87
|
+
const DEFAULT_GLOBAL_SIGNALING_URL = defaults.network.global_preview.relay_url;
|
|
88
|
+
const DEFAULT_GLOBAL_ROOM = defaults.network.global_preview.room;
|
|
89
|
+
const DEFAULT_BRIDGE_API_BASE = defaults.bridge.api_base;
|
|
90
|
+
const OPENCLAW_GATEWAY_PORT = defaults.ports.openclaw_gateway;
|
|
91
|
+
const OPENCLAW_GATEWAY_URL = `http://${OPENCLAW_GATEWAY_HOST}:${OPENCLAW_GATEWAY_PORT}/`;
|
|
81
92
|
const NETWORK_PEER_REMOVE_AFTER_MS = Number(process.env.NETWORK_PEER_REMOVE_AFTER_MS || 180_000);
|
|
82
93
|
const NETWORK_UDP_BIND_ADDRESS = process.env.NETWORK_UDP_BIND_ADDRESS || "0.0.0.0";
|
|
83
94
|
const NETWORK_UDP_BROADCAST_ADDRESS = process.env.NETWORK_UDP_BROADCAST_ADDRESS || "255.255.255.255";
|
|
84
95
|
const NETWORK_PEER_ID = process.env.NETWORK_PEER_ID;
|
|
85
96
|
const NETWORK_MODE = process.env.NETWORK_MODE || "";
|
|
86
|
-
const WEBRTC_SIGNALING_URL = process.env.WEBRTC_SIGNALING_URL ||
|
|
97
|
+
const WEBRTC_SIGNALING_URL = process.env.WEBRTC_SIGNALING_URL || DEFAULT_GLOBAL_SIGNALING_URL;
|
|
87
98
|
const WEBRTC_SIGNALING_URLS = process.env.WEBRTC_SIGNALING_URLS || "";
|
|
88
|
-
const WEBRTC_ROOM = process.env.WEBRTC_ROOM ||
|
|
99
|
+
const WEBRTC_ROOM = process.env.WEBRTC_ROOM || DEFAULT_GLOBAL_ROOM;
|
|
89
100
|
const WEBRTC_SEED_PEERS = process.env.WEBRTC_SEED_PEERS || "";
|
|
90
101
|
const WEBRTC_BOOTSTRAP_HINTS = process.env.WEBRTC_BOOTSTRAP_HINTS || "";
|
|
91
102
|
const PROFILE_VERSION = "v0.9";
|
|
@@ -102,6 +113,8 @@ const SOCIAL_MESSAGE_DUPLICATE_WINDOW_MS = Number(process.env.SOCIAL_MESSAGE_DUP
|
|
|
102
113
|
const SOCIAL_MESSAGE_MAX_FUTURE_MS = Number(process.env.SOCIAL_MESSAGE_MAX_FUTURE_MS || 30_000);
|
|
103
114
|
const SOCIAL_MESSAGE_MAX_AGE_MS = Number(process.env.SOCIAL_MESSAGE_MAX_AGE_MS || 15 * 60_000);
|
|
104
115
|
const SOCIAL_MESSAGE_OBSERVATION_HISTORY_LIMIT = Number(process.env.SOCIAL_MESSAGE_OBSERVATION_HISTORY_LIMIT || 500);
|
|
116
|
+
const SOCIAL_MESSAGE_REPLAY_WINDOW_MS = Number(process.env.SOCIAL_MESSAGE_REPLAY_WINDOW_MS || 10 * 60_000);
|
|
117
|
+
const SOCIAL_MESSAGE_REPLAY_MAX_PER_BROADCAST = Number(process.env.SOCIAL_MESSAGE_REPLAY_MAX_PER_BROADCAST || 3);
|
|
105
118
|
const SOCIAL_MESSAGE_BLOCKED_AGENT_IDS = new Set(
|
|
106
119
|
dedupeStrings(parseListEnv(process.env.SOCIAL_MESSAGE_BLOCKED_AGENT_IDS || ""))
|
|
107
120
|
);
|
|
@@ -129,6 +142,40 @@ function readWorkspaceVersion(workspaceRoot: string): string {
|
|
|
129
142
|
return "unknown";
|
|
130
143
|
}
|
|
131
144
|
|
|
145
|
+
function normalizeVersionText(value: unknown): string {
|
|
146
|
+
const text = String(value || "").trim();
|
|
147
|
+
return text.startsWith("v") ? text.slice(1) : text;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function tokenizeVersion(value: unknown): Array<number | string> {
|
|
151
|
+
return normalizeVersionText(value)
|
|
152
|
+
.split(/[^0-9A-Za-z]+/)
|
|
153
|
+
.map((token) => token.trim())
|
|
154
|
+
.filter(Boolean)
|
|
155
|
+
.map((token) => (/^\d+$/.test(token) ? Number(token) : token.toLowerCase()));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function compareVersionTokens(left: unknown, right: unknown): number {
|
|
159
|
+
const leftTokens = tokenizeVersion(left);
|
|
160
|
+
const rightTokens = tokenizeVersion(right);
|
|
161
|
+
const maxLength = Math.max(leftTokens.length, rightTokens.length);
|
|
162
|
+
for (let index = 0; index < maxLength; index += 1) {
|
|
163
|
+
const leftToken = leftTokens[index];
|
|
164
|
+
const rightToken = rightTokens[index];
|
|
165
|
+
if (leftToken === undefined && rightToken === undefined) return 0;
|
|
166
|
+
if (leftToken === undefined) return -1;
|
|
167
|
+
if (rightToken === undefined) return 1;
|
|
168
|
+
if (typeof leftToken === "number" && typeof rightToken === "number") {
|
|
169
|
+
if (leftToken !== rightToken) return leftToken > rightToken ? 1 : -1;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
const leftText = String(leftToken);
|
|
173
|
+
const rightText = String(rightToken);
|
|
174
|
+
if (leftText !== rightText) return leftText.localeCompare(rightText);
|
|
175
|
+
}
|
|
176
|
+
return 0;
|
|
177
|
+
}
|
|
178
|
+
|
|
132
179
|
function resolveWorkspaceRoot(cwd = process.cwd()): string {
|
|
133
180
|
if (existsSync(resolve(cwd, "apps", "local-console", "package.json"))) {
|
|
134
181
|
return cwd;
|
|
@@ -140,7 +187,28 @@ function resolveWorkspaceRoot(cwd = process.cwd()): string {
|
|
|
140
187
|
return cwd;
|
|
141
188
|
}
|
|
142
189
|
|
|
190
|
+
function resolveProjectRoot(appRoot: string, cwd = process.cwd()): string {
|
|
191
|
+
const envRoot = String(process.env.SILICACLAW_WORKSPACE_DIR || "").trim();
|
|
192
|
+
if (envRoot) {
|
|
193
|
+
return resolve(envRoot);
|
|
194
|
+
}
|
|
195
|
+
if (
|
|
196
|
+
existsSync(resolve(appRoot, "apps", "local-console", "package.json")) &&
|
|
197
|
+
existsSync(resolve(appRoot, "package.json"))
|
|
198
|
+
) {
|
|
199
|
+
return appRoot;
|
|
200
|
+
}
|
|
201
|
+
if (!existsSync(resolve(cwd, "apps", "local-console", "package.json"))) {
|
|
202
|
+
return resolve(cwd);
|
|
203
|
+
}
|
|
204
|
+
return appRoot;
|
|
205
|
+
}
|
|
206
|
+
|
|
143
207
|
function resolveStorageRoot(workspaceRoot: string, cwd = process.cwd()): string {
|
|
208
|
+
const home = process.env.HOME || homedir();
|
|
209
|
+
if (home) {
|
|
210
|
+
return resolve(home, ".silicaclaw", "local-console");
|
|
211
|
+
}
|
|
144
212
|
const appRoot = resolve(workspaceRoot, "apps", "local-console");
|
|
145
213
|
if (existsSync(resolve(appRoot, "package.json"))) {
|
|
146
214
|
return appRoot;
|
|
@@ -148,6 +216,13 @@ function resolveStorageRoot(workspaceRoot: string, cwd = process.cwd()): string
|
|
|
148
216
|
return cwd;
|
|
149
217
|
}
|
|
150
218
|
|
|
219
|
+
function defaultOpenClawSourceDir(rootDir: string): string {
|
|
220
|
+
if (existsSync(resolve(rootDir, "openclaw.mjs")) || existsSync(resolve(rootDir, "package.json"))) {
|
|
221
|
+
return rootDir;
|
|
222
|
+
}
|
|
223
|
+
return resolve(rootDir, "..", "openclaw");
|
|
224
|
+
}
|
|
225
|
+
|
|
151
226
|
function resolveExecutableInPath(binName: string): string | null {
|
|
152
227
|
const pathValue = String(process.env.PATH || "").trim();
|
|
153
228
|
if (!pathValue) return null;
|
|
@@ -169,6 +244,91 @@ function existingPathOrNull(filePath: string): string | null {
|
|
|
169
244
|
return existsSync(filePath) ? filePath : null;
|
|
170
245
|
}
|
|
171
246
|
|
|
247
|
+
function listDirectories(root: string) {
|
|
248
|
+
if (!root || !existsSync(root)) return [];
|
|
249
|
+
try {
|
|
250
|
+
return readdirSync(root)
|
|
251
|
+
.map((name) => {
|
|
252
|
+
const fullPath = resolve(root, name);
|
|
253
|
+
try {
|
|
254
|
+
return statSync(fullPath).isDirectory() ? { name, path: fullPath } : null;
|
|
255
|
+
} catch {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
})
|
|
259
|
+
.filter((item): item is { name: string; path: string } => Boolean(item));
|
|
260
|
+
} catch {
|
|
261
|
+
return [];
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
function readJsonFileSafe(filePath: string) {
|
|
266
|
+
try {
|
|
267
|
+
return JSON.parse(readFileSync(filePath, "utf8")) as Record<string, unknown>;
|
|
268
|
+
} catch {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function summarizeSkillReadme(filePath: string) {
|
|
274
|
+
if (!filePath || !existsSync(filePath)) return "";
|
|
275
|
+
try {
|
|
276
|
+
const raw = readFileSync(filePath, "utf8");
|
|
277
|
+
const lines = raw
|
|
278
|
+
.split(/\r?\n/)
|
|
279
|
+
.map((line) => line.trim())
|
|
280
|
+
.filter(Boolean)
|
|
281
|
+
.filter((line) => !line.startsWith("#"));
|
|
282
|
+
return String(lines[0] || "").slice(0, 220);
|
|
283
|
+
} catch {
|
|
284
|
+
return "";
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
function readDialogueCheatsheetPreview(filePath: string, limit = 6) {
|
|
289
|
+
if (!filePath || !existsSync(filePath)) return [];
|
|
290
|
+
try {
|
|
291
|
+
return readFileSync(filePath, "utf8")
|
|
292
|
+
.split(/\r?\n/)
|
|
293
|
+
.map((line) => line.trim())
|
|
294
|
+
.filter((line) => line.startsWith("- "))
|
|
295
|
+
.map((line) => line.slice(2).trim())
|
|
296
|
+
.filter(Boolean)
|
|
297
|
+
.slice(0, limit);
|
|
298
|
+
} catch {
|
|
299
|
+
return [];
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
function readDialogueCheatsheetSections(filePath: string, maxSections = 3, maxItemsPerSection = 5) {
|
|
304
|
+
if (!filePath || !existsSync(filePath)) return [];
|
|
305
|
+
try {
|
|
306
|
+
const lines = readFileSync(filePath, "utf8").split(/\r?\n/);
|
|
307
|
+
const sections: Array<{ title: string; items: string[] }> = [];
|
|
308
|
+
let current: { title: string; items: string[] } | null = null;
|
|
309
|
+
for (const rawLine of lines) {
|
|
310
|
+
const line = rawLine.trim();
|
|
311
|
+
if (line.startsWith("## ")) {
|
|
312
|
+
if (current && current.items.length) sections.push(current);
|
|
313
|
+
current = { title: line.slice(3).trim(), items: [] };
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
if (line.startsWith("- ")) {
|
|
317
|
+
if (!current) {
|
|
318
|
+
current = { title: "Examples", items: [] };
|
|
319
|
+
}
|
|
320
|
+
if (current.items.length < maxItemsPerSection) {
|
|
321
|
+
current.items.push(line.slice(2).trim());
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (current && current.items.length) sections.push(current);
|
|
326
|
+
return sections.slice(0, maxSections);
|
|
327
|
+
} catch {
|
|
328
|
+
return [];
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
172
332
|
function detectOpenClawInstallation(workspaceRoot: string) {
|
|
173
333
|
const workspaceDir = resolve(workspaceRoot, ".openclaw");
|
|
174
334
|
const homeDir = resolve(process.env.HOME || "", ".openclaw");
|
|
@@ -219,7 +379,52 @@ function detectOpenClawInstallation(workspaceRoot: string) {
|
|
|
219
379
|
} as const;
|
|
220
380
|
}
|
|
221
381
|
|
|
222
|
-
function
|
|
382
|
+
function readOpenClawConfiguredGateway(workspaceRoot: string) {
|
|
383
|
+
const configuredSourceDir = String(process.env.OPENCLAW_SOURCE_DIR || "").trim();
|
|
384
|
+
const defaultSourceDir = defaultOpenClawSourceDir(workspaceRoot);
|
|
385
|
+
const sourceDir = configuredSourceDir || defaultSourceDir;
|
|
386
|
+
const homeDir = resolve(process.env.HOME || "", ".openclaw");
|
|
387
|
+
const explicitConfigPath = String(process.env.OPENCLAW_CONFIG_PATH || "").trim();
|
|
388
|
+
const explicitStateDir = String(process.env.OPENCLAW_STATE_DIR || "").trim();
|
|
389
|
+
const candidates = dedupeStrings([
|
|
390
|
+
explicitConfigPath,
|
|
391
|
+
explicitStateDir ? resolve(explicitStateDir, "openclaw.json") : "",
|
|
392
|
+
resolve(homeDir, "openclaw.json"),
|
|
393
|
+
resolve(homeDir, "clawdbot.json"),
|
|
394
|
+
resolve(sourceDir, ".openclaw", "openclaw.json"),
|
|
395
|
+
]);
|
|
396
|
+
|
|
397
|
+
for (const candidate of candidates) {
|
|
398
|
+
if (!candidate || !existsSync(candidate)) continue;
|
|
399
|
+
try {
|
|
400
|
+
const raw = readFileSync(candidate, "utf8");
|
|
401
|
+
const portMatch = raw.match(/["']?port["']?\s*:\s*(\d{2,5})/);
|
|
402
|
+
const bindMatch = raw.match(/["']?bind["']?\s*:\s*["']([^"']+)["']/);
|
|
403
|
+
const port = portMatch ? Number(portMatch[1]) : OPENCLAW_GATEWAY_PORT;
|
|
404
|
+
if (!Number.isFinite(port) || port <= 0) continue;
|
|
405
|
+
return {
|
|
406
|
+
config_path: candidate,
|
|
407
|
+
gateway_port: port,
|
|
408
|
+
gateway_host: OPENCLAW_GATEWAY_HOST,
|
|
409
|
+
gateway_bind: bindMatch?.[1] || null,
|
|
410
|
+
gateway_url: `http://${OPENCLAW_GATEWAY_HOST}:${port}/`,
|
|
411
|
+
} as const;
|
|
412
|
+
} catch {
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return {
|
|
418
|
+
config_path: null,
|
|
419
|
+
gateway_port: OPENCLAW_GATEWAY_PORT,
|
|
420
|
+
gateway_host: OPENCLAW_GATEWAY_HOST,
|
|
421
|
+
gateway_bind: null,
|
|
422
|
+
gateway_url: OPENCLAW_GATEWAY_URL,
|
|
423
|
+
} as const;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
function detectOpenClawRuntime(workspaceRoot: string) {
|
|
427
|
+
const configuredGateway = readOpenClawConfiguredGateway(workspaceRoot);
|
|
223
428
|
const result = spawnSync("ps", ["-Ao", "pid=,ppid=,command="], {
|
|
224
429
|
encoding: "utf8",
|
|
225
430
|
});
|
|
@@ -252,11 +457,84 @@ function detectOpenClawRuntime() {
|
|
|
252
457
|
})
|
|
253
458
|
.filter((item): item is { pid: number; ppid: number; command: string } => Boolean(item));
|
|
254
459
|
|
|
460
|
+
const openclawPids = new Set(processes.map((item) => item.pid));
|
|
461
|
+
const gatewayProbe = spawnSync("lsof", ["-nP", "-iTCP", "-sTCP:LISTEN"], {
|
|
462
|
+
encoding: "utf8",
|
|
463
|
+
});
|
|
464
|
+
const gatewayLines = String(gatewayProbe.stdout || "")
|
|
465
|
+
.split("\n")
|
|
466
|
+
.map((line) => line.trim())
|
|
467
|
+
.filter(Boolean);
|
|
468
|
+
const gatewayListeners = gatewayLines
|
|
469
|
+
.slice(1)
|
|
470
|
+
.map((line) => {
|
|
471
|
+
const parts = line.split(/\s+/);
|
|
472
|
+
const pid = Number(parts[1] || 0);
|
|
473
|
+
const command = parts[0] || "";
|
|
474
|
+
const lowerCommand = command.toLowerCase();
|
|
475
|
+
const endpoint = parts[8] || parts[parts.length - 1] || "";
|
|
476
|
+
const portMatch = endpoint.match(/:(\d+)(?:\s*\(|$)/);
|
|
477
|
+
if (!pid || !command || !portMatch) return null;
|
|
478
|
+
const isOpenClawListener =
|
|
479
|
+
openclawPids.has(pid) ||
|
|
480
|
+
lowerCommand.includes("openclaw");
|
|
481
|
+
if (!isOpenClawListener) return null;
|
|
482
|
+
const port = Number(portMatch[1]);
|
|
483
|
+
if (!Number.isFinite(port) || port <= 0) return null;
|
|
484
|
+
return {
|
|
485
|
+
pid,
|
|
486
|
+
ppid: 0,
|
|
487
|
+
port,
|
|
488
|
+
command: `${command} listening on ${OPENCLAW_GATEWAY_HOST}:${port}`,
|
|
489
|
+
};
|
|
490
|
+
})
|
|
491
|
+
.filter((item): item is { pid: number; ppid: number; port: number; command: string } => Boolean(item));
|
|
492
|
+
const preferredListener =
|
|
493
|
+
gatewayListeners.find((item) => item.port === configuredGateway.gateway_port) ||
|
|
494
|
+
gatewayListeners[0] ||
|
|
495
|
+
null;
|
|
496
|
+
|
|
497
|
+
const combinedProcesses = new Map<number, { pid: number; ppid: number; command: string }>();
|
|
498
|
+
for (const process of [...processes, ...gatewayListeners]) {
|
|
499
|
+
if (!combinedProcesses.has(process.pid)) {
|
|
500
|
+
combinedProcesses.set(process.pid, process);
|
|
501
|
+
continue;
|
|
502
|
+
}
|
|
503
|
+
const current = combinedProcesses.get(process.pid);
|
|
504
|
+
if (current && current.command.length < process.command.length) {
|
|
505
|
+
combinedProcesses.set(process.pid, process);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
const allProcesses = Array.from(combinedProcesses.values());
|
|
509
|
+
const gatewayReachable = gatewayListeners.length > 0;
|
|
510
|
+
const detectionNotes = [];
|
|
511
|
+
if (result.status !== 0) detectionNotes.push(String(result.stderr || "ps failed").trim());
|
|
512
|
+
if (gatewayProbe.status !== 0 && gatewayLines.length === 0) {
|
|
513
|
+
detectionNotes.push(String(gatewayProbe.stderr || "lsof failed").trim());
|
|
514
|
+
}
|
|
515
|
+
const gatewayPort = preferredListener?.port || configuredGateway.gateway_port;
|
|
516
|
+
const gatewayUrl = `http://${OPENCLAW_GATEWAY_HOST}:${gatewayPort}/`;
|
|
517
|
+
|
|
255
518
|
return {
|
|
256
|
-
running:
|
|
257
|
-
process_count:
|
|
258
|
-
processes:
|
|
259
|
-
detection_error:
|
|
519
|
+
running: allProcesses.length > 0 || gatewayReachable,
|
|
520
|
+
process_count: allProcesses.length,
|
|
521
|
+
processes: allProcesses.slice(0, 10),
|
|
522
|
+
detection_error: detectionNotes.filter(Boolean).join(" | ") || null,
|
|
523
|
+
gateway_url: gatewayUrl,
|
|
524
|
+
gateway_port: gatewayPort,
|
|
525
|
+
gateway_reachable: gatewayReachable,
|
|
526
|
+
configured_gateway_url: configuredGateway.gateway_url,
|
|
527
|
+
configured_gateway_port: configuredGateway.gateway_port,
|
|
528
|
+
configured_gateway_bind: configuredGateway.gateway_bind,
|
|
529
|
+
configured_gateway_config_path: configuredGateway.config_path,
|
|
530
|
+
detection_mode:
|
|
531
|
+
processes.length > 0 && gatewayReachable
|
|
532
|
+
? "process+gateway"
|
|
533
|
+
: gatewayReachable
|
|
534
|
+
? "gateway"
|
|
535
|
+
: processes.length > 0
|
|
536
|
+
? "process"
|
|
537
|
+
: "not_running",
|
|
260
538
|
} as const;
|
|
261
539
|
}
|
|
262
540
|
|
|
@@ -291,7 +569,7 @@ function detectOwnerDeliveryStatus(params: {
|
|
|
291
569
|
const ownerAccount = String(process.env.OPENCLAW_OWNER_ACCOUNT || "").trim();
|
|
292
570
|
const explicitOpenClawBin = String(process.env.OPENCLAW_BIN || "").trim();
|
|
293
571
|
const configuredSourceDir = String(process.env.OPENCLAW_SOURCE_DIR || "").trim();
|
|
294
|
-
const defaultSourceDir =
|
|
572
|
+
const defaultSourceDir = defaultOpenClawSourceDir(params.workspaceRoot);
|
|
295
573
|
const openclawSourceDir = configuredSourceDir || defaultSourceDir;
|
|
296
574
|
const openclawSourceEntry = existingPathOrNull(resolve(openclawSourceDir, "openclaw.mjs"));
|
|
297
575
|
const openclawCommandResolvable = Boolean(explicitOpenClawBin || resolveExecutableInPath("openclaw") || openclawSourceEntry);
|
|
@@ -350,10 +628,15 @@ function hasMeaningfulJson(filePath: string): boolean {
|
|
|
350
628
|
}
|
|
351
629
|
}
|
|
352
630
|
|
|
353
|
-
function migrateLegacyDataIfNeeded(
|
|
354
|
-
const legacyDataDir = resolve(workspaceRoot, "data");
|
|
631
|
+
function migrateLegacyDataIfNeeded(appRoot: string, projectRoot: string, storageRoot: string): void {
|
|
355
632
|
const targetDataDir = resolve(storageRoot, "data");
|
|
356
|
-
|
|
633
|
+
const legacyDataDirs = [
|
|
634
|
+
resolve(appRoot, "data"),
|
|
635
|
+
resolve(appRoot, "apps", "local-console", "data"),
|
|
636
|
+
resolve(projectRoot, "data"),
|
|
637
|
+
resolve(projectRoot, "apps", "local-console", "data"),
|
|
638
|
+
resolve(process.cwd(), "data"),
|
|
639
|
+
].filter((dir, index, list) => list.indexOf(dir) === index && dir !== targetDataDir);
|
|
357
640
|
const files = [
|
|
358
641
|
"identity.json",
|
|
359
642
|
"profile.json",
|
|
@@ -363,13 +646,38 @@ function migrateLegacyDataIfNeeded(workspaceRoot: string, storageRoot: string):
|
|
|
363
646
|
"social-message-observations.json",
|
|
364
647
|
];
|
|
365
648
|
for (const file of files) {
|
|
366
|
-
const src = resolve(legacyDataDir, file);
|
|
367
649
|
const dst = resolve(targetDataDir, file);
|
|
368
|
-
if (!existsSync(src)) continue;
|
|
369
650
|
if (hasMeaningfulJson(dst)) continue;
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
651
|
+
for (const legacyDataDir of legacyDataDirs) {
|
|
652
|
+
const src = resolve(legacyDataDir, file);
|
|
653
|
+
if (!existsSync(src)) continue;
|
|
654
|
+
if (!hasMeaningfulJson(src)) continue;
|
|
655
|
+
mkdirSync(targetDataDir, { recursive: true });
|
|
656
|
+
copyFileSync(src, dst);
|
|
657
|
+
break;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
const targetDotDir = resolve(storageRoot, ".silicaclaw");
|
|
662
|
+
const legacyDotDirs = [
|
|
663
|
+
resolve(appRoot, ".silicaclaw"),
|
|
664
|
+
resolve(appRoot, "apps", "local-console", ".silicaclaw"),
|
|
665
|
+
resolve(projectRoot, ".silicaclaw"),
|
|
666
|
+
resolve(projectRoot, "apps", "local-console", ".silicaclaw"),
|
|
667
|
+
resolve(process.cwd(), ".silicaclaw"),
|
|
668
|
+
].filter((dir, index, list) => list.indexOf(dir) === index && dir !== targetDotDir);
|
|
669
|
+
const dotFiles = ["social.runtime.json", "social.message-governance.json"];
|
|
670
|
+
for (const file of dotFiles) {
|
|
671
|
+
const dst = resolve(targetDotDir, file);
|
|
672
|
+
if (hasMeaningfulJson(dst)) continue;
|
|
673
|
+
for (const legacyDotDir of legacyDotDirs) {
|
|
674
|
+
const src = resolve(legacyDotDir, file);
|
|
675
|
+
if (!existsSync(src)) continue;
|
|
676
|
+
if (!hasMeaningfulJson(src)) continue;
|
|
677
|
+
mkdirSync(targetDotDir, { recursive: true });
|
|
678
|
+
copyFileSync(src, dst);
|
|
679
|
+
break;
|
|
680
|
+
}
|
|
373
681
|
}
|
|
374
682
|
}
|
|
375
683
|
|
|
@@ -462,6 +770,14 @@ type OpenClawBridgeStatus = {
|
|
|
462
770
|
command: string;
|
|
463
771
|
}>;
|
|
464
772
|
detection_error: string | null;
|
|
773
|
+
gateway_url: string;
|
|
774
|
+
gateway_port: number;
|
|
775
|
+
gateway_reachable: boolean;
|
|
776
|
+
configured_gateway_url: string;
|
|
777
|
+
configured_gateway_port: number;
|
|
778
|
+
configured_gateway_bind: string | null;
|
|
779
|
+
configured_gateway_config_path: string | null;
|
|
780
|
+
detection_mode: "process" | "gateway" | "process+gateway" | "not_running";
|
|
465
781
|
};
|
|
466
782
|
skill_learning: {
|
|
467
783
|
available: boolean;
|
|
@@ -507,6 +823,10 @@ type OpenClawBridgeConfigView = {
|
|
|
507
823
|
bridge_api_base: string;
|
|
508
824
|
openclaw_detected: boolean;
|
|
509
825
|
openclaw_running: boolean;
|
|
826
|
+
openclaw_gateway_host: string;
|
|
827
|
+
openclaw_gateway_port: number;
|
|
828
|
+
openclaw_gateway_url: string;
|
|
829
|
+
openclaw_gateway_config_path: string | null;
|
|
510
830
|
openclaw_workspace_skill_dir: string;
|
|
511
831
|
openclaw_legacy_skill_dir: string;
|
|
512
832
|
silicaclaw_env_template_path: string;
|
|
@@ -525,6 +845,7 @@ type OpenClawBridgeConfigView = {
|
|
|
525
845
|
|
|
526
846
|
export class LocalNodeService {
|
|
527
847
|
private workspaceRoot: string;
|
|
848
|
+
private projectRoot: string;
|
|
528
849
|
private storageRoot: string;
|
|
529
850
|
private identityRepo: IdentityRepo;
|
|
530
851
|
private profileRepo: ProfileRepo;
|
|
@@ -567,7 +888,7 @@ export class LocalNodeService {
|
|
|
567
888
|
|
|
568
889
|
private network: NetworkAdapter;
|
|
569
890
|
private adapterMode: "mock" | "local-event-bus" | "real-preview" | "webrtc-preview" | "relay-preview";
|
|
570
|
-
private networkMode: "local" | "lan" | "global-preview" =
|
|
891
|
+
private networkMode: "local" | "lan" | "global-preview" = DEFAULT_NETWORK_MODE;
|
|
571
892
|
private networkNamespace: string;
|
|
572
893
|
private networkPort: number | null;
|
|
573
894
|
private socialConfig: SocialConfig;
|
|
@@ -581,17 +902,18 @@ export class LocalNodeService {
|
|
|
581
902
|
"silicaclaw-existing";
|
|
582
903
|
private resolvedOpenClawIdentityPath: string | null = null;
|
|
583
904
|
private webrtcSignalingUrls: string[] = [];
|
|
584
|
-
private webrtcRoom =
|
|
905
|
+
private webrtcRoom = DEFAULT_GLOBAL_ROOM;
|
|
585
906
|
private webrtcSeedPeers: string[] = [];
|
|
586
907
|
private webrtcBootstrapHints: string[] = [];
|
|
587
908
|
private webrtcBootstrapSources: string[] = [];
|
|
588
909
|
private appVersion = "unknown";
|
|
589
910
|
|
|
590
|
-
constructor(options?: { workspaceRoot?: string; storageRoot?: string }) {
|
|
911
|
+
constructor(options?: { workspaceRoot?: string; projectRoot?: string; storageRoot?: string }) {
|
|
591
912
|
this.workspaceRoot = options?.workspaceRoot || resolveWorkspaceRoot();
|
|
913
|
+
this.projectRoot = options?.projectRoot || resolveProjectRoot(this.workspaceRoot);
|
|
592
914
|
this.storageRoot = options?.storageRoot || resolveStorageRoot(this.workspaceRoot);
|
|
593
915
|
this.appVersion = readWorkspaceVersion(this.workspaceRoot);
|
|
594
|
-
migrateLegacyDataIfNeeded(this.workspaceRoot, this.storageRoot);
|
|
916
|
+
migrateLegacyDataIfNeeded(this.workspaceRoot, this.projectRoot, this.storageRoot);
|
|
595
917
|
|
|
596
918
|
this.identityRepo = new IdentityRepo(this.storageRoot);
|
|
597
919
|
this.profileRepo = new ProfileRepo(this.storageRoot);
|
|
@@ -603,16 +925,16 @@ export class LocalNodeService {
|
|
|
603
925
|
this.socialRuntimeRepo = new SocialRuntimeRepo(this.storageRoot);
|
|
604
926
|
this.messageGovernance = this.defaultMessageGovernance();
|
|
605
927
|
|
|
606
|
-
let loadedSocial = loadSocialConfig(this.
|
|
928
|
+
let loadedSocial = loadSocialConfig(this.projectRoot);
|
|
607
929
|
if (!loadedSocial.meta.found) {
|
|
608
|
-
ensureDefaultSocialMd(this.
|
|
930
|
+
ensureDefaultSocialMd(this.projectRoot, {
|
|
609
931
|
display_name: this.getDefaultDisplayName(),
|
|
610
932
|
bio: "Local AI agent connected to SilicaClaw",
|
|
611
933
|
tags: ["openclaw", "local-first"],
|
|
612
|
-
mode:
|
|
934
|
+
mode: DEFAULT_NETWORK_MODE,
|
|
613
935
|
public_enabled: false,
|
|
614
936
|
});
|
|
615
|
-
loadedSocial = loadSocialConfig(this.
|
|
937
|
+
loadedSocial = loadSocialConfig(this.projectRoot);
|
|
616
938
|
this.initState.social_auto_created = true;
|
|
617
939
|
}
|
|
618
940
|
this.socialConfig = loadedSocial.config;
|
|
@@ -621,8 +943,8 @@ export class LocalNodeService {
|
|
|
621
943
|
this.socialParseError = loadedSocial.meta.parse_error;
|
|
622
944
|
this.socialRawFrontmatter = loadedSocial.raw_frontmatter;
|
|
623
945
|
|
|
624
|
-
this.networkNamespace = this.socialConfig.network.namespace || process.env.NETWORK_NAMESPACE ||
|
|
625
|
-
this.networkPort = Number(this.socialConfig.network.port || process.env.NETWORK_PORT ||
|
|
946
|
+
this.networkNamespace = this.socialConfig.network.namespace || process.env.NETWORK_NAMESPACE || DEFAULT_NETWORK_NAMESPACE;
|
|
947
|
+
this.networkPort = Number(this.socialConfig.network.port || process.env.NETWORK_PORT || DEFAULT_NETWORK_PORT);
|
|
626
948
|
this.applyResolvedNetworkConfig();
|
|
627
949
|
const resolved = this.buildNetworkAdapter();
|
|
628
950
|
this.network = resolved.adapter;
|
|
@@ -674,12 +996,8 @@ export class LocalNodeService {
|
|
|
674
996
|
}
|
|
675
997
|
|
|
676
998
|
getOverview() {
|
|
677
|
-
this.
|
|
678
|
-
|
|
679
|
-
const profiles = Object.values(this.directory.profiles);
|
|
680
|
-
const onlineCount = profiles.filter((profile) =>
|
|
681
|
-
isAgentOnline(this.directory.presence[profile.agent_id], Date.now(), PRESENCE_TTL_MS)
|
|
682
|
-
).length;
|
|
999
|
+
const discovered = this.search("");
|
|
1000
|
+
const onlineCount = discovered.filter((profile) => profile.online).length;
|
|
683
1001
|
|
|
684
1002
|
return {
|
|
685
1003
|
app_version: this.appVersion,
|
|
@@ -690,9 +1008,9 @@ export class LocalNodeService {
|
|
|
690
1008
|
last_broadcast_error_at: this.lastBroadcastErrorAt,
|
|
691
1009
|
last_broadcast_error: this.lastBroadcastError,
|
|
692
1010
|
broadcast_failure_count: this.broadcastFailureCount,
|
|
693
|
-
discovered_count:
|
|
1011
|
+
discovered_count: discovered.length,
|
|
694
1012
|
online_count: onlineCount,
|
|
695
|
-
offline_count: Math.max(0,
|
|
1013
|
+
offline_count: Math.max(0, discovered.length - onlineCount),
|
|
696
1014
|
init_state: this.initState,
|
|
697
1015
|
presence_ttl_ms: PRESENCE_TTL_MS,
|
|
698
1016
|
onboarding: this.getOnboardingSummary(),
|
|
@@ -714,7 +1032,9 @@ export class LocalNodeService {
|
|
|
714
1032
|
}
|
|
715
1033
|
|
|
716
1034
|
getNetworkSummary() {
|
|
717
|
-
const
|
|
1035
|
+
const network = this.getResolvedRealtimeNetworkSummary();
|
|
1036
|
+
const diagnostics = network.diagnostics;
|
|
1037
|
+
const relayCapable = this.adapterMode === "webrtc-preview" || this.adapterMode === "relay-preview";
|
|
718
1038
|
const peerCount = diagnostics?.peers.total ?? 0;
|
|
719
1039
|
|
|
720
1040
|
return {
|
|
@@ -742,30 +1062,32 @@ export class LocalNodeService {
|
|
|
742
1062
|
real_preview_stats: diagnostics?.stats ?? null,
|
|
743
1063
|
real_preview_transport_stats: diagnostics?.transport_stats ?? null,
|
|
744
1064
|
real_preview_discovery_stats: diagnostics?.discovery_stats ?? null,
|
|
745
|
-
webrtc_preview:
|
|
1065
|
+
webrtc_preview: relayCapable
|
|
746
1066
|
? {
|
|
747
|
-
signaling_url:
|
|
748
|
-
signaling_endpoints:
|
|
749
|
-
room:
|
|
750
|
-
bootstrap_sources:
|
|
751
|
-
seed_peers_count:
|
|
752
|
-
discovery_events_total: diagnostics
|
|
753
|
-
last_discovery_event_at: diagnostics
|
|
754
|
-
active_webrtc_peers: diagnostics
|
|
755
|
-
reconnect_attempts_total: diagnostics
|
|
756
|
-
last_join_at: diagnostics
|
|
757
|
-
last_poll_at: diagnostics
|
|
758
|
-
last_publish_at: diagnostics
|
|
759
|
-
last_peer_refresh_at: diagnostics
|
|
760
|
-
last_error_at: diagnostics
|
|
761
|
-
last_error: diagnostics
|
|
1067
|
+
signaling_url: network.signaling_url,
|
|
1068
|
+
signaling_endpoints: network.signaling_endpoints,
|
|
1069
|
+
room: network.room,
|
|
1070
|
+
bootstrap_sources: network.bootstrap_sources,
|
|
1071
|
+
seed_peers_count: network.seed_peers_count,
|
|
1072
|
+
discovery_events_total: diagnostics?.discovery_events_total ?? 0,
|
|
1073
|
+
last_discovery_event_at: diagnostics?.last_discovery_event_at ?? 0,
|
|
1074
|
+
active_webrtc_peers: diagnostics?.active_webrtc_peers ?? 0,
|
|
1075
|
+
reconnect_attempts_total: diagnostics?.reconnect_attempts_total ?? 0,
|
|
1076
|
+
last_join_at: diagnostics?.last_join_at ?? 0,
|
|
1077
|
+
last_poll_at: diagnostics?.last_poll_at ?? 0,
|
|
1078
|
+
last_publish_at: diagnostics?.last_publish_at ?? 0,
|
|
1079
|
+
last_peer_refresh_at: diagnostics?.last_peer_refresh_at ?? 0,
|
|
1080
|
+
last_error_at: diagnostics?.last_error_at ?? 0,
|
|
1081
|
+
last_error: diagnostics?.last_error ?? null,
|
|
762
1082
|
}
|
|
763
1083
|
: null,
|
|
764
1084
|
};
|
|
765
1085
|
}
|
|
766
1086
|
|
|
767
1087
|
getNetworkConfig() {
|
|
768
|
-
const
|
|
1088
|
+
const network = this.getResolvedRealtimeNetworkSummary();
|
|
1089
|
+
const diagnostics = network.diagnostics;
|
|
1090
|
+
const relayCapable = this.adapterMode === "webrtc-preview" || this.adapterMode === "relay-preview";
|
|
769
1091
|
return {
|
|
770
1092
|
adapter: this.adapterMode,
|
|
771
1093
|
mode: this.networkMode,
|
|
@@ -779,23 +1101,23 @@ export class LocalNodeService {
|
|
|
779
1101
|
},
|
|
780
1102
|
limits: diagnostics?.limits ?? null,
|
|
781
1103
|
adapter_config: diagnostics?.config ?? null,
|
|
782
|
-
adapter_extra:
|
|
1104
|
+
adapter_extra: relayCapable
|
|
783
1105
|
? {
|
|
784
|
-
signaling_url:
|
|
785
|
-
signaling_endpoints:
|
|
786
|
-
room:
|
|
787
|
-
bootstrap_sources:
|
|
788
|
-
seed_peers_count:
|
|
789
|
-
discovery_events_total: diagnostics
|
|
790
|
-
last_discovery_event_at: diagnostics
|
|
791
|
-
connection_states_summary: diagnostics
|
|
792
|
-
datachannel_states_summary: diagnostics
|
|
793
|
-
last_join_at: diagnostics
|
|
794
|
-
last_poll_at: diagnostics
|
|
795
|
-
last_publish_at: diagnostics
|
|
796
|
-
last_peer_refresh_at: diagnostics
|
|
797
|
-
last_error_at: diagnostics
|
|
798
|
-
last_error: diagnostics
|
|
1106
|
+
signaling_url: network.signaling_url,
|
|
1107
|
+
signaling_endpoints: network.signaling_endpoints,
|
|
1108
|
+
room: network.room,
|
|
1109
|
+
bootstrap_sources: network.bootstrap_sources,
|
|
1110
|
+
seed_peers_count: network.seed_peers_count,
|
|
1111
|
+
discovery_events_total: diagnostics?.discovery_events_total ?? 0,
|
|
1112
|
+
last_discovery_event_at: diagnostics?.last_discovery_event_at ?? 0,
|
|
1113
|
+
connection_states_summary: diagnostics?.connection_states_summary ?? null,
|
|
1114
|
+
datachannel_states_summary: diagnostics?.datachannel_states_summary ?? null,
|
|
1115
|
+
last_join_at: diagnostics?.last_join_at ?? 0,
|
|
1116
|
+
last_poll_at: diagnostics?.last_poll_at ?? 0,
|
|
1117
|
+
last_publish_at: diagnostics?.last_publish_at ?? 0,
|
|
1118
|
+
last_peer_refresh_at: diagnostics?.last_peer_refresh_at ?? 0,
|
|
1119
|
+
last_error_at: diagnostics?.last_error_at ?? 0,
|
|
1120
|
+
last_error: diagnostics?.last_error ?? null,
|
|
799
1121
|
}
|
|
800
1122
|
: null,
|
|
801
1123
|
env: {
|
|
@@ -830,7 +1152,9 @@ export class LocalNodeService {
|
|
|
830
1152
|
}
|
|
831
1153
|
|
|
832
1154
|
getNetworkStats() {
|
|
833
|
-
const
|
|
1155
|
+
const network = this.getResolvedRealtimeNetworkSummary();
|
|
1156
|
+
const diagnostics = network.diagnostics;
|
|
1157
|
+
const relayCapable = this.adapterMode === "webrtc-preview" || this.adapterMode === "relay-preview";
|
|
834
1158
|
const peers: Array<{ status?: string }> = diagnostics?.peers?.items ?? [];
|
|
835
1159
|
const online = peers.filter((peer: { status?: string }) => peer.status === "online").length;
|
|
836
1160
|
|
|
@@ -857,34 +1181,35 @@ export class LocalNodeService {
|
|
|
857
1181
|
adapter_stats: diagnostics?.stats ?? null,
|
|
858
1182
|
adapter_transport_stats: diagnostics?.transport_stats ?? null,
|
|
859
1183
|
adapter_discovery_stats: diagnostics?.discovery_stats ?? null,
|
|
860
|
-
adapter_diagnostics_summary: diagnostics
|
|
1184
|
+
adapter_diagnostics_summary: relayCapable || diagnostics
|
|
861
1185
|
? {
|
|
862
|
-
signaling_url:
|
|
863
|
-
signaling_endpoints:
|
|
864
|
-
room:
|
|
865
|
-
bootstrap_sources:
|
|
866
|
-
seed_peers_count:
|
|
867
|
-
discovery_events_total: diagnostics
|
|
868
|
-
last_discovery_event_at: diagnostics
|
|
869
|
-
connection_states_summary: diagnostics
|
|
870
|
-
datachannel_states_summary: diagnostics
|
|
871
|
-
signaling_messages_sent_total: diagnostics
|
|
872
|
-
signaling_messages_received_total: diagnostics
|
|
873
|
-
reconnect_attempts_total: diagnostics
|
|
874
|
-
active_webrtc_peers: diagnostics
|
|
875
|
-
last_join_at: diagnostics
|
|
876
|
-
last_poll_at: diagnostics
|
|
877
|
-
last_publish_at: diagnostics
|
|
878
|
-
last_peer_refresh_at: diagnostics
|
|
879
|
-
last_error_at: diagnostics
|
|
880
|
-
last_error: diagnostics
|
|
1186
|
+
signaling_url: network.signaling_url,
|
|
1187
|
+
signaling_endpoints: network.signaling_endpoints,
|
|
1188
|
+
room: network.room,
|
|
1189
|
+
bootstrap_sources: network.bootstrap_sources,
|
|
1190
|
+
seed_peers_count: network.seed_peers_count,
|
|
1191
|
+
discovery_events_total: diagnostics?.discovery_events_total ?? 0,
|
|
1192
|
+
last_discovery_event_at: diagnostics?.last_discovery_event_at ?? 0,
|
|
1193
|
+
connection_states_summary: diagnostics?.connection_states_summary ?? null,
|
|
1194
|
+
datachannel_states_summary: diagnostics?.datachannel_states_summary ?? null,
|
|
1195
|
+
signaling_messages_sent_total: diagnostics?.signaling_messages_sent_total ?? null,
|
|
1196
|
+
signaling_messages_received_total: diagnostics?.signaling_messages_received_total ?? null,
|
|
1197
|
+
reconnect_attempts_total: diagnostics?.reconnect_attempts_total ?? null,
|
|
1198
|
+
active_webrtc_peers: diagnostics?.active_webrtc_peers ?? null,
|
|
1199
|
+
last_join_at: diagnostics?.last_join_at ?? 0,
|
|
1200
|
+
last_poll_at: diagnostics?.last_poll_at ?? 0,
|
|
1201
|
+
last_publish_at: diagnostics?.last_publish_at ?? 0,
|
|
1202
|
+
last_peer_refresh_at: diagnostics?.last_peer_refresh_at ?? 0,
|
|
1203
|
+
last_error_at: diagnostics?.last_error_at ?? 0,
|
|
1204
|
+
last_error: diagnostics?.last_error ?? null,
|
|
881
1205
|
}
|
|
882
1206
|
: null,
|
|
883
1207
|
};
|
|
884
1208
|
}
|
|
885
1209
|
|
|
886
1210
|
getPeersSummary() {
|
|
887
|
-
const
|
|
1211
|
+
const network = this.getResolvedRealtimeNetworkSummary();
|
|
1212
|
+
const diagnostics = network.diagnostics;
|
|
888
1213
|
if (!diagnostics) {
|
|
889
1214
|
return {
|
|
890
1215
|
adapter: this.adapterMode,
|
|
@@ -907,11 +1232,11 @@ export class LocalNodeService {
|
|
|
907
1232
|
components: diagnostics.components,
|
|
908
1233
|
limits: diagnostics.limits,
|
|
909
1234
|
diagnostics_summary: {
|
|
910
|
-
signaling_url:
|
|
911
|
-
signaling_endpoints:
|
|
912
|
-
room:
|
|
913
|
-
bootstrap_sources:
|
|
914
|
-
seed_peers_count:
|
|
1235
|
+
signaling_url: network.signaling_url,
|
|
1236
|
+
signaling_endpoints: network.signaling_endpoints,
|
|
1237
|
+
room: network.room,
|
|
1238
|
+
bootstrap_sources: network.bootstrap_sources,
|
|
1239
|
+
seed_peers_count: network.seed_peers_count,
|
|
915
1240
|
discovery_events_total: diagnostics.discovery_events_total ?? 0,
|
|
916
1241
|
last_discovery_event_at: diagnostics.last_discovery_event_at ?? 0,
|
|
917
1242
|
connection_states_summary: diagnostics.connection_states_summary ?? null,
|
|
@@ -958,11 +1283,12 @@ export class LocalNodeService {
|
|
|
958
1283
|
getRuntimePaths() {
|
|
959
1284
|
return {
|
|
960
1285
|
workspace_root: this.workspaceRoot,
|
|
1286
|
+
project_root: this.projectRoot,
|
|
961
1287
|
storage_root: this.storageRoot,
|
|
962
1288
|
data_dir: resolve(this.storageRoot, "data"),
|
|
963
1289
|
social_runtime_path: resolve(this.storageRoot, ".silicaclaw", "social.runtime.json"),
|
|
964
1290
|
local_console_public_dir: resolve(this.workspaceRoot, "apps", "local-console", "public"),
|
|
965
|
-
social_lookup_paths: getSocialConfigSearchPaths(this.
|
|
1291
|
+
social_lookup_paths: getSocialConfigSearchPaths(this.projectRoot),
|
|
966
1292
|
social_source_path: this.socialSourcePath,
|
|
967
1293
|
};
|
|
968
1294
|
}
|
|
@@ -1070,20 +1396,36 @@ export class LocalNodeService {
|
|
|
1070
1396
|
}
|
|
1071
1397
|
|
|
1072
1398
|
async setNetworkModeRuntime(mode: "local" | "lan" | "global-preview") {
|
|
1073
|
-
const
|
|
1399
|
+
const before = {
|
|
1400
|
+
mode: this.networkMode,
|
|
1401
|
+
adapter: this.adapterMode,
|
|
1402
|
+
namespace: this.networkNamespace,
|
|
1403
|
+
port: this.networkPort,
|
|
1404
|
+
};
|
|
1074
1405
|
if (mode !== "local" && mode !== "lan" && mode !== "global-preview") {
|
|
1075
1406
|
throw new Error("invalid_network_mode");
|
|
1076
1407
|
}
|
|
1077
1408
|
this.socialConfig.network.mode = mode;
|
|
1078
1409
|
this.socialConfig.network.adapter = this.adapterForMode(mode);
|
|
1079
1410
|
this.applyResolvedNetworkConfig();
|
|
1080
|
-
|
|
1411
|
+
|
|
1412
|
+
const needsRestart =
|
|
1413
|
+
before.mode !== this.networkMode ||
|
|
1414
|
+
before.adapter !== this.socialConfig.network.adapter ||
|
|
1415
|
+
before.namespace !== this.networkNamespace ||
|
|
1416
|
+
(before.port ?? null) !== (this.networkPort ?? null);
|
|
1417
|
+
|
|
1418
|
+
if (needsRestart) {
|
|
1419
|
+
await this.restartNetworkAdapter("set_network_mode_runtime");
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
this.socialNetworkRequiresRestart = false;
|
|
1081
1423
|
await this.writeSocialRuntime();
|
|
1082
1424
|
return {
|
|
1083
1425
|
mode: this.networkMode,
|
|
1084
|
-
adapter: this.
|
|
1085
|
-
network_requires_restart:
|
|
1086
|
-
note: "Runtime mode updated. Existing social.md is unchanged.",
|
|
1426
|
+
adapter: this.adapterMode,
|
|
1427
|
+
network_requires_restart: false,
|
|
1428
|
+
note: "Runtime mode updated and adapter restarted. Existing social.md is unchanged.",
|
|
1087
1429
|
};
|
|
1088
1430
|
}
|
|
1089
1431
|
|
|
@@ -1098,7 +1440,7 @@ export class LocalNodeService {
|
|
|
1098
1440
|
this.socialConfig.network.adapter = "relay-preview";
|
|
1099
1441
|
this.socialConfig.network.signaling_url = signalingUrl;
|
|
1100
1442
|
this.socialConfig.network.signaling_urls = [signalingUrl];
|
|
1101
|
-
this.socialConfig.network.room = room ||
|
|
1443
|
+
this.socialConfig.network.room = room || DEFAULT_GLOBAL_ROOM;
|
|
1102
1444
|
this.applyResolvedNetworkConfig();
|
|
1103
1445
|
await this.restartNetworkAdapter("quick_connect_global_preview");
|
|
1104
1446
|
this.socialNetworkRequiresRestart = false;
|
|
@@ -1123,7 +1465,7 @@ export class LocalNodeService {
|
|
|
1123
1465
|
port: this.networkPort,
|
|
1124
1466
|
};
|
|
1125
1467
|
|
|
1126
|
-
const loaded = loadSocialConfig(this.
|
|
1468
|
+
const loaded = loadSocialConfig(this.projectRoot);
|
|
1127
1469
|
this.socialConfig = loaded.config;
|
|
1128
1470
|
this.socialSourcePath = loaded.meta.source_path;
|
|
1129
1471
|
this.socialFound = loaded.meta.found;
|
|
@@ -1145,13 +1487,18 @@ export class LocalNodeService {
|
|
|
1145
1487
|
before.namespace !== after.namespace ||
|
|
1146
1488
|
(before.port ?? null) !== (after.port ?? null);
|
|
1147
1489
|
|
|
1490
|
+
if (this.socialNetworkRequiresRestart) {
|
|
1491
|
+
await this.restartNetworkAdapter("reload_social_config");
|
|
1492
|
+
this.socialNetworkRequiresRestart = false;
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1148
1495
|
await this.writeSocialRuntime();
|
|
1149
1496
|
|
|
1150
1497
|
return this.getSocialConfigView();
|
|
1151
1498
|
}
|
|
1152
1499
|
|
|
1153
1500
|
async generateDefaultSocialMd() {
|
|
1154
|
-
const result = ensureDefaultSocialMd(this.
|
|
1501
|
+
const result = ensureDefaultSocialMd(this.projectRoot, {
|
|
1155
1502
|
display_name: this.getDefaultDisplayName(),
|
|
1156
1503
|
bio: "Local AI agent connected to SilicaClaw",
|
|
1157
1504
|
tags: ["openclaw", "local-first"],
|
|
@@ -1178,10 +1525,11 @@ export class LocalNodeService {
|
|
|
1178
1525
|
search(keyword: string): PublicProfileSummary[] {
|
|
1179
1526
|
this.ensureLocalDirectoryBaseline();
|
|
1180
1527
|
this.compactCacheInMemory();
|
|
1181
|
-
|
|
1528
|
+
const directMatches = searchDirectory(this.directory, keyword, { presenceTTLms: PRESENCE_TTL_MS }).map((profile) => {
|
|
1182
1529
|
const lastSeenAt = this.directory.presence[profile.agent_id] ?? 0;
|
|
1183
1530
|
return this.toPublicProfileSummary(profile, { last_seen_at: lastSeenAt });
|
|
1184
1531
|
});
|
|
1532
|
+
return this.mergeMessageOnlyAgentSummaries(directMatches, keyword);
|
|
1185
1533
|
}
|
|
1186
1534
|
|
|
1187
1535
|
getPublicProfilePreview(): PublicProfileSummary | null {
|
|
@@ -1259,11 +1607,11 @@ export class LocalNodeService {
|
|
|
1259
1607
|
|
|
1260
1608
|
getOpenClawBridgeStatus(): OpenClawBridgeStatus {
|
|
1261
1609
|
const integration = this.getIntegrationStatus();
|
|
1262
|
-
const openclawInstallation = detectOpenClawInstallation(this.
|
|
1263
|
-
const openclawRuntime = detectOpenClawRuntime();
|
|
1610
|
+
const openclawInstallation = detectOpenClawInstallation(this.projectRoot);
|
|
1611
|
+
const openclawRuntime = detectOpenClawRuntime(this.projectRoot);
|
|
1264
1612
|
const skillInstallation = detectOpenClawSkillInstallation();
|
|
1265
1613
|
const ownerDelivery = detectOwnerDeliveryStatus({
|
|
1266
|
-
workspaceRoot: this.
|
|
1614
|
+
workspaceRoot: this.projectRoot,
|
|
1267
1615
|
connectedToSilicaclaw: integration.connected_to_silicaclaw,
|
|
1268
1616
|
openclawRunning: openclawRuntime.running,
|
|
1269
1617
|
skillInstalled: skillInstallation.installed,
|
|
@@ -1326,11 +1674,15 @@ export class LocalNodeService {
|
|
|
1326
1674
|
};
|
|
1327
1675
|
}
|
|
1328
1676
|
|
|
1329
|
-
async installOpenClawSkill() {
|
|
1677
|
+
async installOpenClawSkill(skillName?: string) {
|
|
1330
1678
|
const scriptPath = resolve(this.workspaceRoot, "scripts", "install-openclaw-skill.mjs");
|
|
1331
|
-
const
|
|
1679
|
+
const args = [scriptPath];
|
|
1680
|
+
if (skillName) {
|
|
1681
|
+
args.push(`--skill=${skillName}`);
|
|
1682
|
+
}
|
|
1683
|
+
const { stdout } = await execFileAsync(process.execPath, args, {
|
|
1332
1684
|
cwd: this.workspaceRoot,
|
|
1333
|
-
env: process.env,
|
|
1685
|
+
env: { ...process.env, SILICACLAW_WORKSPACE_DIR: this.projectRoot },
|
|
1334
1686
|
maxBuffer: 1024 * 1024,
|
|
1335
1687
|
});
|
|
1336
1688
|
const parsed = JSON.parse(String(stdout || "{}"));
|
|
@@ -1354,16 +1706,21 @@ export class LocalNodeService {
|
|
|
1354
1706
|
const homeDir = resolve(process.env.HOME || "", ".openclaw");
|
|
1355
1707
|
const workspaceSkillDir = resolve(homeDir, "workspace", "skills");
|
|
1356
1708
|
const legacySkillDir = resolve(homeDir, "skills");
|
|
1357
|
-
const openclawSourceDir =
|
|
1709
|
+
const openclawSourceDir = defaultOpenClawSourceDir(this.projectRoot);
|
|
1710
|
+
const openclawRuntime = detectOpenClawRuntime(this.projectRoot);
|
|
1358
1711
|
|
|
1359
1712
|
return {
|
|
1360
|
-
bridge_api_base:
|
|
1361
|
-
openclaw_detected: detectOpenClawInstallation(this.
|
|
1362
|
-
openclaw_running:
|
|
1713
|
+
bridge_api_base: DEFAULT_BRIDGE_API_BASE,
|
|
1714
|
+
openclaw_detected: detectOpenClawInstallation(this.projectRoot).detected,
|
|
1715
|
+
openclaw_running: openclawRuntime.running,
|
|
1716
|
+
openclaw_gateway_host: OPENCLAW_GATEWAY_HOST,
|
|
1717
|
+
openclaw_gateway_port: openclawRuntime.configured_gateway_port,
|
|
1718
|
+
openclaw_gateway_url: openclawRuntime.configured_gateway_url,
|
|
1719
|
+
openclaw_gateway_config_path: openclawRuntime.configured_gateway_config_path,
|
|
1363
1720
|
openclaw_workspace_skill_dir: workspaceSkillDir,
|
|
1364
1721
|
openclaw_legacy_skill_dir: legacySkillDir,
|
|
1365
1722
|
silicaclaw_env_template_path: resolve(this.workspaceRoot, "openclaw-owner-forward.env.example"),
|
|
1366
|
-
recommended_skill_name: "silicaclaw-
|
|
1723
|
+
recommended_skill_name: "silicaclaw-bridge-setup",
|
|
1367
1724
|
recommended_install_command: "silicaclaw openclaw-skill-install",
|
|
1368
1725
|
recommended_owner_forward_env: {
|
|
1369
1726
|
OPENCLAW_SOURCE_DIR: openclawSourceDir,
|
|
@@ -1381,13 +1738,143 @@ export class LocalNodeService {
|
|
|
1381
1738
|
].join(" "),
|
|
1382
1739
|
notes: [
|
|
1383
1740
|
"Install and maintain the skill from SilicaClaw; do not edit OpenClaw core source for this integration.",
|
|
1741
|
+
"Use silicaclaw-bridge-setup first when OpenClaw still needs local install, readiness checks, or troubleshooting guidance.",
|
|
1384
1742
|
"OpenClaw learns broadcasts via the installed skill under ~/.openclaw/workspace/skills/.",
|
|
1743
|
+
"Runtime detection prefers the actual OpenClaw gateway listener port, then falls back to OpenClaw's own openclaw.json gateway.port.",
|
|
1385
1744
|
"Owner delivery runs through OpenClaw's own message channel stack after the skill forwards a summary.",
|
|
1386
1745
|
"Sensitive computer control still requires OpenClaw's own owner approval and node permission flow.",
|
|
1387
1746
|
],
|
|
1388
1747
|
};
|
|
1389
1748
|
}
|
|
1390
1749
|
|
|
1750
|
+
getSkillsView() {
|
|
1751
|
+
const bundledRoot = resolve(this.workspaceRoot, "openclaw-skills");
|
|
1752
|
+
const openclawHome = resolve(process.env.HOME || "", ".openclaw");
|
|
1753
|
+
const workspaceInstallRoot = resolve(openclawHome, "workspace", "skills");
|
|
1754
|
+
const legacyInstallRoot = resolve(openclawHome, "skills");
|
|
1755
|
+
const bridge = this.getOpenClawBridgeStatus();
|
|
1756
|
+
const bundledSkills = listDirectories(bundledRoot).map((dir) => {
|
|
1757
|
+
const manifestPath = resolve(dir.path, "manifest.json");
|
|
1758
|
+
const skillPath = resolve(dir.path, "SKILL.md");
|
|
1759
|
+
const versionPath = resolve(dir.path, "VERSION");
|
|
1760
|
+
const manifest = readJsonFileSafe(manifestPath);
|
|
1761
|
+
const references = (manifest?.references && typeof manifest.references === "object")
|
|
1762
|
+
? manifest.references as Record<string, unknown>
|
|
1763
|
+
: null;
|
|
1764
|
+
const ownerDialogueCheatsheetPath = references?.owner_dialogue_cheatsheet_zh
|
|
1765
|
+
? resolve(dir.path, String(references.owner_dialogue_cheatsheet_zh))
|
|
1766
|
+
: null;
|
|
1767
|
+
const name = String(manifest?.name || dir.name);
|
|
1768
|
+
const capabilities = Array.isArray(manifest?.capabilities)
|
|
1769
|
+
? manifest.capabilities.map((item) => String(item))
|
|
1770
|
+
: [];
|
|
1771
|
+
const installedWorkspacePath = resolve(workspaceInstallRoot, name);
|
|
1772
|
+
const installedLegacyPath = resolve(legacyInstallRoot, name);
|
|
1773
|
+
const installedInWorkspace = existsSync(installedWorkspacePath);
|
|
1774
|
+
const installedInLegacy = existsSync(installedLegacyPath);
|
|
1775
|
+
return {
|
|
1776
|
+
key: name,
|
|
1777
|
+
name,
|
|
1778
|
+
display_name: String(manifest?.display_name || name),
|
|
1779
|
+
description: String(manifest?.description || summarizeSkillReadme(skillPath) || ""),
|
|
1780
|
+
version: existsSync(versionPath) ? readFileSync(versionPath, "utf8").trim() : String(manifest?.version || ""),
|
|
1781
|
+
source_path: dir.path,
|
|
1782
|
+
manifest_path: existsSync(manifestPath) ? manifestPath : null,
|
|
1783
|
+
skill_path: existsSync(skillPath) ? skillPath : null,
|
|
1784
|
+
capabilities,
|
|
1785
|
+
transport: manifest?.transport || null,
|
|
1786
|
+
owner_dialogue_cheatsheet_path: ownerDialogueCheatsheetPath && existsSync(ownerDialogueCheatsheetPath) ? ownerDialogueCheatsheetPath : null,
|
|
1787
|
+
owner_dialogue_examples_zh: ownerDialogueCheatsheetPath ? readDialogueCheatsheetPreview(ownerDialogueCheatsheetPath) : [],
|
|
1788
|
+
owner_dialogue_sections_zh: ownerDialogueCheatsheetPath ? readDialogueCheatsheetSections(ownerDialogueCheatsheetPath) : [],
|
|
1789
|
+
installed_in_openclaw: installedInWorkspace || installedInLegacy,
|
|
1790
|
+
install_mode: installedInWorkspace ? "workspace" : installedInLegacy ? "legacy" : "not_installed",
|
|
1791
|
+
installed_path: installedInWorkspace ? installedWorkspacePath : installedInLegacy ? installedLegacyPath : null,
|
|
1792
|
+
};
|
|
1793
|
+
});
|
|
1794
|
+
|
|
1795
|
+
const installedSkills = [
|
|
1796
|
+
...listDirectories(workspaceInstallRoot).map((dir) => ({ ...dir, install_mode: "workspace" as const })),
|
|
1797
|
+
...listDirectories(legacyInstallRoot).map((dir) => ({ ...dir, install_mode: "legacy" as const })),
|
|
1798
|
+
].map((dir) => {
|
|
1799
|
+
const manifestPath = resolve(dir.path, "manifest.json");
|
|
1800
|
+
const skillPath = resolve(dir.path, "SKILL.md");
|
|
1801
|
+
const versionPath = resolve(dir.path, "VERSION");
|
|
1802
|
+
const manifest = readJsonFileSafe(manifestPath);
|
|
1803
|
+
const references = (manifest?.references && typeof manifest.references === "object")
|
|
1804
|
+
? manifest.references as Record<string, unknown>
|
|
1805
|
+
: null;
|
|
1806
|
+
const ownerDialogueCheatsheetPath = references?.owner_dialogue_cheatsheet_zh
|
|
1807
|
+
? resolve(dir.path, String(references.owner_dialogue_cheatsheet_zh))
|
|
1808
|
+
: null;
|
|
1809
|
+
return {
|
|
1810
|
+
key: `${dir.install_mode}:${dir.name}`,
|
|
1811
|
+
name: String(manifest?.name || dir.name),
|
|
1812
|
+
display_name: String(manifest?.display_name || dir.name),
|
|
1813
|
+
description: String(manifest?.description || summarizeSkillReadme(skillPath) || ""),
|
|
1814
|
+
version: existsSync(versionPath) ? readFileSync(versionPath, "utf8").trim() : String(manifest?.version || ""),
|
|
1815
|
+
install_mode: dir.install_mode,
|
|
1816
|
+
installed_path: dir.path,
|
|
1817
|
+
manifest_path: existsSync(manifestPath) ? manifestPath : null,
|
|
1818
|
+
skill_path: existsSync(skillPath) ? skillPath : null,
|
|
1819
|
+
capabilities: Array.isArray(manifest?.capabilities) ? manifest.capabilities.map((item) => String(item)) : [],
|
|
1820
|
+
owner_dialogue_cheatsheet_path: ownerDialogueCheatsheetPath && existsSync(ownerDialogueCheatsheetPath) ? ownerDialogueCheatsheetPath : null,
|
|
1821
|
+
owner_dialogue_examples_zh: ownerDialogueCheatsheetPath ? readDialogueCheatsheetPreview(ownerDialogueCheatsheetPath) : [],
|
|
1822
|
+
owner_dialogue_sections_zh: ownerDialogueCheatsheetPath ? readDialogueCheatsheetSections(ownerDialogueCheatsheetPath) : [],
|
|
1823
|
+
bundled_source_path: bundledSkills.find((item) => item.name === String(manifest?.name || dir.name))?.source_path || null,
|
|
1824
|
+
};
|
|
1825
|
+
});
|
|
1826
|
+
|
|
1827
|
+
const installedSkillVersions = new Map(installedSkills.map((item) => [item.name, item.version]));
|
|
1828
|
+
const bundledSkillsWithUpdateState = bundledSkills.map((skill) => {
|
|
1829
|
+
const installedVersion = installedSkillVersions.get(skill.name) || "";
|
|
1830
|
+
const updateAvailable = Boolean(
|
|
1831
|
+
skill.installed_in_openclaw &&
|
|
1832
|
+
installedVersion &&
|
|
1833
|
+
skill.version &&
|
|
1834
|
+
compareVersionTokens(installedVersion, skill.version) < 0
|
|
1835
|
+
);
|
|
1836
|
+
return {
|
|
1837
|
+
...skill,
|
|
1838
|
+
installed_version: installedVersion || null,
|
|
1839
|
+
update_available: updateAvailable,
|
|
1840
|
+
};
|
|
1841
|
+
});
|
|
1842
|
+
const bundledSkillVersions = new Map(bundledSkillsWithUpdateState.map((item) => [item.name, item.version]));
|
|
1843
|
+
const installedSkillsWithUpdateState = installedSkills.map((skill) => {
|
|
1844
|
+
const bundledVersion = bundledSkillVersions.get(skill.name) || "";
|
|
1845
|
+
const updateAvailable = Boolean(
|
|
1846
|
+
bundledVersion &&
|
|
1847
|
+
skill.version &&
|
|
1848
|
+
compareVersionTokens(skill.version, bundledVersion) < 0
|
|
1849
|
+
);
|
|
1850
|
+
return {
|
|
1851
|
+
...skill,
|
|
1852
|
+
bundled_version: bundledVersion || null,
|
|
1853
|
+
update_available: updateAvailable,
|
|
1854
|
+
};
|
|
1855
|
+
});
|
|
1856
|
+
|
|
1857
|
+
return {
|
|
1858
|
+
openclaw: {
|
|
1859
|
+
detected: bridge.openclaw_installation.detected,
|
|
1860
|
+
running: bridge.openclaw_runtime.running,
|
|
1861
|
+
detection_mode: bridge.openclaw_runtime.detection_mode,
|
|
1862
|
+
gateway_url: bridge.openclaw_runtime.gateway_url,
|
|
1863
|
+
workspace_install_root: workspaceInstallRoot,
|
|
1864
|
+
legacy_install_root: legacyInstallRoot,
|
|
1865
|
+
},
|
|
1866
|
+
summary: {
|
|
1867
|
+
bundled_count: bundledSkillsWithUpdateState.length,
|
|
1868
|
+
installed_count: installedSkillsWithUpdateState.length,
|
|
1869
|
+
installed_bundled_count: bundledSkillsWithUpdateState.filter((item) => item.installed_in_openclaw).length,
|
|
1870
|
+
update_available_count: bundledSkillsWithUpdateState.filter((item) => item.update_available).length,
|
|
1871
|
+
},
|
|
1872
|
+
install_action: bridge.skill_learning.install_action,
|
|
1873
|
+
bundled_skills: bundledSkillsWithUpdateState,
|
|
1874
|
+
installed_skills: installedSkillsWithUpdateState,
|
|
1875
|
+
};
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1391
1878
|
getRuntimeMessageGovernance() {
|
|
1392
1879
|
return this.messageGovernance;
|
|
1393
1880
|
}
|
|
@@ -1631,6 +2118,7 @@ export class LocalNodeService {
|
|
|
1631
2118
|
};
|
|
1632
2119
|
const presenceRecord = signPresence(this.identity, Date.now());
|
|
1633
2120
|
const indexRecords = buildIndexRecords(this.profile);
|
|
2121
|
+
const replayMessages = this.getReplayableSelfSocialMessages();
|
|
1634
2122
|
|
|
1635
2123
|
try {
|
|
1636
2124
|
await this.publish("profile", profileRecord);
|
|
@@ -1638,6 +2126,9 @@ export class LocalNodeService {
|
|
|
1638
2126
|
for (const record of indexRecords) {
|
|
1639
2127
|
await this.publish("index", record);
|
|
1640
2128
|
}
|
|
2129
|
+
for (const message of replayMessages) {
|
|
2130
|
+
await this.publish(SOCIAL_MESSAGE_TOPIC, message);
|
|
2131
|
+
}
|
|
1641
2132
|
} catch (error) {
|
|
1642
2133
|
const message = error instanceof Error ? error.message : String(error);
|
|
1643
2134
|
this.lastBroadcastErrorAt = Date.now();
|
|
@@ -1660,7 +2151,10 @@ export class LocalNodeService {
|
|
|
1660
2151
|
this.compactCacheInMemory();
|
|
1661
2152
|
await this.persistCache();
|
|
1662
2153
|
|
|
1663
|
-
await this.log(
|
|
2154
|
+
await this.log(
|
|
2155
|
+
"info",
|
|
2156
|
+
`Broadcast sent (${indexRecords.length} index refs, replayed_messages=${replayMessages.length}, reason=${reason})`
|
|
2157
|
+
);
|
|
1664
2158
|
return { sent: true, reason };
|
|
1665
2159
|
}
|
|
1666
2160
|
|
|
@@ -1680,7 +2174,7 @@ export class LocalNodeService {
|
|
|
1680
2174
|
socialConfig: this.socialConfig,
|
|
1681
2175
|
existingIdentity,
|
|
1682
2176
|
generatedIdentity: createIdentity(),
|
|
1683
|
-
rootDir: this.
|
|
2177
|
+
rootDir: this.projectRoot,
|
|
1684
2178
|
});
|
|
1685
2179
|
this.identity = resolvedIdentity.identity;
|
|
1686
2180
|
this.resolvedIdentitySource = resolvedIdentity.source;
|
|
@@ -1699,7 +2193,7 @@ export class LocalNodeService {
|
|
|
1699
2193
|
socialConfig: this.socialConfig,
|
|
1700
2194
|
agentId: this.identity.agent_id,
|
|
1701
2195
|
existingProfile: existingProfile && existingProfile.agent_id === this.identity.agent_id ? existingProfile : null,
|
|
1702
|
-
rootDir: this.
|
|
2196
|
+
rootDir: this.projectRoot,
|
|
1703
2197
|
});
|
|
1704
2198
|
this.profile = signProfile(profileInput, this.identity);
|
|
1705
2199
|
if (!existingProfile || existingProfile.agent_id !== this.identity.agent_id) {
|
|
@@ -1708,7 +2202,7 @@ export class LocalNodeService {
|
|
|
1708
2202
|
}
|
|
1709
2203
|
await this.profileRepo.set(this.profile);
|
|
1710
2204
|
|
|
1711
|
-
this.directory =
|
|
2205
|
+
this.directory = createEmptyDirectoryState();
|
|
1712
2206
|
this.messageGovernance = {
|
|
1713
2207
|
...this.defaultMessageGovernance(),
|
|
1714
2208
|
...(await this.socialMessageGovernanceRepo.get()),
|
|
@@ -1731,7 +2225,7 @@ export class LocalNodeService {
|
|
|
1731
2225
|
socialConfig: this.socialConfig,
|
|
1732
2226
|
agentId: this.identity.agent_id,
|
|
1733
2227
|
existingProfile: this.profile,
|
|
1734
|
-
rootDir: this.
|
|
2228
|
+
rootDir: this.projectRoot,
|
|
1735
2229
|
});
|
|
1736
2230
|
const nextProfile = signProfile(nextProfileInput, this.identity);
|
|
1737
2231
|
this.profile = nextProfile;
|
|
@@ -1851,6 +2345,10 @@ export class LocalNodeService {
|
|
|
1851
2345
|
await this.log("warn", `Rejected social message with invalid signature (${record.message_id.slice(0, 10)})`);
|
|
1852
2346
|
return;
|
|
1853
2347
|
}
|
|
2348
|
+
if (this.hasSocialMessage(record.message_id)) {
|
|
2349
|
+
await this.publishObservationForMessage(record);
|
|
2350
|
+
return;
|
|
2351
|
+
}
|
|
1854
2352
|
const governanceReason = this.getIncomingSocialMessageRejectionReason(record);
|
|
1855
2353
|
if (governanceReason) {
|
|
1856
2354
|
await this.log("warn", `Rejected social message (${record.message_id.slice(0, 10)}): ${governanceReason}`);
|
|
@@ -2023,6 +2521,7 @@ export class LocalNodeService {
|
|
|
2023
2521
|
this.network = next.adapter;
|
|
2024
2522
|
this.adapterMode = next.mode;
|
|
2025
2523
|
this.networkPort = next.port;
|
|
2524
|
+
this.subscriptionsBound = false;
|
|
2026
2525
|
|
|
2027
2526
|
await this.network.start();
|
|
2028
2527
|
this.bindNetworkSubscriptions();
|
|
@@ -2045,7 +2544,22 @@ export class LocalNodeService {
|
|
|
2045
2544
|
}
|
|
2046
2545
|
|
|
2047
2546
|
private async persistCache(): Promise<void> {
|
|
2048
|
-
|
|
2547
|
+
const persisted = createEmptyDirectoryState();
|
|
2548
|
+
if (this.profile) {
|
|
2549
|
+
const selfProfileRecord: SignedProfileRecord = {
|
|
2550
|
+
type: "profile",
|
|
2551
|
+
profile: this.profile,
|
|
2552
|
+
};
|
|
2553
|
+
this.directory = ingestProfileRecord(this.directory, selfProfileRecord);
|
|
2554
|
+
persisted.profiles[this.profile.agent_id] = this.profile;
|
|
2555
|
+
const selfLastSeenAt = this.directory.presence[this.profile.agent_id];
|
|
2556
|
+
if (typeof selfLastSeenAt === "number" && Number.isFinite(selfLastSeenAt)) {
|
|
2557
|
+
persisted.presence[this.profile.agent_id] = selfLastSeenAt;
|
|
2558
|
+
}
|
|
2559
|
+
const indexed = rebuildIndexForProfile(persisted, this.profile);
|
|
2560
|
+
persisted.index = indexed.index;
|
|
2561
|
+
}
|
|
2562
|
+
await this.cacheRepo.set(persisted);
|
|
2049
2563
|
}
|
|
2050
2564
|
|
|
2051
2565
|
private async persistSocialMessages(): Promise<void> {
|
|
@@ -2071,6 +2585,19 @@ export class LocalNodeService {
|
|
|
2071
2585
|
return (this.network as any).getDiagnostics();
|
|
2072
2586
|
}
|
|
2073
2587
|
|
|
2588
|
+
private getResolvedRealtimeNetworkSummary() {
|
|
2589
|
+
const diagnostics = this.getAdapterDiagnostics();
|
|
2590
|
+
const relayCapable = this.adapterMode === "webrtc-preview" || this.adapterMode === "relay-preview";
|
|
2591
|
+
return {
|
|
2592
|
+
diagnostics,
|
|
2593
|
+
signaling_url: diagnostics?.signaling_url ?? (relayCapable ? this.webrtcSignalingUrls[0] ?? null : null),
|
|
2594
|
+
signaling_endpoints: diagnostics?.signaling_endpoints ?? (relayCapable ? this.webrtcSignalingUrls : []),
|
|
2595
|
+
room: diagnostics?.room ?? (relayCapable ? this.webrtcRoom : null),
|
|
2596
|
+
bootstrap_sources: diagnostics?.bootstrap_sources ?? (relayCapable ? this.webrtcBootstrapSources : []),
|
|
2597
|
+
seed_peers_count: diagnostics?.seed_peers_count ?? this.webrtcSeedPeers.length,
|
|
2598
|
+
};
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2074
2601
|
private toPublicProfileSummary(
|
|
2075
2602
|
profile: PublicProfile,
|
|
2076
2603
|
options?: { last_seen_at?: number }
|
|
@@ -2114,6 +2641,72 @@ export class LocalNodeService {
|
|
|
2114
2641
|
});
|
|
2115
2642
|
}
|
|
2116
2643
|
|
|
2644
|
+
private mergeMessageOnlyAgentSummaries(
|
|
2645
|
+
summaries: PublicProfileSummary[],
|
|
2646
|
+
keyword: string
|
|
2647
|
+
): PublicProfileSummary[] {
|
|
2648
|
+
const normalizedKeyword = String(keyword || "").trim().toLowerCase();
|
|
2649
|
+
const knownAgentIds = new Set(summaries.map((item) => item.agent_id));
|
|
2650
|
+
const messageOnly: PublicProfileSummary[] = [];
|
|
2651
|
+
|
|
2652
|
+
for (const message of this.socialMessages) {
|
|
2653
|
+
if (!message?.agent_id || knownAgentIds.has(message.agent_id)) {
|
|
2654
|
+
continue;
|
|
2655
|
+
}
|
|
2656
|
+
|
|
2657
|
+
const displayName = String(message.display_name || "Unnamed").trim() || "Unnamed";
|
|
2658
|
+
if (normalizedKeyword) {
|
|
2659
|
+
const haystacks = [
|
|
2660
|
+
displayName.toLowerCase(),
|
|
2661
|
+
message.agent_id.toLowerCase(),
|
|
2662
|
+
String(message.topic || "").toLowerCase(),
|
|
2663
|
+
];
|
|
2664
|
+
if (!haystacks.some((value) => value.includes(normalizedKeyword))) {
|
|
2665
|
+
continue;
|
|
2666
|
+
}
|
|
2667
|
+
}
|
|
2668
|
+
|
|
2669
|
+
knownAgentIds.add(message.agent_id);
|
|
2670
|
+
messageOnly.push(
|
|
2671
|
+
buildPublicProfileSummary({
|
|
2672
|
+
profile: {
|
|
2673
|
+
agent_id: message.agent_id,
|
|
2674
|
+
display_name: displayName,
|
|
2675
|
+
bio: "Seen from signed public message. Profile/presence not synced yet.",
|
|
2676
|
+
tags: ["message-only"],
|
|
2677
|
+
avatar_url: "",
|
|
2678
|
+
public_enabled: true,
|
|
2679
|
+
updated_at: message.created_at,
|
|
2680
|
+
signature: "",
|
|
2681
|
+
},
|
|
2682
|
+
online: false,
|
|
2683
|
+
last_seen_at: null,
|
|
2684
|
+
network_mode: "unknown",
|
|
2685
|
+
openclaw_bound: false,
|
|
2686
|
+
profile_version: PROFILE_VERSION,
|
|
2687
|
+
public_key_fingerprint: null,
|
|
2688
|
+
verified_profile: false,
|
|
2689
|
+
now: Date.now(),
|
|
2690
|
+
presence_ttl_ms: PRESENCE_TTL_MS,
|
|
2691
|
+
})
|
|
2692
|
+
);
|
|
2693
|
+
}
|
|
2694
|
+
|
|
2695
|
+
return [...summaries, ...messageOnly].sort((a, b) => {
|
|
2696
|
+
if (a.online !== b.online) {
|
|
2697
|
+
return a.online ? -1 : 1;
|
|
2698
|
+
}
|
|
2699
|
+
if (a.updated_at !== b.updated_at) {
|
|
2700
|
+
return b.updated_at - a.updated_at;
|
|
2701
|
+
}
|
|
2702
|
+
const byName = a.display_name.localeCompare(b.display_name);
|
|
2703
|
+
if (byName !== 0) {
|
|
2704
|
+
return byName;
|
|
2705
|
+
}
|
|
2706
|
+
return a.agent_id.localeCompare(b.agent_id);
|
|
2707
|
+
});
|
|
2708
|
+
}
|
|
2709
|
+
|
|
2117
2710
|
private fingerprintPublicKey(publicKey: string): string {
|
|
2118
2711
|
const digest = createHash("sha256").update(publicKey, "utf8").digest("hex");
|
|
2119
2712
|
return `${digest.slice(0, 12)}:${digest.slice(-8)}`;
|
|
@@ -2122,6 +2715,22 @@ export class LocalNodeService {
|
|
|
2122
2715
|
private getOnboardingSummary() {
|
|
2123
2716
|
const summary = this.getIntegrationSummary();
|
|
2124
2717
|
const publicEnabled = Boolean(this.profile?.public_enabled);
|
|
2718
|
+
const nextSteps: string[] = [];
|
|
2719
|
+
if (!String(this.profile?.display_name || "").trim()) {
|
|
2720
|
+
nextSteps.push("Update display name in Profile page");
|
|
2721
|
+
}
|
|
2722
|
+
if (!publicEnabled) {
|
|
2723
|
+
nextSteps.push("Enable Public Enabled in Profile");
|
|
2724
|
+
}
|
|
2725
|
+
if (!summary.running) {
|
|
2726
|
+
nextSteps.push("Start broadcast in Network");
|
|
2727
|
+
}
|
|
2728
|
+
if (!summary.discoverable) {
|
|
2729
|
+
nextSteps.push("Announce node once after the network is running");
|
|
2730
|
+
}
|
|
2731
|
+
if (nextSteps.length === 0) {
|
|
2732
|
+
nextSteps.push("Node is public and discoverable");
|
|
2733
|
+
}
|
|
2125
2734
|
return {
|
|
2126
2735
|
first_run: Boolean(
|
|
2127
2736
|
this.initState.social_auto_created ||
|
|
@@ -2133,10 +2742,7 @@ export class LocalNodeService {
|
|
|
2133
2742
|
mode: this.networkMode,
|
|
2134
2743
|
public_enabled: publicEnabled,
|
|
2135
2744
|
can_enable_public_discovery: !publicEnabled,
|
|
2136
|
-
next_steps:
|
|
2137
|
-
"Update display name in Profile page",
|
|
2138
|
-
"Export social.md from Social Config",
|
|
2139
|
-
],
|
|
2745
|
+
next_steps: nextSteps,
|
|
2140
2746
|
};
|
|
2141
2747
|
}
|
|
2142
2748
|
|
|
@@ -2161,7 +2767,7 @@ export class LocalNodeService {
|
|
|
2161
2767
|
};
|
|
2162
2768
|
}
|
|
2163
2769
|
return {
|
|
2164
|
-
mode:
|
|
2770
|
+
mode: DEFAULT_NETWORK_MODE,
|
|
2165
2771
|
short_label: "Relay preview",
|
|
2166
2772
|
summary: "Uses the public relay preview room so public nodes can find each other across the internet.",
|
|
2167
2773
|
};
|
|
@@ -2191,14 +2797,14 @@ export class LocalNodeService {
|
|
|
2191
2797
|
this.socialConfig.network.mode ||
|
|
2192
2798
|
(modeEnv === "local" || modeEnv === "lan" || modeEnv === "global-preview"
|
|
2193
2799
|
? modeEnv
|
|
2194
|
-
:
|
|
2800
|
+
: DEFAULT_NETWORK_MODE);
|
|
2195
2801
|
|
|
2196
2802
|
this.networkMode = resolvedMode;
|
|
2197
|
-
this.networkNamespace = this.socialConfig.network.namespace || process.env.NETWORK_NAMESPACE ||
|
|
2198
|
-
this.networkPort = Number(this.socialConfig.network.port || process.env.NETWORK_PORT ||
|
|
2803
|
+
this.networkNamespace = this.socialConfig.network.namespace || process.env.NETWORK_NAMESPACE || DEFAULT_NETWORK_NAMESPACE;
|
|
2804
|
+
this.networkPort = Number(this.socialConfig.network.port || process.env.NETWORK_PORT || DEFAULT_NETWORK_PORT);
|
|
2199
2805
|
|
|
2200
|
-
const builtInGlobalSignalingUrls = [
|
|
2201
|
-
const builtInGlobalRoom =
|
|
2806
|
+
const builtInGlobalSignalingUrls = [DEFAULT_GLOBAL_SIGNALING_URL];
|
|
2807
|
+
const builtInGlobalRoom = DEFAULT_GLOBAL_ROOM;
|
|
2202
2808
|
|
|
2203
2809
|
const signalingUrlsSocial = dedupeStrings(this.socialConfig.network.signaling_urls || []);
|
|
2204
2810
|
const signalingUrlSocial = String(this.socialConfig.network.signaling_url || "").trim();
|
|
@@ -2223,8 +2829,8 @@ export class LocalNodeService {
|
|
|
2223
2829
|
signalingUrls = builtInGlobalSignalingUrls;
|
|
2224
2830
|
signalingSource = "built-in-defaults:global-preview.signaling_urls";
|
|
2225
2831
|
} else {
|
|
2226
|
-
signalingUrls = [
|
|
2227
|
-
signalingSource =
|
|
2832
|
+
signalingUrls = [DEFAULT_GLOBAL_SIGNALING_URL];
|
|
2833
|
+
signalingSource = `default:${DEFAULT_GLOBAL_SIGNALING_URL}`;
|
|
2228
2834
|
}
|
|
2229
2835
|
|
|
2230
2836
|
const roomSocial = String(this.socialConfig.network.room || "").trim();
|
|
@@ -2233,14 +2839,14 @@ export class LocalNodeService {
|
|
|
2233
2839
|
roomSocial ||
|
|
2234
2840
|
roomEnv ||
|
|
2235
2841
|
(this.networkMode === "global-preview" ? builtInGlobalRoom : "") ||
|
|
2236
|
-
|
|
2842
|
+
DEFAULT_GLOBAL_ROOM;
|
|
2237
2843
|
const roomSource = roomSocial
|
|
2238
2844
|
? "social.md:network.room"
|
|
2239
2845
|
: roomEnv
|
|
2240
2846
|
? "env:WEBRTC_ROOM"
|
|
2241
2847
|
: this.networkMode === "global-preview"
|
|
2242
2848
|
? "built-in-defaults:global-preview.room"
|
|
2243
|
-
:
|
|
2849
|
+
: `default:${DEFAULT_GLOBAL_ROOM}`;
|
|
2244
2850
|
|
|
2245
2851
|
const seedPeersSocial = dedupeStrings(this.socialConfig.network.seed_peers || []);
|
|
2246
2852
|
const seedPeersEnv = dedupeStrings(parseListEnv(WEBRTC_SEED_PEERS));
|
|
@@ -2299,6 +2905,24 @@ export class LocalNodeService {
|
|
|
2299
2905
|
return this.messageGovernance.blocked_terms.some((term) => normalized.includes(term));
|
|
2300
2906
|
}
|
|
2301
2907
|
|
|
2908
|
+
private hasSocialMessage(messageId: string): boolean {
|
|
2909
|
+
return this.socialMessages.some((item) => item.message_id === messageId);
|
|
2910
|
+
}
|
|
2911
|
+
|
|
2912
|
+
private getReplayableSelfSocialMessages(now = Date.now()): SocialMessageRecord[] {
|
|
2913
|
+
const maxCount = Math.max(0, SOCIAL_MESSAGE_REPLAY_MAX_PER_BROADCAST);
|
|
2914
|
+
if (!this.identity || maxCount === 0) {
|
|
2915
|
+
return [];
|
|
2916
|
+
}
|
|
2917
|
+
return this.socialMessages
|
|
2918
|
+
.filter((item) => (
|
|
2919
|
+
item.agent_id === this.identity?.agent_id &&
|
|
2920
|
+
now - item.created_at <= SOCIAL_MESSAGE_REPLAY_WINDOW_MS
|
|
2921
|
+
))
|
|
2922
|
+
.sort((a, b) => a.created_at - b.created_at)
|
|
2923
|
+
.slice(-maxCount);
|
|
2924
|
+
}
|
|
2925
|
+
|
|
2302
2926
|
private hasRecentDuplicateMessage(agentId: string, body: string, topic: string, now = Date.now()): boolean {
|
|
2303
2927
|
return this.socialMessages.some((item) => (
|
|
2304
2928
|
item.agent_id === agentId &&
|
|
@@ -2608,15 +3232,15 @@ function renderBootstrapScript(payload: unknown): string {
|
|
|
2608
3232
|
if (data.pillBroadcastClassName) pillBroadcast.className = data.pillBroadcastClassName;
|
|
2609
3233
|
}
|
|
2610
3234
|
setHtml('overviewCards', data.overviewCardsHtml || '');
|
|
2611
|
-
setText('agentsCountHint', data.agentsCountHintText || '0
|
|
2612
|
-
setHtml('agentsWrap', data.agentsWrapHtml || '<div class="label">No discovered
|
|
3235
|
+
setText('agentsCountHint', data.agentsCountHintText || '0 nodes');
|
|
3236
|
+
setHtml('agentsWrap', data.agentsWrapHtml || '<div class="label">No discovered nodes yet.</div>');
|
|
2613
3237
|
})();
|
|
2614
3238
|
</script>`;
|
|
2615
3239
|
}
|
|
2616
3240
|
|
|
2617
3241
|
export async function main() {
|
|
2618
3242
|
const app = express();
|
|
2619
|
-
const port = Number(process.env.PORT ||
|
|
3243
|
+
const port = Number(process.env.PORT || defaults.ports.local_console);
|
|
2620
3244
|
const staticDir = resolveLocalConsoleStaticDir();
|
|
2621
3245
|
const staticIndexFile = resolve(staticDir, "index.html");
|
|
2622
3246
|
|
|
@@ -2691,6 +3315,10 @@ export async function main() {
|
|
|
2691
3315
|
sendOk(res, node.getNetworkStats());
|
|
2692
3316
|
});
|
|
2693
3317
|
|
|
3318
|
+
app.get("/api/skills", (_req, res) => {
|
|
3319
|
+
sendOk(res, node.getSkillsView());
|
|
3320
|
+
});
|
|
3321
|
+
|
|
2694
3322
|
app.post(
|
|
2695
3323
|
"/api/network/quick-connect-global-preview",
|
|
2696
3324
|
asyncRoute(async (req, res) => {
|
|
@@ -2820,9 +3448,10 @@ export async function main() {
|
|
|
2820
3448
|
|
|
2821
3449
|
app.post(
|
|
2822
3450
|
"/api/openclaw/bridge/skill-install",
|
|
2823
|
-
asyncRoute(async (
|
|
3451
|
+
asyncRoute(async (req, res) => {
|
|
2824
3452
|
try {
|
|
2825
|
-
const
|
|
3453
|
+
const skillName = String(req.body?.skill_name || "").trim();
|
|
3454
|
+
const result = await node.installOpenClawSkill(skillName || undefined);
|
|
2826
3455
|
sendOk(res, result, {
|
|
2827
3456
|
message: "OpenClaw skill installed",
|
|
2828
3457
|
});
|
|
@@ -2870,7 +3499,7 @@ export async function main() {
|
|
|
2870
3499
|
const agentId = req.params.agentId;
|
|
2871
3500
|
const profile = state.profiles[agentId];
|
|
2872
3501
|
if (!profile) {
|
|
2873
|
-
sendError(res, 404, "AGENT_NOT_FOUND", "
|
|
3502
|
+
sendError(res, 404, "AGENT_NOT_FOUND", "Node not found", { agent_id: agentId });
|
|
2874
3503
|
return;
|
|
2875
3504
|
}
|
|
2876
3505
|
|
|
@@ -2906,7 +3535,7 @@ export async function main() {
|
|
|
2906
3535
|
.join("");
|
|
2907
3536
|
const agentsWrapHtml =
|
|
2908
3537
|
discovered.length === 0
|
|
2909
|
-
? `<div class="label">No discovered
|
|
3538
|
+
? `<div class="label">No discovered nodes yet.</div>`
|
|
2910
3539
|
: `
|
|
2911
3540
|
<table class="table">
|
|
2912
3541
|
<thead><tr><th>Name</th><th>Agent ID</th><th>Status</th><th>Updated</th></tr></thead>
|
|
@@ -2942,7 +3571,7 @@ export async function main() {
|
|
|
2942
3571
|
pillBroadcastText: overview.broadcast_enabled ? "broadcast: running" : "broadcast: paused",
|
|
2943
3572
|
pillBroadcastClassName: `pill ${overview.broadcast_enabled ? "ok" : "warn"}`,
|
|
2944
3573
|
overviewCardsHtml,
|
|
2945
|
-
agentsCountHintText: `${discovered.length}
|
|
3574
|
+
agentsCountHintText: `${discovered.length} nodes discovered`,
|
|
2946
3575
|
agentsWrapHtml,
|
|
2947
3576
|
integrationStatusText: `Connected to SilicaClaw: ${integration.connected_to_silicaclaw ? "yes" : "no"} · Network mode: ${integration.network_mode || "-"} · Public discovery: ${integration.public_enabled ? "enabled" : "disabled"}`,
|
|
2948
3577
|
integrationStatusClassName: `integration-strip ${integration.connected_to_silicaclaw && integration.public_enabled ? "ok" : "warn"}`,
|