@elizaos/app-core 2.0.0-beta.3 → 2.0.3-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1533) hide show
  1. package/agent-bridge.d.ts +27 -0
  2. package/agent-bridge.d.ts.map +1 -0
  3. package/agent-bridge.js +26 -0
  4. package/api/__tests__/sandbox-test-helpers.js +1 -1
  5. package/api/auth/audit.js +1 -1
  6. package/api/auth/auth-context.js +1 -1
  7. package/api/auth/bootstrap-token.js +2 -2
  8. package/api/auth/index.d.ts +9 -10
  9. package/api/auth/index.d.ts.map +1 -1
  10. package/api/auth/index.js +9 -10
  11. package/api/auth/passwords.js +2 -2
  12. package/api/auth/sensitive-rate-limit.d.ts +1 -4
  13. package/api/auth/sensitive-rate-limit.d.ts.map +1 -1
  14. package/api/auth/sensitive-rate-limit.js +6 -6
  15. package/api/auth/sessions.js +2 -2
  16. package/api/auth-bootstrap-routes.d.ts +6 -13
  17. package/api/auth-bootstrap-routes.d.ts.map +1 -1
  18. package/api/auth-bootstrap-routes.js +14 -27
  19. package/api/auth-pairing-routes.d.ts +17 -0
  20. package/api/auth-pairing-routes.d.ts.map +1 -0
  21. package/api/auth-pairing-routes.js +300 -0
  22. package/api/auth-session-routes.d.ts.map +1 -1
  23. package/api/auth-session-routes.js +36 -15
  24. package/api/auth.d.ts +12 -19
  25. package/api/auth.d.ts.map +1 -1
  26. package/api/auth.js +32 -27
  27. package/api/automations-compat-routes.d.ts.map +1 -1
  28. package/api/automations-compat-routes.js +5 -5
  29. package/api/background-tasks-routes.d.ts +4 -0
  30. package/api/background-tasks-routes.d.ts.map +1 -0
  31. package/api/background-tasks-routes.js +63 -0
  32. package/api/catalog-routes.js +3 -3
  33. package/api/cloud-pair-route.d.ts +26 -0
  34. package/api/cloud-pair-route.d.ts.map +1 -0
  35. package/api/cloud-pair-route.js +222 -0
  36. package/api/cloud-voice-routes.d.ts +52 -0
  37. package/api/cloud-voice-routes.d.ts.map +1 -0
  38. package/api/cloud-voice-routes.js +50 -0
  39. package/api/compat-route-shared.d.ts +2 -2
  40. package/api/compat-route-shared.d.ts.map +1 -1
  41. package/api/compat-route-shared.js +11 -7
  42. package/api/credential-resolver.d.ts +2 -2
  43. package/api/credential-resolver.d.ts.map +1 -1
  44. package/api/credential-resolver.js +8 -2
  45. package/api/database-rows-compat-routes.d.ts.map +1 -1
  46. package/api/database-rows-compat-routes.js +69 -31
  47. package/api/dev-boot-history.d.ts +26 -0
  48. package/api/dev-boot-history.d.ts.map +1 -0
  49. package/api/dev-boot-history.js +69 -0
  50. package/api/dev-compat-routes.d.ts +5 -0
  51. package/api/dev-compat-routes.d.ts.map +1 -1
  52. package/api/dev-compat-routes.js +127 -4
  53. package/api/dev-console-log.d.ts +2 -2
  54. package/api/dev-console-log.d.ts.map +1 -1
  55. package/api/dev-console-log.js +8 -5
  56. package/api/dev-route-catalog.d.ts +58 -0
  57. package/api/dev-route-catalog.d.ts.map +1 -0
  58. package/api/dev-route-catalog.js +457 -0
  59. package/api/dev-stack.d.ts.map +1 -1
  60. package/api/dev-stack.js +6 -9
  61. package/api/first-run-routes.d.ts +4 -0
  62. package/api/first-run-routes.d.ts.map +1 -0
  63. package/api/first-run-routes.js +208 -0
  64. package/api/first-run-tts-route.d.ts +19 -0
  65. package/api/first-run-tts-route.d.ts.map +1 -0
  66. package/api/first-run-tts-route.js +59 -0
  67. package/api/internal-routes.d.ts +23 -0
  68. package/api/internal-routes.d.ts.map +1 -0
  69. package/api/internal-routes.js +203 -0
  70. package/api/ios-local-agent-transport.d.ts +36 -0
  71. package/api/ios-local-agent-transport.d.ts.map +1 -0
  72. package/api/ios-local-agent-transport.js +566 -0
  73. package/api/onboarding-voice-lines.d.ts +23 -0
  74. package/api/onboarding-voice-lines.d.ts.map +1 -0
  75. package/api/onboarding-voice-lines.js +8 -0
  76. package/api/perf-instrument.d.ts +43 -0
  77. package/api/perf-instrument.d.ts.map +1 -0
  78. package/api/perf-instrument.js +113 -0
  79. package/api/response.d.ts.map +1 -1
  80. package/api/response.js +14 -14
  81. package/api/runtime-mode-routes.d.ts.map +1 -1
  82. package/api/runtime-mode-routes.js +2 -2
  83. package/api/secrets-inventory-routes.js +2 -2
  84. package/api/secrets-manager-routes.d.ts +1 -1
  85. package/api/secrets-manager-routes.d.ts.map +1 -1
  86. package/api/secrets-manager-routes.js +9 -10
  87. package/api/sensitive-request-routes.js +5 -5
  88. package/api/server-cors.d.ts.map +1 -1
  89. package/api/server-cors.js +13 -2
  90. package/api/server-first-run-helpers.d.ts +26 -0
  91. package/api/server-first-run-helpers.d.ts.map +1 -0
  92. package/api/server-first-run-helpers.js +271 -0
  93. package/api/server-security.js +1 -1
  94. package/api/server-startup.d.ts.map +1 -1
  95. package/api/server-startup.js +3 -4
  96. package/api/server-wallet-trade.js +1 -1
  97. package/api/server.d.ts +4 -4
  98. package/api/server.d.ts.map +1 -1
  99. package/api/server.js +222 -88
  100. package/api/setup-contract.d.ts +63 -0
  101. package/api/setup-contract.d.ts.map +1 -0
  102. package/api/setup-contract.js +39 -0
  103. package/api/training-benchmarks.d.ts +97 -0
  104. package/api/training-benchmarks.d.ts.map +1 -0
  105. package/api/training-benchmarks.js +307 -0
  106. package/api/workbench-compat-routes.js +2 -2
  107. package/benchmark/cerebras-autowire.d.ts +28 -0
  108. package/benchmark/cerebras-autowire.d.ts.map +1 -0
  109. package/benchmark/cerebras-autowire.js +62 -0
  110. package/benchmark/lifeops-bench-handler.d.ts +36 -0
  111. package/benchmark/lifeops-bench-handler.d.ts.map +1 -1
  112. package/benchmark/lifeops-bench-handler.js +63 -1
  113. package/benchmark/lifeops-fake-backend.d.ts +39 -0
  114. package/benchmark/lifeops-fake-backend.d.ts.map +1 -1
  115. package/benchmark/lifeops-fake-backend.js +993 -21
  116. package/benchmark/mock-plugin.d.ts.map +1 -1
  117. package/benchmark/mock-plugin.js +0 -24
  118. package/benchmark/plugin.d.ts +2 -1
  119. package/benchmark/plugin.d.ts.map +1 -1
  120. package/benchmark/plugin.js +989 -68
  121. package/benchmark/replay-capture.d.ts +2 -2
  122. package/benchmark/replay-capture.d.ts.map +1 -1
  123. package/benchmark/replay-capture.js +3 -3
  124. package/benchmark/server-utils.d.ts +162 -9
  125. package/benchmark/server-utils.d.ts.map +1 -1
  126. package/benchmark/server-utils.js +625 -62
  127. package/benchmark/server.d.ts.map +1 -1
  128. package/benchmark/server.js +1962 -118
  129. package/boot-profile.d.ts +3 -0
  130. package/boot-profile.d.ts.map +1 -0
  131. package/boot-profile.js +30 -0
  132. package/browser.d.ts +23 -1
  133. package/browser.d.ts.map +1 -1
  134. package/browser.js +20 -1
  135. package/cli/argv.js +1 -1
  136. package/cli/banner.js +1 -1
  137. package/cli/command-format.js +2 -2
  138. package/cli/doctor/checks.d.ts.map +1 -1
  139. package/cli/doctor/checks.js +6 -6
  140. package/cli/plugins-cli.d.ts.map +1 -1
  141. package/cli/plugins-cli.js +77 -32
  142. package/cli/profile.d.ts.map +1 -1
  143. package/cli/profile.js +5 -4
  144. package/cli/program/build-program.js +4 -4
  145. package/cli/program/command-registry.d.ts.map +1 -1
  146. package/cli/program/command-registry.js +13 -11
  147. package/cli/program/help.js +5 -5
  148. package/cli/program/preaction.js +5 -5
  149. package/cli/program/register.auth.d.ts.map +1 -1
  150. package/cli/program/register.auth.js +6 -12
  151. package/cli/program/register.capability-router.d.ts +29 -0
  152. package/cli/program/register.capability-router.d.ts.map +1 -0
  153. package/cli/program/register.capability-router.js +568 -0
  154. package/cli/program/register.config.js +1 -1
  155. package/cli/program/register.configure.d.ts.map +1 -1
  156. package/cli/program/register.configure.js +1 -1
  157. package/cli/program/register.dashboard.d.ts.map +1 -1
  158. package/cli/program/register.dashboard.js +6 -7
  159. package/cli/program/register.db.d.ts.map +1 -1
  160. package/cli/program/register.db.js +3 -4
  161. package/cli/program/register.doctor.js +7 -7
  162. package/cli/program/register.setup.d.ts.map +1 -1
  163. package/cli/program/register.setup.js +14 -10
  164. package/cli/program/register.start.d.ts.map +1 -1
  165. package/cli/program/register.start.js +5 -3
  166. package/cli/program/register.subclis.js +3 -3
  167. package/cli/program/register.update.d.ts +6 -0
  168. package/cli/program/register.update.d.ts.map +1 -1
  169. package/cli/program/register.update.js +58 -6
  170. package/cli/program.js +1 -1
  171. package/cli/run-main.js +4 -4
  172. package/config/app-config.d.ts +2 -0
  173. package/config/app-config.d.ts.map +1 -0
  174. package/config/app-config.js +1 -0
  175. package/connectors/capacitor-jsc.d.ts.map +1 -1
  176. package/connectors/capacitor-jsc.js +16 -10
  177. package/connectors/capacitor-quickjs.d.ts.map +1 -1
  178. package/connectors/capacitor-quickjs.js +18 -13
  179. package/connectors/capacitor-sqlite.d.ts.map +1 -1
  180. package/connectors/capacitor-sqlite.js +27 -12
  181. package/dispatch/approval-queue.d.ts +37 -0
  182. package/dispatch/approval-queue.d.ts.map +1 -0
  183. package/dispatch/approval-queue.js +25 -0
  184. package/dispatch/channel-registry.d.ts +30 -0
  185. package/dispatch/channel-registry.d.ts.map +1 -0
  186. package/dispatch/channel-registry.js +22 -0
  187. package/dispatch/connector-registry.d.ts +39 -0
  188. package/dispatch/connector-registry.d.ts.map +1 -0
  189. package/dispatch/connector-registry.js +24 -0
  190. package/dispatch/index.d.ts +14 -0
  191. package/dispatch/index.d.ts.map +1 -0
  192. package/dispatch/index.js +13 -0
  193. package/dispatch/send-policy.d.ts +36 -0
  194. package/dispatch/send-policy.d.ts.map +1 -0
  195. package/dispatch/send-policy.js +16 -0
  196. package/entry.js +28 -11
  197. package/first-run/first-run-config.d.ts +55 -0
  198. package/first-run/first-run-config.d.ts.map +1 -0
  199. package/first-run/first-run-config.js +178 -0
  200. package/first-run/runtime-target.d.ts +4 -0
  201. package/first-run/runtime-target.d.ts.map +1 -0
  202. package/first-run/runtime-target.js +13 -0
  203. package/index.d.ts +16 -3
  204. package/index.d.ts.map +1 -1
  205. package/index.js +57 -33
  206. package/package.json +159 -50
  207. package/packaging/debian/apt-repo-config/README.md +18 -0
  208. package/packaging/debian/apt-repo-config/conf/distributions +11 -0
  209. package/packaging/flatpak/README.md +26 -16
  210. package/packaging/flatpak/ai.elizaos.App.metainfo.xml +17 -12
  211. package/packaging/flatpak/ai.elizaos.App.store.yml +5 -5
  212. package/packaging/flatpak/ai.elizaos.App.yml +10 -24
  213. package/packaging/flatpak/elizaos-app-wrapper.store.sh +2 -2
  214. package/packaging/flatpak/generate-sources.sh +74 -0
  215. package/packaging/flatpak/node-sources.json +7930 -0
  216. package/packaging/inno/build-inno.ps1 +34 -9
  217. package/packaging/msix/AppxManifest.store.xml +1 -1
  218. package/packaging/msix/README.md +39 -19
  219. package/packaging/msix/build-msix.ps1 +44 -14
  220. package/packaging/snap/snapcraft.yaml +22 -21
  221. package/packaging/test-packaging.sh +2 -2
  222. package/permissions/types.d.ts +1 -1
  223. package/permissions/types.js +1 -1
  224. package/platform/elizaos-agent-browser-stub.d.ts +144 -0
  225. package/platform/elizaos-agent-browser-stub.d.ts.map +1 -0
  226. package/platform/elizaos-agent-browser-stub.js +158 -0
  227. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts +34 -0
  228. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts.map +1 -0
  229. package/platform/elizaos-plugin-elizacloud-browser-stub.js +51 -0
  230. package/platform/empty-node-module.d.ts +148 -0
  231. package/platform/empty-node-module.d.ts.map +1 -1
  232. package/platform/empty-node-module.js +140 -3
  233. package/platform/ios-runtime-backends.d.ts +83 -0
  234. package/platform/ios-runtime-backends.d.ts.map +1 -0
  235. package/platform/ios-runtime-backends.js +133 -0
  236. package/platform/ios-runtime-bridge.d.ts +15 -0
  237. package/platform/ios-runtime-bridge.d.ts.map +1 -0
  238. package/platform/ios-runtime-bridge.js +527 -0
  239. package/platform/native-library-policy.d.ts +23 -0
  240. package/platform/native-library-policy.d.ts.map +1 -0
  241. package/platform/native-library-policy.js +112 -0
  242. package/platform/native-plugin-entrypoints.d.ts +19 -0
  243. package/platform/native-plugin-entrypoints.d.ts.map +1 -0
  244. package/platform/native-plugin-entrypoints.js +29 -0
  245. package/platforms/android/README.md +68 -10
  246. package/platforms/android/app/build.gradle +268 -3
  247. package/platforms/android/app/capacitor.build.gradle +18 -1
  248. package/platforms/android/app/proguard-rules.pro +17 -2
  249. package/platforms/android/app/src/androidTest/java/ai/elizaos/app/ElizaOsInstrumentedTest.java +1 -1
  250. package/platforms/android/app/src/main/AndroidManifest.xml +335 -18
  251. package/platforms/android/app/src/main/assets/runners/eliza-tasks.js +177 -0
  252. package/platforms/android/app/src/main/elizavoice-jni/CMakeLists.txt +100 -0
  253. package/platforms/android/app/src/main/elizavoice-jni/elizavoice-jni.cpp +1485 -0
  254. package/platforms/android/app/src/main/java/ai/elizaos/app/AgentPlugin.java +111 -171
  255. package/platforms/android/app/src/main/java/ai/elizaos/app/AndroidVirtualizationBridge.java +284 -0
  256. package/platforms/android/app/src/main/java/ai/elizaos/app/BatteryOptimizationPlugin.java +95 -0
  257. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAccessibilityService.java +55 -0
  258. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +1255 -141
  259. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAndroidSystemBridge.java +83 -0
  260. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAssistActivity.java +50 -1
  261. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBionicInferenceServer.java +400 -0
  262. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBootReceiver.java +90 -8
  263. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBrowserActivity.java +2 -2
  264. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCalendarActivity.java +1 -1
  265. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCameraActivity.java +1 -1
  266. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaClockActivity.java +2 -2
  267. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaContactsActivity.java +1 -1
  268. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaDialActivity.java +1 -1
  269. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaInCallService.java +1 -1
  270. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaMmsReceiver.java +1 -1
  271. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +22 -0
  272. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNotificationListenerService.java +45 -0
  273. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaQuickActionsWidgetProvider.java +68 -0
  274. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaShareActivity.java +132 -0
  275. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsComposeActivity.java +1 -1
  276. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsGatewayService.java +268 -0
  277. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsReceiver.java +12 -1
  278. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaTasksWorker.java +194 -0
  279. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceCaptureService.java +198 -0
  280. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceNative.java +220 -0
  281. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +498 -0
  282. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceTileService.java +39 -0
  283. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaWorkScheduler.java +60 -0
  284. package/platforms/android/app/src/main/java/ai/elizaos/app/GatewayConnectionService.java +53 -19
  285. package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +160 -33
  286. package/platforms/android/app/src/main/java/ai/elizaos/app/ResourceProbePlugin.java +169 -0
  287. package/platforms/android/app/src/main/java/ai/elizaos/app/VoiceCapturePlugin.java +119 -0
  288. package/platforms/android/app/src/main/res/drawable/eliza_widget_background.xml +10 -0
  289. package/platforms/android/app/src/main/res/drawable/eliza_widget_button_background.xml +13 -0
  290. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  291. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  292. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  293. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  294. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  295. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  296. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  297. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  298. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  299. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  300. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  301. package/platforms/android/app/src/main/res/layout/eliza_quick_actions_widget.xml +86 -0
  302. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +2 -1
  303. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +2 -1
  304. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  305. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  306. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png +0 -0
  307. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  308. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  309. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  310. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png +0 -0
  311. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  312. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  313. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  314. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png +0 -0
  315. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  316. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  317. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  318. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png +0 -0
  319. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  320. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  321. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  322. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png +0 -0
  323. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  324. package/platforms/android/app/src/main/res/values/android_app_actions.xml +48 -0
  325. package/platforms/android/app/src/main/res/values/colors.xml +8 -0
  326. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +2 -2
  327. package/platforms/android/app/src/main/res/values/strings.xml +2 -2
  328. package/platforms/android/app/src/main/res/values/styles.xml +25 -1
  329. package/platforms/android/app/src/main/res/xml/eliza_accessibility_service.xml +9 -0
  330. package/platforms/android/app/src/main/res/xml/eliza_quick_actions_widget.xml +13 -0
  331. package/platforms/android/app/src/main/res/xml/shortcuts.xml +121 -0
  332. package/platforms/android/build.gradle +2 -2
  333. package/platforms/android/capacitor-cordova-android-plugins/build.gradle +9 -3
  334. package/platforms/android/capacitor-cordova-android-plugins/cordova.variables.gradle +6 -2
  335. package/platforms/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml +7 -2
  336. package/platforms/android/capacitor-cordova-android-plugins/src/main/java/.gitkeep +0 -1
  337. package/platforms/android/capacitor.settings.gradle +66 -16
  338. package/platforms/android/gradle.properties +1 -0
  339. package/platforms/android/update-manifest/generate-manifest.mjs +97 -0
  340. package/platforms/android/update-manifest/schema.json +26 -0
  341. package/platforms/apple-store-entitlements.reviewed.json +155 -0
  342. package/platforms/electrobun/.generated/brand-config.json +3 -2
  343. package/platforms/electrobun/LICENSE +21 -0
  344. package/platforms/electrobun/README.md +15 -1
  345. package/platforms/electrobun/assets/appIcon.icns +0 -0
  346. package/platforms/electrobun/assets/appIcon.ico +0 -0
  347. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128.png +0 -0
  348. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128@2x.png +0 -0
  349. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16.png +0 -0
  350. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16@2x.png +0 -0
  351. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256.png +0 -0
  352. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256@2x.png +0 -0
  353. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32.png +0 -0
  354. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32@2x.png +0 -0
  355. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512.png +0 -0
  356. package/platforms/electrobun/assets/brand-config.json +6 -6
  357. package/platforms/electrobun/biome.json +9 -9
  358. package/platforms/electrobun/docs/capability-collapse-matrix.json +318 -0
  359. package/platforms/electrobun/docs/capability-collapse-matrix.md +129 -0
  360. package/platforms/electrobun/docs/capability-routing.md +86 -0
  361. package/platforms/electrobun/docs/convergence-audit.json +3505 -0
  362. package/platforms/electrobun/docs/convergence-audit.md +694 -0
  363. package/platforms/electrobun/docs/database-boot-policy.md +90 -0
  364. package/platforms/electrobun/docs/riscv64-port.md +175 -0
  365. package/platforms/electrobun/docs/startup-first-run-cleanup.md +18 -0
  366. package/platforms/electrobun/docs/trace-first-annotations.md +52 -0
  367. package/platforms/electrobun/docs/ui-boundary-audit.json +580 -0
  368. package/platforms/electrobun/docs/ui-boundary-audit.md +257 -0
  369. package/platforms/electrobun/electrobun.config.ts +592 -364
  370. package/platforms/electrobun/entitlements/JUSTIFICATIONS.md +141 -0
  371. package/platforms/electrobun/entitlements/README.md +34 -6
  372. package/platforms/electrobun/entitlements/mas-bun.entitlements +15 -0
  373. package/platforms/electrobun/entitlements/mas.entitlements +6 -4
  374. package/platforms/electrobun/native/macos/window-effects.mm +1522 -0
  375. package/platforms/electrobun/package.json +18 -12
  376. package/platforms/electrobun/remotes/fs/README.md +70 -0
  377. package/platforms/electrobun/remotes/fs/electrobun.config.ts +38 -0
  378. package/platforms/electrobun/remotes/fs/package.json +12 -0
  379. package/platforms/electrobun/remotes/fs/plugin.json +25 -0
  380. package/platforms/electrobun/remotes/fs/src/bun/errors.ts +57 -0
  381. package/platforms/electrobun/remotes/fs/src/bun/file-limits.ts +50 -0
  382. package/platforms/electrobun/remotes/fs/src/bun/fs-service.ts +389 -0
  383. package/platforms/electrobun/remotes/fs/src/bun/path-guard.ts +270 -0
  384. package/platforms/electrobun/remotes/fs/src/bun/protocol.ts +149 -0
  385. package/platforms/electrobun/remotes/fs/src/bun/worker.ts +174 -0
  386. package/platforms/electrobun/remotes/fs/src/dev/phase5-smoke.ts +171 -0
  387. package/platforms/electrobun/remotes/fs/src/web/index.html +8 -0
  388. package/platforms/electrobun/remotes/git/README.md +75 -0
  389. package/platforms/electrobun/remotes/git/electrobun.config.ts +44 -0
  390. package/platforms/electrobun/remotes/git/package.json +12 -0
  391. package/platforms/electrobun/remotes/git/plugin.json +31 -0
  392. package/platforms/electrobun/remotes/git/src/bun/errors.ts +69 -0
  393. package/platforms/electrobun/remotes/git/src/bun/git-command.ts +156 -0
  394. package/platforms/electrobun/remotes/git/src/bun/git-service.ts +446 -0
  395. package/platforms/electrobun/remotes/git/src/bun/operation-history.ts +124 -0
  396. package/platforms/electrobun/remotes/git/src/bun/protocol.ts +252 -0
  397. package/platforms/electrobun/remotes/git/src/bun/worker.ts +316 -0
  398. package/platforms/electrobun/remotes/git/src/dev/phase7-smoke.ts +141 -0
  399. package/platforms/electrobun/remotes/git/src/web/index.html +8 -0
  400. package/platforms/electrobun/remotes/local-model/README.md +138 -0
  401. package/platforms/electrobun/remotes/local-model/electrobun.config.ts +46 -0
  402. package/platforms/electrobun/remotes/local-model/package.json +12 -0
  403. package/platforms/electrobun/remotes/local-model/plugin.json +33 -0
  404. package/platforms/electrobun/remotes/local-model/src/bun/download-state.ts +115 -0
  405. package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +405 -0
  406. package/platforms/electrobun/remotes/local-model/src/bun/errors.ts +74 -0
  407. package/platforms/electrobun/remotes/local-model/src/bun/hf-eliza1-client.ts +169 -0
  408. package/platforms/electrobun/remotes/local-model/src/bun/local-inference-api-client.ts +245 -0
  409. package/platforms/electrobun/remotes/local-model/src/bun/model-service.ts +490 -0
  410. package/platforms/electrobun/remotes/local-model/src/bun/protocol.ts +301 -0
  411. package/platforms/electrobun/remotes/local-model/src/bun/worker.ts +248 -0
  412. package/platforms/electrobun/remotes/local-model/src/dev/phase8-smoke.ts +116 -0
  413. package/platforms/electrobun/remotes/local-model/src/web/index.html +13 -0
  414. package/platforms/electrobun/remotes/pty/README.md +65 -0
  415. package/platforms/electrobun/remotes/pty/electrobun.config.ts +47 -0
  416. package/platforms/electrobun/remotes/pty/package.json +12 -0
  417. package/platforms/electrobun/remotes/pty/plugin.json +34 -0
  418. package/platforms/electrobun/remotes/pty/src/bun/errors.ts +57 -0
  419. package/platforms/electrobun/remotes/pty/src/bun/output-buffer.ts +127 -0
  420. package/platforms/electrobun/remotes/pty/src/bun/protocol.ts +192 -0
  421. package/platforms/electrobun/remotes/pty/src/bun/pty-service.ts +562 -0
  422. package/platforms/electrobun/remotes/pty/src/bun/worker.ts +218 -0
  423. package/platforms/electrobun/remotes/pty/src/dev/phase6-smoke.ts +127 -0
  424. package/platforms/electrobun/remotes/pty/src/web/index.html +8 -0
  425. package/platforms/electrobun/remotes/runtime/README.md +370 -0
  426. package/platforms/electrobun/remotes/runtime/electrobun.config.ts +48 -0
  427. package/platforms/electrobun/remotes/runtime/package.json +14 -0
  428. package/platforms/electrobun/remotes/runtime/plugin.json +30 -0
  429. package/platforms/electrobun/remotes/runtime/src/bun/api-client.ts +620 -0
  430. package/platforms/electrobun/remotes/runtime/src/bun/errors.ts +45 -0
  431. package/platforms/electrobun/remotes/runtime/src/bun/log-buffer.ts +33 -0
  432. package/platforms/electrobun/remotes/runtime/src/bun/protocol.ts +366 -0
  433. package/platforms/electrobun/remotes/runtime/src/bun/route-discovery.ts +419 -0
  434. package/platforms/electrobun/remotes/runtime/src/bun/runtime-manager.ts +423 -0
  435. package/platforms/electrobun/remotes/runtime/src/bun/sse-parser.ts +99 -0
  436. package/platforms/electrobun/remotes/runtime/src/bun/stream-manager.ts +887 -0
  437. package/platforms/electrobun/remotes/runtime/src/bun/worker.ts +1231 -0
  438. package/platforms/electrobun/remotes/runtime/src/dev/phase1-smoke.ts +34 -0
  439. package/platforms/electrobun/remotes/runtime/src/dev/phase2-smoke.ts +86 -0
  440. package/platforms/electrobun/remotes/runtime/src/dev/phase3-smoke.ts +141 -0
  441. package/platforms/electrobun/remotes/runtime/src/web/index.css +187 -0
  442. package/platforms/electrobun/remotes/runtime/src/web/index.html +76 -0
  443. package/platforms/electrobun/remotes/runtime/src/web/index.ts +192 -0
  444. package/platforms/electrobun/remotes/surface/README.md +201 -0
  445. package/platforms/electrobun/remotes/surface/electrobun.config.ts +38 -0
  446. package/platforms/electrobun/remotes/surface/package.json +12 -0
  447. package/platforms/electrobun/remotes/surface/plugin.json +28 -0
  448. package/platforms/electrobun/remotes/surface/src/bun/worker.ts +132 -0
  449. package/platforms/electrobun/remotes/surface/src/dev/phase4-smoke.ts +566 -0
  450. package/platforms/electrobun/remotes/surface/src/protocol/event-types.ts +84 -0
  451. package/platforms/electrobun/remotes/surface/src/protocol/runtime-client.ts +673 -0
  452. package/platforms/electrobun/remotes/surface/src/web/app.ts +595 -0
  453. package/platforms/electrobun/remotes/surface/src/web/index.css +460 -0
  454. package/platforms/electrobun/remotes/surface/src/web/index.html +466 -0
  455. package/platforms/electrobun/remotes/surface/src/web/index.ts +5 -0
  456. package/platforms/electrobun/remotes/surface/src/web/render.ts +455 -0
  457. package/platforms/electrobun/remotes/surface/src/web/state.ts +427 -0
  458. package/platforms/electrobun/scripts/build-macos-effects.sh +4 -0
  459. package/platforms/electrobun/scripts/ensure-build-folder.ts +28 -0
  460. package/platforms/electrobun/scripts/ensure-whisper-gguf.sh +55 -0
  461. package/platforms/electrobun/scripts/ensure-whisper-model.sh +22 -80
  462. package/platforms/electrobun/scripts/generate-convergence-audit.ts +1203 -0
  463. package/platforms/electrobun/scripts/local-adhoc-sign-macos.ts +159 -159
  464. package/platforms/electrobun/scripts/postwrap-diagnostics.ts +424 -339
  465. package/platforms/electrobun/scripts/postwrap-sign-runtime-macos.ts +302 -271
  466. package/platforms/electrobun/scripts/smoke-test-windows.ps1 +17 -16
  467. package/platforms/electrobun/scripts/smoke-test.sh +5 -7
  468. package/platforms/electrobun/scripts/sync-web-assets.mjs +13 -13
  469. package/platforms/electrobun/scripts/verify-rpc-handlers.ts +109 -110
  470. package/platforms/electrobun/scripts/verify-windows-installer-proof.ps1 +3 -8
  471. package/platforms/electrobun/src/__stubs__/bun-ffi.ts +31 -31
  472. package/platforms/electrobun/src/__stubs__/electrobun-bun.ts +1 -1
  473. package/platforms/electrobun/src/agent-ready-state.ts +8 -8
  474. package/platforms/electrobun/src/agent-reset-from-main.test.ts +162 -0
  475. package/platforms/electrobun/src/agent-reset-from-main.ts +62 -62
  476. package/platforms/electrobun/src/agent-status-rpc.test.ts +95 -0
  477. package/platforms/electrobun/src/agent-status-rpc.ts +156 -0
  478. package/platforms/electrobun/src/api-base.test.ts +247 -0
  479. package/platforms/electrobun/src/api-base.ts +202 -93
  480. package/platforms/electrobun/src/application-menu-action-registry.ts +9 -9
  481. package/platforms/electrobun/src/application-menu.ts +348 -348
  482. package/platforms/electrobun/src/background-notice.ts +36 -36
  483. package/platforms/electrobun/src/boot-progress.test.ts +188 -0
  484. package/platforms/electrobun/src/boot-progress.ts +111 -0
  485. package/platforms/electrobun/src/brand-config.test.ts +39 -0
  486. package/platforms/electrobun/src/brand-config.ts +141 -129
  487. package/platforms/electrobun/src/bridge/browser-tabs-renderer-registry.ts +28 -28
  488. package/platforms/electrobun/src/bridge/electrobun-boot-config.ts +42 -0
  489. package/platforms/electrobun/src/bridge/electrobun-crypto-ready.ts +120 -0
  490. package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +342 -357
  491. package/platforms/electrobun/src/bridge/electrobun-stub.ts +13 -13
  492. package/platforms/electrobun/src/browser-workspace-bridge-server.ts +285 -243
  493. package/platforms/electrobun/src/cloud-auth-window.ts +136 -136
  494. package/platforms/electrobun/src/cloud-disconnect-from-main.ts +90 -90
  495. package/platforms/electrobun/src/config-and-auth-rpc.test.ts +256 -0
  496. package/platforms/electrobun/src/config-and-auth-rpc.ts +302 -0
  497. package/platforms/electrobun/src/conversations-and-character-rpc.test.ts +185 -0
  498. package/platforms/electrobun/src/conversations-and-character-rpc.ts +131 -0
  499. package/platforms/electrobun/src/dashboard-rpc.test.ts +200 -0
  500. package/platforms/electrobun/src/dashboard-rpc.ts +344 -0
  501. package/platforms/electrobun/src/database/database-lock.ts +141 -0
  502. package/platforms/electrobun/src/database/database-mode.ts +149 -0
  503. package/platforms/electrobun/src/database/database-recovery.ts +72 -0
  504. package/platforms/electrobun/src/database/database-snapshot.ts +190 -0
  505. package/platforms/electrobun/src/database/database.test.ts +196 -0
  506. package/platforms/electrobun/src/database/index.ts +5 -0
  507. package/platforms/electrobun/src/database/pglite-paths.ts +100 -0
  508. package/platforms/electrobun/src/desktop-deep-link-events.test.ts +30 -0
  509. package/platforms/electrobun/src/desktop-deep-link-events.ts +17 -0
  510. package/platforms/electrobun/src/desktop-http-request.test.ts +73 -73
  511. package/platforms/electrobun/src/desktop-http-request.ts +85 -85
  512. package/platforms/electrobun/src/desktop-pill-config.test.ts +27 -0
  513. package/platforms/electrobun/src/desktop-pill-config.ts +40 -0
  514. package/platforms/electrobun/src/desktop-test-bridge-server.ts +204 -204
  515. package/platforms/electrobun/src/desktop-tray-config.test.ts +87 -0
  516. package/platforms/electrobun/src/desktop-tray-config.ts +84 -0
  517. package/platforms/electrobun/src/devtools-layout.ts +41 -41
  518. package/platforms/electrobun/src/diagnostic-format.test.ts +71 -0
  519. package/platforms/electrobun/src/diagnostic-format.ts +75 -36
  520. package/platforms/electrobun/src/dynamic-view-rpc-schema.test.ts +37 -0
  521. package/platforms/electrobun/src/dynamic-views/README.md +44 -0
  522. package/platforms/electrobun/src/dynamic-views/demo/agent-run-trace.html +135 -0
  523. package/platforms/electrobun/src/dynamic-views/errors.ts +29 -0
  524. package/platforms/electrobun/src/dynamic-views/host.test.ts +353 -0
  525. package/platforms/electrobun/src/dynamic-views/host.ts +332 -0
  526. package/platforms/electrobun/src/dynamic-views/index.ts +57 -0
  527. package/platforms/electrobun/src/dynamic-views/kiosk-canvas.ts +89 -0
  528. package/platforms/electrobun/src/dynamic-views/registry.test.ts +139 -0
  529. package/platforms/electrobun/src/dynamic-views/registry.ts +196 -0
  530. package/platforms/electrobun/src/dynamic-views/session-manager.test.ts +355 -0
  531. package/platforms/electrobun/src/dynamic-views/session-manager.ts +348 -0
  532. package/platforms/electrobun/src/dynamic-views/types.ts +105 -0
  533. package/platforms/electrobun/src/electrobun-boot-config.test.ts +50 -0
  534. package/platforms/electrobun/src/electrobun-config.test.ts +62 -0
  535. package/platforms/electrobun/src/electrobun-crypto-ready.test.ts +65 -0
  536. package/platforms/electrobun/src/electrobun-window-options.ts +25 -0
  537. package/platforms/electrobun/src/extension-rpc.test.ts +88 -0
  538. package/platforms/electrobun/src/extension-rpc.ts +102 -0
  539. package/platforms/electrobun/src/fatal-shutdown.test.ts +10 -10
  540. package/platforms/electrobun/src/fatal-shutdown.ts +1 -1
  541. package/platforms/electrobun/src/first-party-remotes.test.ts +169 -0
  542. package/platforms/electrobun/src/first-party-remotes.ts +297 -0
  543. package/platforms/electrobun/src/first-run-rpc.test.ts +192 -0
  544. package/platforms/electrobun/src/first-run-rpc.ts +146 -0
  545. package/platforms/electrobun/src/floating-chat-window.ts +181 -181
  546. package/platforms/electrobun/src/inbox-rpc.test.ts +123 -0
  547. package/platforms/electrobun/src/inbox-rpc.ts +158 -0
  548. package/platforms/electrobun/src/index.ts +2555 -2096
  549. package/platforms/electrobun/src/kiosk-mode.ts +50 -0
  550. package/platforms/electrobun/src/launch/index.ts +4 -0
  551. package/platforms/electrobun/src/launch/launch-dynamic-view.ts +37 -0
  552. package/platforms/electrobun/src/launch/launch-orchestrator.test.ts +224 -0
  553. package/platforms/electrobun/src/launch/launch-orchestrator.ts +456 -0
  554. package/platforms/electrobun/src/launch/launch-store.test.ts +97 -0
  555. package/platforms/electrobun/src/launch/launch-store.ts +134 -0
  556. package/platforms/electrobun/src/launch/types.ts +103 -0
  557. package/platforms/electrobun/src/launch/views/launch-diagnostics.html +205 -0
  558. package/platforms/electrobun/src/lifecycle/agent-ready-publish.test.ts +50 -0
  559. package/platforms/electrobun/src/lifecycle/agent-ready-publish.ts +27 -0
  560. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +42 -31
  561. package/platforms/electrobun/src/lifecycle/desktop-session-prime.ts +44 -44
  562. package/platforms/electrobun/src/logger.ts +14 -14
  563. package/platforms/electrobun/src/main-window-runtime.ts +83 -83
  564. package/platforms/electrobun/src/main-window-session.test.ts +109 -0
  565. package/platforms/electrobun/src/main-window-session.ts +87 -51
  566. package/platforms/electrobun/src/menu-reset-from-main.ts +158 -158
  567. package/platforms/electrobun/src/native/agent-env.test.ts +52 -0
  568. package/platforms/electrobun/src/native/agent-runtime-layout.test.ts +42 -0
  569. package/platforms/electrobun/src/native/agent-state-dir.test.ts +91 -0
  570. package/platforms/electrobun/src/native/agent.ts +2122 -1682
  571. package/platforms/electrobun/src/native/auth-bridge.test.ts +67 -0
  572. package/platforms/electrobun/src/native/auth-bridge.ts +464 -360
  573. package/platforms/electrobun/src/native/browser-workspace.ts +723 -471
  574. package/platforms/electrobun/src/native/camera.ts +50 -50
  575. package/platforms/electrobun/src/native/canvas.ts +444 -445
  576. package/platforms/electrobun/src/native/credentials.ts +673 -616
  577. package/platforms/electrobun/src/native/desktop-window.test.ts +300 -0
  578. package/platforms/electrobun/src/native/desktop.ts +2196 -2156
  579. package/platforms/electrobun/src/native/editor-bridge.ts +201 -201
  580. package/platforms/electrobun/src/native/file-watcher.ts +154 -154
  581. package/platforms/electrobun/src/native/gateway.ts +179 -180
  582. package/platforms/electrobun/src/native/gpu-window.ts +256 -256
  583. package/platforms/electrobun/src/native/index.ts +76 -74
  584. package/platforms/electrobun/src/native/location.test.ts +44 -0
  585. package/platforms/electrobun/src/native/location.ts +90 -80
  586. package/platforms/electrobun/src/native/loopback-port.ts +60 -60
  587. package/platforms/electrobun/src/native/mac-window-effects.ts +166 -104
  588. package/platforms/electrobun/src/native/music-player.ts +38 -38
  589. package/platforms/electrobun/src/native/permissions-shared.ts +249 -150
  590. package/platforms/electrobun/src/native/permissions.ts +301 -208
  591. package/platforms/electrobun/src/native/power-state.ts +129 -129
  592. package/platforms/electrobun/src/native/remote-plugin-host.test.ts +1394 -0
  593. package/platforms/electrobun/src/native/remote-plugin-host.ts +1531 -0
  594. package/platforms/electrobun/src/native/screencapture.ts +667 -573
  595. package/platforms/electrobun/src/native/steward.ts +207 -204
  596. package/platforms/electrobun/src/native/swabble.ts +68 -324
  597. package/platforms/electrobun/src/native/talkmode.ts +253 -422
  598. package/platforms/electrobun/src/native/webgpu-browser-support.test.ts +18 -0
  599. package/platforms/electrobun/src/native/webgpu-browser-support.ts +165 -147
  600. package/platforms/electrobun/src/native/whisper-env.test.ts +71 -0
  601. package/platforms/electrobun/src/native/whisper-env.ts +68 -0
  602. package/platforms/electrobun/src/native-onboarding.ts +270 -0
  603. package/platforms/electrobun/src/onboarding-overlay-window.ts +141 -0
  604. package/platforms/electrobun/src/persisted-deployment.ts +91 -0
  605. package/platforms/electrobun/src/pill-window.test.ts +91 -0
  606. package/platforms/electrobun/src/pill-window.ts +99 -0
  607. package/platforms/electrobun/src/preload-validation.ts +44 -44
  608. package/platforms/electrobun/src/preload.js +1 -1
  609. package/platforms/electrobun/src/print-electrobun-dev-settings-banner.ts +120 -120
  610. package/platforms/electrobun/src/renderer-api-proxy.test.ts +73 -0
  611. package/platforms/electrobun/src/renderer-api-proxy.ts +86 -0
  612. package/platforms/electrobun/src/renderer-static.test.ts +53 -0
  613. package/platforms/electrobun/src/renderer-static.ts +144 -57
  614. package/platforms/electrobun/src/rpc-handler-slices.ts +121 -0
  615. package/platforms/electrobun/src/rpc-handlers.test.ts +267 -0
  616. package/platforms/electrobun/src/rpc-handlers.ts +1306 -913
  617. package/platforms/electrobun/src/rpc-parse-utils.ts +57 -0
  618. package/platforms/electrobun/src/rpc-port-resolver.test.ts +45 -0
  619. package/platforms/electrobun/src/rpc-port-resolver.ts +31 -0
  620. package/platforms/electrobun/src/rpc-schema.ts +2556 -1619
  621. package/platforms/electrobun/src/runtime-layout.ts +105 -105
  622. package/platforms/electrobun/src/runtime-permissions.ts +95 -95
  623. package/platforms/electrobun/src/runtime-rpc.test.ts +126 -0
  624. package/platforms/electrobun/src/runtime-rpc.ts +237 -0
  625. package/platforms/electrobun/src/screenshot-dev-server.ts +87 -87
  626. package/platforms/electrobun/src/settings-mutations-rpc.test.ts +193 -0
  627. package/platforms/electrobun/src/settings-mutations-rpc.ts +220 -0
  628. package/platforms/electrobun/src/startup-trace.ts +274 -270
  629. package/platforms/electrobun/src/subscription-rpc.test.ts +89 -0
  630. package/platforms/electrobun/src/subscription-rpc.ts +192 -0
  631. package/platforms/electrobun/src/surface-windows.test.ts +355 -0
  632. package/platforms/electrobun/src/surface-windows.ts +410 -410
  633. package/platforms/electrobun/src/trace/README.md +73 -0
  634. package/platforms/electrobun/src/trace/errors.ts +21 -0
  635. package/platforms/electrobun/src/trace/index.ts +40 -0
  636. package/platforms/electrobun/src/trace/trace-dynamic-view.ts +40 -0
  637. package/platforms/electrobun/src/trace/trace-host-requests.ts +473 -0
  638. package/platforms/electrobun/src/trace/trace-service.test.ts +186 -0
  639. package/platforms/electrobun/src/trace/trace-service.ts +324 -0
  640. package/platforms/electrobun/src/trace/trace-store.test.ts +141 -0
  641. package/platforms/electrobun/src/trace/trace-store.ts +551 -0
  642. package/platforms/electrobun/src/trace/types.ts +250 -0
  643. package/platforms/electrobun/src/trace/views/agent-run-trace.html +311 -0
  644. package/platforms/electrobun/src/types/web-speech.d.ts +28 -28
  645. package/platforms/electrobun/src/types.ts +5 -5
  646. package/platforms/electrobun/src/update-availability.test.ts +72 -0
  647. package/platforms/electrobun/src/update-availability.ts +90 -0
  648. package/platforms/electrobun/src/update-rpc.test.ts +83 -0
  649. package/platforms/electrobun/src/update-rpc.ts +123 -0
  650. package/platforms/electrobun/src/voice/README.md +184 -0
  651. package/platforms/electrobun/src/voice/errors.ts +42 -0
  652. package/platforms/electrobun/src/voice/index.ts +78 -0
  653. package/platforms/electrobun/src/voice/types.ts +316 -0
  654. package/platforms/electrobun/src/voice/voice-host-requests.ts +259 -0
  655. package/platforms/electrobun/src/voice/voice-latency-budget.test.ts +66 -0
  656. package/platforms/electrobun/src/voice/voice-latency-budget.ts +243 -0
  657. package/platforms/electrobun/src/voice/voice-live-validation.test.ts +352 -0
  658. package/platforms/electrobun/src/voice/voice-live-validation.ts +838 -0
  659. package/platforms/electrobun/src/voice/voice-pipeline.ts +250 -0
  660. package/platforms/electrobun/src/voice/voice-playback-adapter.ts +31 -0
  661. package/platforms/electrobun/src/voice/voice-runtime-adapter.test.ts +213 -0
  662. package/platforms/electrobun/src/voice/voice-runtime-adapter.ts +686 -0
  663. package/platforms/electrobun/src/voice/voice-service.test.ts +561 -0
  664. package/platforms/electrobun/src/voice/voice-service.ts +1027 -0
  665. package/platforms/electrobun/src/voice/voice-stream-coordinator.test.ts +115 -0
  666. package/platforms/electrobun/src/voice/voice-stream-coordinator.ts +270 -0
  667. package/platforms/electrobun/src/voice/voice-trace.ts +97 -0
  668. package/platforms/electrobun/src/voice/voice-tts-chunker.test.ts +91 -0
  669. package/platforms/electrobun/src/voice/voice-tts-chunker.ts +194 -0
  670. package/platforms/electrobun/src/windows-cef-profile.ts +88 -88
  671. package/platforms/electrobun/tsconfig.json +73 -13
  672. package/platforms/electrobun/update-channels.json +22 -0
  673. package/platforms/electrobun/vitest.electrobun.config.ts +72 -42
  674. package/platforms/ios/App/App/App.entitlements +4 -0
  675. package/platforms/ios/App/App/AppDelegate.swift +80 -18
  676. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ios-marketing-1024.png +0 -0
  677. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@1x.png +0 -0
  678. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@2x.png +0 -0
  679. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@1x.png +0 -0
  680. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@2x.png +0 -0
  681. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@1x.png +0 -0
  682. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@2x.png +0 -0
  683. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@1x.png +0 -0
  684. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@2x.png +0 -0
  685. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-83_5x83_5@2x.png +0 -0
  686. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@2x.png +0 -0
  687. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@3x.png +0 -0
  688. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@2x.png +0 -0
  689. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@3x.png +0 -0
  690. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@2x.png +0 -0
  691. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@3x.png +0 -0
  692. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@2x.png +0 -0
  693. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@3x.png +0 -0
  694. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +1 -4
  695. package/platforms/ios/App/App/ComputerUseBridge.swift +589 -0
  696. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements +12 -0
  697. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift +34 -0
  698. package/platforms/ios/App/App/DeviceActivityMonitorExtension/Info.plist +29 -0
  699. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.entitlements +12 -0
  700. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.swift +53 -0
  701. package/platforms/ios/App/App/DeviceActivityReportExtension/Info.plist +27 -0
  702. package/platforms/ios/App/App/ElizaAppIntents.swift +183 -0
  703. package/platforms/ios/App/App/ElizaIntentPlugin.swift +342 -5
  704. package/platforms/ios/App/App/Info.plist +17 -1
  705. package/platforms/ios/App/App/runners/eliza-tasks.js +177 -0
  706. package/platforms/ios/App/App.xcodeproj/project.pbxproj +262 -6
  707. package/platforms/ios/App/BroadcastExtension/SampleHandler.swift +100 -0
  708. package/platforms/ios/App/Podfile +5 -0
  709. package/platforms/ios/App/Podfile.lock +83 -59
  710. package/register-runtime-hooks.js +11 -5
  711. package/registry/app-registry.d.ts +14 -0
  712. package/registry/app-registry.d.ts.map +1 -0
  713. package/registry/app-registry.js +29 -0
  714. package/registry/entries/apps/app-polymarket.json +31 -0
  715. package/registry/entries/apps/clawville.json +27 -0
  716. package/registry/entries/apps/companion.json +28 -0
  717. package/registry/entries/apps/database-viewer.json +27 -0
  718. package/registry/entries/apps/defense-of-the-agents.json +27 -0
  719. package/registry/entries/apps/documents.json +30 -0
  720. package/registry/entries/apps/feed.json +27 -0
  721. package/registry/entries/apps/hyperliquid.json +31 -0
  722. package/registry/entries/apps/log-viewer.json +27 -0
  723. package/registry/entries/apps/memory-viewer.json +27 -0
  724. package/registry/entries/apps/model-tester.json +31 -0
  725. package/registry/entries/apps/plugin-viewer.json +27 -0
  726. package/registry/entries/apps/relationship-viewer.json +27 -0
  727. package/registry/entries/apps/runtime-debugger.json +27 -0
  728. package/registry/entries/apps/shopify.json +31 -0
  729. package/registry/entries/apps/skills-viewer.json +27 -0
  730. package/registry/entries/apps/steward.json +31 -0
  731. package/registry/entries/apps/training.json +54 -0
  732. package/registry/entries/apps/trajectory-viewer.json +27 -0
  733. package/registry/entries/apps/vincent.json +31 -0
  734. package/registry/entries/connectors/bluebubbles.json +99 -0
  735. package/registry/entries/connectors/bluesky.json +173 -0
  736. package/registry/entries/connectors/discord.json +119 -0
  737. package/registry/entries/connectors/farcaster.json +174 -0
  738. package/registry/entries/connectors/feishu.json +79 -0
  739. package/registry/entries/connectors/google-chat.json +120 -0
  740. package/registry/entries/connectors/google.json +82 -0
  741. package/registry/entries/connectors/imessage.json +96 -0
  742. package/registry/entries/connectors/instagram.json +64 -0
  743. package/registry/entries/connectors/line.json +86 -0
  744. package/registry/entries/connectors/matrix.json +94 -0
  745. package/registry/entries/connectors/mattermost.json +110 -0
  746. package/registry/entries/connectors/msteams.json +104 -0
  747. package/registry/entries/connectors/nextcloud-talk.json +104 -0
  748. package/registry/entries/connectors/nostr.json +70 -0
  749. package/registry/entries/connectors/signal.json +81 -0
  750. package/registry/entries/connectors/slack.json +102 -0
  751. package/registry/entries/connectors/telegram.json +71 -0
  752. package/registry/entries/connectors/tlon.json +94 -0
  753. package/registry/entries/connectors/twitch.json +110 -0
  754. package/registry/entries/connectors/whatsapp.json +113 -0
  755. package/registry/entries/connectors/x.json +231 -0
  756. package/registry/entries/connectors/zalo.json +112 -0
  757. package/registry/entries/connectors/zalouser.json +122 -0
  758. package/registry/entries/plugins/agent-orchestrator.json +33 -0
  759. package/registry/entries/plugins/agent-skills.json +72 -0
  760. package/registry/entries/plugins/anthropic.json +73 -0
  761. package/registry/entries/plugins/app-control.json +23 -0
  762. package/registry/entries/plugins/auto-trader.json +203 -0
  763. package/registry/entries/plugins/background-runner.json +26 -0
  764. package/registry/entries/plugins/blooio.json +102 -0
  765. package/registry/entries/plugins/browser.json +75 -0
  766. package/registry/entries/plugins/cli.json +40 -0
  767. package/registry/entries/plugins/clipboard.json +44 -0
  768. package/registry/entries/plugins/coding-tools.json +71 -0
  769. package/registry/entries/plugins/commands.json +63 -0
  770. package/registry/entries/plugins/computeruse.json +74 -0
  771. package/registry/entries/plugins/copilot-proxy.json +93 -0
  772. package/registry/entries/plugins/directives.json +63 -0
  773. package/registry/entries/plugins/edge-tts.json +97 -0
  774. package/registry/entries/plugins/elevenlabs.json +169 -0
  775. package/registry/entries/plugins/elizacloud.json +208 -0
  776. package/registry/entries/plugins/evm.json +134 -0
  777. package/registry/entries/plugins/experience.json +34 -0
  778. package/registry/entries/plugins/facewear.json +131 -0
  779. package/registry/entries/plugins/form.json +26 -0
  780. package/registry/entries/plugins/github.json +93 -0
  781. package/registry/entries/plugins/gmail-watch.json +25 -0
  782. package/registry/entries/plugins/goals.json +77 -0
  783. package/registry/entries/plugins/google-genai.json +106 -0
  784. package/registry/entries/plugins/groq.json +93 -0
  785. package/registry/entries/plugins/hedera.json +48 -0
  786. package/registry/entries/plugins/inmemorydb.json +25 -0
  787. package/registry/entries/plugins/linear.json +51 -0
  788. package/registry/entries/plugins/local-inference.json +137 -0
  789. package/registry/entries/plugins/local-storage.json +36 -0
  790. package/registry/entries/plugins/localdb.json +25 -0
  791. package/registry/entries/plugins/mcp.json +44 -0
  792. package/registry/entries/plugins/memory.json +124 -0
  793. package/registry/entries/plugins/minecraft.json +79 -0
  794. package/registry/entries/plugins/moltbook.json +83 -0
  795. package/registry/entries/plugins/music.json +155 -0
  796. package/registry/entries/plugins/mysticism.json +48 -0
  797. package/registry/entries/plugins/nearai.json +82 -0
  798. package/registry/entries/plugins/ngrok.json +69 -0
  799. package/registry/entries/plugins/ollama.json +96 -0
  800. package/registry/entries/plugins/openai.json +189 -0
  801. package/registry/entries/plugins/openrouter.json +188 -0
  802. package/registry/entries/plugins/pdf.json +26 -0
  803. package/registry/entries/plugins/plugin-manager.json +23 -0
  804. package/registry/entries/plugins/prose.json +48 -0
  805. package/registry/entries/plugins/rlm.json +26 -0
  806. package/registry/entries/plugins/roblox.json +88 -0
  807. package/registry/entries/plugins/rss.json +64 -0
  808. package/registry/entries/plugins/s3-storage.json +91 -0
  809. package/registry/entries/plugins/scheduling.json +35 -0
  810. package/registry/entries/plugins/shell.json +94 -0
  811. package/registry/entries/plugins/social-alpha.json +72 -0
  812. package/registry/entries/plugins/tailscale.json +81 -0
  813. package/registry/entries/plugins/tee.json +53 -0
  814. package/registry/entries/plugins/todos.json +26 -0
  815. package/registry/entries/plugins/trajectory-logger.json +33 -0
  816. package/registry/entries/plugins/trust.json +39 -0
  817. package/registry/entries/plugins/tts.json +71 -0
  818. package/registry/entries/plugins/tunnel.json +45 -0
  819. package/registry/entries/plugins/twilio.json +168 -0
  820. package/registry/entries/plugins/vercel-ai-gateway.json +128 -0
  821. package/registry/entries/plugins/video.json +23 -0
  822. package/registry/entries/plugins/vision.json +43 -0
  823. package/registry/entries/plugins/webhooks.json +23 -0
  824. package/registry/entries/plugins/workflow.json +25 -0
  825. package/registry/entries/plugins/xai.json +75 -0
  826. package/registry/index.d.ts +2 -1
  827. package/registry/index.d.ts.map +1 -1
  828. package/registry/index.js +46 -12
  829. package/registry/loader.d.ts +2 -1
  830. package/registry/loader.d.ts.map +1 -1
  831. package/registry/loader.js +49 -2
  832. package/registry/schema.d.ts +244 -34
  833. package/registry/schema.d.ts.map +1 -1
  834. package/registry/schema.js +36 -0
  835. package/runtime/android-avf-microdroid-bridge.d.ts +29 -0
  836. package/runtime/android-avf-microdroid-bridge.d.ts.map +1 -0
  837. package/runtime/android-avf-microdroid-bridge.js +149 -0
  838. package/runtime/api-dev-settings-banner.d.ts.map +1 -1
  839. package/runtime/api-dev-settings-banner.js +5 -13
  840. package/runtime/app-core-runtime-hooks.d.ts +21 -0
  841. package/runtime/app-core-runtime-hooks.d.ts.map +1 -0
  842. package/runtime/app-core-runtime-hooks.js +10 -0
  843. package/runtime/autonomy-policy.d.ts +2 -0
  844. package/runtime/autonomy-policy.d.ts.map +1 -0
  845. package/runtime/autonomy-policy.js +4 -0
  846. package/runtime/desktop/AppWindowRenderer.d.ts +17 -0
  847. package/runtime/desktop/AppWindowRenderer.d.ts.map +1 -0
  848. package/runtime/desktop/AppWindowRenderer.js +360 -0
  849. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts +2 -0
  850. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts.map +1 -0
  851. package/runtime/desktop/DesktopSurfaceNavigationRuntime.js +41 -0
  852. package/runtime/desktop/DesktopTrayRuntime.d.ts +2 -0
  853. package/runtime/desktop/DesktopTrayRuntime.d.ts.map +1 -0
  854. package/runtime/desktop/DesktopTrayRuntime.js +174 -0
  855. package/runtime/desktop/DetachedShellRoot.d.ts +10 -0
  856. package/runtime/desktop/DetachedShellRoot.d.ts.map +1 -0
  857. package/runtime/desktop/DetachedShellRoot.js +111 -0
  858. package/runtime/desktop/index.d.ts +6 -0
  859. package/runtime/desktop/index.d.ts.map +1 -0
  860. package/runtime/desktop/index.js +5 -0
  861. package/runtime/desktop/tray-menu.d.ts +20 -0
  862. package/runtime/desktop/tray-menu.d.ts.map +1 -0
  863. package/runtime/desktop/tray-menu.js +143 -0
  864. package/runtime/dev-server.d.ts +1 -1
  865. package/runtime/dev-server.d.ts.map +1 -1
  866. package/runtime/dev-server.js +93 -17
  867. package/runtime/eliza.d.ts +75 -1
  868. package/runtime/eliza.d.ts.map +1 -1
  869. package/runtime/eliza.js +596 -122
  870. package/runtime/ensure-text-to-speech-handler.d.ts.map +1 -1
  871. package/runtime/ensure-text-to-speech-handler.js +10 -3
  872. package/runtime/mobile-safe-runtime.d.ts +181 -2
  873. package/runtime/mobile-safe-runtime.d.ts.map +1 -1
  874. package/runtime/mobile-safe-runtime.js +1019 -12
  875. package/runtime/mode/remote-forwarder.d.ts.map +1 -1
  876. package/runtime/mode/remote-forwarder.js +2 -2
  877. package/runtime/mode/route-mode-guard.d.ts +1 -2
  878. package/runtime/mode/route-mode-guard.d.ts.map +1 -1
  879. package/runtime/mode/route-mode-guard.js +4 -5
  880. package/runtime/mode/route-mode-matrix.d.ts.map +1 -1
  881. package/runtime/mode/route-mode-matrix.js +14 -1
  882. package/runtime/mode/runtime-mode.d.ts +1 -1
  883. package/runtime/mode/runtime-mode.js +1 -1
  884. package/runtime/runtime-bootstrap-policy.d.ts.map +1 -1
  885. package/runtime/runtime-bootstrap-policy.js +14 -2
  886. package/runtime/telegram-standalone-handler.d.ts.map +1 -1
  887. package/runtime/telegram-standalone-handler.js +10 -9
  888. package/runtime/tts-cache-wiring.d.ts +29 -0
  889. package/runtime/tts-cache-wiring.d.ts.map +1 -0
  890. package/runtime/tts-cache-wiring.js +114 -0
  891. package/runtime/voice-warmup.d.ts +81 -0
  892. package/runtime/voice-warmup.d.ts.map +1 -0
  893. package/runtime/voice-warmup.js +111 -0
  894. package/scripts/android-sms-gateway-template.test.mjs +1014 -0
  895. package/scripts/aosp/README.md +19 -15
  896. package/scripts/aosp/compile-libllama.mjs +1344 -248
  897. package/scripts/aosp/compile-shim.mjs +47 -18
  898. package/scripts/aosp/deploy-pixel.mjs +405 -0
  899. package/scripts/aosp/lib/load-variant-config.mjs +3 -3
  900. package/scripts/aosp/llama-cpp-patches/README.md +8 -8
  901. package/scripts/aosp/llama-cpp-patches/apply-patches.mjs +23 -6
  902. package/scripts/aosp/llama-cpp-patches/polarquant/README.md +37 -0
  903. package/scripts/aosp/llama-cpp-patches/qjl/README.md +37 -0
  904. package/scripts/aosp/seccomp-shim/sigsys-handler-arm64.c +169 -0
  905. package/scripts/aosp/seccomp-shim/sigsys-handler-riscv64.c +217 -0
  906. package/scripts/aosp/smoke-cuttlefish.mjs +34 -4
  907. package/scripts/aosp/stage-default-models.mjs +49 -18
  908. package/scripts/aosp/variant-config-schema.ts +2 -2
  909. package/scripts/assert-required-bundled-packages.test.ts +534 -0
  910. package/scripts/audit-apple-store-sandbox.mjs +146 -0
  911. package/scripts/audit-live-test-surface.mjs +5 -2
  912. package/scripts/build-capacitor-app.mjs +21 -0
  913. package/scripts/build-flatpak.mjs +5 -5
  914. package/scripts/build-helpers/arm64-simd.mjs +72 -0
  915. package/scripts/build-helpers/omnivoice-merged.mjs +87 -0
  916. package/scripts/build-helpers/verify-fused-symbols.mjs +567 -0
  917. package/scripts/build-image.sh +4 -2
  918. package/scripts/build-llama-cpp-mtp.mjs +487 -0
  919. package/scripts/build-native-plugins.mjs +230 -18
  920. package/scripts/build-patched-electrobun-cli.mjs +68 -10
  921. package/scripts/build-win.mjs +1 -1
  922. package/scripts/bun-riscv64/Dockerfile +418 -0
  923. package/scripts/bun-riscv64/README.md +316 -0
  924. package/scripts/bun-riscv64/build.sh +469 -0
  925. package/scripts/bun-riscv64/bun-patches/0001-config-add-riscv64-arch.patch +74 -0
  926. package/scripts/bun-riscv64/bun-patches/0002-flags-add-riscv64-march-mabi.patch +16 -0
  927. package/scripts/bun-riscv64/bun-patches/0003-zig-add-riscv64-target-triple-and-cpu.patch +26 -0
  928. package/scripts/bun-riscv64/bun-patches/0004-webkit-force-local-mode-on-riscv64.patch +33 -0
  929. package/scripts/bun-riscv64/bun-patches/0005-tinycc-disable-on-riscv64.patch +16 -0
  930. package/scripts/bun-riscv64/bun-patches/0006-build-add-riscv64-cli-validation.patch +15 -0
  931. package/scripts/bun-riscv64/bun-patches/0007-deps-per-dep-riscv64-checks.patch +24 -0
  932. package/scripts/bun-riscv64/bun-patches/0008-source-stabilize-riscv64-musl-build.patch +226 -0
  933. package/scripts/bun-riscv64/bun-patches/0009-disable-wasm-streaming-hooks-for-c-loop.patch +162 -0
  934. package/scripts/bun-riscv64/bun-patches/0010-disable-inspector-profiler-for-riscv64-c-loop.patch +80 -0
  935. package/scripts/bun-riscv64/bun-patches/0011-process-arch-add-riscv64.patch +23 -0
  936. package/scripts/bun-riscv64/bun-patches/0012-cpu-features-add-riscv64-fallback.patch +13 -0
  937. package/scripts/bun-riscv64/bun-patches/0013-disable-console-inspector-hooks-for-riscv64-c-loop.patch +43 -0
  938. package/scripts/bun-riscv64/bun-patches/0014-disable-custom-inspector-dispatchers-on-riscv64.patch +127 -0
  939. package/scripts/bun-riscv64/bun-patches/0015-disable-jsc-profiler-builtins-on-riscv64.patch +75 -0
  940. package/scripts/bun-riscv64/bun-patches/0016-node-vm-disable-jit-cached-data-on-riscv64-c-loop.patch +96 -0
  941. package/scripts/bun-riscv64/bun-patches/0017-disable-performance-domjit-signature-on-riscv64-c-loop.patch +34 -0
  942. package/scripts/bun-riscv64/bun-patches/0018-fix-serialized-script-identifier-big-endian-path.patch +19 -0
  943. package/scripts/bun-riscv64/bun-patches/0019-add-wtf-timer-fire-bridge-for-c-loop.patch +24 -0
  944. package/scripts/bun-riscv64/bun-patches/0020-run-riscv64-smoke-test-under-qemu.patch +13 -0
  945. package/scripts/bun-riscv64/bun-patches/0021-fix-riscv64-linux-open-flags.patch +25 -0
  946. package/scripts/bun-riscv64/bun-patches/0022-zlib-riscv64-generic-kernels.patch +25 -0
  947. package/scripts/bun-riscv64/bun-patches/README.md +127 -0
  948. package/scripts/bun-riscv64/bun-version.json +202 -0
  949. package/scripts/bun-riscv64/run-build.sh +162 -0
  950. package/scripts/bun-riscv64/rust-core/0001-riscv64-rust-core-port.patch +868 -0
  951. package/scripts/bun-riscv64/rust-core/0002-second-wave-riscv64-source-gaps.patch +130 -0
  952. package/scripts/bun-riscv64/rust-core/0003-third-wave-riscv64-crash-handler-gaps.patch +78 -0
  953. package/scripts/bun-riscv64/rust-core/0004-rust-target-cpu-riscv64.patch +39 -0
  954. package/scripts/bun-riscv64/rust-core/0005-fifth-wave-riscv64-source-gaps.patch +96 -0
  955. package/scripts/bun-riscv64/rust-core/0006-cpp-wasm-and-inspector-guards-riscv64.patch +91 -0
  956. package/scripts/bun-riscv64/rust-core/0007-bun-alloc-max-align-t-riscv64.patch +36 -0
  957. package/scripts/bun-riscv64/rust-core/0008-workspace-lints-warn-not-deny-riscv64.patch +75 -0
  958. package/scripts/bun-riscv64/rust-core/0009-zigglobalobject-wasm-streaming-guards-riscv64.patch +109 -0
  959. package/scripts/bun-riscv64/rust-core/0010-tcc-externs-stub-on-riscv64.patch +62 -0
  960. package/scripts/bun-riscv64/rust-core/0011-clippy-ptr-cast-lints-warn-riscv64.patch +61 -0
  961. package/scripts/bun-riscv64/rust-core/README.md +80 -0
  962. package/scripts/bun-riscv64/rust-core/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  963. package/scripts/bun-riscv64/rust-core/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  964. package/scripts/bun-riscv64/rust-core/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  965. package/scripts/bun-riscv64/rust-core/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  966. package/scripts/bun-riscv64/rust-core/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +31 -0
  967. package/scripts/bun-riscv64/validate.sh +264 -0
  968. package/scripts/bun-riscv64/webkit-patches/0001-cherry-pick-llint-riscv64.recipe +155 -0
  969. package/scripts/bun-riscv64/webkit-patches/0002-cherry-pick-baseline-jit-riscv64.recipe +40 -0
  970. package/scripts/bun-riscv64/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  971. package/scripts/bun-riscv64/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  972. package/scripts/bun-riscv64/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  973. package/scripts/bun-riscv64/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  974. package/scripts/bun-riscv64/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +72 -0
  975. package/scripts/bun-riscv64/webkit-patches/README.md +146 -0
  976. package/scripts/check-homepage-public-readiness.mjs +353 -0
  977. package/scripts/check-homepage-release-data.mjs +110 -0
  978. package/scripts/check-i18n.mjs +2 -1
  979. package/scripts/check-real-local-chat.ts +147 -0
  980. package/scripts/check-real-local-provisioning.ts +104 -0
  981. package/scripts/check-real-local-reset.ts +249 -0
  982. package/scripts/check-sms-gateway-completion-audit.mjs +428 -0
  983. package/scripts/check-sms-gateway-readiness.mjs +266 -0
  984. package/scripts/clean-repo.mjs +5 -5
  985. package/scripts/codesign-mas.mjs +222 -16
  986. package/scripts/collect-docker-runtime-deps.mjs +229 -0
  987. package/scripts/continue-sms-gateway-work.mjs +121 -0
  988. package/scripts/copy-runtime-node-modules.ts +903 -195
  989. package/scripts/deploy-cloud-api-production-gateway.mjs +52 -0
  990. package/scripts/desktop-build.mjs +655 -101
  991. package/scripts/dev-platform.mjs +346 -102
  992. package/scripts/dev-startup-smoke.mjs +248 -0
  993. package/scripts/dev-ui.mjs +418 -176
  994. package/scripts/disable-local-eliza-workspace.mjs +35 -0
  995. package/scripts/docker-ci-smoke.sh +440 -96
  996. package/scripts/docker-entrypoint.sh +62 -1
  997. package/scripts/docker-entrypoint.test.ts +283 -0
  998. package/scripts/ensure-avatars.mjs +2 -2
  999. package/scripts/ensure-electrobun-core.mjs +1 -1
  1000. package/scripts/ensure-generated-core-proto-js.mjs +1 -1
  1001. package/scripts/ensure-type-package-aliases.mjs +62 -5
  1002. package/scripts/ensure-vision-deps.mjs +20 -1
  1003. package/scripts/entry.ts +1 -1
  1004. package/scripts/ffi-stub/Makefile +64 -0
  1005. package/scripts/ffi-stub/README.md +391 -0
  1006. package/scripts/ffi-stub/asr-ffi-smoke.ts +139 -0
  1007. package/scripts/ffi-stub/ffi-stub.c +539 -0
  1008. package/scripts/ffi-stub/ffi.h +538 -0
  1009. package/scripts/ffi-stub/libelizainference_stub.so +0 -0
  1010. package/scripts/ffi-stub/tts-stream-ffi-smoke.ts +349 -0
  1011. package/scripts/generate-first-run-voicelines.mjs +194 -0
  1012. package/scripts/generate-plugin-index.js +4 -3
  1013. package/scripts/generate-static-asset-manifest.mjs +1 -1
  1014. package/scripts/i18n-dynamic-keys.json +5 -5
  1015. package/scripts/init-submodules.mjs +2 -2
  1016. package/scripts/install-android-sms-gateway.md +177 -0
  1017. package/scripts/install-android-sms-gateway.mjs +1088 -0
  1018. package/scripts/ios-xcframework/README.md +74 -72
  1019. package/scripts/ios-xcframework/build-xcframework.mjs +204 -43
  1020. package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1943 -0
  1021. package/scripts/ios-xcframework/runtime-symbol-shim.c +450 -0
  1022. package/scripts/kernel-patches/cpu-polar-kernels.mjs +441 -0
  1023. package/scripts/kernel-patches/cpu-simd-kernels.mjs +253 -0
  1024. package/scripts/kernel-patches/cpu-thread-parallelism.mjs +368 -0
  1025. package/scripts/kernel-patches/cuda-kernels.mjs +117 -0
  1026. package/scripts/kernel-patches/metal-kernels.mjs +1698 -109
  1027. package/scripts/kernel-patches/server-omnivoice-route.mjs +718 -0
  1028. package/scripts/kernel-patches/server-structured-output.mjs +279 -0
  1029. package/scripts/kernel-patches/vulkan-dispatch-log.mjs +166 -0
  1030. package/scripts/kernel-patches/vulkan-dispatch-log.test.mjs +50 -0
  1031. package/scripts/kernel-patches/vulkan-dispatch-patches/01-vulkan-shaders-gen.patch +30 -16
  1032. package/scripts/kernel-patches/vulkan-dispatch-patches/02-ggml-vulkan-pipelines.patch +75 -30
  1033. package/scripts/kernel-patches/vulkan-kernels.mjs +800 -49
  1034. package/scripts/lib/agent-source-watcher.mjs +174 -0
  1035. package/scripts/lib/agent-source-watcher.test.mjs +184 -0
  1036. package/scripts/lib/api-supervisor.mjs +78 -9
  1037. package/scripts/lib/api-supervisor.test.mjs +121 -0
  1038. package/scripts/lib/app-dir.mjs +2 -16
  1039. package/scripts/lib/apple-entitlement-audit.mjs +655 -0
  1040. package/scripts/lib/apple-entitlement-audit.test.mjs +144 -0
  1041. package/scripts/lib/bun-version-guard.mjs +13 -13
  1042. package/scripts/lib/capacitor-plugin-build-needed.mjs +4 -3
  1043. package/scripts/lib/capacitor-plugin-names.mjs +30 -14
  1044. package/scripts/lib/desktop-preflight.mjs +9 -5
  1045. package/scripts/lib/desktop-startup-embedding-warmup-policy.mjs +51 -0
  1046. package/scripts/lib/desktop-startup-embedding-warmup-policy.test.mjs +55 -0
  1047. package/scripts/lib/duet-bridge.d.mts +63 -0
  1048. package/scripts/lib/duet-bridge.mjs +193 -0
  1049. package/scripts/lib/node-path-env.mjs +4 -2
  1050. package/scripts/lib/orchestrator-desktop-dev-banner.mjs +12 -3
  1051. package/scripts/lib/patch-bun-exports.mjs +90 -27
  1052. package/scripts/lib/patch-bun-exports.test.mjs +79 -0
  1053. package/scripts/lib/renderer-build-action.mjs +35 -0
  1054. package/scripts/lib/renderer-build-action.test.mjs +70 -0
  1055. package/scripts/lib/stage-android-agent.mjs +748 -99
  1056. package/scripts/lib/sync-eliza-env-aliases.mjs +3 -25
  1057. package/scripts/lib/ui-smoke-stub-decision.mjs +33 -0
  1058. package/scripts/lib/ui-smoke-stub-decision.test.mjs +46 -0
  1059. package/scripts/lib/vite-renderer-dist-stale.mjs +5 -0
  1060. package/scripts/lib/voice-latency-report.mjs +154 -0
  1061. package/scripts/lifeops-prompt-benchmark.ts +21 -12
  1062. package/scripts/link-docker-local-app-packages.mjs +103 -36
  1063. package/scripts/local-stt-bench.ts +192 -0
  1064. package/scripts/maintain-cloud-api-production-gateway.mjs +54 -0
  1065. package/scripts/mas-smoke.mjs +459 -0
  1066. package/scripts/mas-smoke.test.mjs +220 -0
  1067. package/scripts/mobile-auth-simulator-smoke.mjs +0 -1
  1068. package/scripts/normalize-eliza-capture.ts +97 -0
  1069. package/scripts/omnivoice-fuse/prepare.mjs +2543 -23
  1070. package/scripts/pack-upstreams.mjs +65 -5
  1071. package/scripts/package-electrobun-linux.mjs +303 -0
  1072. package/scripts/patch-deps.mjs +5 -3
  1073. package/scripts/patches/llama-asr-word-timestamps.patch +218 -0
  1074. package/scripts/patches/llama-mobile-kokoro-tts.patch +480 -0
  1075. package/scripts/playwright-ui-live-stack.ts +194 -49
  1076. package/scripts/playwright-ui-smoke-api-stub.mjs +3501 -109
  1077. package/scripts/pre-review-local.mjs +2 -2
  1078. package/scripts/prepare-ios-cocoapods.sh +41 -3
  1079. package/scripts/release-check.ts +180 -84
  1080. package/scripts/release-workflow-drift.test.ts +57 -0
  1081. package/scripts/relink-workspace-packages-to-dist.mjs +21 -4
  1082. package/scripts/rt.mjs +16 -1
  1083. package/scripts/run-biome-check.mjs +1 -1
  1084. package/scripts/run-coding-agent-e2e.mjs +3 -3
  1085. package/scripts/run-eliza-app-core-script.mjs +34 -0
  1086. package/scripts/run-local-plugin-live-smoke.mjs +71 -2
  1087. package/scripts/run-mobile-build-android-app-actions.test.mjs +426 -0
  1088. package/scripts/run-mobile-build.mjs +4757 -607
  1089. package/scripts/run-node-runtime.mjs +184 -7
  1090. package/scripts/run-node-runtime.test.mjs +167 -0
  1091. package/scripts/run-node-tsx.mjs +80 -33
  1092. package/scripts/run-node.mjs +41 -1
  1093. package/scripts/run-production-build.mjs +34 -27
  1094. package/scripts/run-release-check.mjs +19 -0
  1095. package/scripts/run-release-contract-suite.mjs +107 -14
  1096. package/scripts/run-ui-smoke-playwright-suite.mjs +0 -2
  1097. package/scripts/runtime-package-manifest.ts +21 -3
  1098. package/scripts/setup-upstreams.mjs +42 -1
  1099. package/scripts/sms-gateway-status.mjs +194 -0
  1100. package/scripts/stage-android-agent.test.mjs +97 -0
  1101. package/scripts/stage-desktop-fused-lib.mjs +424 -0
  1102. package/scripts/stage-elizavoice-lib.mjs +363 -0
  1103. package/scripts/startup-integration-script-drift.test.ts +82 -4
  1104. package/scripts/streaming-pipeline-bench.ts +543 -0
  1105. package/scripts/sync-homepage-porkbun-dns.mjs +262 -0
  1106. package/scripts/test-sms-gateway-software.mjs +100 -0
  1107. package/scripts/type-audit.mjs +1 -1
  1108. package/scripts/validate-bluebubbles-outbound.mjs +293 -0
  1109. package/scripts/validate-cdn-assets.mjs +15 -7
  1110. package/scripts/validate-regression-matrix.mjs +109 -8
  1111. package/scripts/verify-android-sms-gateway-e2e.mjs +362 -0
  1112. package/scripts/verify-bluebubbles-gateway-e2e.mjs +191 -0
  1113. package/scripts/verify-bluebubbles-inbound-readiness.mjs +88 -0
  1114. package/scripts/verify-cloud-api-production-deploy.mjs +87 -0
  1115. package/scripts/verify-cloud-sms-onboarding-flow.mjs +336 -0
  1116. package/scripts/voice/freeze-voice.mjs +521 -0
  1117. package/scripts/voice-attribution-smoke.ts +538 -0
  1118. package/scripts/voice-create-profile.mjs +379 -0
  1119. package/scripts/voice-duet.mjs +1355 -0
  1120. package/scripts/voice-e2e-hardware.ts +871 -0
  1121. package/scripts/voice-interactive.mjs +1750 -0
  1122. package/scripts/voice-latency-report.mjs +96 -0
  1123. package/scripts/voice-latency-report.test.ts +176 -0
  1124. package/scripts/voice-preset/build-default-voice-preset.mjs +249 -0
  1125. package/scripts/voice-preset/build-onboarding-voice.mjs +281 -0
  1126. package/scripts/watch-sms-gateway-readiness.mjs +303 -0
  1127. package/scripts/write-homepage-release-data.mjs +458 -26
  1128. package/security/agent-vault-id.d.ts +1 -1
  1129. package/security/agent-vault-id.js +1 -1
  1130. package/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -1
  1131. package/security/hydrate-wallet-keys-from-platform-store.js +23 -14
  1132. package/security/platform-secure-store-node.d.ts +2 -2
  1133. package/security/platform-secure-store-node.js +3 -3
  1134. package/security/wallet-os-store-actions.d.ts +0 -9
  1135. package/security/wallet-os-store-actions.d.ts.map +1 -1
  1136. package/security/wallet-os-store-actions.js +3 -10
  1137. package/services/account-pool.d.ts +23 -14
  1138. package/services/account-pool.d.ts.map +1 -1
  1139. package/services/account-pool.js +86 -24
  1140. package/services/account-usage.d.ts.map +1 -1
  1141. package/services/account-usage.js +2 -5
  1142. package/services/ambient-audio/consent.d.ts +9 -0
  1143. package/services/ambient-audio/consent.d.ts.map +1 -0
  1144. package/services/ambient-audio/consent.js +28 -0
  1145. package/services/ambient-audio/index.d.ts +7 -0
  1146. package/services/ambient-audio/index.d.ts.map +1 -0
  1147. package/services/ambient-audio/index.js +4 -0
  1148. package/services/ambient-audio/replay-buffer.d.ts +14 -0
  1149. package/services/ambient-audio/replay-buffer.d.ts.map +1 -0
  1150. package/services/ambient-audio/replay-buffer.js +66 -0
  1151. package/services/ambient-audio/response-gate.d.ts +3 -0
  1152. package/services/ambient-audio/response-gate.d.ts.map +1 -0
  1153. package/services/ambient-audio/response-gate.js +33 -0
  1154. package/services/ambient-audio/service.d.ts +22 -0
  1155. package/services/ambient-audio/service.d.ts.map +1 -0
  1156. package/services/ambient-audio/service.js +47 -0
  1157. package/services/ambient-audio/types.d.ts +42 -0
  1158. package/services/ambient-audio/types.d.ts.map +1 -0
  1159. package/services/app-updates/update-policy.d.ts +64 -0
  1160. package/services/app-updates/update-policy.d.ts.map +1 -0
  1161. package/services/app-updates/update-policy.js +228 -0
  1162. package/services/auth-store.d.ts +37 -1
  1163. package/services/auth-store.d.ts.map +1 -1
  1164. package/services/auth-store.js +59 -26
  1165. package/services/cloud-jwks-store.d.ts +3 -3
  1166. package/services/cloud-jwks-store.d.ts.map +1 -1
  1167. package/services/cloud-jwks-store.js +5 -8
  1168. package/services/coding-account-bridge.d.ts +71 -0
  1169. package/services/coding-account-bridge.d.ts.map +1 -0
  1170. package/services/coding-account-bridge.js +267 -0
  1171. package/services/connector-target-catalog.d.ts +10 -3
  1172. package/services/connector-target-catalog.d.ts.map +1 -1
  1173. package/services/connector-target-catalog.js +7 -4
  1174. package/services/credential-tunnel-service.d.ts +66 -0
  1175. package/services/credential-tunnel-service.d.ts.map +1 -0
  1176. package/services/credential-tunnel-service.js +227 -0
  1177. package/services/github-credentials.d.ts +1 -1
  1178. package/services/github-credentials.js +1 -1
  1179. package/services/inference-abort.d.ts +47 -0
  1180. package/services/inference-abort.d.ts.map +1 -0
  1181. package/services/inference-abort.js +76 -0
  1182. package/services/persistence.d.ts +2 -3
  1183. package/services/persistence.d.ts.map +1 -1
  1184. package/services/persistence.js +2 -3
  1185. package/services/phrase-chunked-tts.d.ts +136 -0
  1186. package/services/phrase-chunked-tts.d.ts.map +1 -0
  1187. package/services/phrase-chunked-tts.js +208 -0
  1188. package/services/sandbox-registry.d.ts +78 -0
  1189. package/services/sandbox-registry.d.ts.map +1 -0
  1190. package/services/sandbox-registry.js +323 -0
  1191. package/services/secrets-manager-installer.d.ts +8 -1
  1192. package/services/secrets-manager-installer.d.ts.map +1 -1
  1193. package/services/secrets-manager-installer.js +27 -2
  1194. package/services/sensitive-requests/cloud-link-adapter.d.ts +15 -0
  1195. package/services/sensitive-requests/cloud-link-adapter.d.ts.map +1 -0
  1196. package/services/sensitive-requests/cloud-link-adapter.js +73 -0
  1197. package/services/sensitive-requests/index.d.ts +27 -0
  1198. package/services/sensitive-requests/index.d.ts.map +1 -0
  1199. package/services/sensitive-requests/index.js +51 -0
  1200. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts +14 -0
  1201. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts.map +1 -0
  1202. package/services/sensitive-requests/instruct-dm-only-adapter.js +22 -0
  1203. package/services/sensitive-requests/owner-app-inline-adapter.d.ts +3 -0
  1204. package/services/sensitive-requests/owner-app-inline-adapter.d.ts.map +1 -0
  1205. package/services/sensitive-requests/owner-app-inline-adapter.js +146 -0
  1206. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts +3 -0
  1207. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts.map +1 -0
  1208. package/services/sensitive-requests/owner-app-oauth-adapter.js +156 -0
  1209. package/services/sensitive-requests/public-link-adapter.d.ts +14 -0
  1210. package/services/sensitive-requests/public-link-adapter.d.ts.map +1 -0
  1211. package/services/sensitive-requests/public-link-adapter.js +86 -0
  1212. package/services/sensitive-requests/tunnel-link-adapter.d.ts +17 -0
  1213. package/services/sensitive-requests/tunnel-link-adapter.d.ts.map +1 -0
  1214. package/services/sensitive-requests/tunnel-link-adapter.js +38 -0
  1215. package/services/steward-credentials.d.ts +1 -1
  1216. package/services/steward-credentials.d.ts.map +1 -1
  1217. package/services/steward-credentials.js +10 -6
  1218. package/services/steward-sidecar/health-check.d.ts.map +1 -1
  1219. package/services/steward-sidecar/health-check.js +4 -3
  1220. package/services/steward-sidecar/process-management.d.ts +1 -1
  1221. package/services/steward-sidecar/process-management.d.ts.map +1 -1
  1222. package/services/steward-sidecar/process-management.js +9 -3
  1223. package/services/steward-sidecar/types.d.ts +1 -1
  1224. package/services/steward-sidecar/types.d.ts.map +1 -1
  1225. package/services/steward-sidecar/wallet-setup.d.ts.map +1 -1
  1226. package/services/steward-sidecar/wallet-setup.js +8 -7
  1227. package/services/steward-sidecar.d.ts +2 -2
  1228. package/services/steward-sidecar.d.ts.map +1 -1
  1229. package/services/steward-sidecar.js +27 -19
  1230. package/services/task-host-capabilities.d.ts +60 -0
  1231. package/services/task-host-capabilities.d.ts.map +1 -0
  1232. package/services/task-host-capabilities.js +122 -0
  1233. package/services/tool-call-cache/index.d.ts +2 -2
  1234. package/services/tool-call-cache/index.d.ts.map +1 -1
  1235. package/services/tool-call-cache/index.js +1 -1
  1236. package/services/trigger-event-bridge.js +1 -1
  1237. package/services/tunnel-to-mobile/index.d.ts +2 -0
  1238. package/services/tunnel-to-mobile/index.d.ts.map +1 -0
  1239. package/services/tunnel-to-mobile/index.js +1 -0
  1240. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts +105 -0
  1241. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts.map +1 -0
  1242. package/services/tunnel-to-mobile/tunnel-to-mobile-client.js +190 -0
  1243. package/services/vault-bootstrap.d.ts.map +1 -1
  1244. package/services/vault-bootstrap.js +48 -21
  1245. package/services/vault-mirror.d.ts +1 -1
  1246. package/services/vault-mirror.d.ts.map +1 -1
  1247. package/services/vault-mirror.js +29 -6
  1248. package/services/voice-profiles/diarization-pipeline.d.ts +6 -0
  1249. package/services/voice-profiles/diarization-pipeline.d.ts.map +1 -0
  1250. package/services/voice-profiles/diarization-pipeline.js +20 -0
  1251. package/services/voice-profiles/index.d.ts +12 -0
  1252. package/services/voice-profiles/index.d.ts.map +1 -0
  1253. package/services/voice-profiles/index.js +5 -0
  1254. package/services/voice-profiles/nickname-evaluator.d.ts +14 -0
  1255. package/services/voice-profiles/nickname-evaluator.d.ts.map +1 -0
  1256. package/services/voice-profiles/nickname-evaluator.js +46 -0
  1257. package/services/voice-profiles/owner-confidence.d.ts +10 -0
  1258. package/services/voice-profiles/owner-confidence.d.ts.map +1 -0
  1259. package/services/voice-profiles/owner-confidence.js +38 -0
  1260. package/services/voice-profiles/private-challenge.d.ts +20 -0
  1261. package/services/voice-profiles/private-challenge.d.ts.map +1 -0
  1262. package/services/voice-profiles/private-challenge.js +44 -0
  1263. package/services/voice-profiles/store.d.ts +21 -0
  1264. package/services/voice-profiles/store.d.ts.map +1 -0
  1265. package/services/voice-profiles/store.js +50 -0
  1266. package/services/voice-profiles/types.d.ts +38 -0
  1267. package/services/voice-profiles/types.d.ts.map +1 -0
  1268. package/services/voice-profiles/types.js +1 -0
  1269. package/styles/electrobun-mac-window-drag.css +4 -4
  1270. package/test/helpers/__tests__/live-agent-test.smoke.test.ts +43 -70
  1271. package/test/helpers/browser-mocks.ts +2 -2
  1272. package/test/helpers/conditional-tests.ts +2 -2
  1273. package/test/helpers/i18n.ts +1 -1
  1274. package/test/helpers/live-agent-test.ts +537 -551
  1275. package/test/helpers/live-provider.test.ts +4 -4
  1276. package/test/helpers/live-provider.ts +41 -7
  1277. package/test/helpers/live-runtime-server.ts +4 -4
  1278. package/test/helpers/pglite-runtime.ts +1 -1
  1279. package/test/helpers/real-runtime.ts +72 -20
  1280. package/test/helpers/trajectory-harness.ts +11 -7
  1281. package/test/scripts/start-eliza-live.ts +9 -0
  1282. package/test/scripts/test-parallel.mjs +1 -1
  1283. package/test/scripts/test-root-unit.mjs +6 -7
  1284. package/ui-compat.d.ts +13 -2
  1285. package/ui-compat.d.ts.map +1 -1
  1286. package/ui-compat.js +19 -3
  1287. package/api/auth-pairing-compat-routes.d.ts +0 -17
  1288. package/api/auth-pairing-compat-routes.d.ts.map +0 -1
  1289. package/api/auth-pairing-compat-routes.js +0 -301
  1290. package/api/local-inference-compat-routes.d.ts +0 -16
  1291. package/api/local-inference-compat-routes.d.ts.map +0 -1
  1292. package/api/local-inference-compat-routes.js +0 -617
  1293. package/api/onboarding-compat-routes.d.ts +0 -4
  1294. package/api/onboarding-compat-routes.d.ts.map +0 -1
  1295. package/api/onboarding-compat-routes.js +0 -207
  1296. package/api/plugins-compat-routes.d.ts +0 -103
  1297. package/api/plugins-compat-routes.d.ts.map +0 -1
  1298. package/api/plugins-compat-routes.js +0 -1181
  1299. package/api/server-onboarding-compat.d.ts +0 -31
  1300. package/api/server-onboarding-compat.d.ts.map +0 -1
  1301. package/api/server-onboarding-compat.js +0 -283
  1302. package/benchmark/cua-routes.d.ts +0 -10
  1303. package/benchmark/cua-routes.d.ts.map +0 -1
  1304. package/benchmark/cua-routes.js +0 -179
  1305. package/benchmark/mock-plugin-base.d.ts +0 -9
  1306. package/benchmark/mock-plugin-base.d.ts.map +0 -1
  1307. package/benchmark/mock-plugin-base.js +0 -325
  1308. package/cli/parse-duration.d.ts +0 -5
  1309. package/cli/parse-duration.d.ts.map +0 -1
  1310. package/cli/parse-duration.js +0 -27
  1311. package/patches/llama-cpp-capacitor@0.1.5.patch +0 -2387
  1312. package/platform/agent-browser-stub.d.ts +0 -27
  1313. package/platform/agent-browser-stub.d.ts.map +0 -1
  1314. package/platform/agent-browser-stub.js +0 -16
  1315. package/platforms/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +0 -26
  1316. package/platforms/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  1317. package/platforms/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  1318. package/platforms/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +0 -18
  1319. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512@2x.png +0 -0
  1320. package/platforms/electrobun/assets/appIcon.png +0 -0
  1321. package/platforms/electrobun/scripts/build-whisper-universal.sh +0 -137
  1322. package/platforms/electrobun/scripts/build-whisper.sh +0 -95
  1323. package/platforms/electrobun/src/libMacWindowEffects.dylib +0 -0
  1324. package/platforms/electrobun/src/native/whisper.ts +0 -280
  1325. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  1326. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  1327. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  1328. package/registry/generate-apps.d.ts +0 -2
  1329. package/registry/generate-apps.d.ts.map +0 -1
  1330. package/registry/generate-apps.js +0 -338
  1331. package/registry/generate.d.ts +0 -2
  1332. package/registry/generate.d.ts.map +0 -1
  1333. package/registry/generate.js +0 -506
  1334. package/runtime/embedding-manager-support.d.ts +0 -77
  1335. package/runtime/embedding-manager-support.d.ts.map +0 -1
  1336. package/runtime/embedding-manager-support.js +0 -309
  1337. package/runtime/embedding-presets.d.ts +0 -5
  1338. package/runtime/embedding-presets.d.ts.map +0 -1
  1339. package/runtime/embedding-presets.js +0 -47
  1340. package/runtime/embedding-warmup-policy.d.ts +0 -13
  1341. package/runtime/embedding-warmup-policy.d.ts.map +0 -1
  1342. package/runtime/embedding-warmup-policy.js +0 -33
  1343. package/runtime/ensure-local-inference-handler.d.ts +0 -25
  1344. package/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  1345. package/runtime/ensure-local-inference-handler.js +0 -389
  1346. package/runtime/mobile-local-inference-gate.d.ts +0 -21
  1347. package/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  1348. package/runtime/mobile-local-inference-gate.js +0 -24
  1349. package/scripts/aosp/avd-test.mjs +0 -403
  1350. package/scripts/aosp/boot-validate.mjs +0 -536
  1351. package/scripts/aosp/build-aosp.mjs +0 -448
  1352. package/scripts/aosp/build-bootanimation.mjs +0 -178
  1353. package/scripts/aosp/capture-screens.mjs +0 -325
  1354. package/scripts/aosp/e2e-validate.mjs +0 -225
  1355. package/scripts/aosp/lint-init-rc.mjs +0 -258
  1356. package/scripts/aosp/llama-shim/eliza_llama_shim.c +0 -276
  1357. package/scripts/aosp/sim.mjs +0 -277
  1358. package/scripts/aosp/sync-to-aosp.mjs +0 -134
  1359. package/scripts/aosp/validate.mjs +0 -1273
  1360. package/scripts/build-llama-cpp-dflash.mjs +0 -1866
  1361. package/scripts/generate-onboarding-voicelines.mjs +0 -194
  1362. package/scripts/generated/static-asset-manifest.json +0 -4
  1363. package/scripts/normalize-parallax-capture.ts +0 -97
  1364. package/scripts/omnivoice-fuse/Makefile +0 -44
  1365. package/scripts/omnivoice-fuse/README.md +0 -266
  1366. package/scripts/omnivoice-fuse/cmake-graft.mjs +0 -180
  1367. package/scripts/omnivoice-fuse/ffi-stub.c +0 -222
  1368. package/scripts/omnivoice-fuse/ffi.h +0 -158
  1369. package/scripts/omnivoice-fuse/libelizainference_stub.dylib +0 -0
  1370. package/scripts/omnivoice-fuse/verify-symbols.mjs +0 -138
  1371. package/security/cloud-secret-store.d.ts +0 -34
  1372. package/security/cloud-secret-store.d.ts.map +0 -1
  1373. package/security/cloud-secret-store.js +0 -65
  1374. package/security/export-guard.d.ts +0 -34
  1375. package/security/export-guard.d.ts.map +0 -1
  1376. package/security/export-guard.js +0 -127
  1377. package/services/local-inference/__stress__/cache-stress-helpers.d.ts +0 -76
  1378. package/services/local-inference/__stress__/cache-stress-helpers.d.ts.map +0 -1
  1379. package/services/local-inference/__stress__/cache-stress-helpers.js +0 -238
  1380. package/services/local-inference/active-model.d.ts +0 -180
  1381. package/services/local-inference/active-model.d.ts.map +0 -1
  1382. package/services/local-inference/active-model.js +0 -362
  1383. package/services/local-inference/assignments.d.ts +0 -58
  1384. package/services/local-inference/assignments.d.ts.map +0 -1
  1385. package/services/local-inference/assignments.js +0 -179
  1386. package/services/local-inference/backend.d.ts +0 -200
  1387. package/services/local-inference/backend.d.ts.map +0 -1
  1388. package/services/local-inference/backend.js +0 -242
  1389. package/services/local-inference/bundled-models.d.ts +0 -34
  1390. package/services/local-inference/bundled-models.d.ts.map +0 -1
  1391. package/services/local-inference/bundled-models.js +0 -104
  1392. package/services/local-inference/cache-bridge.d.ts +0 -184
  1393. package/services/local-inference/cache-bridge.d.ts.map +0 -1
  1394. package/services/local-inference/cache-bridge.js +0 -333
  1395. package/services/local-inference/catalog.d.ts +0 -57
  1396. package/services/local-inference/catalog.d.ts.map +0 -1
  1397. package/services/local-inference/catalog.js +0 -262
  1398. package/services/local-inference/conversation-registry.d.ts +0 -122
  1399. package/services/local-inference/conversation-registry.d.ts.map +0 -1
  1400. package/services/local-inference/conversation-registry.js +0 -182
  1401. package/services/local-inference/device-bridge.d.ts +0 -139
  1402. package/services/local-inference/device-bridge.d.ts.map +0 -1
  1403. package/services/local-inference/device-bridge.js +0 -774
  1404. package/services/local-inference/dflash-doctor.d.ts +0 -27
  1405. package/services/local-inference/dflash-doctor.d.ts.map +0 -1
  1406. package/services/local-inference/dflash-doctor.js +0 -149
  1407. package/services/local-inference/dflash-server.d.ts +0 -248
  1408. package/services/local-inference/dflash-server.d.ts.map +0 -1
  1409. package/services/local-inference/dflash-server.js +0 -1076
  1410. package/services/local-inference/downloader.d.ts +0 -48
  1411. package/services/local-inference/downloader.d.ts.map +0 -1
  1412. package/services/local-inference/downloader.js +0 -688
  1413. package/services/local-inference/engine.d.ts +0 -282
  1414. package/services/local-inference/engine.d.ts.map +0 -1
  1415. package/services/local-inference/engine.js +0 -743
  1416. package/services/local-inference/external-scanner.d.ts +0 -17
  1417. package/services/local-inference/external-scanner.d.ts.map +0 -1
  1418. package/services/local-inference/external-scanner.js +0 -261
  1419. package/services/local-inference/handler-registry.d.ts +0 -72
  1420. package/services/local-inference/handler-registry.d.ts.map +0 -1
  1421. package/services/local-inference/handler-registry.js +0 -159
  1422. package/services/local-inference/hardware.d.ts +0 -26
  1423. package/services/local-inference/hardware.d.ts.map +0 -1
  1424. package/services/local-inference/hardware.js +0 -139
  1425. package/services/local-inference/hf-search.d.ts +0 -19
  1426. package/services/local-inference/hf-search.d.ts.map +0 -1
  1427. package/services/local-inference/hf-search.js +0 -169
  1428. package/services/local-inference/index.d.ts +0 -10
  1429. package/services/local-inference/index.d.ts.map +0 -1
  1430. package/services/local-inference/index.js +0 -7
  1431. package/services/local-inference/llama-server-metrics.d.ts +0 -108
  1432. package/services/local-inference/llama-server-metrics.d.ts.map +0 -1
  1433. package/services/local-inference/llama-server-metrics.js +0 -175
  1434. package/services/local-inference/manifest/index.d.ts +0 -4
  1435. package/services/local-inference/manifest/index.d.ts.map +0 -1
  1436. package/services/local-inference/manifest/index.js +0 -5
  1437. package/services/local-inference/manifest/schema.d.ts +0 -419
  1438. package/services/local-inference/manifest/schema.d.ts.map +0 -1
  1439. package/services/local-inference/manifest/schema.js +0 -227
  1440. package/services/local-inference/manifest/types.d.ts +0 -23
  1441. package/services/local-inference/manifest/types.d.ts.map +0 -1
  1442. package/services/local-inference/manifest/types.js +0 -5
  1443. package/services/local-inference/manifest/validator.d.ts +0 -43
  1444. package/services/local-inference/manifest/validator.d.ts.map +0 -1
  1445. package/services/local-inference/manifest/validator.js +0 -187
  1446. package/services/local-inference/paths.d.ts +0 -8
  1447. package/services/local-inference/paths.d.ts.map +0 -1
  1448. package/services/local-inference/paths.js +0 -7
  1449. package/services/local-inference/providers.d.ts +0 -61
  1450. package/services/local-inference/providers.d.ts.map +0 -1
  1451. package/services/local-inference/providers.js +0 -334
  1452. package/services/local-inference/ram-budget.d.ts +0 -57
  1453. package/services/local-inference/ram-budget.d.ts.map +0 -1
  1454. package/services/local-inference/ram-budget.js +0 -107
  1455. package/services/local-inference/readiness.d.ts +0 -9
  1456. package/services/local-inference/readiness.d.ts.map +0 -1
  1457. package/services/local-inference/readiness.js +0 -153
  1458. package/services/local-inference/recommendation.d.ts +0 -62
  1459. package/services/local-inference/recommendation.d.ts.map +0 -1
  1460. package/services/local-inference/recommendation.js +0 -309
  1461. package/services/local-inference/registry.d.ts +0 -35
  1462. package/services/local-inference/registry.d.ts.map +0 -1
  1463. package/services/local-inference/registry.js +0 -117
  1464. package/services/local-inference/router-handler.d.ts +0 -51
  1465. package/services/local-inference/router-handler.d.ts.map +0 -1
  1466. package/services/local-inference/router-handler.js +0 -165
  1467. package/services/local-inference/routing-policy.d.ts +0 -55
  1468. package/services/local-inference/routing-policy.d.ts.map +0 -1
  1469. package/services/local-inference/routing-policy.js +0 -195
  1470. package/services/local-inference/routing-preferences.d.ts +0 -8
  1471. package/services/local-inference/routing-preferences.d.ts.map +0 -1
  1472. package/services/local-inference/routing-preferences.js +0 -7
  1473. package/services/local-inference/service.d.ts +0 -88
  1474. package/services/local-inference/service.d.ts.map +0 -1
  1475. package/services/local-inference/service.js +0 -210
  1476. package/services/local-inference/session-pool.d.ts +0 -72
  1477. package/services/local-inference/session-pool.d.ts.map +0 -1
  1478. package/services/local-inference/session-pool.js +0 -125
  1479. package/services/local-inference/types.d.ts +0 -309
  1480. package/services/local-inference/types.d.ts.map +0 -1
  1481. package/services/local-inference/types.js +0 -23
  1482. package/services/local-inference/verify.d.ts +0 -8
  1483. package/services/local-inference/verify.d.ts.map +0 -1
  1484. package/services/local-inference/verify.js +0 -7
  1485. package/services/local-inference/voice/barge-in.d.ts +0 -15
  1486. package/services/local-inference/voice/barge-in.d.ts.map +0 -1
  1487. package/services/local-inference/voice/barge-in.js +0 -20
  1488. package/services/local-inference/voice/engine-bridge.d.ts +0 -256
  1489. package/services/local-inference/voice/engine-bridge.d.ts.map +0 -1
  1490. package/services/local-inference/voice/engine-bridge.js +0 -398
  1491. package/services/local-inference/voice/ffi-bindings.d.ts +0 -114
  1492. package/services/local-inference/voice/ffi-bindings.d.ts.map +0 -1
  1493. package/services/local-inference/voice/ffi-bindings.js +0 -281
  1494. package/services/local-inference/voice/index.d.ts +0 -51
  1495. package/services/local-inference/voice/index.d.ts.map +0 -1
  1496. package/services/local-inference/voice/index.js +0 -50
  1497. package/services/local-inference/voice/lifecycle.d.ts +0 -135
  1498. package/services/local-inference/voice/lifecycle.d.ts.map +0 -1
  1499. package/services/local-inference/voice/lifecycle.js +0 -189
  1500. package/services/local-inference/voice/phoneme-tokenizer.d.ts +0 -58
  1501. package/services/local-inference/voice/phoneme-tokenizer.d.ts.map +0 -1
  1502. package/services/local-inference/voice/phoneme-tokenizer.js +0 -53
  1503. package/services/local-inference/voice/phrase-cache.d.ts +0 -24
  1504. package/services/local-inference/voice/phrase-cache.d.ts.map +0 -1
  1505. package/services/local-inference/voice/phrase-cache.js +0 -32
  1506. package/services/local-inference/voice/phrase-chunker.d.ts +0 -20
  1507. package/services/local-inference/voice/phrase-chunker.d.ts.map +0 -1
  1508. package/services/local-inference/voice/phrase-chunker.js +0 -85
  1509. package/services/local-inference/voice/ring-buffer.d.ts +0 -40
  1510. package/services/local-inference/voice/ring-buffer.d.ts.map +0 -1
  1511. package/services/local-inference/voice/ring-buffer.js +0 -85
  1512. package/services/local-inference/voice/rollback-queue.d.ts +0 -24
  1513. package/services/local-inference/voice/rollback-queue.d.ts.map +0 -1
  1514. package/services/local-inference/voice/rollback-queue.js +0 -49
  1515. package/services/local-inference/voice/scheduler.d.ts +0 -47
  1516. package/services/local-inference/voice/scheduler.d.ts.map +0 -1
  1517. package/services/local-inference/voice/scheduler.js +0 -123
  1518. package/services/local-inference/voice/shared-resources.d.ts +0 -119
  1519. package/services/local-inference/voice/shared-resources.d.ts.map +0 -1
  1520. package/services/local-inference/voice/shared-resources.js +0 -83
  1521. package/services/local-inference/voice/speaker-preset-cache.d.ts +0 -28
  1522. package/services/local-inference/voice/speaker-preset-cache.d.ts.map +0 -1
  1523. package/services/local-inference/voice/speaker-preset-cache.js +0 -44
  1524. package/services/local-inference/voice/types.d.ts +0 -80
  1525. package/services/local-inference/voice/types.d.ts.map +0 -1
  1526. package/services/local-inference/voice/voice-preset-format.d.ts +0 -56
  1527. package/services/local-inference/voice/voice-preset-format.d.ts.map +0 -1
  1528. package/services/local-inference/voice/voice-preset-format.js +0 -184
  1529. package/services/plugin-installer.d.ts +0 -22
  1530. package/services/plugin-installer.d.ts.map +0 -1
  1531. package/services/plugin-installer.js +0 -41
  1532. package/test/scripts/task-agent-live-smoke.ts +0 -1335
  1533. /package/services/{local-inference/voice → ambient-audio}/types.js +0 -0
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Coding-agent account-selector bridge.
3
+ *
4
+ * The orchestrator plugin (`@elizaos/plugin-agent-orchestrator`) spawns Claude
5
+ * Code / Codex / OpenCode sub-agents but depends only on `@elizaos/core` — it
6
+ * cannot import the `AccountPool` or the credential store. So, exactly like the
7
+ * Anthropic and subscription-selector bridges in `account-pool.ts`, we publish a
8
+ * narrow contract on a `globalThis` symbol that the plugin reads at spawn time.
9
+ *
10
+ * Responsibilities:
11
+ * - Map a coding-agent type ("claude" / "codex" / …) to its candidate provider
12
+ * ids and pick one account from the pool (default `least-used`).
13
+ * - Resolve that account's credential and return the env vars the spawned
14
+ * coding-agent subprocess needs to authenticate AS THAT ACCOUNT:
15
+ * claude → `CLAUDE_CODE_OAUTH_TOKEN`
16
+ * codex → a per-account `CODEX_HOME` dir holding an `auth.json`
17
+ * *-api → the provider's direct API-key env var
18
+ * - Record usage + health back into the pool keyed by the serving account.
19
+ *
20
+ * Subscription tokens only ever leave this layer to flow into the first-party
21
+ * coding subprocess (which IS Claude Code / Codex) — never into the runtime's
22
+ * own `process.env`. That respects the providers' TOS the same way
23
+ * `applySubscriptionCredentialsLocal` does.
24
+ */
25
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
26
+ import os from "node:os";
27
+ import path from "node:path";
28
+ import { loadAccount } from "@elizaos/agent/auth/account-storage";
29
+ import { getAccessToken } from "@elizaos/agent/auth/credentials";
30
+ import { DIRECT_ACCOUNT_PROVIDER_ENV, isSubscriptionProvider, } from "@elizaos/agent/auth/types";
31
+ import { writeJsonAtomicSync } from "@elizaos/agent/utils/atomic-json";
32
+ import { logger, resolveStateDir } from "@elizaos/core";
33
+ const CODING_AGENT_SELECTOR_BRIDGE_SYMBOL = Symbol.for("eliza.account-pool.coding-agent.v1");
34
+ const VALID_CODING_STRATEGIES = new Set([
35
+ "priority",
36
+ "round-robin",
37
+ "least-used",
38
+ "quota-aware",
39
+ ]);
40
+ /** Default selection strategy — overridable via ELIZA_CODING_ACCOUNT_STRATEGY env var. */
41
+ function getDefaultCodingStrategy() {
42
+ const env = typeof process !== "undefined"
43
+ ? process.env.ELIZA_CODING_ACCOUNT_STRATEGY?.trim()
44
+ : undefined;
45
+ if (!env)
46
+ return "least-used";
47
+ if (VALID_CODING_STRATEGIES.has(env))
48
+ return env;
49
+ logger.warn(`[coding-account-bridge] ignoring invalid ELIZA_CODING_ACCOUNT_STRATEGY=${JSON.stringify(env)}; using least-used`);
50
+ return "least-used";
51
+ }
52
+ /**
53
+ * Ordered provider candidates per coding-agent type. The first provider with an
54
+ * eligible account wins; a subscription provider is preferred over its direct
55
+ * API equivalent (subscriptions are the primary use case here).
56
+ *
57
+ * claude (claude-agent-acp) and codex (codex-acp) are first-party CLIs.
58
+ * opencode authenticates through its configured backend; the only backend it
59
+ * resolves from a pooled key is Cerebras (`CEREBRAS_API_KEY`, see
60
+ * buildOpencodeSpawnConfig), so opencode pool-rotates across `cerebras-api`
61
+ * accounts and no-ops otherwise. z.ai / Kimi / GLM have no first-party coding
62
+ * CLI — their accounts serve the main runtime's API-key routing — so they are
63
+ * deliberately absent (advertising them would offer an unspawnable path).
64
+ */
65
+ const AGENT_PROVIDER_CANDIDATES = {
66
+ claude: ["anthropic-subscription", "anthropic-api"],
67
+ codex: ["openai-codex", "openai-api"],
68
+ opencode: ["cerebras-api"],
69
+ };
70
+ function candidatesFor(agentType) {
71
+ return AGENT_PROVIDER_CANDIDATES[agentType.toLowerCase()] ?? [];
72
+ }
73
+ /**
74
+ * Whether a token-resolve failure is a genuine auth problem (→ needs-reauth)
75
+ * vs a transient network/5xx blip. A transient failure must NOT sideline a
76
+ * healthy account — that would exclude it from the pool until the next
77
+ * keep-alive sweep (~5 min). `undefined` (getAccessToken returned null without
78
+ * throwing) means no credential is present at all → genuine needs-reauth.
79
+ */
80
+ const AUTH_FAILURE_PATTERN = /\b(40[13]|invalid[_ ]?grant|invalid[_ ]?token|unauthor|forbidden|re-?auth|revoked|expired)\b/i;
81
+ export function isAuthFailure(err) {
82
+ if (err === undefined)
83
+ return true;
84
+ const msg = err instanceof Error ? err.message : String(err);
85
+ return AUTH_FAILURE_PATTERN.test(msg);
86
+ }
87
+ function codexHomeDir(accountId) {
88
+ return path.join(process.env.ELIZA_HOME || resolveStateDir(), "auth", "_codex-home", accountId);
89
+ }
90
+ /**
91
+ * Materialize a per-account `CODEX_HOME` so Codex authenticates as the selected
92
+ * account instead of the machine's single `~/.codex` login. Writes the
93
+ * ChatGPT-login `auth.json` shape Codex reads; the account_id is the OAuth
94
+ * account id baked into the credential record (`organizationId`).
95
+ */
96
+ function materializeCodexHome(accountId, accessToken) {
97
+ const dir = codexHomeDir(accountId);
98
+ if (!existsSync(dir)) {
99
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
100
+ }
101
+ const record = loadAccount("openai-codex", accountId);
102
+ const refreshToken = record?.credentials.refresh ?? "";
103
+ const chatgptAccountId = record?.organizationId;
104
+ // Codex's chatgpt-mode auth loader requires `tokens.id_token`; omitting it
105
+ // fails with "Authentication required" even when access_token is valid (an
106
+ // expired id_token is tolerated — Codex refreshes — but it must be present).
107
+ const idToken = record?.credentials.idToken;
108
+ const authJson = {
109
+ auth_mode: "chatgpt",
110
+ OPENAI_API_KEY: null,
111
+ tokens: {
112
+ ...(idToken ? { id_token: idToken } : {}),
113
+ access_token: accessToken,
114
+ refresh_token: refreshToken,
115
+ ...(chatgptAccountId ? { account_id: chatgptAccountId } : {}),
116
+ },
117
+ last_refresh: new Date().toISOString(),
118
+ };
119
+ writeJsonAtomicSync(path.join(dir, "auth.json"), authJson);
120
+ // Codex reads its model from CODEX_HOME/config.toml; with none, codex-acp
121
+ // falls back to a built-in default (e.g. gpt-5.3-codex) that ChatGPT-account
122
+ // auth rejects ("model is not supported when using Codex with a ChatGPT
123
+ // account"). Write a MINIMAL config.toml with just the model — reusing the
124
+ // operator's working model (extracted from ~/.codex/config.toml) but NOT the
125
+ // rest of their config, which can carry fields the pinned codex-acp rejects
126
+ // (e.g. newer reasoning-effort variants). Falls back to a compatible default.
127
+ const targetConfig = path.join(dir, "config.toml");
128
+ try {
129
+ let model = process.env.ELIZA_CODEX_MODEL?.trim();
130
+ // Validate the operator-supplied model: it is interpolated into TOML, so a
131
+ // stray quote/newline would break out of the string (corrupt config) — and
132
+ // a model name is a conservative token anyway. Reject anything else.
133
+ if (model && !/^[\w.:/-]+$/.test(model)) {
134
+ logger.warn(`[coding-account-bridge] ignoring malformed ELIZA_CODEX_MODEL=${JSON.stringify(model)}`);
135
+ model = undefined;
136
+ }
137
+ if (!model) {
138
+ const machineConfig = path.join(os.homedir(), ".codex", "config.toml");
139
+ if (existsSync(machineConfig)) {
140
+ // Accept both double- and single-quoted TOML strings (both are valid +
141
+ // common); the captured value can't contain the quote char so it's
142
+ // safe to re-emit double-quoted.
143
+ const m = readFileSync(machineConfig, "utf-8").match(/^\s*model\s*=\s*["']([^"']+)["']/m);
144
+ if (m?.[1])
145
+ model = m[1];
146
+ }
147
+ }
148
+ writeFileSync(targetConfig, `model = "${model || "gpt-5.1-codex"}"\n`, {
149
+ mode: 0o600,
150
+ });
151
+ }
152
+ catch (err) {
153
+ logger.warn(`[coding-account-bridge] could not materialize codex config.toml: ${String(err)}`);
154
+ }
155
+ return dir;
156
+ }
157
+ async function buildEnvPatch(providerId, accountId, accessToken) {
158
+ switch (providerId) {
159
+ case "anthropic-subscription":
160
+ return { CLAUDE_CODE_OAUTH_TOKEN: accessToken };
161
+ case "openai-codex":
162
+ return { CODEX_HOME: materializeCodexHome(accountId, accessToken) };
163
+ default: {
164
+ // Direct API providers (e.g. cerebras-api → CEREBRAS_API_KEY for opencode)
165
+ // inject under their canonical env key; run-main.ts normalizes aliases
166
+ // (Z_AI_API_KEY → ZAI_API_KEY, KIMI_API_KEY → MOONSHOT_API_KEY).
167
+ const envKey = DIRECT_ACCOUNT_PROVIDER_ENV[providerId];
168
+ return envKey ? { [envKey]: accessToken } : {};
169
+ }
170
+ }
171
+ }
172
+ function makeBridge(pool) {
173
+ return {
174
+ describe() {
175
+ const out = {};
176
+ for (const [agentType, providers] of Object.entries(AGENT_PROVIDER_CANDIDATES)) {
177
+ out[agentType] = providers.map((providerId) => {
178
+ const accounts = pool.list(providerId);
179
+ return {
180
+ providerId,
181
+ total: accounts.length,
182
+ enabled: accounts.filter((a) => a.enabled).length,
183
+ healthy: accounts.filter((a) => a.enabled && a.health === "ok")
184
+ .length,
185
+ };
186
+ });
187
+ }
188
+ return out;
189
+ },
190
+ async select(agentType, opts) {
191
+ const candidates = candidatesFor(agentType);
192
+ if (candidates.length === 0)
193
+ return null;
194
+ const strategy = opts?.strategy ?? getDefaultCodingStrategy();
195
+ for (const providerId of candidates) {
196
+ const account = await pool.select({
197
+ providerId,
198
+ strategy,
199
+ ...(opts?.sessionKey ? { sessionKey: opts.sessionKey } : {}),
200
+ ...(opts?.exclude ? { exclude: opts.exclude } : {}),
201
+ });
202
+ if (!account)
203
+ continue;
204
+ let accessToken = null;
205
+ let resolveError;
206
+ try {
207
+ accessToken = await getAccessToken(providerId, account.id);
208
+ }
209
+ catch (err) {
210
+ resolveError = err;
211
+ logger.warn(`[coding-account-bridge] token resolve failed for ${providerId}/${account.id}: ${String(err)}`);
212
+ }
213
+ if (!accessToken) {
214
+ // Only flag for re-auth on a genuine auth failure; a transient
215
+ // network/5xx blip must not pull a healthy account out of rotation.
216
+ if (isAuthFailure(resolveError)) {
217
+ await pool.markNeedsReauth(account.id, "No valid credential / token refresh failed", { providerId });
218
+ }
219
+ continue;
220
+ }
221
+ const envPatch = await buildEnvPatch(providerId, account.id, accessToken);
222
+ if (Object.keys(envPatch).length === 0)
223
+ continue;
224
+ const source = isSubscriptionProvider(providerId)
225
+ ? "oauth"
226
+ : "api-key";
227
+ logger.info(`[coding-account-bridge] ${agentType} → ${providerId} account "${account.label}" (${account.id}) via ${strategy}`);
228
+ return {
229
+ providerId,
230
+ accountId: account.id,
231
+ label: account.label,
232
+ source,
233
+ strategy,
234
+ ...(account.usage ? { usage: account.usage } : {}),
235
+ envPatch,
236
+ };
237
+ }
238
+ return null;
239
+ },
240
+ markRateLimited(providerId, accountId, untilMs, detail) {
241
+ return pool.markRateLimited(accountId, untilMs, detail, { providerId });
242
+ },
243
+ markNeedsReauth(providerId, accountId, detail) {
244
+ return pool.markNeedsReauth(accountId, detail, { providerId });
245
+ },
246
+ recordUsage(providerId, accountId, result) {
247
+ return pool.recordCall(accountId, result, { providerId });
248
+ },
249
+ };
250
+ }
251
+ /**
252
+ * Install the coding-agent selector bridge on `globalThis`. Idempotent — called
253
+ * from `getDefaultAccountPool()` so it is present before the first spawn.
254
+ */
255
+ export function installCodingAgentSelectorBridge(pool) {
256
+ if (typeof globalThis === "undefined")
257
+ return;
258
+ globalThis[CODING_AGENT_SELECTOR_BRIDGE_SYMBOL] =
259
+ makeBridge(pool);
260
+ }
261
+ /** Read the installed bridge (null when no pool has been constructed yet). */
262
+ export function getCodingAgentSelectorBridge() {
263
+ if (typeof globalThis === "undefined")
264
+ return null;
265
+ const bridge = globalThis[CODING_AGENT_SELECTOR_BRIDGE_SYMBOL];
266
+ return bridge ?? null;
267
+ }
@@ -4,9 +4,9 @@
4
4
  * quick-pick servers, channels, recipients, and chats without making the
