@elizaos/app-core 2.0.0-beta.2 → 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 (1537) 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.d.ts.map +1 -1
  88. package/api/sensitive-request-routes.js +5 -5
  89. package/api/sensitive-request-store.d.ts +12 -3
  90. package/api/sensitive-request-store.d.ts.map +1 -1
  91. package/api/server-cors.d.ts.map +1 -1
  92. package/api/server-cors.js +13 -2
  93. package/api/server-first-run-helpers.d.ts +26 -0
  94. package/api/server-first-run-helpers.d.ts.map +1 -0
  95. package/api/server-first-run-helpers.js +271 -0
  96. package/api/server-security.js +1 -1
  97. package/api/server-startup.d.ts.map +1 -1
  98. package/api/server-startup.js +3 -4
  99. package/api/server-wallet-trade.js +1 -1
  100. package/api/server.d.ts +4 -4
  101. package/api/server.d.ts.map +1 -1
  102. package/api/server.js +222 -88
  103. package/api/setup-contract.d.ts +63 -0
  104. package/api/setup-contract.d.ts.map +1 -0
  105. package/api/setup-contract.js +39 -0
  106. package/api/training-benchmarks.d.ts +97 -0
  107. package/api/training-benchmarks.d.ts.map +1 -0
  108. package/api/training-benchmarks.js +307 -0
  109. package/api/workbench-compat-routes.js +2 -2
  110. package/benchmark/cerebras-autowire.d.ts +28 -0
  111. package/benchmark/cerebras-autowire.d.ts.map +1 -0
  112. package/benchmark/cerebras-autowire.js +62 -0
  113. package/benchmark/lifeops-bench-handler.d.ts +36 -0
  114. package/benchmark/lifeops-bench-handler.d.ts.map +1 -1
  115. package/benchmark/lifeops-bench-handler.js +63 -1
  116. package/benchmark/lifeops-fake-backend.d.ts +39 -0
  117. package/benchmark/lifeops-fake-backend.d.ts.map +1 -1
  118. package/benchmark/lifeops-fake-backend.js +993 -21
  119. package/benchmark/mock-plugin.d.ts.map +1 -1
  120. package/benchmark/mock-plugin.js +0 -24
  121. package/benchmark/plugin.d.ts +2 -1
  122. package/benchmark/plugin.d.ts.map +1 -1
  123. package/benchmark/plugin.js +989 -68
  124. package/benchmark/replay-capture.d.ts +2 -2
  125. package/benchmark/replay-capture.d.ts.map +1 -1
  126. package/benchmark/replay-capture.js +3 -3
  127. package/benchmark/server-utils.d.ts +162 -9
  128. package/benchmark/server-utils.d.ts.map +1 -1
  129. package/benchmark/server-utils.js +625 -62
  130. package/benchmark/server.d.ts.map +1 -1
  131. package/benchmark/server.js +1962 -118
  132. package/boot-profile.d.ts +3 -0
  133. package/boot-profile.d.ts.map +1 -0
  134. package/boot-profile.js +30 -0
  135. package/browser.d.ts +23 -1
  136. package/browser.d.ts.map +1 -1
  137. package/browser.js +20 -1
  138. package/cli/argv.js +1 -1
  139. package/cli/banner.js +1 -1
  140. package/cli/command-format.js +2 -2
  141. package/cli/doctor/checks.d.ts.map +1 -1
  142. package/cli/doctor/checks.js +6 -6
  143. package/cli/plugins-cli.d.ts.map +1 -1
  144. package/cli/plugins-cli.js +77 -32
  145. package/cli/profile.d.ts.map +1 -1
  146. package/cli/profile.js +5 -4
  147. package/cli/program/build-program.js +4 -4
  148. package/cli/program/command-registry.d.ts.map +1 -1
  149. package/cli/program/command-registry.js +13 -11
  150. package/cli/program/help.js +5 -5
  151. package/cli/program/preaction.js +5 -5
  152. package/cli/program/register.auth.d.ts.map +1 -1
  153. package/cli/program/register.auth.js +6 -12
  154. package/cli/program/register.capability-router.d.ts +29 -0
  155. package/cli/program/register.capability-router.d.ts.map +1 -0
  156. package/cli/program/register.capability-router.js +568 -0
  157. package/cli/program/register.config.js +1 -1
  158. package/cli/program/register.configure.d.ts.map +1 -1
  159. package/cli/program/register.configure.js +1 -1
  160. package/cli/program/register.dashboard.d.ts.map +1 -1
  161. package/cli/program/register.dashboard.js +6 -7
  162. package/cli/program/register.db.d.ts.map +1 -1
  163. package/cli/program/register.db.js +3 -4
  164. package/cli/program/register.doctor.js +7 -7
  165. package/cli/program/register.setup.d.ts.map +1 -1
  166. package/cli/program/register.setup.js +14 -10
  167. package/cli/program/register.start.d.ts.map +1 -1
  168. package/cli/program/register.start.js +5 -3
  169. package/cli/program/register.subclis.js +3 -3
  170. package/cli/program/register.update.d.ts +6 -0
  171. package/cli/program/register.update.d.ts.map +1 -1
  172. package/cli/program/register.update.js +58 -6
  173. package/cli/program.js +1 -1
  174. package/cli/run-main.js +4 -4
  175. package/config/app-config.d.ts +2 -0
  176. package/config/app-config.d.ts.map +1 -0
  177. package/config/app-config.js +1 -0
  178. package/connectors/capacitor-jsc.d.ts.map +1 -1
  179. package/connectors/capacitor-jsc.js +16 -10
  180. package/connectors/capacitor-quickjs.d.ts.map +1 -1
  181. package/connectors/capacitor-quickjs.js +18 -13
  182. package/connectors/capacitor-sqlite.d.ts.map +1 -1
  183. package/connectors/capacitor-sqlite.js +27 -12
  184. package/dispatch/approval-queue.d.ts +37 -0
  185. package/dispatch/approval-queue.d.ts.map +1 -0
  186. package/dispatch/approval-queue.js +25 -0
  187. package/dispatch/channel-registry.d.ts +30 -0
  188. package/dispatch/channel-registry.d.ts.map +1 -0
  189. package/dispatch/channel-registry.js +22 -0
  190. package/dispatch/connector-registry.d.ts +39 -0
  191. package/dispatch/connector-registry.d.ts.map +1 -0
  192. package/dispatch/connector-registry.js +24 -0
  193. package/dispatch/index.d.ts +14 -0
  194. package/dispatch/index.d.ts.map +1 -0
  195. package/dispatch/index.js +13 -0
  196. package/dispatch/send-policy.d.ts +36 -0
  197. package/dispatch/send-policy.d.ts.map +1 -0
  198. package/dispatch/send-policy.js +16 -0
  199. package/entry.js +28 -11
  200. package/first-run/first-run-config.d.ts +55 -0
  201. package/first-run/first-run-config.d.ts.map +1 -0
  202. package/first-run/first-run-config.js +178 -0
  203. package/first-run/runtime-target.d.ts +4 -0
  204. package/first-run/runtime-target.d.ts.map +1 -0
  205. package/first-run/runtime-target.js +13 -0
  206. package/index.d.ts +16 -3
  207. package/index.d.ts.map +1 -1
  208. package/index.js +57 -33
  209. package/package.json +159 -50
  210. package/packaging/debian/apt-repo-config/README.md +18 -0
  211. package/packaging/debian/apt-repo-config/conf/distributions +11 -0
  212. package/packaging/flatpak/README.md +26 -16
  213. package/packaging/flatpak/ai.elizaos.App.metainfo.xml +17 -12
  214. package/packaging/flatpak/ai.elizaos.App.store.yml +5 -5
  215. package/packaging/flatpak/ai.elizaos.App.yml +10 -24
  216. package/packaging/flatpak/elizaos-app-wrapper.store.sh +2 -2
  217. package/packaging/flatpak/generate-sources.sh +74 -0
  218. package/packaging/flatpak/node-sources.json +7930 -0
  219. package/packaging/inno/build-inno.ps1 +34 -9
  220. package/packaging/msix/AppxManifest.store.xml +1 -1
  221. package/packaging/msix/README.md +39 -19
  222. package/packaging/msix/build-msix.ps1 +44 -14
  223. package/packaging/snap/snapcraft.yaml +22 -21
  224. package/packaging/test-packaging.sh +2 -2
  225. package/permissions/types.d.ts +1 -1
  226. package/permissions/types.js +1 -1
  227. package/platform/elizaos-agent-browser-stub.d.ts +144 -0
  228. package/platform/elizaos-agent-browser-stub.d.ts.map +1 -0
  229. package/platform/elizaos-agent-browser-stub.js +158 -0
  230. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts +34 -0
  231. package/platform/elizaos-plugin-elizacloud-browser-stub.d.ts.map +1 -0
  232. package/platform/elizaos-plugin-elizacloud-browser-stub.js +51 -0
  233. package/platform/empty-node-module.d.ts +148 -0
  234. package/platform/empty-node-module.d.ts.map +1 -1
  235. package/platform/empty-node-module.js +140 -3
  236. package/platform/ios-runtime-backends.d.ts +83 -0
  237. package/platform/ios-runtime-backends.d.ts.map +1 -0
  238. package/platform/ios-runtime-backends.js +133 -0
  239. package/platform/ios-runtime-bridge.d.ts +15 -0
  240. package/platform/ios-runtime-bridge.d.ts.map +1 -0
  241. package/platform/ios-runtime-bridge.js +527 -0
  242. package/platform/native-library-policy.d.ts +23 -0
  243. package/platform/native-library-policy.d.ts.map +1 -0
  244. package/platform/native-library-policy.js +112 -0
  245. package/platform/native-plugin-entrypoints.d.ts +19 -0
  246. package/platform/native-plugin-entrypoints.d.ts.map +1 -0
  247. package/platform/native-plugin-entrypoints.js +29 -0
  248. package/platforms/android/README.md +68 -10
  249. package/platforms/android/app/build.gradle +268 -3
  250. package/platforms/android/app/capacitor.build.gradle +18 -1
  251. package/platforms/android/app/proguard-rules.pro +17 -2
  252. package/platforms/android/app/src/androidTest/java/ai/elizaos/app/ElizaOsInstrumentedTest.java +1 -1
  253. package/platforms/android/app/src/main/AndroidManifest.xml +335 -18
  254. package/platforms/android/app/src/main/assets/runners/eliza-tasks.js +177 -0
  255. package/platforms/android/app/src/main/elizavoice-jni/CMakeLists.txt +100 -0
  256. package/platforms/android/app/src/main/elizavoice-jni/elizavoice-jni.cpp +1485 -0
  257. package/platforms/android/app/src/main/java/ai/elizaos/app/AgentPlugin.java +111 -171
  258. package/platforms/android/app/src/main/java/ai/elizaos/app/AndroidVirtualizationBridge.java +284 -0
  259. package/platforms/android/app/src/main/java/ai/elizaos/app/BatteryOptimizationPlugin.java +95 -0
  260. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAccessibilityService.java +55 -0
  261. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +1255 -141
  262. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAndroidSystemBridge.java +83 -0
  263. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAssistActivity.java +50 -1
  264. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBionicInferenceServer.java +400 -0
  265. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBootReceiver.java +90 -8
  266. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBrowserActivity.java +2 -2
  267. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCalendarActivity.java +1 -1
  268. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCameraActivity.java +1 -1
  269. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaClockActivity.java +2 -2
  270. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaContactsActivity.java +1 -1
  271. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaDialActivity.java +1 -1
  272. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaInCallService.java +1 -1
  273. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaMmsReceiver.java +1 -1
  274. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +22 -0
  275. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNotificationListenerService.java +45 -0
  276. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaQuickActionsWidgetProvider.java +68 -0
  277. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaShareActivity.java +132 -0
  278. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsComposeActivity.java +1 -1
  279. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsGatewayService.java +268 -0
  280. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsReceiver.java +12 -1
  281. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaTasksWorker.java +194 -0
  282. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceCaptureService.java +198 -0
  283. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceNative.java +220 -0
  284. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoicePlugin.java +498 -0
  285. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaVoiceTileService.java +39 -0
  286. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaWorkScheduler.java +60 -0
  287. package/platforms/android/app/src/main/java/ai/elizaos/app/GatewayConnectionService.java +53 -19
  288. package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +160 -33
  289. package/platforms/android/app/src/main/java/ai/elizaos/app/ResourceProbePlugin.java +169 -0
  290. package/platforms/android/app/src/main/java/ai/elizaos/app/VoiceCapturePlugin.java +119 -0
  291. package/platforms/android/app/src/main/res/drawable/eliza_widget_background.xml +10 -0
  292. package/platforms/android/app/src/main/res/drawable/eliza_widget_button_background.xml +13 -0
  293. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  294. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  295. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  296. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  297. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  298. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  299. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  300. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  301. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  302. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  303. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  304. package/platforms/android/app/src/main/res/layout/eliza_quick_actions_widget.xml +86 -0
  305. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +2 -1
  306. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +2 -1
  307. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  308. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  309. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png +0 -0
  310. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  311. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  312. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  313. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png +0 -0
  314. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  315. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  316. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  317. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png +0 -0
  318. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  319. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  320. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  321. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png +0 -0
  322. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  323. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  324. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  325. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png +0 -0
  326. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  327. package/platforms/android/app/src/main/res/values/android_app_actions.xml +48 -0
  328. package/platforms/android/app/src/main/res/values/colors.xml +8 -0
  329. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +2 -2
  330. package/platforms/android/app/src/main/res/values/strings.xml +2 -2
  331. package/platforms/android/app/src/main/res/values/styles.xml +25 -1
  332. package/platforms/android/app/src/main/res/xml/eliza_accessibility_service.xml +9 -0
  333. package/platforms/android/app/src/main/res/xml/eliza_quick_actions_widget.xml +13 -0
  334. package/platforms/android/app/src/main/res/xml/shortcuts.xml +121 -0
  335. package/platforms/android/build.gradle +2 -2
  336. package/platforms/android/capacitor-cordova-android-plugins/build.gradle +9 -3
  337. package/platforms/android/capacitor-cordova-android-plugins/cordova.variables.gradle +6 -2
  338. package/platforms/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml +7 -2
  339. package/platforms/android/capacitor-cordova-android-plugins/src/main/java/.gitkeep +0 -1
  340. package/platforms/android/capacitor.settings.gradle +66 -16
  341. package/platforms/android/gradle.properties +1 -0
  342. package/platforms/android/update-manifest/generate-manifest.mjs +97 -0
  343. package/platforms/android/update-manifest/schema.json +26 -0
  344. package/platforms/apple-store-entitlements.reviewed.json +155 -0
  345. package/platforms/electrobun/.generated/brand-config.json +3 -2
  346. package/platforms/electrobun/LICENSE +21 -0
  347. package/platforms/electrobun/README.md +15 -1
  348. package/platforms/electrobun/assets/appIcon.icns +0 -0
  349. package/platforms/electrobun/assets/appIcon.ico +0 -0
  350. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128.png +0 -0
  351. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128@2x.png +0 -0
  352. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16.png +0 -0
  353. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16@2x.png +0 -0
  354. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256.png +0 -0
  355. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256@2x.png +0 -0
  356. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32.png +0 -0
  357. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32@2x.png +0 -0
  358. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512.png +0 -0
  359. package/platforms/electrobun/assets/brand-config.json +6 -6
  360. package/platforms/electrobun/biome.json +9 -9
  361. package/platforms/electrobun/docs/capability-collapse-matrix.json +318 -0
  362. package/platforms/electrobun/docs/capability-collapse-matrix.md +129 -0
  363. package/platforms/electrobun/docs/capability-routing.md +86 -0
  364. package/platforms/electrobun/docs/convergence-audit.json +3505 -0
  365. package/platforms/electrobun/docs/convergence-audit.md +694 -0
  366. package/platforms/electrobun/docs/database-boot-policy.md +90 -0
  367. package/platforms/electrobun/docs/riscv64-port.md +175 -0
  368. package/platforms/electrobun/docs/startup-first-run-cleanup.md +18 -0
  369. package/platforms/electrobun/docs/trace-first-annotations.md +52 -0
  370. package/platforms/electrobun/docs/ui-boundary-audit.json +580 -0
  371. package/platforms/electrobun/docs/ui-boundary-audit.md +257 -0
  372. package/platforms/electrobun/electrobun.config.ts +592 -364
  373. package/platforms/electrobun/entitlements/JUSTIFICATIONS.md +141 -0
  374. package/platforms/electrobun/entitlements/README.md +34 -6
  375. package/platforms/electrobun/entitlements/mas-bun.entitlements +15 -0
  376. package/platforms/electrobun/entitlements/mas.entitlements +6 -4
  377. package/platforms/electrobun/native/macos/window-effects.mm +1522 -0
  378. package/platforms/electrobun/package.json +18 -12
  379. package/platforms/electrobun/remotes/fs/README.md +70 -0
  380. package/platforms/electrobun/remotes/fs/electrobun.config.ts +38 -0
  381. package/platforms/electrobun/remotes/fs/package.json +12 -0
  382. package/platforms/electrobun/remotes/fs/plugin.json +25 -0
  383. package/platforms/electrobun/remotes/fs/src/bun/errors.ts +57 -0
  384. package/platforms/electrobun/remotes/fs/src/bun/file-limits.ts +50 -0
  385. package/platforms/electrobun/remotes/fs/src/bun/fs-service.ts +389 -0
  386. package/platforms/electrobun/remotes/fs/src/bun/path-guard.ts +270 -0
  387. package/platforms/electrobun/remotes/fs/src/bun/protocol.ts +149 -0
  388. package/platforms/electrobun/remotes/fs/src/bun/worker.ts +174 -0
  389. package/platforms/electrobun/remotes/fs/src/dev/phase5-smoke.ts +171 -0
  390. package/platforms/electrobun/remotes/fs/src/web/index.html +8 -0
  391. package/platforms/electrobun/remotes/git/README.md +75 -0
  392. package/platforms/electrobun/remotes/git/electrobun.config.ts +44 -0
  393. package/platforms/electrobun/remotes/git/package.json +12 -0
  394. package/platforms/electrobun/remotes/git/plugin.json +31 -0
  395. package/platforms/electrobun/remotes/git/src/bun/errors.ts +69 -0
  396. package/platforms/electrobun/remotes/git/src/bun/git-command.ts +156 -0
  397. package/platforms/electrobun/remotes/git/src/bun/git-service.ts +446 -0
  398. package/platforms/electrobun/remotes/git/src/bun/operation-history.ts +124 -0
  399. package/platforms/electrobun/remotes/git/src/bun/protocol.ts +252 -0
  400. package/platforms/electrobun/remotes/git/src/bun/worker.ts +316 -0
  401. package/platforms/electrobun/remotes/git/src/dev/phase7-smoke.ts +141 -0
  402. package/platforms/electrobun/remotes/git/src/web/index.html +8 -0
  403. package/platforms/electrobun/remotes/local-model/README.md +138 -0
  404. package/platforms/electrobun/remotes/local-model/electrobun.config.ts +46 -0
  405. package/platforms/electrobun/remotes/local-model/package.json +12 -0
  406. package/platforms/electrobun/remotes/local-model/plugin.json +33 -0
  407. package/platforms/electrobun/remotes/local-model/src/bun/download-state.ts +115 -0
  408. package/platforms/electrobun/remotes/local-model/src/bun/eliza1-catalog.ts +405 -0
  409. package/platforms/electrobun/remotes/local-model/src/bun/errors.ts +74 -0
  410. package/platforms/electrobun/remotes/local-model/src/bun/hf-eliza1-client.ts +169 -0
  411. package/platforms/electrobun/remotes/local-model/src/bun/local-inference-api-client.ts +245 -0
  412. package/platforms/electrobun/remotes/local-model/src/bun/model-service.ts +490 -0
  413. package/platforms/electrobun/remotes/local-model/src/bun/protocol.ts +301 -0
  414. package/platforms/electrobun/remotes/local-model/src/bun/worker.ts +248 -0
  415. package/platforms/electrobun/remotes/local-model/src/dev/phase8-smoke.ts +116 -0
  416. package/platforms/electrobun/remotes/local-model/src/web/index.html +13 -0
  417. package/platforms/electrobun/remotes/pty/README.md +65 -0
  418. package/platforms/electrobun/remotes/pty/electrobun.config.ts +47 -0
  419. package/platforms/electrobun/remotes/pty/package.json +12 -0
  420. package/platforms/electrobun/remotes/pty/plugin.json +34 -0
  421. package/platforms/electrobun/remotes/pty/src/bun/errors.ts +57 -0
  422. package/platforms/electrobun/remotes/pty/src/bun/output-buffer.ts +127 -0
  423. package/platforms/electrobun/remotes/pty/src/bun/protocol.ts +192 -0
  424. package/platforms/electrobun/remotes/pty/src/bun/pty-service.ts +562 -0
  425. package/platforms/electrobun/remotes/pty/src/bun/worker.ts +218 -0
  426. package/platforms/electrobun/remotes/pty/src/dev/phase6-smoke.ts +127 -0
  427. package/platforms/electrobun/remotes/pty/src/web/index.html +8 -0
  428. package/platforms/electrobun/remotes/runtime/README.md +370 -0
  429. package/platforms/electrobun/remotes/runtime/electrobun.config.ts +48 -0
  430. package/platforms/electrobun/remotes/runtime/package.json +14 -0
  431. package/platforms/electrobun/remotes/runtime/plugin.json +30 -0
  432. package/platforms/electrobun/remotes/runtime/src/bun/api-client.ts +620 -0
  433. package/platforms/electrobun/remotes/runtime/src/bun/errors.ts +45 -0
  434. package/platforms/electrobun/remotes/runtime/src/bun/log-buffer.ts +33 -0
  435. package/platforms/electrobun/remotes/runtime/src/bun/protocol.ts +366 -0
  436. package/platforms/electrobun/remotes/runtime/src/bun/route-discovery.ts +419 -0
  437. package/platforms/electrobun/remotes/runtime/src/bun/runtime-manager.ts +423 -0
  438. package/platforms/electrobun/remotes/runtime/src/bun/sse-parser.ts +99 -0
  439. package/platforms/electrobun/remotes/runtime/src/bun/stream-manager.ts +887 -0
  440. package/platforms/electrobun/remotes/runtime/src/bun/worker.ts +1231 -0
  441. package/platforms/electrobun/remotes/runtime/src/dev/phase1-smoke.ts +34 -0
  442. package/platforms/electrobun/remotes/runtime/src/dev/phase2-smoke.ts +86 -0
  443. package/platforms/electrobun/remotes/runtime/src/dev/phase3-smoke.ts +141 -0
  444. package/platforms/electrobun/remotes/runtime/src/web/index.css +187 -0
  445. package/platforms/electrobun/remotes/runtime/src/web/index.html +76 -0
  446. package/platforms/electrobun/remotes/runtime/src/web/index.ts +192 -0
  447. package/platforms/electrobun/remotes/surface/README.md +201 -0
  448. package/platforms/electrobun/remotes/surface/electrobun.config.ts +38 -0
  449. package/platforms/electrobun/remotes/surface/package.json +12 -0
  450. package/platforms/electrobun/remotes/surface/plugin.json +28 -0
  451. package/platforms/electrobun/remotes/surface/src/bun/worker.ts +132 -0
  452. package/platforms/electrobun/remotes/surface/src/dev/phase4-smoke.ts +566 -0
  453. package/platforms/electrobun/remotes/surface/src/protocol/event-types.ts +84 -0
  454. package/platforms/electrobun/remotes/surface/src/protocol/runtime-client.ts +673 -0
  455. package/platforms/electrobun/remotes/surface/src/web/app.ts +595 -0
  456. package/platforms/electrobun/remotes/surface/src/web/index.css +460 -0
  457. package/platforms/electrobun/remotes/surface/src/web/index.html +466 -0
  458. package/platforms/electrobun/remotes/surface/src/web/index.ts +5 -0
  459. package/platforms/electrobun/remotes/surface/src/web/render.ts +455 -0
  460. package/platforms/electrobun/remotes/surface/src/web/state.ts +427 -0
  461. package/platforms/electrobun/scripts/build-macos-effects.sh +4 -0
  462. package/platforms/electrobun/scripts/ensure-build-folder.ts +28 -0
  463. package/platforms/electrobun/scripts/ensure-whisper-gguf.sh +55 -0
  464. package/platforms/electrobun/scripts/ensure-whisper-model.sh +22 -80
  465. package/platforms/electrobun/scripts/generate-convergence-audit.ts +1203 -0
  466. package/platforms/electrobun/scripts/local-adhoc-sign-macos.ts +159 -159
  467. package/platforms/electrobun/scripts/postwrap-diagnostics.ts +424 -339
  468. package/platforms/electrobun/scripts/postwrap-sign-runtime-macos.ts +302 -271
  469. package/platforms/electrobun/scripts/smoke-test-windows.ps1 +17 -16
  470. package/platforms/electrobun/scripts/smoke-test.sh +5 -7
  471. package/platforms/electrobun/scripts/sync-web-assets.mjs +13 -13
  472. package/platforms/electrobun/scripts/verify-rpc-handlers.ts +109 -110
  473. package/platforms/electrobun/scripts/verify-windows-installer-proof.ps1 +3 -8
  474. package/platforms/electrobun/src/__stubs__/bun-ffi.ts +31 -31
  475. package/platforms/electrobun/src/__stubs__/electrobun-bun.ts +1 -1
  476. package/platforms/electrobun/src/agent-ready-state.ts +8 -8
  477. package/platforms/electrobun/src/agent-reset-from-main.test.ts +162 -0
  478. package/platforms/electrobun/src/agent-reset-from-main.ts +62 -62
  479. package/platforms/electrobun/src/agent-status-rpc.test.ts +95 -0
  480. package/platforms/electrobun/src/agent-status-rpc.ts +156 -0
  481. package/platforms/electrobun/src/api-base.test.ts +247 -0
  482. package/platforms/electrobun/src/api-base.ts +202 -93
  483. package/platforms/electrobun/src/application-menu-action-registry.ts +9 -9
  484. package/platforms/electrobun/src/application-menu.ts +348 -348
  485. package/platforms/electrobun/src/background-notice.ts +36 -36
  486. package/platforms/electrobun/src/boot-progress.test.ts +188 -0
  487. package/platforms/electrobun/src/boot-progress.ts +111 -0
  488. package/platforms/electrobun/src/brand-config.test.ts +39 -0
  489. package/platforms/electrobun/src/brand-config.ts +141 -129
  490. package/platforms/electrobun/src/bridge/browser-tabs-renderer-registry.ts +28 -28
  491. package/platforms/electrobun/src/bridge/electrobun-boot-config.ts +42 -0
  492. package/platforms/electrobun/src/bridge/electrobun-crypto-ready.ts +120 -0
  493. package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +342 -357
  494. package/platforms/electrobun/src/bridge/electrobun-stub.ts +13 -13
  495. package/platforms/electrobun/src/browser-workspace-bridge-server.ts +285 -243
  496. package/platforms/electrobun/src/cloud-auth-window.ts +136 -136
  497. package/platforms/electrobun/src/cloud-disconnect-from-main.ts +90 -90
  498. package/platforms/electrobun/src/config-and-auth-rpc.test.ts +256 -0
  499. package/platforms/electrobun/src/config-and-auth-rpc.ts +302 -0
  500. package/platforms/electrobun/src/conversations-and-character-rpc.test.ts +185 -0
  501. package/platforms/electrobun/src/conversations-and-character-rpc.ts +131 -0
  502. package/platforms/electrobun/src/dashboard-rpc.test.ts +200 -0
  503. package/platforms/electrobun/src/dashboard-rpc.ts +344 -0
  504. package/platforms/electrobun/src/database/database-lock.ts +141 -0
  505. package/platforms/electrobun/src/database/database-mode.ts +149 -0
  506. package/platforms/electrobun/src/database/database-recovery.ts +72 -0
  507. package/platforms/electrobun/src/database/database-snapshot.ts +190 -0
  508. package/platforms/electrobun/src/database/database.test.ts +196 -0
  509. package/platforms/electrobun/src/database/index.ts +5 -0
  510. package/platforms/electrobun/src/database/pglite-paths.ts +100 -0
  511. package/platforms/electrobun/src/desktop-deep-link-events.test.ts +30 -0
  512. package/platforms/electrobun/src/desktop-deep-link-events.ts +17 -0
  513. package/platforms/electrobun/src/desktop-http-request.test.ts +73 -73
  514. package/platforms/electrobun/src/desktop-http-request.ts +85 -85
  515. package/platforms/electrobun/src/desktop-pill-config.test.ts +27 -0
  516. package/platforms/electrobun/src/desktop-pill-config.ts +40 -0
  517. package/platforms/electrobun/src/desktop-test-bridge-server.ts +204 -204
  518. package/platforms/electrobun/src/desktop-tray-config.test.ts +87 -0
  519. package/platforms/electrobun/src/desktop-tray-config.ts +84 -0
  520. package/platforms/electrobun/src/devtools-layout.ts +41 -41
  521. package/platforms/electrobun/src/diagnostic-format.test.ts +71 -0
  522. package/platforms/electrobun/src/diagnostic-format.ts +75 -36
  523. package/platforms/electrobun/src/dynamic-view-rpc-schema.test.ts +37 -0
  524. package/platforms/electrobun/src/dynamic-views/README.md +44 -0
  525. package/platforms/electrobun/src/dynamic-views/demo/agent-run-trace.html +135 -0
  526. package/platforms/electrobun/src/dynamic-views/errors.ts +29 -0
  527. package/platforms/electrobun/src/dynamic-views/host.test.ts +353 -0
  528. package/platforms/electrobun/src/dynamic-views/host.ts +332 -0
  529. package/platforms/electrobun/src/dynamic-views/index.ts +57 -0
  530. package/platforms/electrobun/src/dynamic-views/kiosk-canvas.ts +89 -0
  531. package/platforms/electrobun/src/dynamic-views/registry.test.ts +139 -0
  532. package/platforms/electrobun/src/dynamic-views/registry.ts +196 -0
  533. package/platforms/electrobun/src/dynamic-views/session-manager.test.ts +355 -0
  534. package/platforms/electrobun/src/dynamic-views/session-manager.ts +348 -0
  535. package/platforms/electrobun/src/dynamic-views/types.ts +105 -0
  536. package/platforms/electrobun/src/electrobun-boot-config.test.ts +50 -0
  537. package/platforms/electrobun/src/electrobun-config.test.ts +62 -0
  538. package/platforms/electrobun/src/electrobun-crypto-ready.test.ts +65 -0
  539. package/platforms/electrobun/src/electrobun-window-options.ts +25 -0
  540. package/platforms/electrobun/src/extension-rpc.test.ts +88 -0
  541. package/platforms/electrobun/src/extension-rpc.ts +102 -0
  542. package/platforms/electrobun/src/fatal-shutdown.test.ts +10 -10
  543. package/platforms/electrobun/src/fatal-shutdown.ts +1 -1
  544. package/platforms/electrobun/src/first-party-remotes.test.ts +169 -0
  545. package/platforms/electrobun/src/first-party-remotes.ts +297 -0
  546. package/platforms/electrobun/src/first-run-rpc.test.ts +192 -0
  547. package/platforms/electrobun/src/first-run-rpc.ts +146 -0
  548. package/platforms/electrobun/src/floating-chat-window.ts +181 -181
  549. package/platforms/electrobun/src/inbox-rpc.test.ts +123 -0
  550. package/platforms/electrobun/src/inbox-rpc.ts +158 -0
  551. package/platforms/electrobun/src/index.ts +2555 -2096
  552. package/platforms/electrobun/src/kiosk-mode.ts +50 -0
  553. package/platforms/electrobun/src/launch/index.ts +4 -0
  554. package/platforms/electrobun/src/launch/launch-dynamic-view.ts +37 -0
  555. package/platforms/electrobun/src/launch/launch-orchestrator.test.ts +224 -0
  556. package/platforms/electrobun/src/launch/launch-orchestrator.ts +456 -0
  557. package/platforms/electrobun/src/launch/launch-store.test.ts +97 -0
  558. package/platforms/electrobun/src/launch/launch-store.ts +134 -0
  559. package/platforms/electrobun/src/launch/types.ts +103 -0
  560. package/platforms/electrobun/src/launch/views/launch-diagnostics.html +205 -0
  561. package/platforms/electrobun/src/lifecycle/agent-ready-publish.test.ts +50 -0
  562. package/platforms/electrobun/src/lifecycle/agent-ready-publish.ts +27 -0
  563. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +42 -31
  564. package/platforms/electrobun/src/lifecycle/desktop-session-prime.ts +44 -44
  565. package/platforms/electrobun/src/logger.ts +14 -14
  566. package/platforms/electrobun/src/main-window-runtime.ts +83 -83
  567. package/platforms/electrobun/src/main-window-session.test.ts +109 -0
  568. package/platforms/electrobun/src/main-window-session.ts +87 -51
  569. package/platforms/electrobun/src/menu-reset-from-main.ts +158 -158
  570. package/platforms/electrobun/src/native/agent-env.test.ts +52 -0
  571. package/platforms/electrobun/src/native/agent-runtime-layout.test.ts +42 -0
  572. package/platforms/electrobun/src/native/agent-state-dir.test.ts +91 -0
  573. package/platforms/electrobun/src/native/agent.ts +2122 -1682
  574. package/platforms/electrobun/src/native/auth-bridge.test.ts +67 -0
  575. package/platforms/electrobun/src/native/auth-bridge.ts +464 -360
  576. package/platforms/electrobun/src/native/browser-workspace.ts +723 -471
  577. package/platforms/electrobun/src/native/camera.ts +50 -50
  578. package/platforms/electrobun/src/native/canvas.ts +444 -445
  579. package/platforms/electrobun/src/native/credentials.ts +673 -616
  580. package/platforms/electrobun/src/native/desktop-window.test.ts +300 -0
  581. package/platforms/electrobun/src/native/desktop.ts +2196 -2156
  582. package/platforms/electrobun/src/native/editor-bridge.ts +201 -201
  583. package/platforms/electrobun/src/native/file-watcher.ts +154 -154
  584. package/platforms/electrobun/src/native/gateway.ts +179 -180
  585. package/platforms/electrobun/src/native/gpu-window.ts +256 -256
  586. package/platforms/electrobun/src/native/index.ts +76 -74
  587. package/platforms/electrobun/src/native/location.test.ts +44 -0
  588. package/platforms/electrobun/src/native/location.ts +90 -80
  589. package/platforms/electrobun/src/native/loopback-port.ts +60 -60
  590. package/platforms/electrobun/src/native/mac-window-effects.ts +166 -104
  591. package/platforms/electrobun/src/native/music-player.ts +38 -38
  592. package/platforms/electrobun/src/native/permissions-shared.ts +249 -150
  593. package/platforms/electrobun/src/native/permissions.ts +301 -208
  594. package/platforms/electrobun/src/native/power-state.ts +129 -129
  595. package/platforms/electrobun/src/native/remote-plugin-host.test.ts +1394 -0
  596. package/platforms/electrobun/src/native/remote-plugin-host.ts +1531 -0
  597. package/platforms/electrobun/src/native/screencapture.ts +667 -573
  598. package/platforms/electrobun/src/native/steward.ts +207 -204
  599. package/platforms/electrobun/src/native/swabble.ts +68 -324
  600. package/platforms/electrobun/src/native/talkmode.ts +253 -422
  601. package/platforms/electrobun/src/native/webgpu-browser-support.test.ts +18 -0
  602. package/platforms/electrobun/src/native/webgpu-browser-support.ts +165 -147
  603. package/platforms/electrobun/src/native/whisper-env.test.ts +71 -0
  604. package/platforms/electrobun/src/native/whisper-env.ts +68 -0
  605. package/platforms/electrobun/src/native-onboarding.ts +270 -0
  606. package/platforms/electrobun/src/onboarding-overlay-window.ts +141 -0
  607. package/platforms/electrobun/src/persisted-deployment.ts +91 -0
  608. package/platforms/electrobun/src/pill-window.test.ts +91 -0
  609. package/platforms/electrobun/src/pill-window.ts +99 -0
  610. package/platforms/electrobun/src/preload-validation.ts +44 -44
  611. package/platforms/electrobun/src/preload.js +1 -1
  612. package/platforms/electrobun/src/print-electrobun-dev-settings-banner.ts +120 -120
  613. package/platforms/electrobun/src/renderer-api-proxy.test.ts +73 -0
  614. package/platforms/electrobun/src/renderer-api-proxy.ts +86 -0
  615. package/platforms/electrobun/src/renderer-static.test.ts +53 -0
  616. package/platforms/electrobun/src/renderer-static.ts +144 -57
  617. package/platforms/electrobun/src/rpc-handler-slices.ts +121 -0
  618. package/platforms/electrobun/src/rpc-handlers.test.ts +267 -0
  619. package/platforms/electrobun/src/rpc-handlers.ts +1306 -913
  620. package/platforms/electrobun/src/rpc-parse-utils.ts +57 -0
  621. package/platforms/electrobun/src/rpc-port-resolver.test.ts +45 -0
  622. package/platforms/electrobun/src/rpc-port-resolver.ts +31 -0
  623. package/platforms/electrobun/src/rpc-schema.ts +2556 -1619
  624. package/platforms/electrobun/src/runtime-layout.ts +105 -105
  625. package/platforms/electrobun/src/runtime-permissions.ts +95 -95
  626. package/platforms/electrobun/src/runtime-rpc.test.ts +126 -0
  627. package/platforms/electrobun/src/runtime-rpc.ts +237 -0
  628. package/platforms/electrobun/src/screenshot-dev-server.ts +87 -87
  629. package/platforms/electrobun/src/settings-mutations-rpc.test.ts +193 -0
  630. package/platforms/electrobun/src/settings-mutations-rpc.ts +220 -0
  631. package/platforms/electrobun/src/startup-trace.ts +274 -270
  632. package/platforms/electrobun/src/subscription-rpc.test.ts +89 -0
  633. package/platforms/electrobun/src/subscription-rpc.ts +192 -0
  634. package/platforms/electrobun/src/surface-windows.test.ts +355 -0
  635. package/platforms/electrobun/src/surface-windows.ts +410 -410
  636. package/platforms/electrobun/src/trace/README.md +73 -0
  637. package/platforms/electrobun/src/trace/errors.ts +21 -0
  638. package/platforms/electrobun/src/trace/index.ts +40 -0
  639. package/platforms/electrobun/src/trace/trace-dynamic-view.ts +40 -0
  640. package/platforms/electrobun/src/trace/trace-host-requests.ts +473 -0
  641. package/platforms/electrobun/src/trace/trace-service.test.ts +186 -0
  642. package/platforms/electrobun/src/trace/trace-service.ts +324 -0
  643. package/platforms/electrobun/src/trace/trace-store.test.ts +141 -0
  644. package/platforms/electrobun/src/trace/trace-store.ts +551 -0
  645. package/platforms/electrobun/src/trace/types.ts +250 -0
  646. package/platforms/electrobun/src/trace/views/agent-run-trace.html +311 -0
  647. package/platforms/electrobun/src/types/web-speech.d.ts +28 -28
  648. package/platforms/electrobun/src/types.ts +5 -5
  649. package/platforms/electrobun/src/update-availability.test.ts +72 -0
  650. package/platforms/electrobun/src/update-availability.ts +90 -0
  651. package/platforms/electrobun/src/update-rpc.test.ts +83 -0
  652. package/platforms/electrobun/src/update-rpc.ts +123 -0
  653. package/platforms/electrobun/src/voice/README.md +184 -0
  654. package/platforms/electrobun/src/voice/errors.ts +42 -0
  655. package/platforms/electrobun/src/voice/index.ts +78 -0
  656. package/platforms/electrobun/src/voice/types.ts +316 -0
  657. package/platforms/electrobun/src/voice/voice-host-requests.ts +259 -0
  658. package/platforms/electrobun/src/voice/voice-latency-budget.test.ts +66 -0
  659. package/platforms/electrobun/src/voice/voice-latency-budget.ts +243 -0
  660. package/platforms/electrobun/src/voice/voice-live-validation.test.ts +352 -0
  661. package/platforms/electrobun/src/voice/voice-live-validation.ts +838 -0
  662. package/platforms/electrobun/src/voice/voice-pipeline.ts +250 -0
  663. package/platforms/electrobun/src/voice/voice-playback-adapter.ts +31 -0
  664. package/platforms/electrobun/src/voice/voice-runtime-adapter.test.ts +213 -0
  665. package/platforms/electrobun/src/voice/voice-runtime-adapter.ts +686 -0
  666. package/platforms/electrobun/src/voice/voice-service.test.ts +561 -0
  667. package/platforms/electrobun/src/voice/voice-service.ts +1027 -0
  668. package/platforms/electrobun/src/voice/voice-stream-coordinator.test.ts +115 -0
  669. package/platforms/electrobun/src/voice/voice-stream-coordinator.ts +270 -0
  670. package/platforms/electrobun/src/voice/voice-trace.ts +97 -0
  671. package/platforms/electrobun/src/voice/voice-tts-chunker.test.ts +91 -0
  672. package/platforms/electrobun/src/voice/voice-tts-chunker.ts +194 -0
  673. package/platforms/electrobun/src/windows-cef-profile.ts +88 -88
  674. package/platforms/electrobun/tsconfig.json +73 -13
  675. package/platforms/electrobun/update-channels.json +22 -0
  676. package/platforms/electrobun/vitest.electrobun.config.ts +72 -42
  677. package/platforms/ios/App/App/App.entitlements +4 -0
  678. package/platforms/ios/App/App/AppDelegate.swift +80 -18
  679. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ios-marketing-1024.png +0 -0
  680. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@1x.png +0 -0
  681. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@2x.png +0 -0
  682. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@1x.png +0 -0
  683. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@2x.png +0 -0
  684. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@1x.png +0 -0
  685. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@2x.png +0 -0
  686. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@1x.png +0 -0
  687. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@2x.png +0 -0
  688. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-83_5x83_5@2x.png +0 -0
  689. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@2x.png +0 -0
  690. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@3x.png +0 -0
  691. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@2x.png +0 -0
  692. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@3x.png +0 -0
  693. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@2x.png +0 -0
  694. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@3x.png +0 -0
  695. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@2x.png +0 -0
  696. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@3x.png +0 -0
  697. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +1 -4
  698. package/platforms/ios/App/App/ComputerUseBridge.swift +589 -0
  699. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.entitlements +12 -0
  700. package/platforms/ios/App/App/DeviceActivityMonitorExtension/DeviceActivityMonitorExtension.swift +34 -0
  701. package/platforms/ios/App/App/DeviceActivityMonitorExtension/Info.plist +29 -0
  702. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.entitlements +12 -0
  703. package/platforms/ios/App/App/DeviceActivityReportExtension/DeviceActivityReportExtension.swift +53 -0
  704. package/platforms/ios/App/App/DeviceActivityReportExtension/Info.plist +27 -0
  705. package/platforms/ios/App/App/ElizaAppIntents.swift +183 -0
  706. package/platforms/ios/App/App/ElizaIntentPlugin.swift +342 -5
  707. package/platforms/ios/App/App/Info.plist +17 -1
  708. package/platforms/ios/App/App/runners/eliza-tasks.js +177 -0
  709. package/platforms/ios/App/App.xcodeproj/project.pbxproj +262 -6
  710. package/platforms/ios/App/BroadcastExtension/SampleHandler.swift +100 -0
  711. package/platforms/ios/App/Podfile +5 -0
  712. package/platforms/ios/App/Podfile.lock +83 -59
  713. package/register-runtime-hooks.js +11 -5
  714. package/registry/app-registry.d.ts +14 -0
  715. package/registry/app-registry.d.ts.map +1 -0
  716. package/registry/app-registry.js +29 -0
  717. package/registry/entries/apps/app-polymarket.json +31 -0
  718. package/registry/entries/apps/clawville.json +27 -0
  719. package/registry/entries/apps/companion.json +28 -0
  720. package/registry/entries/apps/database-viewer.json +27 -0
  721. package/registry/entries/apps/defense-of-the-agents.json +27 -0
  722. package/registry/entries/apps/documents.json +30 -0
  723. package/registry/entries/apps/feed.json +27 -0
  724. package/registry/entries/apps/hyperliquid.json +31 -0
  725. package/registry/entries/apps/log-viewer.json +27 -0
  726. package/registry/entries/apps/memory-viewer.json +27 -0
  727. package/registry/entries/apps/model-tester.json +31 -0
  728. package/registry/entries/apps/plugin-viewer.json +27 -0
  729. package/registry/entries/apps/relationship-viewer.json +27 -0
  730. package/registry/entries/apps/runtime-debugger.json +27 -0
  731. package/registry/entries/apps/shopify.json +31 -0
  732. package/registry/entries/apps/skills-viewer.json +27 -0
  733. package/registry/entries/apps/steward.json +31 -0
  734. package/registry/entries/apps/training.json +54 -0
  735. package/registry/entries/apps/trajectory-viewer.json +27 -0
  736. package/registry/entries/apps/vincent.json +31 -0
  737. package/registry/entries/connectors/bluebubbles.json +99 -0
  738. package/registry/entries/connectors/bluesky.json +173 -0
  739. package/registry/entries/connectors/discord.json +119 -0
  740. package/registry/entries/connectors/farcaster.json +174 -0
  741. package/registry/entries/connectors/feishu.json +79 -0
  742. package/registry/entries/connectors/google-chat.json +120 -0
  743. package/registry/entries/connectors/google.json +82 -0
  744. package/registry/entries/connectors/imessage.json +96 -0
  745. package/registry/entries/connectors/instagram.json +64 -0
  746. package/registry/entries/connectors/line.json +86 -0
  747. package/registry/entries/connectors/matrix.json +94 -0
  748. package/registry/entries/connectors/mattermost.json +110 -0
  749. package/registry/entries/connectors/msteams.json +104 -0
  750. package/registry/entries/connectors/nextcloud-talk.json +104 -0
  751. package/registry/entries/connectors/nostr.json +70 -0
  752. package/registry/entries/connectors/signal.json +81 -0
  753. package/registry/entries/connectors/slack.json +102 -0
  754. package/registry/entries/connectors/telegram.json +71 -0
  755. package/registry/entries/connectors/tlon.json +94 -0
  756. package/registry/entries/connectors/twitch.json +110 -0
  757. package/registry/entries/connectors/whatsapp.json +113 -0
  758. package/registry/entries/connectors/x.json +231 -0
  759. package/registry/entries/connectors/zalo.json +112 -0
  760. package/registry/entries/connectors/zalouser.json +122 -0
  761. package/registry/entries/plugins/agent-orchestrator.json +33 -0
  762. package/registry/entries/plugins/agent-skills.json +72 -0
  763. package/registry/entries/plugins/anthropic.json +73 -0
  764. package/registry/entries/plugins/app-control.json +23 -0
  765. package/registry/entries/plugins/auto-trader.json +203 -0
  766. package/registry/entries/plugins/background-runner.json +26 -0
  767. package/registry/entries/plugins/blooio.json +102 -0
  768. package/registry/entries/plugins/browser.json +75 -0
  769. package/registry/entries/plugins/cli.json +40 -0
  770. package/registry/entries/plugins/clipboard.json +44 -0
  771. package/registry/entries/plugins/coding-tools.json +71 -0
  772. package/registry/entries/plugins/commands.json +63 -0
  773. package/registry/entries/plugins/computeruse.json +74 -0
  774. package/registry/entries/plugins/copilot-proxy.json +93 -0
  775. package/registry/entries/plugins/directives.json +63 -0
  776. package/registry/entries/plugins/edge-tts.json +97 -0
  777. package/registry/entries/plugins/elevenlabs.json +169 -0
  778. package/registry/entries/plugins/elizacloud.json +208 -0
  779. package/registry/entries/plugins/evm.json +134 -0
  780. package/registry/entries/plugins/experience.json +34 -0
  781. package/registry/entries/plugins/facewear.json +131 -0
  782. package/registry/entries/plugins/form.json +26 -0
  783. package/registry/entries/plugins/github.json +93 -0
  784. package/registry/entries/plugins/gmail-watch.json +25 -0
  785. package/registry/entries/plugins/goals.json +77 -0
  786. package/registry/entries/plugins/google-genai.json +106 -0
  787. package/registry/entries/plugins/groq.json +93 -0
  788. package/registry/entries/plugins/hedera.json +48 -0
  789. package/registry/entries/plugins/inmemorydb.json +25 -0
  790. package/registry/entries/plugins/linear.json +51 -0
  791. package/registry/entries/plugins/local-inference.json +137 -0
  792. package/registry/entries/plugins/local-storage.json +36 -0
  793. package/registry/entries/plugins/localdb.json +25 -0
  794. package/registry/entries/plugins/mcp.json +44 -0
  795. package/registry/entries/plugins/memory.json +124 -0
  796. package/registry/entries/plugins/minecraft.json +79 -0
  797. package/registry/entries/plugins/moltbook.json +83 -0
  798. package/registry/entries/plugins/music.json +155 -0
  799. package/registry/entries/plugins/mysticism.json +48 -0
  800. package/registry/entries/plugins/nearai.json +82 -0
  801. package/registry/entries/plugins/ngrok.json +69 -0
  802. package/registry/entries/plugins/ollama.json +96 -0
  803. package/registry/entries/plugins/openai.json +189 -0
  804. package/registry/entries/plugins/openrouter.json +188 -0
  805. package/registry/entries/plugins/pdf.json +26 -0
  806. package/registry/entries/plugins/plugin-manager.json +23 -0
  807. package/registry/entries/plugins/prose.json +48 -0
  808. package/registry/entries/plugins/rlm.json +26 -0
  809. package/registry/entries/plugins/roblox.json +88 -0
  810. package/registry/entries/plugins/rss.json +64 -0
  811. package/registry/entries/plugins/s3-storage.json +91 -0
  812. package/registry/entries/plugins/scheduling.json +35 -0
  813. package/registry/entries/plugins/shell.json +94 -0
  814. package/registry/entries/plugins/social-alpha.json +72 -0
  815. package/registry/entries/plugins/tailscale.json +81 -0
  816. package/registry/entries/plugins/tee.json +53 -0
  817. package/registry/entries/plugins/todos.json +26 -0
  818. package/registry/entries/plugins/trajectory-logger.json +33 -0
  819. package/registry/entries/plugins/trust.json +39 -0
  820. package/registry/entries/plugins/tts.json +71 -0
  821. package/registry/entries/plugins/tunnel.json +45 -0
  822. package/registry/entries/plugins/twilio.json +168 -0
  823. package/registry/entries/plugins/vercel-ai-gateway.json +128 -0
  824. package/registry/entries/plugins/video.json +23 -0
  825. package/registry/entries/plugins/vision.json +43 -0
  826. package/registry/entries/plugins/webhooks.json +23 -0
  827. package/registry/entries/plugins/workflow.json +25 -0
  828. package/registry/entries/plugins/xai.json +75 -0
  829. package/registry/index.d.ts +2 -1
  830. package/registry/index.d.ts.map +1 -1
  831. package/registry/index.js +46 -12
  832. package/registry/loader.d.ts +2 -1
  833. package/registry/loader.d.ts.map +1 -1
  834. package/registry/loader.js +49 -2
  835. package/registry/schema.d.ts +244 -34
  836. package/registry/schema.d.ts.map +1 -1
  837. package/registry/schema.js +36 -0
  838. package/runtime/android-avf-microdroid-bridge.d.ts +29 -0
  839. package/runtime/android-avf-microdroid-bridge.d.ts.map +1 -0
  840. package/runtime/android-avf-microdroid-bridge.js +149 -0
  841. package/runtime/api-dev-settings-banner.d.ts.map +1 -1
  842. package/runtime/api-dev-settings-banner.js +5 -13
  843. package/runtime/app-core-runtime-hooks.d.ts +21 -0
  844. package/runtime/app-core-runtime-hooks.d.ts.map +1 -0
  845. package/runtime/app-core-runtime-hooks.js +10 -0
  846. package/runtime/autonomy-policy.d.ts +2 -0
  847. package/runtime/autonomy-policy.d.ts.map +1 -0
  848. package/runtime/autonomy-policy.js +4 -0
  849. package/runtime/desktop/AppWindowRenderer.d.ts +17 -0
  850. package/runtime/desktop/AppWindowRenderer.d.ts.map +1 -0
  851. package/runtime/desktop/AppWindowRenderer.js +360 -0
  852. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts +2 -0
  853. package/runtime/desktop/DesktopSurfaceNavigationRuntime.d.ts.map +1 -0
  854. package/runtime/desktop/DesktopSurfaceNavigationRuntime.js +41 -0
  855. package/runtime/desktop/DesktopTrayRuntime.d.ts +2 -0
  856. package/runtime/desktop/DesktopTrayRuntime.d.ts.map +1 -0
  857. package/runtime/desktop/DesktopTrayRuntime.js +174 -0
  858. package/runtime/desktop/DetachedShellRoot.d.ts +10 -0
  859. package/runtime/desktop/DetachedShellRoot.d.ts.map +1 -0
  860. package/runtime/desktop/DetachedShellRoot.js +111 -0
  861. package/runtime/desktop/index.d.ts +6 -0
  862. package/runtime/desktop/index.d.ts.map +1 -0
  863. package/runtime/desktop/index.js +5 -0
  864. package/runtime/desktop/tray-menu.d.ts +20 -0
  865. package/runtime/desktop/tray-menu.d.ts.map +1 -0
  866. package/runtime/desktop/tray-menu.js +143 -0
  867. package/runtime/dev-server.d.ts +1 -1
  868. package/runtime/dev-server.d.ts.map +1 -1
  869. package/runtime/dev-server.js +93 -17
  870. package/runtime/eliza.d.ts +75 -1
  871. package/runtime/eliza.d.ts.map +1 -1
  872. package/runtime/eliza.js +596 -122
  873. package/runtime/ensure-text-to-speech-handler.d.ts.map +1 -1
  874. package/runtime/ensure-text-to-speech-handler.js +10 -3
  875. package/runtime/mobile-safe-runtime.d.ts +181 -2
  876. package/runtime/mobile-safe-runtime.d.ts.map +1 -1
  877. package/runtime/mobile-safe-runtime.js +1019 -12
  878. package/runtime/mode/remote-forwarder.d.ts.map +1 -1
  879. package/runtime/mode/remote-forwarder.js +2 -2
  880. package/runtime/mode/route-mode-guard.d.ts +1 -2
  881. package/runtime/mode/route-mode-guard.d.ts.map +1 -1
  882. package/runtime/mode/route-mode-guard.js +4 -5
  883. package/runtime/mode/route-mode-matrix.d.ts.map +1 -1
  884. package/runtime/mode/route-mode-matrix.js +14 -1
  885. package/runtime/mode/runtime-mode.d.ts +1 -1
  886. package/runtime/mode/runtime-mode.d.ts.map +1 -1
  887. package/runtime/mode/runtime-mode.js +15 -4
  888. package/runtime/runtime-bootstrap-policy.d.ts.map +1 -1
  889. package/runtime/runtime-bootstrap-policy.js +14 -2
  890. package/runtime/telegram-standalone-handler.d.ts.map +1 -1
  891. package/runtime/telegram-standalone-handler.js +10 -9
  892. package/runtime/tts-cache-wiring.d.ts +29 -0
  893. package/runtime/tts-cache-wiring.d.ts.map +1 -0
  894. package/runtime/tts-cache-wiring.js +114 -0
  895. package/runtime/voice-warmup.d.ts +81 -0
  896. package/runtime/voice-warmup.d.ts.map +1 -0
  897. package/runtime/voice-warmup.js +111 -0
  898. package/scripts/android-sms-gateway-template.test.mjs +1014 -0
  899. package/scripts/aosp/README.md +19 -15
  900. package/scripts/aosp/compile-libllama.mjs +1344 -248
  901. package/scripts/aosp/compile-shim.mjs +47 -18
  902. package/scripts/aosp/deploy-pixel.mjs +405 -0
  903. package/scripts/aosp/lib/load-variant-config.mjs +3 -3
  904. package/scripts/aosp/llama-cpp-patches/README.md +8 -8
  905. package/scripts/aosp/llama-cpp-patches/apply-patches.mjs +23 -6
  906. package/scripts/aosp/llama-cpp-patches/polarquant/README.md +37 -0
  907. package/scripts/aosp/llama-cpp-patches/qjl/README.md +37 -0
  908. package/scripts/aosp/seccomp-shim/sigsys-handler-arm64.c +169 -0
  909. package/scripts/aosp/seccomp-shim/sigsys-handler-riscv64.c +217 -0
  910. package/scripts/aosp/smoke-cuttlefish.mjs +34 -4
  911. package/scripts/aosp/stage-default-models.mjs +49 -18
  912. package/scripts/aosp/variant-config-schema.ts +2 -2
  913. package/scripts/assert-required-bundled-packages.test.ts +534 -0
  914. package/scripts/audit-apple-store-sandbox.mjs +146 -0
  915. package/scripts/audit-live-test-surface.mjs +5 -2
  916. package/scripts/build-capacitor-app.mjs +21 -0
  917. package/scripts/build-flatpak.mjs +5 -5
  918. package/scripts/build-helpers/arm64-simd.mjs +72 -0
  919. package/scripts/build-helpers/omnivoice-merged.mjs +87 -0
  920. package/scripts/build-helpers/verify-fused-symbols.mjs +567 -0
  921. package/scripts/build-image.sh +4 -2
  922. package/scripts/build-llama-cpp-mtp.mjs +487 -0
  923. package/scripts/build-native-plugins.mjs +230 -18
  924. package/scripts/build-patched-electrobun-cli.mjs +68 -10
  925. package/scripts/build-win.mjs +1 -1
  926. package/scripts/bun-riscv64/Dockerfile +418 -0
  927. package/scripts/bun-riscv64/README.md +316 -0
  928. package/scripts/bun-riscv64/build.sh +469 -0
  929. package/scripts/bun-riscv64/bun-patches/0001-config-add-riscv64-arch.patch +74 -0
  930. package/scripts/bun-riscv64/bun-patches/0002-flags-add-riscv64-march-mabi.patch +16 -0
  931. package/scripts/bun-riscv64/bun-patches/0003-zig-add-riscv64-target-triple-and-cpu.patch +26 -0
  932. package/scripts/bun-riscv64/bun-patches/0004-webkit-force-local-mode-on-riscv64.patch +33 -0
  933. package/scripts/bun-riscv64/bun-patches/0005-tinycc-disable-on-riscv64.patch +16 -0
  934. package/scripts/bun-riscv64/bun-patches/0006-build-add-riscv64-cli-validation.patch +15 -0
  935. package/scripts/bun-riscv64/bun-patches/0007-deps-per-dep-riscv64-checks.patch +24 -0
  936. package/scripts/bun-riscv64/bun-patches/0008-source-stabilize-riscv64-musl-build.patch +226 -0
  937. package/scripts/bun-riscv64/bun-patches/0009-disable-wasm-streaming-hooks-for-c-loop.patch +162 -0
  938. package/scripts/bun-riscv64/bun-patches/0010-disable-inspector-profiler-for-riscv64-c-loop.patch +80 -0
  939. package/scripts/bun-riscv64/bun-patches/0011-process-arch-add-riscv64.patch +23 -0
  940. package/scripts/bun-riscv64/bun-patches/0012-cpu-features-add-riscv64-fallback.patch +13 -0
  941. package/scripts/bun-riscv64/bun-patches/0013-disable-console-inspector-hooks-for-riscv64-c-loop.patch +43 -0
  942. package/scripts/bun-riscv64/bun-patches/0014-disable-custom-inspector-dispatchers-on-riscv64.patch +127 -0
  943. package/scripts/bun-riscv64/bun-patches/0015-disable-jsc-profiler-builtins-on-riscv64.patch +75 -0
  944. package/scripts/bun-riscv64/bun-patches/0016-node-vm-disable-jit-cached-data-on-riscv64-c-loop.patch +96 -0
  945. package/scripts/bun-riscv64/bun-patches/0017-disable-performance-domjit-signature-on-riscv64-c-loop.patch +34 -0
  946. package/scripts/bun-riscv64/bun-patches/0018-fix-serialized-script-identifier-big-endian-path.patch +19 -0
  947. package/scripts/bun-riscv64/bun-patches/0019-add-wtf-timer-fire-bridge-for-c-loop.patch +24 -0
  948. package/scripts/bun-riscv64/bun-patches/0020-run-riscv64-smoke-test-under-qemu.patch +13 -0
  949. package/scripts/bun-riscv64/bun-patches/0021-fix-riscv64-linux-open-flags.patch +25 -0
  950. package/scripts/bun-riscv64/bun-patches/0022-zlib-riscv64-generic-kernels.patch +25 -0
  951. package/scripts/bun-riscv64/bun-patches/README.md +127 -0
  952. package/scripts/bun-riscv64/bun-version.json +202 -0
  953. package/scripts/bun-riscv64/run-build.sh +162 -0
  954. package/scripts/bun-riscv64/rust-core/0001-riscv64-rust-core-port.patch +868 -0
  955. package/scripts/bun-riscv64/rust-core/0002-second-wave-riscv64-source-gaps.patch +130 -0
  956. package/scripts/bun-riscv64/rust-core/0003-third-wave-riscv64-crash-handler-gaps.patch +78 -0
  957. package/scripts/bun-riscv64/rust-core/0004-rust-target-cpu-riscv64.patch +39 -0
  958. package/scripts/bun-riscv64/rust-core/0005-fifth-wave-riscv64-source-gaps.patch +96 -0
  959. package/scripts/bun-riscv64/rust-core/0006-cpp-wasm-and-inspector-guards-riscv64.patch +91 -0
  960. package/scripts/bun-riscv64/rust-core/0007-bun-alloc-max-align-t-riscv64.patch +36 -0
  961. package/scripts/bun-riscv64/rust-core/0008-workspace-lints-warn-not-deny-riscv64.patch +75 -0
  962. package/scripts/bun-riscv64/rust-core/0009-zigglobalobject-wasm-streaming-guards-riscv64.patch +109 -0
  963. package/scripts/bun-riscv64/rust-core/0010-tcc-externs-stub-on-riscv64.patch +62 -0
  964. package/scripts/bun-riscv64/rust-core/0011-clippy-ptr-cast-lints-warn-riscv64.patch +61 -0
  965. package/scripts/bun-riscv64/rust-core/README.md +80 -0
  966. package/scripts/bun-riscv64/rust-core/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  967. package/scripts/bun-riscv64/rust-core/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  968. package/scripts/bun-riscv64/rust-core/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  969. package/scripts/bun-riscv64/rust-core/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  970. package/scripts/bun-riscv64/rust-core/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +31 -0
  971. package/scripts/bun-riscv64/validate.sh +264 -0
  972. package/scripts/bun-riscv64/webkit-patches/0001-cherry-pick-llint-riscv64.recipe +155 -0
  973. package/scripts/bun-riscv64/webkit-patches/0002-cherry-pick-baseline-jit-riscv64.recipe +40 -0
  974. package/scripts/bun-riscv64/webkit-patches/0003-disable-dfg-ftl-on-riscv64.patch +60 -0
  975. package/scripts/bun-riscv64/webkit-patches/0004-riscv64-do-not-force-wasm-in-c-loop.patch +31 -0
  976. package/scripts/bun-riscv64/webkit-patches/0005-domjit-effect-allow-no-dfg-c-loop.patch +40 -0
  977. package/scripts/bun-riscv64/webkit-patches/0006-disable-usewasm-when-webassembly-compiled-out.patch +33 -0
  978. package/scripts/bun-riscv64/webkit-patches/0007-restore-dropped-includes-and-llint-fwd-decl.patch +72 -0
  979. package/scripts/bun-riscv64/webkit-patches/README.md +146 -0
  980. package/scripts/check-homepage-public-readiness.mjs +353 -0
  981. package/scripts/check-homepage-release-data.mjs +110 -0
  982. package/scripts/check-i18n.mjs +2 -1
  983. package/scripts/check-real-local-chat.ts +147 -0
  984. package/scripts/check-real-local-provisioning.ts +104 -0
  985. package/scripts/check-real-local-reset.ts +249 -0
  986. package/scripts/check-sms-gateway-completion-audit.mjs +428 -0
  987. package/scripts/check-sms-gateway-readiness.mjs +266 -0
  988. package/scripts/clean-repo.mjs +5 -5
  989. package/scripts/codesign-mas.mjs +222 -16
  990. package/scripts/collect-docker-runtime-deps.mjs +229 -0
  991. package/scripts/continue-sms-gateway-work.mjs +121 -0
  992. package/scripts/copy-runtime-node-modules.ts +903 -195
  993. package/scripts/deploy-cloud-api-production-gateway.mjs +52 -0
  994. package/scripts/desktop-build.mjs +655 -101
  995. package/scripts/dev-platform.mjs +346 -102
  996. package/scripts/dev-startup-smoke.mjs +248 -0
  997. package/scripts/dev-ui.mjs +418 -176
  998. package/scripts/disable-local-eliza-workspace.mjs +35 -0
  999. package/scripts/docker-ci-smoke.sh +440 -96
  1000. package/scripts/docker-entrypoint.sh +62 -1
  1001. package/scripts/docker-entrypoint.test.ts +283 -0
  1002. package/scripts/ensure-avatars.mjs +2 -2
  1003. package/scripts/ensure-electrobun-core.mjs +1 -1
  1004. package/scripts/ensure-generated-core-proto-js.mjs +1 -1
  1005. package/scripts/ensure-type-package-aliases.mjs +62 -5
  1006. package/scripts/ensure-vision-deps.mjs +20 -1
  1007. package/scripts/entry.ts +1 -1
  1008. package/scripts/ffi-stub/Makefile +64 -0
  1009. package/scripts/ffi-stub/README.md +391 -0
  1010. package/scripts/ffi-stub/asr-ffi-smoke.ts +139 -0
  1011. package/scripts/ffi-stub/ffi-stub.c +539 -0
  1012. package/scripts/ffi-stub/ffi.h +538 -0
  1013. package/scripts/ffi-stub/libelizainference_stub.so +0 -0
  1014. package/scripts/ffi-stub/tts-stream-ffi-smoke.ts +349 -0
  1015. package/scripts/generate-first-run-voicelines.mjs +194 -0
  1016. package/scripts/generate-plugin-index.js +4 -3
  1017. package/scripts/generate-static-asset-manifest.mjs +1 -1
  1018. package/scripts/i18n-dynamic-keys.json +5 -5
  1019. package/scripts/init-submodules.mjs +2 -2
  1020. package/scripts/install-android-sms-gateway.md +177 -0
  1021. package/scripts/install-android-sms-gateway.mjs +1088 -0
  1022. package/scripts/ios-xcframework/README.md +74 -72
  1023. package/scripts/ios-xcframework/build-xcframework.mjs +204 -43
  1024. package/scripts/ios-xcframework/run-physical-device-smoke.mjs +1943 -0
  1025. package/scripts/ios-xcframework/runtime-symbol-shim.c +450 -0
  1026. package/scripts/kernel-patches/cpu-polar-kernels.mjs +441 -0
  1027. package/scripts/kernel-patches/cpu-simd-kernels.mjs +253 -0
  1028. package/scripts/kernel-patches/cpu-thread-parallelism.mjs +368 -0
  1029. package/scripts/kernel-patches/cuda-kernels.mjs +117 -0
  1030. package/scripts/kernel-patches/metal-kernels.mjs +1698 -109
  1031. package/scripts/kernel-patches/server-omnivoice-route.mjs +718 -0
  1032. package/scripts/kernel-patches/server-structured-output.mjs +279 -0
  1033. package/scripts/kernel-patches/vulkan-dispatch-log.mjs +166 -0
  1034. package/scripts/kernel-patches/vulkan-dispatch-log.test.mjs +50 -0
  1035. package/scripts/kernel-patches/vulkan-dispatch-patches/01-vulkan-shaders-gen.patch +30 -16
  1036. package/scripts/kernel-patches/vulkan-dispatch-patches/02-ggml-vulkan-pipelines.patch +75 -30
  1037. package/scripts/kernel-patches/vulkan-kernels.mjs +800 -49
  1038. package/scripts/lib/agent-source-watcher.mjs +174 -0
  1039. package/scripts/lib/agent-source-watcher.test.mjs +184 -0
  1040. package/scripts/lib/api-supervisor.mjs +78 -9
  1041. package/scripts/lib/api-supervisor.test.mjs +121 -0
  1042. package/scripts/lib/app-dir.mjs +2 -16
  1043. package/scripts/lib/apple-entitlement-audit.mjs +655 -0
  1044. package/scripts/lib/apple-entitlement-audit.test.mjs +144 -0
  1045. package/scripts/lib/bun-version-guard.mjs +13 -13
  1046. package/scripts/lib/capacitor-plugin-build-needed.mjs +4 -3
  1047. package/scripts/lib/capacitor-plugin-names.mjs +30 -14
  1048. package/scripts/lib/desktop-preflight.mjs +9 -5
  1049. package/scripts/lib/desktop-startup-embedding-warmup-policy.mjs +51 -0
  1050. package/scripts/lib/desktop-startup-embedding-warmup-policy.test.mjs +55 -0
  1051. package/scripts/lib/duet-bridge.d.mts +63 -0
  1052. package/scripts/lib/duet-bridge.mjs +193 -0
  1053. package/scripts/lib/node-path-env.mjs +4 -2
  1054. package/scripts/lib/orchestrator-desktop-dev-banner.mjs +12 -3
  1055. package/scripts/lib/patch-bun-exports.mjs +90 -27
  1056. package/scripts/lib/patch-bun-exports.test.mjs +79 -0
  1057. package/scripts/lib/renderer-build-action.mjs +35 -0
  1058. package/scripts/lib/renderer-build-action.test.mjs +70 -0
  1059. package/scripts/lib/stage-android-agent.mjs +748 -99
  1060. package/scripts/lib/sync-eliza-env-aliases.mjs +3 -25
  1061. package/scripts/lib/ui-smoke-stub-decision.mjs +33 -0
  1062. package/scripts/lib/ui-smoke-stub-decision.test.mjs +46 -0
  1063. package/scripts/lib/vite-renderer-dist-stale.mjs +5 -0
  1064. package/scripts/lib/voice-latency-report.mjs +154 -0
  1065. package/scripts/lifeops-prompt-benchmark.ts +21 -12
  1066. package/scripts/link-docker-local-app-packages.mjs +103 -36
  1067. package/scripts/local-stt-bench.ts +192 -0
  1068. package/scripts/maintain-cloud-api-production-gateway.mjs +54 -0
  1069. package/scripts/mas-smoke.mjs +459 -0
  1070. package/scripts/mas-smoke.test.mjs +220 -0
  1071. package/scripts/mobile-auth-simulator-smoke.mjs +0 -1
  1072. package/scripts/normalize-eliza-capture.ts +97 -0
  1073. package/scripts/omnivoice-fuse/prepare.mjs +2543 -23
  1074. package/scripts/pack-upstreams.mjs +65 -5
  1075. package/scripts/package-electrobun-linux.mjs +303 -0
  1076. package/scripts/patch-deps.mjs +5 -3
  1077. package/scripts/patches/llama-asr-word-timestamps.patch +218 -0
  1078. package/scripts/patches/llama-mobile-kokoro-tts.patch +480 -0
  1079. package/scripts/playwright-ui-live-stack.ts +194 -49
  1080. package/scripts/playwright-ui-smoke-api-stub.mjs +3501 -109
  1081. package/scripts/pre-review-local.mjs +2 -2
  1082. package/scripts/prepare-ios-cocoapods.sh +41 -3
  1083. package/scripts/release-check.ts +180 -84
  1084. package/scripts/release-workflow-drift.test.ts +57 -0
  1085. package/scripts/relink-workspace-packages-to-dist.mjs +21 -4
  1086. package/scripts/rt.mjs +16 -1
  1087. package/scripts/run-biome-check.mjs +1 -1
  1088. package/scripts/run-coding-agent-e2e.mjs +3 -3
  1089. package/scripts/run-eliza-app-core-script.mjs +34 -0
  1090. package/scripts/run-local-plugin-live-smoke.mjs +71 -2
  1091. package/scripts/run-mobile-build-android-app-actions.test.mjs +426 -0
  1092. package/scripts/run-mobile-build.mjs +4757 -607
  1093. package/scripts/run-node-runtime.mjs +184 -7
  1094. package/scripts/run-node-runtime.test.mjs +167 -0
  1095. package/scripts/run-node-tsx.mjs +80 -33
  1096. package/scripts/run-node.mjs +41 -1
  1097. package/scripts/run-production-build.mjs +34 -27
  1098. package/scripts/run-release-check.mjs +19 -0
  1099. package/scripts/run-release-contract-suite.mjs +107 -14
  1100. package/scripts/run-ui-smoke-playwright-suite.mjs +0 -2
  1101. package/scripts/runtime-package-manifest.ts +21 -3
  1102. package/scripts/setup-upstreams.mjs +42 -1
  1103. package/scripts/sms-gateway-status.mjs +194 -0
  1104. package/scripts/stage-android-agent.test.mjs +97 -0
  1105. package/scripts/stage-desktop-fused-lib.mjs +424 -0
  1106. package/scripts/stage-elizavoice-lib.mjs +363 -0
  1107. package/scripts/startup-integration-script-drift.test.ts +82 -4
  1108. package/scripts/streaming-pipeline-bench.ts +543 -0
  1109. package/scripts/sync-homepage-porkbun-dns.mjs +262 -0
  1110. package/scripts/test-sms-gateway-software.mjs +100 -0
  1111. package/scripts/type-audit.mjs +1 -1
  1112. package/scripts/validate-bluebubbles-outbound.mjs +293 -0
  1113. package/scripts/validate-cdn-assets.mjs +15 -7
  1114. package/scripts/validate-regression-matrix.mjs +109 -8
  1115. package/scripts/verify-android-sms-gateway-e2e.mjs +362 -0
  1116. package/scripts/verify-bluebubbles-gateway-e2e.mjs +191 -0
  1117. package/scripts/verify-bluebubbles-inbound-readiness.mjs +88 -0
  1118. package/scripts/verify-cloud-api-production-deploy.mjs +87 -0
  1119. package/scripts/verify-cloud-sms-onboarding-flow.mjs +336 -0
  1120. package/scripts/voice/freeze-voice.mjs +521 -0
  1121. package/scripts/voice-attribution-smoke.ts +538 -0
  1122. package/scripts/voice-create-profile.mjs +379 -0
  1123. package/scripts/voice-duet.mjs +1355 -0
  1124. package/scripts/voice-e2e-hardware.ts +871 -0
  1125. package/scripts/voice-interactive.mjs +1750 -0
  1126. package/scripts/voice-latency-report.mjs +96 -0
  1127. package/scripts/voice-latency-report.test.ts +176 -0
  1128. package/scripts/voice-preset/build-default-voice-preset.mjs +249 -0
  1129. package/scripts/voice-preset/build-onboarding-voice.mjs +281 -0
  1130. package/scripts/watch-sms-gateway-readiness.mjs +303 -0
  1131. package/scripts/write-homepage-release-data.mjs +458 -26
  1132. package/security/agent-vault-id.d.ts +1 -1
  1133. package/security/agent-vault-id.js +1 -1
  1134. package/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -1
  1135. package/security/hydrate-wallet-keys-from-platform-store.js +23 -14
  1136. package/security/platform-secure-store-node.d.ts +2 -2
  1137. package/security/platform-secure-store-node.js +3 -3
  1138. package/security/wallet-os-store-actions.d.ts +0 -9
  1139. package/security/wallet-os-store-actions.d.ts.map +1 -1
  1140. package/security/wallet-os-store-actions.js +3 -10
  1141. package/services/account-pool.d.ts +23 -14
  1142. package/services/account-pool.d.ts.map +1 -1
  1143. package/services/account-pool.js +86 -24
  1144. package/services/account-usage.d.ts.map +1 -1
  1145. package/services/account-usage.js +2 -5
  1146. package/services/ambient-audio/consent.d.ts +9 -0
  1147. package/services/ambient-audio/consent.d.ts.map +1 -0
  1148. package/services/ambient-audio/consent.js +28 -0
  1149. package/services/ambient-audio/index.d.ts +7 -0
  1150. package/services/ambient-audio/index.d.ts.map +1 -0
  1151. package/services/ambient-audio/index.js +4 -0
  1152. package/services/ambient-audio/replay-buffer.d.ts +14 -0
  1153. package/services/ambient-audio/replay-buffer.d.ts.map +1 -0
  1154. package/services/ambient-audio/replay-buffer.js +66 -0
  1155. package/services/ambient-audio/response-gate.d.ts +3 -0
  1156. package/services/ambient-audio/response-gate.d.ts.map +1 -0
  1157. package/services/ambient-audio/response-gate.js +33 -0
  1158. package/services/ambient-audio/service.d.ts +22 -0
  1159. package/services/ambient-audio/service.d.ts.map +1 -0
  1160. package/services/ambient-audio/service.js +47 -0
  1161. package/services/ambient-audio/types.d.ts +42 -0
  1162. package/services/ambient-audio/types.d.ts.map +1 -0
  1163. package/services/app-updates/update-policy.d.ts +64 -0
  1164. package/services/app-updates/update-policy.d.ts.map +1 -0
  1165. package/services/app-updates/update-policy.js +228 -0
  1166. package/services/auth-store.d.ts +37 -1
  1167. package/services/auth-store.d.ts.map +1 -1
  1168. package/services/auth-store.js +59 -26
  1169. package/services/cloud-jwks-store.d.ts +3 -3
  1170. package/services/cloud-jwks-store.d.ts.map +1 -1
  1171. package/services/cloud-jwks-store.js +5 -8
  1172. package/services/coding-account-bridge.d.ts +71 -0
  1173. package/services/coding-account-bridge.d.ts.map +1 -0
  1174. package/services/coding-account-bridge.js +267 -0
  1175. package/services/connector-target-catalog.d.ts +10 -3
  1176. package/services/connector-target-catalog.d.ts.map +1 -1
  1177. package/services/connector-target-catalog.js +7 -4
  1178. package/services/credential-tunnel-service.d.ts +66 -0
  1179. package/services/credential-tunnel-service.d.ts.map +1 -0
  1180. package/services/credential-tunnel-service.js +227 -0
  1181. package/services/github-credentials.d.ts +1 -1
  1182. package/services/github-credentials.js +1 -1
  1183. package/services/inference-abort.d.ts +47 -0
  1184. package/services/inference-abort.d.ts.map +1 -0
  1185. package/services/inference-abort.js +76 -0
  1186. package/services/persistence.d.ts +2 -3
  1187. package/services/persistence.d.ts.map +1 -1
  1188. package/services/persistence.js +2 -3
  1189. package/services/phrase-chunked-tts.d.ts +136 -0
  1190. package/services/phrase-chunked-tts.d.ts.map +1 -0
  1191. package/services/phrase-chunked-tts.js +208 -0
  1192. package/services/sandbox-registry.d.ts +78 -0
  1193. package/services/sandbox-registry.d.ts.map +1 -0
  1194. package/services/sandbox-registry.js +323 -0
  1195. package/services/secrets-manager-installer.d.ts +8 -1
  1196. package/services/secrets-manager-installer.d.ts.map +1 -1
  1197. package/services/secrets-manager-installer.js +27 -2
  1198. package/services/sensitive-requests/cloud-link-adapter.d.ts +15 -0
  1199. package/services/sensitive-requests/cloud-link-adapter.d.ts.map +1 -0
  1200. package/services/sensitive-requests/cloud-link-adapter.js +73 -0
  1201. package/services/sensitive-requests/index.d.ts +27 -0
  1202. package/services/sensitive-requests/index.d.ts.map +1 -0
  1203. package/services/sensitive-requests/index.js +51 -0
  1204. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts +14 -0
  1205. package/services/sensitive-requests/instruct-dm-only-adapter.d.ts.map +1 -0
  1206. package/services/sensitive-requests/instruct-dm-only-adapter.js +22 -0
  1207. package/services/sensitive-requests/owner-app-inline-adapter.d.ts +3 -0
  1208. package/services/sensitive-requests/owner-app-inline-adapter.d.ts.map +1 -0
  1209. package/services/sensitive-requests/owner-app-inline-adapter.js +146 -0
  1210. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts +3 -0
  1211. package/services/sensitive-requests/owner-app-oauth-adapter.d.ts.map +1 -0
  1212. package/services/sensitive-requests/owner-app-oauth-adapter.js +156 -0
  1213. package/services/sensitive-requests/public-link-adapter.d.ts +14 -0
  1214. package/services/sensitive-requests/public-link-adapter.d.ts.map +1 -0
  1215. package/services/sensitive-requests/public-link-adapter.js +86 -0
  1216. package/services/sensitive-requests/tunnel-link-adapter.d.ts +17 -0
  1217. package/services/sensitive-requests/tunnel-link-adapter.d.ts.map +1 -0
  1218. package/services/sensitive-requests/tunnel-link-adapter.js +38 -0
  1219. package/services/steward-credentials.d.ts +1 -1
  1220. package/services/steward-credentials.d.ts.map +1 -1
  1221. package/services/steward-credentials.js +10 -6
  1222. package/services/steward-sidecar/health-check.d.ts.map +1 -1
  1223. package/services/steward-sidecar/health-check.js +4 -3
  1224. package/services/steward-sidecar/process-management.d.ts +1 -1
  1225. package/services/steward-sidecar/process-management.d.ts.map +1 -1
  1226. package/services/steward-sidecar/process-management.js +9 -3
  1227. package/services/steward-sidecar/types.d.ts +1 -1
  1228. package/services/steward-sidecar/types.d.ts.map +1 -1
  1229. package/services/steward-sidecar/wallet-setup.d.ts.map +1 -1
  1230. package/services/steward-sidecar/wallet-setup.js +8 -7
  1231. package/services/steward-sidecar.d.ts +2 -2
  1232. package/services/steward-sidecar.d.ts.map +1 -1
  1233. package/services/steward-sidecar.js +27 -19
  1234. package/services/task-host-capabilities.d.ts +60 -0
  1235. package/services/task-host-capabilities.d.ts.map +1 -0
  1236. package/services/task-host-capabilities.js +122 -0
  1237. package/services/tool-call-cache/index.d.ts +2 -2
  1238. package/services/tool-call-cache/index.d.ts.map +1 -1
  1239. package/services/tool-call-cache/index.js +1 -1
  1240. package/services/trigger-event-bridge.js +1 -1
  1241. package/services/tunnel-to-mobile/index.d.ts +2 -0
  1242. package/services/tunnel-to-mobile/index.d.ts.map +1 -0
  1243. package/services/tunnel-to-mobile/index.js +1 -0
  1244. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts +105 -0
  1245. package/services/tunnel-to-mobile/tunnel-to-mobile-client.d.ts.map +1 -0
  1246. package/services/tunnel-to-mobile/tunnel-to-mobile-client.js +190 -0
  1247. package/services/vault-bootstrap.d.ts.map +1 -1
  1248. package/services/vault-bootstrap.js +48 -21
  1249. package/services/vault-mirror.d.ts +1 -1
  1250. package/services/vault-mirror.d.ts.map +1 -1
  1251. package/services/vault-mirror.js +29 -6
  1252. package/services/voice-profiles/diarization-pipeline.d.ts +6 -0
  1253. package/services/voice-profiles/diarization-pipeline.d.ts.map +1 -0
  1254. package/services/voice-profiles/diarization-pipeline.js +20 -0
  1255. package/services/voice-profiles/index.d.ts +12 -0
  1256. package/services/voice-profiles/index.d.ts.map +1 -0
  1257. package/services/voice-profiles/index.js +5 -0
  1258. package/services/voice-profiles/nickname-evaluator.d.ts +14 -0
  1259. package/services/voice-profiles/nickname-evaluator.d.ts.map +1 -0
  1260. package/services/voice-profiles/nickname-evaluator.js +46 -0
  1261. package/services/voice-profiles/owner-confidence.d.ts +10 -0
  1262. package/services/voice-profiles/owner-confidence.d.ts.map +1 -0
  1263. package/services/voice-profiles/owner-confidence.js +38 -0
  1264. package/services/voice-profiles/private-challenge.d.ts +20 -0
  1265. package/services/voice-profiles/private-challenge.d.ts.map +1 -0
  1266. package/services/voice-profiles/private-challenge.js +44 -0
  1267. package/services/voice-profiles/store.d.ts +21 -0
  1268. package/services/voice-profiles/store.d.ts.map +1 -0
  1269. package/services/voice-profiles/store.js +50 -0
  1270. package/services/voice-profiles/types.d.ts +38 -0
  1271. package/services/voice-profiles/types.d.ts.map +1 -0
  1272. package/services/voice-profiles/types.js +1 -0
  1273. package/styles/electrobun-mac-window-drag.css +4 -4
  1274. package/test/helpers/__tests__/live-agent-test.smoke.test.ts +43 -70
  1275. package/test/helpers/browser-mocks.ts +2 -2
  1276. package/test/helpers/conditional-tests.ts +2 -2
  1277. package/test/helpers/i18n.ts +1 -1
  1278. package/test/helpers/live-agent-test.ts +537 -551
  1279. package/test/helpers/live-provider.test.ts +4 -4
  1280. package/test/helpers/live-provider.ts +41 -7
  1281. package/test/helpers/live-runtime-server.ts +4 -4
  1282. package/test/helpers/pglite-runtime.ts +1 -1
  1283. package/test/helpers/real-runtime.ts +72 -20
  1284. package/test/helpers/trajectory-harness.ts +11 -7
  1285. package/test/scripts/start-eliza-live.ts +9 -0
  1286. package/test/scripts/test-parallel.mjs +1 -1
  1287. package/test/scripts/test-root-unit.mjs +6 -7
  1288. package/ui-compat.d.ts +13 -2
  1289. package/ui-compat.d.ts.map +1 -1
  1290. package/ui-compat.js +19 -3
  1291. package/api/auth-pairing-compat-routes.d.ts +0 -17
  1292. package/api/auth-pairing-compat-routes.d.ts.map +0 -1
  1293. package/api/auth-pairing-compat-routes.js +0 -301
  1294. package/api/local-inference-compat-routes.d.ts +0 -16
  1295. package/api/local-inference-compat-routes.d.ts.map +0 -1
  1296. package/api/local-inference-compat-routes.js +0 -617
  1297. package/api/onboarding-compat-routes.d.ts +0 -4
  1298. package/api/onboarding-compat-routes.d.ts.map +0 -1
  1299. package/api/onboarding-compat-routes.js +0 -207
  1300. package/api/plugins-compat-routes.d.ts +0 -103
  1301. package/api/plugins-compat-routes.d.ts.map +0 -1
  1302. package/api/plugins-compat-routes.js +0 -1181
  1303. package/api/server-onboarding-compat.d.ts +0 -31
  1304. package/api/server-onboarding-compat.d.ts.map +0 -1
  1305. package/api/server-onboarding-compat.js +0 -283
  1306. package/benchmark/cua-routes.d.ts +0 -10
  1307. package/benchmark/cua-routes.d.ts.map +0 -1
  1308. package/benchmark/cua-routes.js +0 -179
  1309. package/benchmark/mock-plugin-base.d.ts +0 -9
  1310. package/benchmark/mock-plugin-base.d.ts.map +0 -1
  1311. package/benchmark/mock-plugin-base.js +0 -325
  1312. package/cli/parse-duration.d.ts +0 -5
  1313. package/cli/parse-duration.d.ts.map +0 -1
  1314. package/cli/parse-duration.js +0 -27
  1315. package/patches/llama-cpp-capacitor@0.1.5.patch +0 -2387
  1316. package/platform/agent-browser-stub.d.ts +0 -27
  1317. package/platform/agent-browser-stub.d.ts.map +0 -1
  1318. package/platform/agent-browser-stub.js +0 -16
  1319. package/platforms/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +0 -26
  1320. package/platforms/android/app/src/main/res/drawable/ic_launcher_background.xml +0 -170
  1321. package/platforms/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +0 -34
  1322. package/platforms/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +0 -18
  1323. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512@2x.png +0 -0
  1324. package/platforms/electrobun/assets/appIcon.png +0 -0
  1325. package/platforms/electrobun/scripts/build-whisper-universal.sh +0 -137
  1326. package/platforms/electrobun/scripts/build-whisper.sh +0 -95
  1327. package/platforms/electrobun/src/libMacWindowEffects.dylib +0 -0
  1328. package/platforms/electrobun/src/native/whisper.ts +0 -280
  1329. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  1330. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  1331. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  1332. package/registry/generate-apps.d.ts +0 -2
  1333. package/registry/generate-apps.d.ts.map +0 -1
  1334. package/registry/generate-apps.js +0 -338
  1335. package/registry/generate.d.ts +0 -2
  1336. package/registry/generate.d.ts.map +0 -1
  1337. package/registry/generate.js +0 -506
  1338. package/runtime/embedding-manager-support.d.ts +0 -77
  1339. package/runtime/embedding-manager-support.d.ts.map +0 -1
  1340. package/runtime/embedding-manager-support.js +0 -309
  1341. package/runtime/embedding-presets.d.ts +0 -5
  1342. package/runtime/embedding-presets.d.ts.map +0 -1
  1343. package/runtime/embedding-presets.js +0 -47
  1344. package/runtime/embedding-warmup-policy.d.ts +0 -13
  1345. package/runtime/embedding-warmup-policy.d.ts.map +0 -1
  1346. package/runtime/embedding-warmup-policy.js +0 -33
  1347. package/runtime/ensure-local-inference-handler.d.ts +0 -25
  1348. package/runtime/ensure-local-inference-handler.d.ts.map +0 -1
  1349. package/runtime/ensure-local-inference-handler.js +0 -389
  1350. package/runtime/mobile-local-inference-gate.d.ts +0 -21
  1351. package/runtime/mobile-local-inference-gate.d.ts.map +0 -1
  1352. package/runtime/mobile-local-inference-gate.js +0 -24
  1353. package/scripts/aosp/avd-test.mjs +0 -403
  1354. package/scripts/aosp/boot-validate.mjs +0 -536
  1355. package/scripts/aosp/build-aosp.mjs +0 -448
  1356. package/scripts/aosp/build-bootanimation.mjs +0 -178
  1357. package/scripts/aosp/capture-screens.mjs +0 -325
  1358. package/scripts/aosp/e2e-validate.mjs +0 -225
  1359. package/scripts/aosp/lint-init-rc.mjs +0 -258
  1360. package/scripts/aosp/llama-shim/eliza_llama_shim.c +0 -276
  1361. package/scripts/aosp/sim.mjs +0 -277
  1362. package/scripts/aosp/sync-to-aosp.mjs +0 -134
  1363. package/scripts/aosp/validate.mjs +0 -1273
  1364. package/scripts/build-llama-cpp-dflash.mjs +0 -1866
  1365. package/scripts/generate-onboarding-voicelines.mjs +0 -194
  1366. package/scripts/generated/static-asset-manifest.json +0 -4
  1367. package/scripts/normalize-parallax-capture.ts +0 -97
  1368. package/scripts/omnivoice-fuse/Makefile +0 -44
  1369. package/scripts/omnivoice-fuse/README.md +0 -266
  1370. package/scripts/omnivoice-fuse/cmake-graft.mjs +0 -180
  1371. package/scripts/omnivoice-fuse/ffi-stub.c +0 -222
  1372. package/scripts/omnivoice-fuse/ffi.h +0 -158
  1373. package/scripts/omnivoice-fuse/libelizainference_stub.dylib +0 -0
  1374. package/scripts/omnivoice-fuse/verify-symbols.mjs +0 -138
  1375. package/security/cloud-secret-store.d.ts +0 -34
  1376. package/security/cloud-secret-store.d.ts.map +0 -1
  1377. package/security/cloud-secret-store.js +0 -65
  1378. package/security/export-guard.d.ts +0 -34
  1379. package/security/export-guard.d.ts.map +0 -1
  1380. package/security/export-guard.js +0 -127
  1381. package/services/local-inference/__stress__/cache-stress-helpers.d.ts +0 -76
  1382. package/services/local-inference/__stress__/cache-stress-helpers.d.ts.map +0 -1
  1383. package/services/local-inference/__stress__/cache-stress-helpers.js +0 -238
  1384. package/services/local-inference/active-model.d.ts +0 -180
  1385. package/services/local-inference/active-model.d.ts.map +0 -1
  1386. package/services/local-inference/active-model.js +0 -362
  1387. package/services/local-inference/assignments.d.ts +0 -58
  1388. package/services/local-inference/assignments.d.ts.map +0 -1
  1389. package/services/local-inference/assignments.js +0 -179
  1390. package/services/local-inference/backend.d.ts +0 -200
  1391. package/services/local-inference/backend.d.ts.map +0 -1
  1392. package/services/local-inference/backend.js +0 -242
  1393. package/services/local-inference/bundled-models.d.ts +0 -34
  1394. package/services/local-inference/bundled-models.d.ts.map +0 -1
  1395. package/services/local-inference/bundled-models.js +0 -104
  1396. package/services/local-inference/cache-bridge.d.ts +0 -184
  1397. package/services/local-inference/cache-bridge.d.ts.map +0 -1
  1398. package/services/local-inference/cache-bridge.js +0 -333
  1399. package/services/local-inference/catalog.d.ts +0 -57
  1400. package/services/local-inference/catalog.d.ts.map +0 -1
  1401. package/services/local-inference/catalog.js +0 -262
  1402. package/services/local-inference/conversation-registry.d.ts +0 -122
  1403. package/services/local-inference/conversation-registry.d.ts.map +0 -1
  1404. package/services/local-inference/conversation-registry.js +0 -182
  1405. package/services/local-inference/device-bridge.d.ts +0 -139
  1406. package/services/local-inference/device-bridge.d.ts.map +0 -1
  1407. package/services/local-inference/device-bridge.js +0 -774
  1408. package/services/local-inference/dflash-doctor.d.ts +0 -27
  1409. package/services/local-inference/dflash-doctor.d.ts.map +0 -1
  1410. package/services/local-inference/dflash-doctor.js +0 -149
  1411. package/services/local-inference/dflash-server.d.ts +0 -248
  1412. package/services/local-inference/dflash-server.d.ts.map +0 -1
  1413. package/services/local-inference/dflash-server.js +0 -1076
  1414. package/services/local-inference/downloader.d.ts +0 -48
  1415. package/services/local-inference/downloader.d.ts.map +0 -1
  1416. package/services/local-inference/downloader.js +0 -688
  1417. package/services/local-inference/engine.d.ts +0 -282
  1418. package/services/local-inference/engine.d.ts.map +0 -1
  1419. package/services/local-inference/engine.js +0 -743
  1420. package/services/local-inference/external-scanner.d.ts +0 -17
  1421. package/services/local-inference/external-scanner.d.ts.map +0 -1
  1422. package/services/local-inference/external-scanner.js +0 -261
  1423. package/services/local-inference/handler-registry.d.ts +0 -72
  1424. package/services/local-inference/handler-registry.d.ts.map +0 -1
  1425. package/services/local-inference/handler-registry.js +0 -159
  1426. package/services/local-inference/hardware.d.ts +0 -26
  1427. package/services/local-inference/hardware.d.ts.map +0 -1
  1428. package/services/local-inference/hardware.js +0 -139
  1429. package/services/local-inference/hf-search.d.ts +0 -19
  1430. package/services/local-inference/hf-search.d.ts.map +0 -1
  1431. package/services/local-inference/hf-search.js +0 -169
  1432. package/services/local-inference/index.d.ts +0 -10
  1433. package/services/local-inference/index.d.ts.map +0 -1
  1434. package/services/local-inference/index.js +0 -7
  1435. package/services/local-inference/llama-server-metrics.d.ts +0 -108
  1436. package/services/local-inference/llama-server-metrics.d.ts.map +0 -1
  1437. package/services/local-inference/llama-server-metrics.js +0 -175
  1438. package/services/local-inference/manifest/index.d.ts +0 -4
  1439. package/services/local-inference/manifest/index.d.ts.map +0 -1
  1440. package/services/local-inference/manifest/index.js +0 -5
  1441. package/services/local-inference/manifest/schema.d.ts +0 -419
  1442. package/services/local-inference/manifest/schema.d.ts.map +0 -1
  1443. package/services/local-inference/manifest/schema.js +0 -227
  1444. package/services/local-inference/manifest/types.d.ts +0 -23
  1445. package/services/local-inference/manifest/types.d.ts.map +0 -1
  1446. package/services/local-inference/manifest/types.js +0 -5
  1447. package/services/local-inference/manifest/validator.d.ts +0 -43
  1448. package/services/local-inference/manifest/validator.d.ts.map +0 -1
  1449. package/services/local-inference/manifest/validator.js +0 -180
  1450. package/services/local-inference/paths.d.ts +0 -8
  1451. package/services/local-inference/paths.d.ts.map +0 -1
  1452. package/services/local-inference/paths.js +0 -7
  1453. package/services/local-inference/providers.d.ts +0 -61
  1454. package/services/local-inference/providers.d.ts.map +0 -1
  1455. package/services/local-inference/providers.js +0 -334
  1456. package/services/local-inference/ram-budget.d.ts +0 -57
  1457. package/services/local-inference/ram-budget.d.ts.map +0 -1
  1458. package/services/local-inference/ram-budget.js +0 -107
  1459. package/services/local-inference/readiness.d.ts +0 -9
  1460. package/services/local-inference/readiness.d.ts.map +0 -1
  1461. package/services/local-inference/readiness.js +0 -153
  1462. package/services/local-inference/recommendation.d.ts +0 -62
  1463. package/services/local-inference/recommendation.d.ts.map +0 -1
  1464. package/services/local-inference/recommendation.js +0 -309
  1465. package/services/local-inference/registry.d.ts +0 -35
  1466. package/services/local-inference/registry.d.ts.map +0 -1
  1467. package/services/local-inference/registry.js +0 -117
  1468. package/services/local-inference/router-handler.d.ts +0 -51
  1469. package/services/local-inference/router-handler.d.ts.map +0 -1
  1470. package/services/local-inference/router-handler.js +0 -165
  1471. package/services/local-inference/routing-policy.d.ts +0 -55
  1472. package/services/local-inference/routing-policy.d.ts.map +0 -1
  1473. package/services/local-inference/routing-policy.js +0 -195
  1474. package/services/local-inference/routing-preferences.d.ts +0 -8
  1475. package/services/local-inference/routing-preferences.d.ts.map +0 -1
  1476. package/services/local-inference/routing-preferences.js +0 -7
  1477. package/services/local-inference/service.d.ts +0 -88
  1478. package/services/local-inference/service.d.ts.map +0 -1
  1479. package/services/local-inference/service.js +0 -210
  1480. package/services/local-inference/session-pool.d.ts +0 -72
  1481. package/services/local-inference/session-pool.d.ts.map +0 -1
  1482. package/services/local-inference/session-pool.js +0 -125
  1483. package/services/local-inference/types.d.ts +0 -309
  1484. package/services/local-inference/types.d.ts.map +0 -1
  1485. package/services/local-inference/types.js +0 -23
  1486. package/services/local-inference/verify.d.ts +0 -8
  1487. package/services/local-inference/verify.d.ts.map +0 -1
  1488. package/services/local-inference/verify.js +0 -7
  1489. package/services/local-inference/voice/barge-in.d.ts +0 -15
  1490. package/services/local-inference/voice/barge-in.d.ts.map +0 -1
  1491. package/services/local-inference/voice/barge-in.js +0 -20
  1492. package/services/local-inference/voice/engine-bridge.d.ts +0 -256
  1493. package/services/local-inference/voice/engine-bridge.d.ts.map +0 -1
  1494. package/services/local-inference/voice/engine-bridge.js +0 -398
  1495. package/services/local-inference/voice/ffi-bindings.d.ts +0 -114
  1496. package/services/local-inference/voice/ffi-bindings.d.ts.map +0 -1
  1497. package/services/local-inference/voice/ffi-bindings.js +0 -281
  1498. package/services/local-inference/voice/index.d.ts +0 -51
  1499. package/services/local-inference/voice/index.d.ts.map +0 -1
  1500. package/services/local-inference/voice/index.js +0 -50
  1501. package/services/local-inference/voice/lifecycle.d.ts +0 -135
  1502. package/services/local-inference/voice/lifecycle.d.ts.map +0 -1
  1503. package/services/local-inference/voice/lifecycle.js +0 -189
  1504. package/services/local-inference/voice/phoneme-tokenizer.d.ts +0 -58
  1505. package/services/local-inference/voice/phoneme-tokenizer.d.ts.map +0 -1
  1506. package/services/local-inference/voice/phoneme-tokenizer.js +0 -53
  1507. package/services/local-inference/voice/phrase-cache.d.ts +0 -24
  1508. package/services/local-inference/voice/phrase-cache.d.ts.map +0 -1
  1509. package/services/local-inference/voice/phrase-cache.js +0 -32
  1510. package/services/local-inference/voice/phrase-chunker.d.ts +0 -20
  1511. package/services/local-inference/voice/phrase-chunker.d.ts.map +0 -1
  1512. package/services/local-inference/voice/phrase-chunker.js +0 -85
  1513. package/services/local-inference/voice/ring-buffer.d.ts +0 -40
  1514. package/services/local-inference/voice/ring-buffer.d.ts.map +0 -1
  1515. package/services/local-inference/voice/ring-buffer.js +0 -85
  1516. package/services/local-inference/voice/rollback-queue.d.ts +0 -24
  1517. package/services/local-inference/voice/rollback-queue.d.ts.map +0 -1
  1518. package/services/local-inference/voice/rollback-queue.js +0 -49
  1519. package/services/local-inference/voice/scheduler.d.ts +0 -47
  1520. package/services/local-inference/voice/scheduler.d.ts.map +0 -1
  1521. package/services/local-inference/voice/scheduler.js +0 -123
  1522. package/services/local-inference/voice/shared-resources.d.ts +0 -119
  1523. package/services/local-inference/voice/shared-resources.d.ts.map +0 -1
  1524. package/services/local-inference/voice/shared-resources.js +0 -83
  1525. package/services/local-inference/voice/speaker-preset-cache.d.ts +0 -28
  1526. package/services/local-inference/voice/speaker-preset-cache.d.ts.map +0 -1
  1527. package/services/local-inference/voice/speaker-preset-cache.js +0 -44
  1528. package/services/local-inference/voice/types.d.ts +0 -80
  1529. package/services/local-inference/voice/types.d.ts.map +0 -1
  1530. package/services/local-inference/voice/voice-preset-format.d.ts +0 -56
  1531. package/services/local-inference/voice/voice-preset-format.d.ts.map +0 -1
  1532. package/services/local-inference/voice/voice-preset-format.js +0 -184
  1533. package/services/plugin-installer.d.ts +0 -22
  1534. package/services/plugin-installer.d.ts.map +0 -1
  1535. package/services/plugin-installer.js +0 -41
  1536. package/test/scripts/task-agent-live-smoke.ts +0 -1335
  1537. /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";