@elizaos/app-core 2.0.0-beta.3 → 2.0.11-beta.6

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