5
5
  * end-user paste raw IDs.
6
6
  *
7
- * Discord is the only wired source in slice 2. Slack, Telegram, and Gmail
8
- * are placeholders so the host can stack them onto this framework without
9
- * a route or UI rewrite.
7
+ * Discord is the wired source in this catalog. Slack, Telegram, and Gmail keep
8
+ * typed config slots so host integrations can add enumerators without a route
9
+ * or UI rewrite.
10
10
  *
11
11
  * The Discord enumeration shares its 5-minute REST cache with the workflow
12
12
  * runtime-context provider when the host wires both with the same
@@ -36,6 +36,13 @@ export interface ListGroupsOptions {
36
36
  }
37
37
  export interface ConnectorTargetCatalog {
38
38
  listGroups(opts?: ListGroupsOptions): Promise<TargetGroup[]>;
39
+ /**
40
+ * No-op lifecycle hook so the runtime service-stop loop (core/runtime.ts)
41
+ * does not warn "Service instance is missing stop(); skipping" on every
42
+ * restart. The catalog holds no own resources — its Discord REST cache is
43
+ * owned by the shared `discordCache` passed in by the host.
44
+ */
45
+ stop(): Promise<void>;
39
46
  }
40
47
  /**
41
48
  * Subset of the host config the catalog reads. Mirrors the runtime-context
@@ -1 +1 @@
1
- {"version":3,"file":"connector-target-catalog.d.ts","sourceRoot":"","sources":["../../../../../src/services/connector-target-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAEzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CAC9D;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,QAAQ,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACpD,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACrD,CAAC;CACH;AAED,MAAM,WAAW,kCAAkC;IACjD,yEAAyE;IACzE,SAAS,EAAE,MAAM,mBAAmB,CAAC;IACrC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,oEAAoE;IACpE,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,sCAAsC;IACtC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,sBAAsB,CAqDxB"}
1
+ {"version":3,"file":"connector-target-catalog.d.ts","sourceRoot":"","sources":["../../../../../src/services/connector-target-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAEzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,QAAQ,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACpD,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACrD,CAAC;CACH;AAED,MAAM,WAAW,kCAAkC;IACjD,yEAAyE;IACzE,SAAS,EAAE,MAAM,mBAAmB,CAAC;IACrC,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,oEAAoE;IACpE,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,sCAAsC;IACtC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,sBAAsB,CAwDxB"}
@@ -4,16 +4,16 @@
4
4
  * quick-pick servers, channels, recipients, and chats without making the
5
5
  * end-user paste raw IDs.
6
6
  *
7
- * Discord is the only wired source in slice 2. Slack, Telegram, and Gmail
8
- * are placeholders so the host can stack them onto this framework without
9
- * a route or UI rewrite.
7
+ * Discord is the wired source in this catalog. Slack, Telegram, and Gmail keep
8
+ * typed config slots so host integrations can add enumerators without a route
9
+ * or UI rewrite.
10
10
  *
11
11
  * The Discord enumeration shares its 5-minute REST cache with the workflow
12
12
  * runtime-context provider when the host wires both with the same
13
13
  * `discordCache` instance — a "generate" call that already primed the
14
14
  * runtime-context cache pays no extra REST cost when the user picks.
15
15
  */
16
- import { createDiscordSourceCache, fetchDiscordEnumeration, } from "./discord-target-source";
16
+ import { createDiscordSourceCache, fetchDiscordEnumeration, } from "./discord-target-source.js";
17
17
  export function createElizaConnectorTargetCatalog(options) {
18
18
  const fetchImpl = options.fetchImpl ?? fetch;
19
19
  const now = options.now ?? Date.now;
@@ -60,5 +60,8 @@ export function createElizaConnectorTargetCatalog(options) {
60
60
  // back to a free-text input when no catalog entries are available.
61
61
  return all;
62
62
  },
63
+ async stop() {
64
+ // No own resources; the shared discordCache is host-owned.
65
+ },
63
66
  };
64
67
  }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Credential tunnel service — parent-side scoped credential delivery.
3
+ *
4
+ * When a spawned coding sub-agent needs a credential it cannot see (e.g.
5
+ * `OPENAI_API_KEY` for a task that requires hitting the OpenAI API), the
6
+ * orchestrator declares a *scope* on the parent runtime: a short-lived,
7
+ * single-use bearer token that names exactly which keys the child is allowed
8
+ * to pull. The parent's owner-only sensitive-request flow then collects the
9
+ * value(s) from the user, encrypts each one with the scope's symmetric key
10
+ * (AES-256-GCM), and the child redeems via the bridge HTTP endpoint by
11
+ * presenting the bearer token. The ciphertext is deleted on redemption.
12
+ *
13
+ * Threat model:
14
+ * - Only `sha256(scopedToken)` is stored, so a memory snapshot of this
15
+ * process cannot reveal the bearer token.
16
+ * - Each scope has a 30-minute TTL.
17
+ * - One-shot per key: on first retrieve, the ciphertext is wiped and the
18
+ * key state is marked redeemed. A second retrieve rejects with
19
+ * `already_redeemed`.
20
+ * - Tunneling a key not pre-declared at scope creation is rejected.
21
+ * - The childSessionId is checked on both tunnel and retrieve.
22
+ *
23
+ * Crypto: AES-256-GCM with a per-tunnel random 12-byte IV. The auth tag is
24
+ * appended to the ciphertext for transport. Only `node:crypto`.
25
+ *
26
+ * Logs intentionally exclude scoped tokens, ciphertexts, and credential
27
+ * values. Only the scope id, child session id, and key names are logged.
28
+ */
29
+ export interface DeclareScopeInput {
30
+ childSessionId: string;
31
+ credentialKeys: readonly string[];
32
+ }
33
+ export interface DeclareScopeResult {
34
+ credentialScopeId: string;
35
+ scopedToken: string;
36
+ /** epoch ms */
37
+ expiresAt: number;
38
+ }
39
+ export interface TunnelCredentialInput {
40
+ childSessionId: string;
41
+ credentialScopeId: string;
42
+ key: string;
43
+ value: string;
44
+ }
45
+ export interface RetrieveCredentialInput {
46
+ childSessionId: string;
47
+ key: string;
48
+ scopedToken: string;
49
+ }
50
+ export declare class CredentialScopeError extends Error {
51
+ readonly code: "invalid_input" | "unknown_scope" | "scope_expired" | "session_mismatch" | "key_not_in_scope" | "already_redeemed" | "no_ciphertext" | "invalid_token";
52
+ constructor(code: "invalid_input" | "unknown_scope" | "scope_expired" | "session_mismatch" | "key_not_in_scope" | "already_redeemed" | "no_ciphertext" | "invalid_token", message: string);
53
+ }
54
+ export interface CredentialTunnelService {
55
+ declareScope(input: DeclareScopeInput): DeclareScopeResult;
56
+ tunnelCredential(input: TunnelCredentialInput): void;
57
+ retrieveCredential(input: RetrieveCredentialInput): string;
58
+ expireScopes(now?: number): number;
59
+ /** Test-only: peek at whether a scope still has ciphertext for a key. */
60
+ hasCiphertext(credentialScopeId: string, key: string): boolean;
61
+ }
62
+ export declare function createCredentialTunnelService(options?: {
63
+ ttlMs?: number;
64
+ now?: () => number;
65
+ }): CredentialTunnelService;
66
+ //# sourceMappingURL=credential-tunnel-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-tunnel-service.d.ts","sourceRoot":"","sources":["../../../../../src/services/credential-tunnel-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAcH,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAkBD,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,IAAI,EACT,eAAe,GACf,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,eAAe;gBARV,IAAI,EACT,eAAe,GACf,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,eAAe,EACnB,OAAO,EAAE,MAAM;CAKlB;AAiCD,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAAC;IAC3D,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACrD,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAAC;IAC3D,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,yEAAyE;IACzE,aAAa,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAChE;AAED,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GAAG,uBAAuB,CAsN1B"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Credential tunnel service — parent-side scoped credential delivery.
3
+ *
4
+ * When a spawned coding sub-agent needs a credential it cannot see (e.g.
5
+ * `OPENAI_API_KEY` for a task that requires hitting the OpenAI API), the
6
+ * orchestrator declares a *scope* on the parent runtime: a short-lived,
7
+ * single-use bearer token that names exactly which keys the child is allowed
8
+ * to pull. The parent's owner-only sensitive-request flow then collects the
9
+ * value(s) from the user, encrypts each one with the scope's symmetric key
10
+ * (AES-256-GCM), and the child redeems via the bridge HTTP endpoint by
11
+ * presenting the bearer token. The ciphertext is deleted on redemption.
12
+ *
13
+ * Threat model:
14
+ * - Only `sha256(scopedToken)` is stored, so a memory snapshot of this
15
+ * process cannot reveal the bearer token.
16
+ * - Each scope has a 30-minute TTL.
17
+ * - One-shot per key: on first retrieve, the ciphertext is wiped and the
18
+ * key state is marked redeemed. A second retrieve rejects with
19
+ * `already_redeemed`.
20
+ * - Tunneling a key not pre-declared at scope creation is rejected.
21
+ * - The childSessionId is checked on both tunnel and retrieve.
22
+ *
23
+ * Crypto: AES-256-GCM with a per-tunnel random 12-byte IV. The auth tag is
24
+ * appended to the ciphertext for transport. Only `node:crypto`.
25
+ *
26
+ * Logs intentionally exclude scoped tokens, ciphertexts, and credential
27
+ * values. Only the scope id, child session id, and key names are logged.
28
+ */
29
+ import { createCipheriv, createDecipheriv, createHash, randomBytes, } from "node:crypto";
30
+ const TOKEN_BYTES = 32; // 256-bit
31
+ const IV_BYTES = 12;
32
+ const AUTH_TAG_BYTES = 16;
33
+ const SCOPE_TTL_MS = 30 * 60 * 1000;
34
+ export class CredentialScopeError extends Error {
35
+ code;
36
+ constructor(code, message) {
37
+ super(message);
38
+ this.code = code;
39
+ this.name = "CredentialScopeError";
40
+ }
41
+ }
42
+ function sha256(input) {
43
+ return createHash("sha256").update(input).digest();
44
+ }
45
+ function encrypt(value, key) {
46
+ const iv = randomBytes(IV_BYTES);
47
+ const cipher = createCipheriv("aes-256-gcm", key, iv);
48
+ const ciphertext = Buffer.concat([
49
+ cipher.update(value, "utf8"),
50
+ cipher.final(),
51
+ ]);
52
+ const authTag = cipher.getAuthTag();
53
+ return Buffer.concat([iv, ciphertext, authTag]).toString("hex");
54
+ }
55
+ function decrypt(encryptedHex, key) {
56
+ const buf = Buffer.from(encryptedHex, "hex");
57
+ if (buf.length < IV_BYTES + AUTH_TAG_BYTES + 1) {
58
+ throw new Error("ciphertext_too_short");
59
+ }
60
+ const iv = buf.subarray(0, IV_BYTES);
61
+ const authTag = buf.subarray(buf.length - AUTH_TAG_BYTES);
62
+ const ciphertext = buf.subarray(IV_BYTES, buf.length - AUTH_TAG_BYTES);
63
+ const decipher = createDecipheriv("aes-256-gcm", key, iv);
64
+ decipher.setAuthTag(authTag);
65
+ return Buffer.concat([
66
+ decipher.update(ciphertext),
67
+ decipher.final(),
68
+ ]).toString("utf8");
69
+ }
70
+ export function createCredentialTunnelService(options) {
71
+ const ttlMs = options?.ttlMs ?? SCOPE_TTL_MS;
72
+ const now = options?.now ?? (() => Date.now());
73
+ // Primary index: sha256(scopedToken) hex → scope. The plaintext token is
74
+ // never persisted in this process.
75
+ const byTokenHash = new Map();
76
+ // Secondary index: scope id → scope. Used by tunnelCredential which only
77
+ // has the scope id (the orchestrator that issued the token is the one
78
+ // calling tunnel; it identifies the scope by id, not by re-presenting the
79
+ // bearer token).
80
+ const byId = new Map();
81
+ function dropScope(entry) {
82
+ byTokenHash.delete(entry.scopedTokenHash);
83
+ byId.delete(entry.credentialScopeId);
84
+ }
85
+ function expiredAndDropped(entry, currentTime) {
86
+ if (entry.expiresAt <= currentTime) {
87
+ dropScope(entry);
88
+ return true;
89
+ }
90
+ return false;
91
+ }
92
+ return {
93
+ declareScope({ childSessionId, credentialKeys }) {
94
+ if (typeof childSessionId !== "string" ||
95
+ childSessionId.trim().length === 0) {
96
+ throw new CredentialScopeError("invalid_input", "childSessionId is required");
97
+ }
98
+ if (!Array.isArray(credentialKeys) || credentialKeys.length === 0) {
99
+ throw new CredentialScopeError("invalid_input", "credentialKeys must be a non-empty array");
100
+ }
101
+ const normalized = new Set();
102
+ for (const raw of credentialKeys) {
103
+ if (typeof raw !== "string" || raw.trim().length === 0) {
104
+ throw new CredentialScopeError("invalid_input", "credentialKeys entries must be non-empty strings");
105
+ }
106
+ normalized.add(raw.trim());
107
+ }
108
+ const tokenBytes = randomBytes(TOKEN_BYTES);
109
+ const scopedToken = tokenBytes.toString("hex");
110
+ const scopedTokenHash = sha256(tokenBytes).toString("hex");
111
+ // The encryption key is sha256(token). Derived deterministically from
112
+ // the bearer token, but kept on the scope entry so that
113
+ // `tunnelCredential` (which does not see the token) can still encrypt.
114
+ // Anyone who can read this Map already has memory access to the
115
+ // ciphertexts, so colocating the key with the scope entry does not
116
+ // weaken the threat model: the token hash is what gates retrieval.
117
+ const encryptionKey = sha256(tokenBytes);
118
+ const credentialScopeId = `cred_scope_${randomBytes(8).toString("hex")}`;
119
+ const expiresAt = now() + ttlMs;
120
+ const keys = new Map();
121
+ for (const key of normalized) {
122
+ keys.set(key, { encrypted: null, redeemed: false });
123
+ }
124
+ const entry = {
125
+ credentialScopeId,
126
+ childSessionId: childSessionId.trim(),
127
+ scopedTokenHash,
128
+ encryptionKey,
129
+ expiresAt,
130
+ keys,
131
+ };
132
+ byTokenHash.set(scopedTokenHash, entry);
133
+ byId.set(credentialScopeId, entry);
134
+ return { credentialScopeId, scopedToken, expiresAt };
135
+ },
136
+ tunnelCredential({ childSessionId, credentialScopeId, key, value }) {
137
+ if (typeof value !== "string" || value.length === 0) {
138
+ throw new CredentialScopeError("invalid_input", "value must be a non-empty string");
139
+ }
140
+ const entry = byId.get(credentialScopeId);
141
+ if (!entry) {
142
+ throw new CredentialScopeError("unknown_scope", "credentialScopeId not found");
143
+ }
144
+ if (expiredAndDropped(entry, now())) {
145
+ throw new CredentialScopeError("scope_expired", "scope expired");
146
+ }
147
+ if (entry.childSessionId !== childSessionId) {
148
+ throw new CredentialScopeError("session_mismatch", "childSessionId does not match scope owner");
149
+ }
150
+ const state = entry.keys.get(key);
151
+ if (!state) {
152
+ throw new CredentialScopeError("key_not_in_scope", `key ${key} not declared in scope`);
153
+ }
154
+ if (state.redeemed) {
155
+ throw new CredentialScopeError("already_redeemed", `key ${key} already redeemed`);
156
+ }
157
+ state.encrypted = encrypt(value, entry.encryptionKey);
158
+ },
159
+ retrieveCredential({ childSessionId, key, scopedToken }) {
160
+ if (typeof scopedToken !== "string" || scopedToken.length === 0) {
161
+ throw new CredentialScopeError("invalid_token", "scopedToken is required");
162
+ }
163
+ let tokenBytes;
164
+ try {
165
+ tokenBytes = Buffer.from(scopedToken, "hex");
166
+ }
167
+ catch {
168
+ throw new CredentialScopeError("invalid_token", "scopedToken invalid");
169
+ }
170
+ if (tokenBytes.length !== TOKEN_BYTES) {
171
+ throw new CredentialScopeError("invalid_token", "scopedToken length invalid");
172
+ }
173
+ const tokenHash = sha256(tokenBytes).toString("hex");
174
+ const entry = byTokenHash.get(tokenHash);
175
+ if (!entry) {
176
+ throw new CredentialScopeError("invalid_token", "scopedToken does not match a known scope");
177
+ }
178
+ if (expiredAndDropped(entry, now())) {
179
+ throw new CredentialScopeError("scope_expired", "scope expired");
180
+ }
181
+ if (entry.childSessionId !== childSessionId) {
182
+ throw new CredentialScopeError("session_mismatch", "childSessionId does not match scope owner");
183
+ }
184
+ const state = entry.keys.get(key);
185
+ if (!state) {
186
+ throw new CredentialScopeError("key_not_in_scope", `key ${key} not in scope`);
187
+ }
188
+ if (state.redeemed) {
189
+ throw new CredentialScopeError("already_redeemed", `key ${key} already redeemed`);
190
+ }
191
+ if (!state.encrypted) {
192
+ throw new CredentialScopeError("no_ciphertext", `no value tunneled for ${key} yet`);
193
+ }
194
+ const plaintext = decrypt(state.encrypted, entry.encryptionKey);
195
+ state.encrypted = null;
196
+ state.redeemed = true;
197
+ // If every declared key has been redeemed, drop the scope so the
198
+ // bearer token cannot be reused.
199
+ let allRedeemed = true;
200
+ for (const v of entry.keys.values()) {
201
+ if (!v.redeemed) {
202
+ allRedeemed = false;
203
+ break;
204
+ }
205
+ }
206
+ if (allRedeemed)
207
+ dropScope(entry);
208
+ return plaintext;
209
+ },
210
+ expireScopes(currentTime = now()) {
211
+ let swept = 0;
212
+ for (const entry of [...byTokenHash.values()]) {
213
+ if (entry.expiresAt <= currentTime) {
214
+ dropScope(entry);
215
+ swept += 1;
216
+ }
217
+ }
218
+ return swept;
219
+ },
220
+ hasCiphertext(credentialScopeId, key) {
221
+ const entry = byId.get(credentialScopeId);
222
+ if (!entry)
223
+ return false;
224
+ return entry.keys.get(key)?.encrypted != null;
225
+ },
226
+ };
227
+ }
@@ -14,7 +14,7 @@
14
14
  * rest is a deliberately separate concern and would land in a follow-up.
15
15
  *
16
16
  * Cloud users (Eliza Cloud session active) are out of scope here — they
17
- * use the `platformCredentials` table in `cloud/packages/db/schemas/` via
17
+ * use the `platformCredentials` table in `packages/cloud-shared/src/db/schemas/` via
18
18
  * the dedicated OAuth flow. This module is the local-first surface only.
19
19
  */
20
20
  export interface GitHubCredentials {
@@ -14,7 +14,7 @@
14
14
  * rest is a deliberately separate concern and would land in a follow-up.
15
15
  *
16
16
  * Cloud users (Eliza Cloud session active) are out of scope here — they
17
- * use the `platformCredentials` table in `cloud/packages/db/schemas/` via
17
+ * use the `platformCredentials` table in `packages/cloud-shared/src/db/schemas/` via
18
18
  * the dedicated OAuth flow. This module is the local-first surface only.
19
19
  */
20
20
  import fs from "node:fs/promises";