@elizaos/app-core 2.0.0-alpha.85 → 2.0.0-beta.1

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 (1885) hide show
  1. package/account-pool.d.ts +6 -0
  2. package/account-pool.d.ts.map +1 -0
  3. package/account-pool.js +5 -0
  4. package/api/__tests__/sandbox-test-helpers.d.ts +10 -0
  5. package/api/__tests__/sandbox-test-helpers.d.ts.map +1 -0
  6. package/api/__tests__/sandbox-test-helpers.js +15 -0
  7. package/api/auth/audit.d.ts +52 -0
  8. package/api/auth/audit.d.ts.map +1 -0
  9. package/api/auth/audit.js +126 -0
  10. package/api/auth/auth-context.d.ts +40 -0
  11. package/api/auth/auth-context.d.ts.map +1 -0
  12. package/api/auth/auth-context.js +68 -0
  13. package/api/auth/bootstrap-token.d.ts +50 -0
  14. package/api/auth/bootstrap-token.d.ts.map +1 -0
  15. package/api/auth/bootstrap-token.js +157 -0
  16. package/api/auth/index.d.ts +14 -0
  17. package/api/auth/index.d.ts.map +1 -0
  18. package/api/auth/index.js +13 -0
  19. package/api/auth/passwords.d.ts +65 -0
  20. package/api/auth/passwords.d.ts.map +1 -0
  21. package/api/auth/passwords.js +87 -0
  22. package/api/auth/sensitive-rate-limit.d.ts +56 -0
  23. package/api/auth/sensitive-rate-limit.d.ts.map +1 -0
  24. package/api/auth/sensitive-rate-limit.js +95 -0
  25. package/api/auth/sessions.d.ts +152 -0
  26. package/api/auth/sessions.d.ts.map +1 -0
  27. package/api/auth/sessions.js +298 -0
  28. package/api/auth/tokens.d.ts +3 -0
  29. package/api/auth/tokens.d.ts.map +1 -0
  30. package/api/auth/tokens.js +13 -0
  31. package/api/auth-bootstrap-routes.d.ts +32 -0
  32. package/api/auth-bootstrap-routes.d.ts.map +1 -0
  33. package/api/auth-bootstrap-routes.js +179 -0
  34. package/api/auth-pairing-compat-routes.d.ts +17 -0
  35. package/api/auth-pairing-compat-routes.d.ts.map +1 -0
  36. package/api/auth-pairing-compat-routes.js +301 -0
  37. package/api/auth-session-routes.d.ts +31 -0
  38. package/api/auth-session-routes.d.ts.map +1 -0
  39. package/api/auth-session-routes.js +560 -0
  40. package/api/auth.d.ts +153 -0
  41. package/api/auth.d.ts.map +1 -0
  42. package/api/auth.js +290 -0
  43. package/api/automation-node-contributors.d.ts +14 -0
  44. package/api/automation-node-contributors.d.ts.map +1 -0
  45. package/api/automation-node-contributors.js +14 -0
  46. package/api/automations-compat-routes.d.ts +18 -0
  47. package/api/automations-compat-routes.d.ts.map +1 -0
  48. package/api/automations-compat-routes.js +274 -0
  49. package/api/catalog-routes.d.ts +4 -0
  50. package/api/catalog-routes.d.ts.map +1 -0
  51. package/api/catalog-routes.js +61 -0
  52. package/api/compat-route-shared.d.ts +29 -0
  53. package/api/compat-route-shared.d.ts.map +1 -0
  54. package/api/compat-route-shared.js +298 -0
  55. package/api/credential-resolver.d.ts +31 -0
  56. package/api/credential-resolver.d.ts.map +1 -0
  57. package/api/credential-resolver.js +199 -0
  58. package/api/database-rows-compat-routes.d.ts +4 -0
  59. package/api/database-rows-compat-routes.d.ts.map +1 -0
  60. package/api/database-rows-compat-routes.js +100 -0
  61. package/api/dev-compat-routes.d.ts +11 -0
  62. package/api/dev-compat-routes.d.ts.map +1 -0
  63. package/api/dev-compat-routes.js +144 -0
  64. package/api/dev-console-log.d.ts +21 -0
  65. package/api/dev-console-log.d.ts.map +1 -0
  66. package/api/dev-console-log.js +65 -0
  67. package/api/dev-stack.d.ts +49 -0
  68. package/api/dev-stack.d.ts.map +1 -0
  69. package/api/dev-stack.js +60 -0
  70. package/api/local-inference-compat-routes.d.ts +16 -0
  71. package/api/local-inference-compat-routes.d.ts.map +1 -0
  72. package/api/local-inference-compat-routes.js +617 -0
  73. package/api/onboarding-compat-routes.d.ts +4 -0
  74. package/api/onboarding-compat-routes.d.ts.map +1 -0
  75. package/api/onboarding-compat-routes.js +207 -0
  76. package/api/plugins-compat-routes.d.ts +103 -0
  77. package/api/plugins-compat-routes.d.ts.map +1 -0
  78. package/api/plugins-compat-routes.js +1181 -0
  79. package/api/response.d.ts +4 -0
  80. package/api/response.d.ts.map +1 -0
  81. package/api/response.js +28 -0
  82. package/api/runtime-mode-routes.d.ts +13 -0
  83. package/api/runtime-mode-routes.d.ts.map +1 -0
  84. package/api/runtime-mode-routes.js +32 -0
  85. package/api/secrets-inventory-routes.d.ts +39 -0
  86. package/api/secrets-inventory-routes.d.ts.map +1 -0
  87. package/api/secrets-inventory-routes.js +487 -0
  88. package/api/secrets-manager-routes.d.ts +9 -0
  89. package/api/secrets-manager-routes.d.ts.map +1 -0
  90. package/api/secrets-manager-routes.js +476 -0
  91. package/api/sensitive-request-routes.d.ts +20 -0
  92. package/api/sensitive-request-routes.d.ts.map +1 -0
  93. package/api/sensitive-request-routes.js +489 -0
  94. package/api/sensitive-request-store.d.ts +39 -0
  95. package/api/sensitive-request-store.d.ts.map +1 -0
  96. package/api/sensitive-request-store.js +204 -0
  97. package/api/server-config-filter.d.ts +14 -0
  98. package/api/server-config-filter.d.ts.map +1 -0
  99. package/api/server-config-filter.js +77 -0
  100. package/api/server-cors.d.ts +30 -0
  101. package/api/server-cors.d.ts.map +1 -0
  102. package/api/server-cors.js +128 -0
  103. package/api/server-html.d.ts +4 -0
  104. package/api/server-html.d.ts.map +1 -0
  105. package/api/server-html.js +5 -0
  106. package/api/server-onboarding-compat.d.ts +31 -0
  107. package/api/server-onboarding-compat.d.ts.map +1 -0
  108. package/api/server-onboarding-compat.js +283 -0
  109. package/api/server-security.d.ts +11 -0
  110. package/api/server-security.d.ts.map +1 -0
  111. package/api/server-security.js +29 -0
  112. package/api/server-startup.d.ts +5 -0
  113. package/api/server-startup.d.ts.map +1 -0
  114. package/api/server-startup.js +74 -0
  115. package/api/server-wallet-trade.d.ts +10 -0
  116. package/api/server-wallet-trade.d.ts.map +1 -0
  117. package/api/server-wallet-trade.js +240 -0
  118. package/api/server.d.ts +32 -0
  119. package/api/server.d.ts.map +1 -0
  120. package/api/server.js +768 -0
  121. package/api/workbench-compat-routes.d.ts +11 -0
  122. package/api/workbench-compat-routes.d.ts.map +1 -0
  123. package/api/workbench-compat-routes.js +325 -0
  124. package/benchmark/cua-routes.d.ts +10 -0
  125. package/benchmark/cua-routes.d.ts.map +1 -0
  126. package/benchmark/cua-routes.js +179 -0
  127. package/benchmark/lifeops-bench-handler.d.ts +94 -0
  128. package/benchmark/lifeops-bench-handler.d.ts.map +1 -0
  129. package/benchmark/lifeops-bench-handler.js +280 -0
  130. package/benchmark/lifeops-fake-backend.d.ts +227 -0
  131. package/benchmark/lifeops-fake-backend.d.ts.map +1 -0
  132. package/benchmark/lifeops-fake-backend.js +499 -0
  133. package/benchmark/mock-plugin-base.d.ts +9 -0
  134. package/benchmark/mock-plugin-base.d.ts.map +1 -0
  135. package/benchmark/mock-plugin-base.js +325 -0
  136. package/benchmark/mock-plugin.d.ts +3 -0
  137. package/benchmark/mock-plugin.d.ts.map +1 -0
  138. package/benchmark/mock-plugin.js +504 -0
  139. package/benchmark/params.d.ts +2 -0
  140. package/benchmark/params.d.ts.map +1 -0
  141. package/benchmark/params.js +18 -0
  142. package/benchmark/plugin.d.ts +42 -0
  143. package/benchmark/plugin.d.ts.map +1 -0
  144. package/benchmark/plugin.js +422 -0
  145. package/benchmark/replay-capture.d.ts +73 -0
  146. package/benchmark/replay-capture.d.ts.map +1 -0
  147. package/benchmark/replay-capture.js +223 -0
  148. package/benchmark/server-utils.d.ts +100 -0
  149. package/benchmark/server-utils.d.ts.map +1 -0
  150. package/benchmark/server-utils.js +289 -0
  151. package/benchmark/server.d.ts +2 -0
  152. package/benchmark/server.d.ts.map +1 -0
  153. package/benchmark/server.js +1176 -0
  154. package/browser.d.ts +13 -0
  155. package/browser.d.ts.map +1 -0
  156. package/browser.js +15 -0
  157. package/cli/argv.d.ts +17 -0
  158. package/cli/argv.d.ts.map +1 -0
  159. package/cli/argv.js +140 -0
  160. package/cli/banner.d.ts +11 -0
  161. package/cli/banner.d.ts.map +1 -0
  162. package/cli/banner.js +36 -0
  163. package/cli/cli-name.d.ts +5 -0
  164. package/cli/cli-name.d.ts.map +1 -0
  165. package/cli/cli-name.js +21 -0
  166. package/cli/cli-utils.d.ts +5 -0
  167. package/cli/cli-utils.d.ts.map +1 -0
  168. package/cli/cli-utils.js +13 -0
  169. package/cli/command-format.d.ts +2 -0
  170. package/cli/command-format.d.ts.map +1 -0
  171. package/cli/command-format.js +20 -0
  172. package/cli/doctor/checks.d.ts +96 -0
  173. package/cli/doctor/checks.d.ts.map +1 -0
  174. package/cli/doctor/checks.js +483 -0
  175. package/cli/git-commit.d.ts +5 -0
  176. package/cli/git-commit.d.ts.map +1 -0
  177. package/cli/git-commit.js +106 -0
  178. package/cli/parse-duration.d.ts +5 -0
  179. package/cli/parse-duration.d.ts.map +1 -0
  180. package/cli/parse-duration.js +27 -0
  181. package/cli/plugins-cli.d.ts +26 -0
  182. package/cli/plugins-cli.d.ts.map +1 -0
  183. package/cli/plugins-cli.js +892 -0
  184. package/cli/profile-utils.d.ts +3 -0
  185. package/cli/profile-utils.d.ts.map +1 -0
  186. package/cli/profile-utils.js +21 -0
  187. package/cli/profile.d.ts +15 -0
  188. package/cli/profile.d.ts.map +1 -0
  189. package/cli/profile.js +93 -0
  190. package/cli/program/build-program.d.ts +3 -0
  191. package/cli/program/build-program.d.ts.map +1 -0
  192. package/cli/program/build-program.js +12 -0
  193. package/cli/program/command-registry.d.ts +3 -0
  194. package/cli/program/command-registry.d.ts.map +1 -0
  195. package/cli/program/command-registry.js +24 -0
  196. package/cli/program/help.d.ts +3 -0
  197. package/cli/program/help.d.ts.map +1 -0
  198. package/cli/program/help.js +57 -0
  199. package/cli/program/preaction.d.ts +3 -0
  200. package/cli/program/preaction.d.ts.map +1 -0
  201. package/cli/program/preaction.js +40 -0
  202. package/cli/program/register.auth.d.ts +51 -0
  203. package/cli/program/register.auth.d.ts.map +1 -0
  204. package/cli/program/register.auth.js +203 -0
  205. package/cli/program/register.benchmark.d.ts +3 -0
  206. package/cli/program/register.benchmark.d.ts.map +1 -0
  207. package/cli/program/register.benchmark.js +12 -0
  208. package/cli/program/register.config.d.ts +3 -0
  209. package/cli/program/register.config.d.ts.map +1 -0
  210. package/cli/program/register.config.js +150 -0
  211. package/cli/program/register.configure.d.ts +3 -0
  212. package/cli/program/register.configure.d.ts.map +1 -0
  213. package/cli/program/register.configure.js +18 -0
  214. package/cli/program/register.dashboard.d.ts +3 -0
  215. package/cli/program/register.dashboard.d.ts.map +1 -0
  216. package/cli/program/register.dashboard.js +124 -0
  217. package/cli/program/register.db.d.ts +3 -0
  218. package/cli/program/register.db.d.ts.map +1 -0
  219. package/cli/program/register.db.js +45 -0
  220. package/cli/program/register.doctor.d.ts +3 -0
  221. package/cli/program/register.doctor.d.ts.map +1 -0
  222. package/cli/program/register.doctor.js +170 -0
  223. package/cli/program/register.models.d.ts +3 -0
  224. package/cli/program/register.models.d.ts.map +1 -0
  225. package/cli/program/register.models.js +32 -0
  226. package/cli/program/register.setup.d.ts +16 -0
  227. package/cli/program/register.setup.d.ts.map +1 -0
  228. package/cli/program/register.setup.js +333 -0
  229. package/cli/program/register.start.d.ts +3 -0
  230. package/cli/program/register.start.d.ts.map +1 -0
  231. package/cli/program/register.start.js +95 -0
  232. package/cli/program/register.subclis.d.ts +4 -0
  233. package/cli/program/register.subclis.d.ts.map +1 -0
  234. package/cli/program/register.subclis.js +87 -0
  235. package/cli/program/register.update.d.ts +12 -0
  236. package/cli/program/register.update.d.ts.map +1 -0
  237. package/cli/program/register.update.js +173 -0
  238. package/cli/program.d.ts +2 -0
  239. package/cli/program.d.ts.map +1 -0
  240. package/cli/program.js +1 -0
  241. package/cli/run-main.d.ts +2 -0
  242. package/cli/run-main.d.ts.map +1 -0
  243. package/cli/run-main.js +71 -0
  244. package/cli/version.d.ts +2 -0
  245. package/cli/version.d.ts.map +1 -0
  246. package/cli/version.js +2 -0
  247. package/connectors/capacitor-jsc.d.ts +66 -0
  248. package/connectors/capacitor-jsc.d.ts.map +1 -0
  249. package/connectors/capacitor-jsc.js +39 -0
  250. package/connectors/capacitor-quickjs.d.ts +64 -0
  251. package/connectors/capacitor-quickjs.d.ts.map +1 -0
  252. package/connectors/capacitor-quickjs.js +50 -0
  253. package/connectors/capacitor-sqlite.d.ts +41 -0
  254. package/connectors/capacitor-sqlite.d.ts.map +1 -0
  255. package/connectors/capacitor-sqlite.js +87 -0
  256. package/diagnostics/integration-observability.d.ts +40 -0
  257. package/diagnostics/integration-observability.d.ts.map +1 -0
  258. package/diagnostics/integration-observability.js +68 -0
  259. package/entry.d.ts +10 -0
  260. package/entry.d.ts.map +1 -0
  261. package/entry.js +66 -0
  262. package/index.d.ts +34 -4
  263. package/index.d.ts.map +1 -1
  264. package/index.js +42 -6
  265. package/package.json +81 -151
  266. package/packaging/PUBLISHING_GUIDE.md +707 -0
  267. package/packaging/debian/changelog +9 -0
  268. package/packaging/debian/control +26 -0
  269. package/packaging/debian/copyright +27 -0
  270. package/packaging/debian/elizaos-app.service +15 -0
  271. package/packaging/debian/install +4 -0
  272. package/packaging/debian/postinst +28 -0
  273. package/packaging/debian/prerm +14 -0
  274. package/packaging/debian/rules +44 -0
  275. package/packaging/debian/source/format +1 -0
  276. package/packaging/flatpak/README.md +150 -0
  277. package/packaging/flatpak/ai.elizaos.App.desktop +11 -0
  278. package/packaging/flatpak/ai.elizaos.App.metainfo.xml +81 -0
  279. package/packaging/flatpak/ai.elizaos.App.store.yml +142 -0
  280. package/packaging/flatpak/ai.elizaos.App.yml +142 -0
  281. package/packaging/flatpak/elizaos-app-wrapper.sh +5 -0
  282. package/packaging/flatpak/elizaos-app-wrapper.store.sh +16 -0
  283. package/packaging/flatpak/icons/128x128/ai.elizaos.App.png +0 -0
  284. package/packaging/flatpak/icons/256x256/ai.elizaos.App.png +0 -0
  285. package/packaging/flatpak/icons/512x512/ai.elizaos.App.png +0 -0
  286. package/packaging/homebrew/README.md +80 -0
  287. package/packaging/homebrew/elizaos-app.cask.rb +60 -0
  288. package/packaging/homebrew/elizaos-app.rb +49 -0
  289. package/packaging/inno/ElizaOSApp.iss +53 -0
  290. package/packaging/inno/build-inno.ps1 +231 -0
  291. package/packaging/msix/AppxManifest.store.xml +79 -0
  292. package/packaging/msix/AppxManifest.xml +53 -0
  293. package/packaging/msix/README.md +201 -0
  294. package/packaging/msix/assets/LargeTile.png +0 -0
  295. package/packaging/msix/assets/Square150x150Logo.png +0 -0
  296. package/packaging/msix/assets/Square44x44Logo.png +0 -0
  297. package/packaging/msix/assets/StoreLogo.png +0 -0
  298. package/packaging/msix/assets/Wide310x150Logo.png +0 -0
  299. package/packaging/msix/build-msix.ps1 +206 -0
  300. package/packaging/msix/generate-placeholder-assets.ps1 +49 -0
  301. package/packaging/msix/store/description.md +31 -0
  302. package/packaging/msix/store/listing.json +27 -0
  303. package/packaging/pypi/README.md +14 -0
  304. package/packaging/pypi/elizaos_app/__init__.py +7 -0
  305. package/packaging/pypi/elizaos_app/__main__.py +6 -0
  306. package/packaging/pypi/elizaos_app/cli.py +21 -0
  307. package/packaging/pypi/elizaos_app/loader.py +127 -0
  308. package/packaging/pypi/elizaos_app/py.typed +1 -0
  309. package/packaging/pypi/pyproject.toml +38 -0
  310. package/packaging/snap/snapcraft.yaml +560 -0
  311. package/packaging/test-packaging.sh +309 -0
  312. package/patches/@noble%2Fcurves@2.0.1.patch +33 -0
  313. package/patches/@pixiv%2Fthree-vrm@3.5.2.patch +26 -0
  314. package/patches/coding-agent-adapters@0.16.3.patch +44 -0
  315. package/patches/electrobun@1.16.0.patch +13 -0
  316. package/patches/llama-cpp-capacitor@0.1.5.patch +2387 -0
  317. package/patches/proper-lockfile@4.1.2.patch +14 -0
  318. package/patches/pty-manager@1.11.0.patch +194 -0
  319. package/permissions/types.d.ts +8 -0
  320. package/permissions/types.d.ts.map +1 -0
  321. package/permissions/types.js +7 -0
  322. package/platform/agent-browser-stub.d.ts +27 -0
  323. package/platform/agent-browser-stub.d.ts.map +1 -0
  324. package/platform/agent-browser-stub.js +16 -0
  325. package/platform/empty-node-module.d.ts +31 -0
  326. package/platform/empty-node-module.d.ts.map +1 -0
  327. package/platform/empty-node-module.js +22 -0
  328. package/platforms/android/Gemfile +6 -0
  329. package/platforms/android/README.md +79 -0
  330. package/platforms/android/app/build.gradle +124 -0
  331. package/platforms/android/app/capacitor.build.gradle +32 -0
  332. package/platforms/android/app/proguard-rules.pro +46 -0
  333. package/platforms/android/app/src/androidTest/java/ai/elizaos/app/ElizaOsInstrumentedTest.java +162 -0
  334. package/platforms/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
  335. package/platforms/android/app/src/main/AndroidManifest.xml +83 -0
  336. package/platforms/android/app/src/main/java/ai/elizaos/app/AgentPlugin.java +232 -0
  337. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAgentService.java +1514 -0
  338. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaAssistActivity.java +21 -0
  339. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBootReceiver.java +61 -0
  340. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaBrowserActivity.java +39 -0
  341. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCalendarActivity.java +75 -0
  342. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaCameraActivity.java +54 -0
  343. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaClockActivity.java +70 -0
  344. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaContactsActivity.java +56 -0
  345. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaDialActivity.java +83 -0
  346. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaInCallService.java +168 -0
  347. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaMmsReceiver.java +70 -0
  348. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaNativeBridge.java +38 -0
  349. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaRespondViaMessageService.java +119 -0
  350. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsComposeActivity.java +50 -0
  351. package/platforms/android/app/src/main/java/ai/elizaos/app/ElizaSmsReceiver.java +84 -0
  352. package/platforms/android/app/src/main/java/ai/elizaos/app/GatewayConnectionService.java +211 -0
  353. package/platforms/android/app/src/main/java/ai/elizaos/app/MainActivity.java +202 -0
  354. package/platforms/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  355. package/platforms/android/app/src/main/res/drawable/splash.png +0 -0
  356. package/platforms/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  357. package/platforms/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  358. package/platforms/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  359. package/platforms/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  360. package/platforms/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  361. package/platforms/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  362. package/platforms/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  363. package/platforms/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  364. package/platforms/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  365. package/platforms/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  366. package/platforms/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
  367. package/platforms/android/app/src/main/res/layout/activity_main.xml +12 -0
  368. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  369. package/platforms/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
  370. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  371. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  372. package/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  373. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  374. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  375. package/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  376. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  377. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  378. package/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  379. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  380. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  381. package/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  382. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  383. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  384. package/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  385. package/platforms/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
  386. package/platforms/android/app/src/main/res/values/strings.xml +7 -0
  387. package/platforms/android/app/src/main/res/values/styles.xml +22 -0
  388. package/platforms/android/app/src/main/res/xml/file_paths.xml +5 -0
  389. package/platforms/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
  390. package/platforms/android/build.gradle +63 -0
  391. package/platforms/android/capacitor-cordova-android-plugins/build.gradle +53 -0
  392. package/platforms/android/capacitor-cordova-android-plugins/cordova.variables.gradle +3 -0
  393. package/platforms/android/capacitor-cordova-android-plugins/src/main/AndroidManifest.xml +3 -0
  394. package/platforms/android/capacitor-cordova-android-plugins/src/main/java/.gitkeep +1 -0
  395. package/platforms/android/capacitor-cordova-android-plugins/src/main/res/.gitkeep +1 -0
  396. package/platforms/android/capacitor.settings.gradle +45 -0
  397. package/platforms/android/fastlane/Appfile +2 -0
  398. package/platforms/android/fastlane/Fastfile +59 -0
  399. package/platforms/android/fastlane/metadata/android/en-US/full_description.txt +24 -0
  400. package/platforms/android/fastlane/metadata/android/en-US/short_description.txt +1 -0
  401. package/platforms/android/fastlane/metadata/android/en-US/title.txt +1 -0
  402. package/platforms/android/fastlane/metadata/android/en-US/video.txt +0 -0
  403. package/platforms/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  404. package/platforms/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  405. package/platforms/android/gradle.properties +27 -0
  406. package/platforms/android/gradlew +251 -0
  407. package/platforms/android/gradlew.bat +94 -0
  408. package/platforms/android/settings.gradle +13 -0
  409. package/platforms/android/variables.gradle +17 -0
  410. package/platforms/electrobun/.generated/brand-config.json +8 -0
  411. package/platforms/electrobun/README.md +44 -0
  412. package/platforms/electrobun/assets/appIcon.ico +0 -0
  413. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128.png +0 -0
  414. package/platforms/electrobun/assets/appIcon.iconset/icon_128x128@2x.png +0 -0
  415. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16.png +0 -0
  416. package/platforms/electrobun/assets/appIcon.iconset/icon_16x16@2x.png +0 -0
  417. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256.png +0 -0
  418. package/platforms/electrobun/assets/appIcon.iconset/icon_256x256@2x.png +0 -0
  419. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32.png +0 -0
  420. package/platforms/electrobun/assets/appIcon.iconset/icon_32x32@2x.png +0 -0
  421. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512.png +0 -0
  422. package/platforms/electrobun/assets/appIcon.iconset/icon_512x512@2x.png +0 -0
  423. package/platforms/electrobun/assets/appIcon.png +0 -0
  424. package/platforms/electrobun/assets/brand-config.json +8 -0
  425. package/platforms/electrobun/biome.json +11 -0
  426. package/platforms/electrobun/electrobun.config.ts +435 -0
  427. package/platforms/electrobun/entitlements/README.md +54 -0
  428. package/platforms/electrobun/entitlements/mas-child.entitlements +10 -0
  429. package/platforms/electrobun/entitlements/mas.entitlements +41 -0
  430. package/platforms/electrobun/native/macos/window-effects.mm +927 -0
  431. package/platforms/electrobun/package.json +33 -0
  432. package/platforms/electrobun/scripts/bin/zip +2 -0
  433. package/platforms/electrobun/scripts/build-macos-effects.sh +31 -0
  434. package/platforms/electrobun/scripts/build-whisper-universal.sh +137 -0
  435. package/platforms/electrobun/scripts/build-whisper.sh +95 -0
  436. package/platforms/electrobun/scripts/ensure-whisper-model.sh +93 -0
  437. package/platforms/electrobun/scripts/hdiutil-wrapper.sh +33 -0
  438. package/platforms/electrobun/scripts/lib/app-dir.mjs +74 -0
  439. package/platforms/electrobun/scripts/lib/repo-root.mjs +77 -0
  440. package/platforms/electrobun/scripts/local-adhoc-sign-macos.ts +214 -0
  441. package/platforms/electrobun/scripts/macos-direct-launcher.c +84 -0
  442. package/platforms/electrobun/scripts/postwrap-diagnostics.ts +423 -0
  443. package/platforms/electrobun/scripts/postwrap-sign-runtime-macos.ts +352 -0
  444. package/platforms/electrobun/scripts/sign-windows.ps1 +121 -0
  445. package/platforms/electrobun/scripts/smoke-test-windows.ps1 +907 -0
  446. package/platforms/electrobun/scripts/smoke-test.sh +1186 -0
  447. package/platforms/electrobun/scripts/stage-macos-release-artifacts.sh +491 -0
  448. package/platforms/electrobun/scripts/sync-web-assets.mjs +48 -0
  449. package/platforms/electrobun/scripts/verify-rpc-handlers.ts +162 -0
  450. package/platforms/electrobun/scripts/verify-windows-installer-proof.ps1 +203 -0
  451. package/platforms/electrobun/scripts/xcrun-wrapper.sh +80 -0
  452. package/platforms/electrobun/scripts/zip-wrapper.sh +6 -0
  453. package/platforms/electrobun/src/__stubs__/bun-ffi.ts +35 -0
  454. package/platforms/electrobun/src/__stubs__/electrobun-bun.ts +20 -0
  455. package/platforms/electrobun/src/agent-ready-state.ts +35 -0
  456. package/platforms/electrobun/src/agent-reset-from-main.ts +87 -0
  457. package/platforms/electrobun/src/api-base.ts +169 -0
  458. package/platforms/electrobun/src/application-menu-action-registry.ts +21 -0
  459. package/platforms/electrobun/src/application-menu.ts +418 -0
  460. package/platforms/electrobun/src/background-notice.ts +65 -0
  461. package/platforms/electrobun/src/brand-config.ts +184 -0
  462. package/platforms/electrobun/src/bridge/browser-tabs-renderer-registry.ts +60 -0
  463. package/platforms/electrobun/src/bridge/electrobun-direct-rpc.ts +430 -0
  464. package/platforms/electrobun/src/bridge/electrobun-preload.ts +1 -0
  465. package/platforms/electrobun/src/bridge/electrobun-stub.ts +21 -0
  466. package/platforms/electrobun/src/browser-workspace-bridge-server.ts +284 -0
  467. package/platforms/electrobun/src/cloud-auth-window.ts +216 -0
  468. package/platforms/electrobun/src/cloud-disconnect-from-main.ts +118 -0
  469. package/platforms/electrobun/src/constants.ts +2 -0
  470. package/platforms/electrobun/src/desktop-http-request.test.ts +85 -0
  471. package/platforms/electrobun/src/desktop-http-request.ts +103 -0
  472. package/platforms/electrobun/src/desktop-test-bridge-server.ts +248 -0
  473. package/platforms/electrobun/src/devtools-layout.ts +63 -0
  474. package/platforms/electrobun/src/diagnostic-format.ts +65 -0
  475. package/platforms/electrobun/src/fatal-shutdown.test.ts +30 -0
  476. package/platforms/electrobun/src/fatal-shutdown.ts +10 -0
  477. package/platforms/electrobun/src/floating-chat-window.ts +239 -0
  478. package/platforms/electrobun/src/index.ts +2510 -0
  479. package/platforms/electrobun/src/libMacWindowEffects.dylib +0 -0
  480. package/platforms/electrobun/src/lifecycle/api-base-owner.ts +119 -0
  481. package/platforms/electrobun/src/lifecycle/desktop-session-prime.ts +77 -0
  482. package/platforms/electrobun/src/logger.ts +23 -0
  483. package/platforms/electrobun/src/main-window-runtime.ts +117 -0
  484. package/platforms/electrobun/src/main-window-session.ts +88 -0
  485. package/platforms/electrobun/src/menu-reset-from-main.ts +211 -0
  486. package/platforms/electrobun/src/native/agent.ts +1892 -0
  487. package/platforms/electrobun/src/native/auth-bridge.ts +525 -0
  488. package/platforms/electrobun/src/native/browser-workspace.ts +574 -0
  489. package/platforms/electrobun/src/native/camera.ts +68 -0
  490. package/platforms/electrobun/src/native/canvas.ts +504 -0
  491. package/platforms/electrobun/src/native/credentials.ts +765 -0
  492. package/platforms/electrobun/src/native/desktop.ts +2284 -0
  493. package/platforms/electrobun/src/native/editor-bridge.ts +292 -0
  494. package/platforms/electrobun/src/native/file-watcher.ts +220 -0
  495. package/platforms/electrobun/src/native/gateway.ts +218 -0
  496. package/platforms/electrobun/src/native/gpu-window.ts +301 -0
  497. package/platforms/electrobun/src/native/index.ts +105 -0
  498. package/platforms/electrobun/src/native/location.ts +110 -0
  499. package/platforms/electrobun/src/native/loopback-port.ts +81 -0
  500. package/platforms/electrobun/src/native/mac-window-effects.ts +118 -0
  501. package/platforms/electrobun/src/native/music-player.ts +61 -0
  502. package/platforms/electrobun/src/native/permissions-darwin.ts +342 -0
  503. package/platforms/electrobun/src/native/permissions-linux.ts +34 -0
  504. package/platforms/electrobun/src/native/permissions-shared.ts +170 -0
  505. package/platforms/electrobun/src/native/permissions-win32.ts +56 -0
  506. package/platforms/electrobun/src/native/permissions.ts +237 -0
  507. package/platforms/electrobun/src/native/power-state.ts +195 -0
  508. package/platforms/electrobun/src/native/screencapture.ts +654 -0
  509. package/platforms/electrobun/src/native/steward.ts +343 -0
  510. package/platforms/electrobun/src/native/swabble.ts +349 -0
  511. package/platforms/electrobun/src/native/talkmode.ts +441 -0
  512. package/platforms/electrobun/src/native/webgpu-browser-support.ts +220 -0
  513. package/platforms/electrobun/src/native/whisper.ts +280 -0
  514. package/platforms/electrobun/src/preload-validation.ts +65 -0
  515. package/platforms/electrobun/src/preload.js +1 -0
  516. package/platforms/electrobun/src/print-electrobun-dev-settings-banner.ts +140 -0
  517. package/platforms/electrobun/src/renderer-static.ts +77 -0
  518. package/platforms/electrobun/src/rpc-handlers.ts +1072 -0
  519. package/platforms/electrobun/src/rpc-schema.ts +1835 -0
  520. package/platforms/electrobun/src/runtime-layout.ts +150 -0
  521. package/platforms/electrobun/src/runtime-permissions.ts +125 -0
  522. package/platforms/electrobun/src/screenshot-dev-server.ts +125 -0
  523. package/platforms/electrobun/src/startup-trace.ts +351 -0
  524. package/platforms/electrobun/src/surface-windows.ts +475 -0
  525. package/platforms/electrobun/src/types/web-speech.d.ts +52 -0
  526. package/platforms/electrobun/src/types.ts +18 -0
  527. package/platforms/electrobun/src/windows-cef-profile.ts +124 -0
  528. package/platforms/electrobun/tsconfig.json +75 -0
  529. package/platforms/electrobun/vitest.electrobun.config.ts +54 -0
  530. package/platforms/ios/App/App/App.entitlements +18 -0
  531. package/platforms/ios/App/App/AppDelegate.swift +93 -0
  532. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ios-marketing-1024.png +0 -0
  533. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@1x.png +0 -0
  534. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-20x20@2x.png +0 -0
  535. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@1x.png +0 -0
  536. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-29x29@2x.png +0 -0
  537. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@1x.png +0 -0
  538. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-40x40@2x.png +0 -0
  539. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@1x.png +0 -0
  540. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-76x76@2x.png +0 -0
  541. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-ipad-83_5x83_5@2x.png +0 -0
  542. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@2x.png +0 -0
  543. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-20x20@3x.png +0 -0
  544. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@2x.png +0 -0
  545. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-29x29@3x.png +0 -0
  546. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@2x.png +0 -0
  547. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-40x40@3x.png +0 -0
  548. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@2x.png +0 -0
  549. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-iphone-60x60@3x.png +0 -0
  550. package/platforms/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +116 -0
  551. package/platforms/ios/App/App/Assets.xcassets/Contents.json +6 -0
  552. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +23 -0
  553. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  554. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  555. package/platforms/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  556. package/platforms/ios/App/App/Base.lproj/LaunchScreen.storyboard +32 -0
  557. package/platforms/ios/App/App/Base.lproj/Main.storyboard +19 -0
  558. package/platforms/ios/App/App/ElizaIntentPlugin.swift +185 -0
  559. package/platforms/ios/App/App/Info.plist +123 -0
  560. package/platforms/ios/App/App/PrivacyInfo.xcprivacy +55 -0
  561. package/platforms/ios/App/App/SceneDelegate.swift +77 -0
  562. package/platforms/ios/App/App/WebsiteBlockerContentExtension/ActionRequestHandler.swift +142 -0
  563. package/platforms/ios/App/App/WebsiteBlockerContentExtension/Info.plist +29 -0
  564. package/platforms/ios/App/App/WebsiteBlockerContentExtension/PrivacyInfo.xcprivacy +23 -0
  565. package/platforms/ios/App/App/WebsiteBlockerContentExtension/WebsiteBlockerContentExtension.entitlements +10 -0
  566. package/platforms/ios/App/App.xcodeproj/project.pbxproj +596 -0
  567. package/platforms/ios/App/App.xcworkspace/contents.xcworkspacedata +10 -0
  568. package/platforms/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  569. package/platforms/ios/App/ExportOptions.plist +18 -0
  570. package/platforms/ios/App/Podfile +51 -0
  571. package/platforms/ios/App/Podfile.lock +131 -0
  572. package/platforms/ios/Gemfile +6 -0
  573. package/platforms/ios/fastlane/Appfile +4 -0
  574. package/platforms/ios/fastlane/Fastfile +94 -0
  575. package/platforms/ios/fastlane/Matchfile +12 -0
  576. package/platforms/ios/fastlane/metadata/en-US/description.txt +22 -0
  577. package/platforms/ios/fastlane/metadata/en-US/keywords.txt +1 -0
  578. package/platforms/ios/fastlane/metadata/en-US/marketing_url.txt +1 -0
  579. package/platforms/ios/fastlane/metadata/en-US/name.txt +1 -0
  580. package/platforms/ios/fastlane/metadata/en-US/privacy_url.txt +1 -0
  581. package/platforms/ios/fastlane/metadata/en-US/promotional_text.txt +1 -0
  582. package/platforms/ios/fastlane/metadata/en-US/subtitle.txt +1 -0
  583. package/platforms/ios/fastlane/metadata/en-US/support_url.txt +1 -0
  584. package/register-runtime-hooks.d.ts +2 -0
  585. package/register-runtime-hooks.d.ts.map +1 -0
  586. package/register-runtime-hooks.js +13 -0
  587. package/registry/generate-apps.d.ts +2 -0
  588. package/registry/generate-apps.d.ts.map +1 -0
  589. package/registry/generate-apps.js +338 -0
  590. package/registry/generate.d.ts +2 -0
  591. package/registry/generate.d.ts.map +1 -0
  592. package/registry/generate.js +506 -0
  593. package/registry/index.d.ts +6 -0
  594. package/registry/index.d.ts.map +1 -0
  595. package/registry/index.js +68 -0
  596. package/registry/loader.d.ts +27 -0
  597. package/registry/loader.d.ts.map +1 -0
  598. package/registry/loader.js +111 -0
  599. package/registry/schema.d.ts +989 -0
  600. package/registry/schema.d.ts.map +1 -0
  601. package/registry/schema.js +264 -0
  602. package/runtime/api-dev-settings-banner.d.ts +7 -0
  603. package/runtime/api-dev-settings-banner.d.ts.map +1 -0
  604. package/runtime/api-dev-settings-banner.js +104 -0
  605. package/runtime/app-route-plugin-registry.d.ts +3 -0
  606. package/runtime/app-route-plugin-registry.d.ts.map +1 -0
  607. package/runtime/app-route-plugin-registry.js +1 -0
  608. package/runtime/build-character-from-config.d.ts +3 -0
  609. package/runtime/build-character-from-config.d.ts.map +1 -0
  610. package/runtime/build-character-from-config.js +59 -0
  611. package/runtime/build-variant.d.ts +8 -0
  612. package/runtime/build-variant.d.ts.map +1 -0
  613. package/runtime/build-variant.js +7 -0
  614. package/runtime/channel-plugin-map.d.ts +6 -0
  615. package/runtime/channel-plugin-map.d.ts.map +1 -0
  616. package/runtime/channel-plugin-map.js +38 -0
  617. package/runtime/dev-server.d.ts +2 -0
  618. package/runtime/dev-server.d.ts.map +1 -0
  619. package/runtime/dev-server.js +383 -0
  620. package/runtime/dev-settings-figlet-heading.d.ts +22 -0
  621. package/runtime/dev-settings-figlet-heading.d.ts.map +1 -0
  622. package/runtime/dev-settings-figlet-heading.js +55 -0
  623. package/runtime/eliza.d.ts +21 -0
  624. package/runtime/eliza.d.ts.map +1 -0
  625. package/runtime/eliza.js +863 -0
  626. package/runtime/embedding-manager-support.d.ts +77 -0
  627. package/runtime/embedding-manager-support.d.ts.map +1 -0
  628. package/runtime/embedding-manager-support.js +309 -0
  629. package/runtime/embedding-presets.d.ts +5 -0
  630. package/runtime/embedding-presets.d.ts.map +1 -0
  631. package/runtime/embedding-presets.js +47 -0
  632. package/runtime/embedding-warmup-policy.d.ts +13 -0
  633. package/runtime/embedding-warmup-policy.d.ts.map +1 -0
  634. package/runtime/embedding-warmup-policy.js +33 -0
  635. package/runtime/ensure-local-inference-handler.d.ts +24 -0
  636. package/runtime/ensure-local-inference-handler.d.ts.map +1 -0
  637. package/runtime/ensure-local-inference-handler.js +380 -0
  638. package/runtime/ensure-text-to-speech-handler.d.ts +18 -0
  639. package/runtime/ensure-text-to-speech-handler.d.ts.map +1 -0
  640. package/runtime/ensure-text-to-speech-handler.js +50 -0
  641. package/runtime/error-handlers.d.ts +12 -0
  642. package/runtime/error-handlers.d.ts.map +1 -0
  643. package/runtime/error-handlers.js +49 -0
  644. package/runtime/mobile-local-inference-gate.d.ts +21 -0
  645. package/runtime/mobile-local-inference-gate.d.ts.map +1 -0
  646. package/runtime/mobile-local-inference-gate.js +24 -0
  647. package/runtime/mobile-safe-runtime.d.ts +123 -0
  648. package/runtime/mobile-safe-runtime.d.ts.map +1 -0
  649. package/runtime/mobile-safe-runtime.js +290 -0
  650. package/runtime/mode/remote-forwarder.d.ts +35 -0
  651. package/runtime/mode/remote-forwarder.d.ts.map +1 -0
  652. package/runtime/mode/remote-forwarder.js +119 -0
  653. package/runtime/mode/route-mode-guard.d.ts +21 -0
  654. package/runtime/mode/route-mode-guard.d.ts.map +1 -0
  655. package/runtime/mode/route-mode-guard.js +30 -0
  656. package/runtime/mode/route-mode-matrix.d.ts +64 -0
  657. package/runtime/mode/route-mode-matrix.d.ts.map +1 -0
  658. package/runtime/mode/route-mode-matrix.js +125 -0
  659. package/runtime/mode/runtime-mode.d.ts +54 -0
  660. package/runtime/mode/runtime-mode.d.ts.map +1 -0
  661. package/runtime/mode/runtime-mode.js +99 -0
  662. package/runtime/runtime-bootstrap-policy.d.ts +17 -0
  663. package/runtime/runtime-bootstrap-policy.d.ts.map +1 -0
  664. package/runtime/runtime-bootstrap-policy.js +37 -0
  665. package/runtime/sandbox-policy.d.ts +8 -0
  666. package/runtime/sandbox-policy.d.ts.map +1 -0
  667. package/runtime/sandbox-policy.js +7 -0
  668. package/runtime/startup-overlay.d.ts +14 -0
  669. package/runtime/startup-overlay.d.ts.map +1 -0
  670. package/runtime/startup-overlay.js +55 -0
  671. package/runtime/telegram-standalone-handler.d.ts +34 -0
  672. package/runtime/telegram-standalone-handler.d.ts.map +1 -0
  673. package/runtime/telegram-standalone-handler.js +195 -0
  674. package/runtime/telegram-standalone-policy.d.ts +2 -0
  675. package/runtime/telegram-standalone-policy.d.ts.map +1 -0
  676. package/runtime/telegram-standalone-policy.js +14 -0
  677. package/scripts/README.md +27 -0
  678. package/scripts/align-electrobun-version.mjs +37 -0
  679. package/scripts/aosp/README.md +66 -0
  680. package/scripts/aosp/avd-test.mjs +403 -0
  681. package/scripts/aosp/boot-validate.mjs +536 -0
  682. package/scripts/aosp/build-aosp.mjs +448 -0
  683. package/scripts/aosp/build-bootanimation.mjs +178 -0
  684. package/scripts/aosp/capture-screens.mjs +325 -0
  685. package/scripts/aosp/compile-libllama.mjs +1333 -0
  686. package/scripts/aosp/compile-shim.mjs +328 -0
  687. package/scripts/aosp/e2e-validate.mjs +225 -0
  688. package/scripts/aosp/lib/load-variant-config.mjs +182 -0
  689. package/scripts/aosp/lint-init-rc.mjs +258 -0
  690. package/scripts/aosp/llama-cpp-patches/README.md +49 -0
  691. package/scripts/aosp/llama-cpp-patches/apply-patches.mjs +198 -0
  692. package/scripts/aosp/llama-cpp-patches/polarquant/0001-Q4_POLAR-register-GGML_TYPE_Q4_POLAR-45-and-block_q4.patch +108 -0
  693. package/scripts/aosp/llama-cpp-patches/polarquant/0002-Q4_POLAR-vendor-PolarQuant-ref-kernels-into-ggml-bas.patch +460 -0
  694. package/scripts/aosp/llama-cpp-patches/polarquant/0003-tests-cover-Q4_POLAR-fix-latent-buffer-overflow.patch +102 -0
  695. package/scripts/aosp/llama-cpp-patches/polarquant/0004-Q4_POLAR-gate-QJL-residual-on-runtime-flag-default-o.patch +97 -0
  696. package/scripts/aosp/llama-cpp-patches/qjl/0001-ggml-add-GGML_TYPE_QJL1_256-GGML_OP_ATTN_SCORE_QJL-e.patch +120 -0
  697. package/scripts/aosp/llama-cpp-patches/qjl/0002-ggml-register-QJL1_256-type-traits-ATTN_SCORE_QJL-op.patch +1392 -0
  698. package/scripts/aosp/llama-cpp-patches/qjl/0003-ggml-set-QJL1_256-blck_size-to-head_dim-128-not-sket.patch +56 -0
  699. package/scripts/aosp/llama-cpp-patches/qjl/0004-tests-add-test-qjl-cache-verifying-type-traits-score.patch +335 -0
  700. package/scripts/aosp/llama-cpp-patches/qjl/0005-ggml-flip-block_qjl1_256-to-signs-then-norm.patch +69 -0
  701. package/scripts/aosp/llama-shim/eliza_llama_shim.c +276 -0
  702. package/scripts/aosp/seccomp-shim/loader-wrap.c +141 -0
  703. package/scripts/aosp/seccomp-shim/sigsys-handler.c +338 -0
  704. package/scripts/aosp/sim.mjs +277 -0
  705. package/scripts/aosp/smoke-cuttlefish.mjs +673 -0
  706. package/scripts/aosp/stage-default-models.mjs +340 -0
  707. package/scripts/aosp/stage-models-dfm.mjs +384 -0
  708. package/scripts/aosp/sync-to-aosp.mjs +134 -0
  709. package/scripts/aosp/validate.mjs +1273 -0
  710. package/scripts/aosp/variant-config-schema.ts +10 -0
  711. package/scripts/audit-live-test-surface.mjs +590 -0
  712. package/scripts/audit-server-test-surface.mjs +163 -0
  713. package/scripts/benchmark-preflight.mjs +170 -0
  714. package/scripts/bin/.gitkeep +0 -0
  715. package/scripts/build-bundled-agent-skills-artifact.mjs +58 -0
  716. package/scripts/build-bundled-orchestrator-artifact.mjs +66 -0
  717. package/scripts/build-capacitor-app.mjs +122 -0
  718. package/scripts/build-electrobun-preload.mjs +117 -0
  719. package/scripts/build-flatpak.mjs +125 -0
  720. package/scripts/build-image.sh +461 -0
  721. package/scripts/build-llama-cpp-dflash.mjs +1831 -0
  722. package/scripts/build-native-plugins.mjs +153 -0
  723. package/scripts/build-patched-electrobun-cli.mjs +424 -0
  724. package/scripts/build-win.mjs +82 -0
  725. package/scripts/bump-elizaos.sh +438 -0
  726. package/scripts/check-i18n.mjs +328 -0
  727. package/scripts/check-secret-hygiene.mjs +344 -0
  728. package/scripts/check-upstream-drift.mjs +102 -0
  729. package/scripts/clean-repo.mjs +187 -0
  730. package/scripts/codesign-mas.mjs +297 -0
  731. package/scripts/container-entrypoint.mjs +101 -0
  732. package/scripts/coordinator-cross-platform-review.mjs +192 -0
  733. package/scripts/copy-package-assets.mjs +31 -0
  734. package/scripts/copy-runtime-node-modules.ts +1782 -0
  735. package/scripts/coverage-policy.d.mts +16 -0
  736. package/scripts/coverage-policy.mjs +38 -0
  737. package/scripts/css-coverage.mjs +241 -0
  738. package/scripts/deploy-image.sh +318 -0
  739. package/scripts/desktop-build.mjs +867 -0
  740. package/scripts/desktop-stack-status.mjs +80 -0
  741. package/scripts/dev-platform.mjs +975 -0
  742. package/scripts/dev-ui.mjs +1178 -0
  743. package/scripts/dev-win.mjs +25 -0
  744. package/scripts/disable-local-eliza-workspace.mjs +420 -0
  745. package/scripts/docker-ci-smoke.sh +500 -0
  746. package/scripts/docker-entrypoint.sh +11 -0
  747. package/scripts/docker-runtime-review.mjs +230 -0
  748. package/scripts/docs-list.js +206 -0
  749. package/scripts/ensure-avatars.mjs +335 -0
  750. package/scripts/ensure-bundled-workspaces.mjs +143 -0
  751. package/scripts/ensure-capacitor-platform.mjs +58 -0
  752. package/scripts/ensure-electrobun-core.mjs +318 -0
  753. package/scripts/ensure-generated-core-proto-js.mjs +125 -0
  754. package/scripts/ensure-shared-i18n-data.mjs +67 -0
  755. package/scripts/ensure-skills.mjs +177 -0
  756. package/scripts/ensure-type-package-aliases.mjs +246 -0
  757. package/scripts/ensure-vision-deps.mjs +196 -0
  758. package/scripts/entry.ts +11 -0
  759. package/scripts/find-collisions.mjs +765 -0
  760. package/scripts/find-duplicate-components.mjs +203 -0
  761. package/scripts/fix-workspace-deps.mjs +328 -0
  762. package/scripts/generate-onboarding-voicelines.mjs +194 -0
  763. package/scripts/generate-plugin-index.js +1055 -0
  764. package/scripts/generate-static-asset-manifest.mjs +15 -0
  765. package/scripts/generated/static-asset-manifest.json +4 -0
  766. package/scripts/i18n-dynamic-keys.json +128 -0
  767. package/scripts/init-submodules.mjs +425 -0
  768. package/scripts/ios-xcframework/README.md +233 -0
  769. package/scripts/ios-xcframework/build-xcframework.mjs +487 -0
  770. package/scripts/kernel-patches/metal-kernels.mjs +636 -0
  771. package/scripts/kernel-patches/vulkan-dispatch-patches/01-vulkan-shaders-gen.patch +41 -0
  772. package/scripts/kernel-patches/vulkan-dispatch-patches/02-ggml-vulkan-pipelines.patch +86 -0
  773. package/scripts/kernel-patches/vulkan-kernels.mjs +281 -0
  774. package/scripts/lib/allocate-loopback-port.mjs +58 -0
  775. package/scripts/lib/api-supervisor.mjs +115 -0
  776. package/scripts/lib/app-dir.mjs +74 -0
  777. package/scripts/lib/asset-cdn.mjs +118 -0
  778. package/scripts/lib/bun-version-guard.mjs +44 -0
  779. package/scripts/lib/capacitor-platform-templates.mjs +306 -0
  780. package/scripts/lib/capacitor-plugin-build-needed.mjs +79 -0
  781. package/scripts/lib/capacitor-plugin-names.mjs +35 -0
  782. package/scripts/lib/desktop-preflight.mjs +122 -0
  783. package/scripts/lib/desktop-stack-status.mjs +151 -0
  784. package/scripts/lib/dev-ui-onchain.mjs +22 -0
  785. package/scripts/lib/dev-ui-vision.mjs +15 -0
  786. package/scripts/lib/kill-process-tree.mjs +87 -0
  787. package/scripts/lib/kill-ui-listen-port.mjs +74 -0
  788. package/scripts/lib/node-path-env.mjs +11 -0
  789. package/scripts/lib/orchestrator-desktop-dev-banner.mjs +285 -0
  790. package/scripts/lib/patch-bun-exports.mjs +1446 -0
  791. package/scripts/lib/read-app-identity.mjs +50 -0
  792. package/scripts/lib/release-check-pack-dry-run.ts +34 -0
  793. package/scripts/lib/repo-root.mjs +77 -0
  794. package/scripts/lib/stage-android-agent.mjs +704 -0
  795. package/scripts/lib/static-asset-manifest.mjs +151 -0
  796. package/scripts/lib/sync-eliza-env-aliases.mjs +37 -0
  797. package/scripts/lib/vite-renderer-dist-stale.mjs +141 -0
  798. package/scripts/lib/workspace-discovery.mjs +108 -0
  799. package/scripts/lifeops-prompt-benchmark.ts +206 -0
  800. package/scripts/link-browser-server.mjs +157 -0
  801. package/scripts/link-docker-local-app-packages.mjs +345 -0
  802. package/scripts/link-external-plugins.mjs +195 -0
  803. package/scripts/mobile-auth-simulator-smoke.mjs +373 -0
  804. package/scripts/normalize-parallax-capture.ts +97 -0
  805. package/scripts/omnivoice-fuse/Makefile +44 -0
  806. package/scripts/omnivoice-fuse/README.md +266 -0
  807. package/scripts/omnivoice-fuse/cmake-graft.mjs +180 -0
  808. package/scripts/omnivoice-fuse/ffi-stub.c +222 -0
  809. package/scripts/omnivoice-fuse/ffi.h +158 -0
  810. package/scripts/omnivoice-fuse/libelizainference_stub.dylib +0 -0
  811. package/scripts/omnivoice-fuse/prepare.mjs +263 -0
  812. package/scripts/omnivoice-fuse/verify-symbols.mjs +138 -0
  813. package/scripts/pack-upstreams.mjs +392 -0
  814. package/scripts/patch-deps.mjs +597 -0
  815. package/scripts/patch-workspace-plugins.mjs +148 -0
  816. package/scripts/playwright-ui-live-stack.ts +667 -0
  817. package/scripts/playwright-ui-smoke-api-stub.mjs +1838 -0
  818. package/scripts/plugin-index-local-additions.json +12 -0
  819. package/scripts/plugin-metadata-overrides.json +165 -0
  820. package/scripts/pre-review-local.mjs +599 -0
  821. package/scripts/prepare-ios-cocoapods.sh +30 -0
  822. package/scripts/prepare-package-dist.mjs +358 -0
  823. package/scripts/process-vrms.mjs +203 -0
  824. package/scripts/prune-cdn-local-assets.mjs +44 -0
  825. package/scripts/publish-local-plugins-next.mjs +122 -0
  826. package/scripts/release-check.ts +1402 -0
  827. package/scripts/relink-workspace-packages-to-dist.mjs +115 -0
  828. package/scripts/replace-workspace-versions.mjs +128 -0
  829. package/scripts/report-coverage-surfaces.mjs +121 -0
  830. package/scripts/restore-workspace-refs.mjs +128 -0
  831. package/scripts/rt.mjs +29 -0
  832. package/scripts/rt.sh +4 -0
  833. package/scripts/run-biome-check.mjs +191 -0
  834. package/scripts/run-coding-agent-e2e.mjs +46 -0
  835. package/scripts/run-desktop-playwright.mjs +35 -0
  836. package/scripts/run-local-plugin-live-smoke.mjs +185 -0
  837. package/scripts/run-mobile-build.mjs +3308 -0
  838. package/scripts/run-node-runtime.mjs +75 -0
  839. package/scripts/run-node-tsx.mjs +62 -0
  840. package/scripts/run-node.mjs +294 -0
  841. package/scripts/run-playwright.mjs +66 -0
  842. package/scripts/run-production-build.mjs +138 -0
  843. package/scripts/run-release-contract-suite.mjs +57 -0
  844. package/scripts/run-repo-setup.mjs +230 -0
  845. package/scripts/run-screenshotter.mjs +140 -0
  846. package/scripts/run-ui-smoke-playwright-suite.mjs +96 -0
  847. package/scripts/run-windows-smoke-launcher.ps1 +35 -0
  848. package/scripts/run-with-env.mjs +60 -0
  849. package/scripts/runtime-package-manifest.ts +107 -0
  850. package/scripts/sandbox-setup.sh +7 -0
  851. package/scripts/sanitize-npm-package-metadata.mjs +165 -0
  852. package/scripts/set-package-version.mjs +13 -0
  853. package/scripts/setup-upstreams.mjs +838 -0
  854. package/scripts/smoke-api-status.mjs +113 -0
  855. package/scripts/smoke-lifeops.mjs +305 -0
  856. package/scripts/startup-integration-script-drift.test.ts +94 -0
  857. package/scripts/sync-desktop-renderer.mjs +308 -0
  858. package/scripts/sync-dod-gap-issues-lib.mjs +214 -0
  859. package/scripts/sync-dod-gap-issues.mjs +218 -0
  860. package/scripts/type-audit.mjs +606 -0
  861. package/scripts/validate-cdn-assets.mjs +307 -0
  862. package/scripts/validate-regression-matrix.mjs +360 -0
  863. package/scripts/workspace-plugin-patches/plugin-anthropic-elizaos-core-api-compat.patch +34 -0
  864. package/scripts/workspace-prepare.mjs +192 -0
  865. package/scripts/worktree-env.sh +41 -0
  866. package/scripts/write-build-info.ts +69 -0
  867. package/scripts/write-homepage-release-data.mjs +393 -0
  868. package/security/agent-vault-id.d.ts +16 -0
  869. package/security/agent-vault-id.d.ts.map +1 -0
  870. package/security/agent-vault-id.js +32 -0
  871. package/security/cloud-secret-store.d.ts +34 -0
  872. package/security/cloud-secret-store.d.ts.map +1 -0
  873. package/security/cloud-secret-store.js +65 -0
  874. package/security/export-guard.d.ts +34 -0
  875. package/security/export-guard.d.ts.map +1 -0
  876. package/security/export-guard.js +127 -0
  877. package/security/hydrate-wallet-keys-from-platform-store.d.ts +13 -0
  878. package/security/hydrate-wallet-keys-from-platform-store.d.ts.map +1 -0
  879. package/security/hydrate-wallet-keys-from-platform-store.js +116 -0
  880. package/security/platform-secure-store-node.d.ts +13 -0
  881. package/security/platform-secure-store-node.d.ts.map +1 -0
  882. package/security/platform-secure-store-node.js +311 -0
  883. package/security/platform-secure-store.d.ts +47 -0
  884. package/security/platform-secure-store.d.ts.map +1 -0
  885. package/security/platform-secure-store.js +10 -0
  886. package/security/wallet-os-store-actions.d.ts +45 -0
  887. package/security/wallet-os-store-actions.d.ts.map +1 -0
  888. package/security/wallet-os-store-actions.js +125 -0
  889. package/services/account-pool.d.ts +134 -0
  890. package/services/account-pool.d.ts.map +1 -0
  891. package/services/account-pool.js +693 -0
  892. package/services/account-usage.d.ts +75 -0
  893. package/services/account-usage.d.ts.map +1 -0
  894. package/services/account-usage.js +179 -0
  895. package/services/auth-store.d.ts +179 -0
  896. package/services/auth-store.d.ts.map +1 -0
  897. package/services/auth-store.js +404 -0
  898. package/services/cloud-jwks-store.d.ts +62 -0
  899. package/services/cloud-jwks-store.d.ts.map +1 -0
  900. package/services/cloud-jwks-store.js +118 -0
  901. package/services/connector-target-catalog.d.ts +78 -0
  902. package/services/connector-target-catalog.d.ts.map +1 -0
  903. package/services/connector-target-catalog.js +64 -0
  904. package/services/discord-target-source.d.ts +53 -0
  905. package/services/discord-target-source.d.ts.map +1 -0
  906. package/services/discord-target-source.js +116 -0
  907. package/services/github-credentials.d.ts +95 -0
  908. package/services/github-credentials.d.ts.map +1 -0
  909. package/services/github-credentials.js +144 -0
  910. package/services/local-inference/__stress__/cache-stress-helpers.d.ts +76 -0
  911. package/services/local-inference/__stress__/cache-stress-helpers.d.ts.map +1 -0
  912. package/services/local-inference/__stress__/cache-stress-helpers.js +238 -0
  913. package/services/local-inference/active-model.d.ts +180 -0
  914. package/services/local-inference/active-model.d.ts.map +1 -0
  915. package/services/local-inference/active-model.js +362 -0
  916. package/services/local-inference/assignments.d.ts +58 -0
  917. package/services/local-inference/assignments.d.ts.map +1 -0
  918. package/services/local-inference/assignments.js +179 -0
  919. package/services/local-inference/backend.d.ts +200 -0
  920. package/services/local-inference/backend.d.ts.map +1 -0
  921. package/services/local-inference/backend.js +242 -0
  922. package/services/local-inference/bundled-models.d.ts +34 -0
  923. package/services/local-inference/bundled-models.d.ts.map +1 -0
  924. package/services/local-inference/bundled-models.js +104 -0
  925. package/services/local-inference/cache-bridge.d.ts +184 -0
  926. package/services/local-inference/cache-bridge.d.ts.map +1 -0
  927. package/services/local-inference/cache-bridge.js +333 -0
  928. package/services/local-inference/catalog.d.ts +56 -0
  929. package/services/local-inference/catalog.d.ts.map +1 -0
  930. package/services/local-inference/catalog.js +143 -0
  931. package/services/local-inference/conversation-registry.d.ts +122 -0
  932. package/services/local-inference/conversation-registry.d.ts.map +1 -0
  933. package/services/local-inference/conversation-registry.js +182 -0
  934. package/services/local-inference/device-bridge.d.ts +139 -0
  935. package/services/local-inference/device-bridge.d.ts.map +1 -0
  936. package/services/local-inference/device-bridge.js +774 -0
  937. package/services/local-inference/dflash-doctor.d.ts +27 -0
  938. package/services/local-inference/dflash-doctor.d.ts.map +1 -0
  939. package/services/local-inference/dflash-doctor.js +149 -0
  940. package/services/local-inference/dflash-server.d.ts +248 -0
  941. package/services/local-inference/dflash-server.d.ts.map +1 -0
  942. package/services/local-inference/dflash-server.js +1076 -0
  943. package/services/local-inference/downloader.d.ts +46 -0
  944. package/services/local-inference/downloader.d.ts.map +1 -0
  945. package/services/local-inference/downloader.js +389 -0
  946. package/services/local-inference/engine.d.ts +282 -0
  947. package/services/local-inference/engine.d.ts.map +1 -0
  948. package/services/local-inference/engine.js +743 -0
  949. package/services/local-inference/external-scanner.d.ts +17 -0
  950. package/services/local-inference/external-scanner.d.ts.map +1 -0
  951. package/services/local-inference/external-scanner.js +261 -0
  952. package/services/local-inference/handler-registry.d.ts +72 -0
  953. package/services/local-inference/handler-registry.d.ts.map +1 -0
  954. package/services/local-inference/handler-registry.js +159 -0
  955. package/services/local-inference/hardware.d.ts +26 -0
  956. package/services/local-inference/hardware.d.ts.map +1 -0
  957. package/services/local-inference/hardware.js +139 -0
  958. package/services/local-inference/hf-search.d.ts +19 -0
  959. package/services/local-inference/hf-search.d.ts.map +1 -0
  960. package/services/local-inference/hf-search.js +169 -0
  961. package/services/local-inference/index.d.ts +10 -0
  962. package/services/local-inference/index.d.ts.map +1 -0
  963. package/services/local-inference/index.js +7 -0
  964. package/services/local-inference/llama-server-metrics.d.ts +108 -0
  965. package/services/local-inference/llama-server-metrics.d.ts.map +1 -0
  966. package/services/local-inference/llama-server-metrics.js +175 -0
  967. package/services/local-inference/manifest/index.d.ts +4 -0
  968. package/services/local-inference/manifest/index.d.ts.map +1 -0
  969. package/services/local-inference/manifest/index.js +5 -0
  970. package/services/local-inference/manifest/schema.d.ts +419 -0
  971. package/services/local-inference/manifest/schema.d.ts.map +1 -0
  972. package/services/local-inference/manifest/schema.js +227 -0
  973. package/services/local-inference/manifest/types.d.ts +23 -0
  974. package/services/local-inference/manifest/types.d.ts.map +1 -0
  975. package/services/local-inference/manifest/types.js +5 -0
  976. package/services/local-inference/manifest/validator.d.ts +43 -0
  977. package/services/local-inference/manifest/validator.d.ts.map +1 -0
  978. package/services/local-inference/manifest/validator.js +132 -0
  979. package/services/local-inference/paths.d.ts +8 -0
  980. package/services/local-inference/paths.d.ts.map +1 -0
  981. package/services/local-inference/paths.js +7 -0
  982. package/services/local-inference/providers.d.ts +61 -0
  983. package/services/local-inference/providers.d.ts.map +1 -0
  984. package/services/local-inference/providers.js +334 -0
  985. package/services/local-inference/ram-budget.d.ts +57 -0
  986. package/services/local-inference/ram-budget.d.ts.map +1 -0
  987. package/services/local-inference/ram-budget.js +107 -0
  988. package/services/local-inference/readiness.d.ts +9 -0
  989. package/services/local-inference/readiness.d.ts.map +1 -0
  990. package/services/local-inference/readiness.js +153 -0
  991. package/services/local-inference/recommendation.d.ts +62 -0
  992. package/services/local-inference/recommendation.d.ts.map +1 -0
  993. package/services/local-inference/recommendation.js +309 -0
  994. package/services/local-inference/registry.d.ts +35 -0
  995. package/services/local-inference/registry.d.ts.map +1 -0
  996. package/services/local-inference/registry.js +108 -0
  997. package/services/local-inference/router-handler.d.ts +51 -0
  998. package/services/local-inference/router-handler.d.ts.map +1 -0
  999. package/services/local-inference/router-handler.js +165 -0
  1000. package/services/local-inference/routing-policy.d.ts +55 -0
  1001. package/services/local-inference/routing-policy.d.ts.map +1 -0
  1002. package/services/local-inference/routing-policy.js +195 -0
  1003. package/services/local-inference/routing-preferences.d.ts +8 -0
  1004. package/services/local-inference/routing-preferences.d.ts.map +1 -0
  1005. package/services/local-inference/routing-preferences.js +7 -0
  1006. package/services/local-inference/service.d.ts +88 -0
  1007. package/services/local-inference/service.d.ts.map +1 -0
  1008. package/services/local-inference/service.js +210 -0
  1009. package/services/local-inference/session-pool.d.ts +72 -0
  1010. package/services/local-inference/session-pool.d.ts.map +1 -0
  1011. package/services/local-inference/session-pool.js +125 -0
  1012. package/services/local-inference/types.d.ts +303 -0
  1013. package/services/local-inference/types.d.ts.map +1 -0
  1014. package/services/local-inference/types.js +23 -0
  1015. package/services/local-inference/verify.d.ts +8 -0
  1016. package/services/local-inference/verify.d.ts.map +1 -0
  1017. package/services/local-inference/verify.js +7 -0
  1018. package/services/local-inference/voice/barge-in.d.ts +15 -0
  1019. package/services/local-inference/voice/barge-in.d.ts.map +1 -0
  1020. package/services/local-inference/voice/barge-in.js +20 -0
  1021. package/services/local-inference/voice/engine-bridge.d.ts +256 -0
  1022. package/services/local-inference/voice/engine-bridge.d.ts.map +1 -0
  1023. package/services/local-inference/voice/engine-bridge.js +398 -0
  1024. package/services/local-inference/voice/ffi-bindings.d.ts +114 -0
  1025. package/services/local-inference/voice/ffi-bindings.d.ts.map +1 -0
  1026. package/services/local-inference/voice/ffi-bindings.js +281 -0
  1027. package/services/local-inference/voice/index.d.ts +51 -0
  1028. package/services/local-inference/voice/index.d.ts.map +1 -0
  1029. package/services/local-inference/voice/index.js +50 -0
  1030. package/services/local-inference/voice/lifecycle.d.ts +135 -0
  1031. package/services/local-inference/voice/lifecycle.d.ts.map +1 -0
  1032. package/services/local-inference/voice/lifecycle.js +189 -0
  1033. package/services/local-inference/voice/phoneme-tokenizer.d.ts +58 -0
  1034. package/services/local-inference/voice/phoneme-tokenizer.d.ts.map +1 -0
  1035. package/services/local-inference/voice/phoneme-tokenizer.js +53 -0
  1036. package/services/local-inference/voice/phrase-cache.d.ts +24 -0
  1037. package/services/local-inference/voice/phrase-cache.d.ts.map +1 -0
  1038. package/services/local-inference/voice/phrase-cache.js +32 -0
  1039. package/services/local-inference/voice/phrase-chunker.d.ts +20 -0
  1040. package/services/local-inference/voice/phrase-chunker.d.ts.map +1 -0
  1041. package/services/local-inference/voice/phrase-chunker.js +85 -0
  1042. package/services/local-inference/voice/ring-buffer.d.ts +40 -0
  1043. package/services/local-inference/voice/ring-buffer.d.ts.map +1 -0
  1044. package/services/local-inference/voice/ring-buffer.js +85 -0
  1045. package/services/local-inference/voice/rollback-queue.d.ts +24 -0
  1046. package/services/local-inference/voice/rollback-queue.d.ts.map +1 -0
  1047. package/services/local-inference/voice/rollback-queue.js +49 -0
  1048. package/services/local-inference/voice/scheduler.d.ts +47 -0
  1049. package/services/local-inference/voice/scheduler.d.ts.map +1 -0
  1050. package/services/local-inference/voice/scheduler.js +123 -0
  1051. package/services/local-inference/voice/shared-resources.d.ts +119 -0
  1052. package/services/local-inference/voice/shared-resources.d.ts.map +1 -0
  1053. package/services/local-inference/voice/shared-resources.js +83 -0
  1054. package/services/local-inference/voice/speaker-preset-cache.d.ts +28 -0
  1055. package/services/local-inference/voice/speaker-preset-cache.d.ts.map +1 -0
  1056. package/services/local-inference/voice/speaker-preset-cache.js +44 -0
  1057. package/services/local-inference/voice/types.d.ts +80 -0
  1058. package/services/local-inference/voice/types.d.ts.map +1 -0
  1059. package/services/local-inference/voice/voice-preset-format.d.ts +56 -0
  1060. package/services/local-inference/voice/voice-preset-format.d.ts.map +1 -0
  1061. package/services/local-inference/voice/voice-preset-format.js +184 -0
  1062. package/services/persistence.d.ts +48 -0
  1063. package/services/persistence.d.ts.map +1 -0
  1064. package/services/persistence.js +128 -0
  1065. package/services/plugin-installer.d.ts +22 -0
  1066. package/services/plugin-installer.d.ts.map +1 -0
  1067. package/services/plugin-installer.js +41 -0
  1068. package/services/secrets-manager-installer.d.ts +140 -0
  1069. package/services/secrets-manager-installer.d.ts.map +1 -0
  1070. package/services/secrets-manager-installer.js +374 -0
  1071. package/services/steward-credentials.d.ts +37 -0
  1072. package/services/steward-credentials.d.ts.map +1 -0
  1073. package/services/steward-credentials.js +93 -0
  1074. package/services/steward-sidecar/health-check.d.ts +9 -0
  1075. package/services/steward-sidecar/health-check.d.ts.map +1 -0
  1076. package/services/steward-sidecar/health-check.js +34 -0
  1077. package/services/steward-sidecar/helpers.d.ts +21 -0
  1078. package/services/steward-sidecar/helpers.d.ts.map +1 -0
  1079. package/services/steward-sidecar/helpers.js +71 -0
  1080. package/services/steward-sidecar/process-management.d.ts +9 -0
  1081. package/services/steward-sidecar/process-management.d.ts.map +1 -0
  1082. package/services/steward-sidecar/process-management.js +53 -0
  1083. package/services/steward-sidecar/types.d.ts +60 -0
  1084. package/services/steward-sidecar/types.d.ts.map +1 -0
  1085. package/services/steward-sidecar/types.js +17 -0
  1086. package/services/steward-sidecar/wallet-setup.d.ts +9 -0
  1087. package/services/steward-sidecar/wallet-setup.d.ts.map +1 -0
  1088. package/services/steward-sidecar/wallet-setup.js +114 -0
  1089. package/services/steward-sidecar.d.ts +70 -0
  1090. package/services/steward-sidecar.d.ts.map +1 -0
  1091. package/services/steward-sidecar.js +385 -0
  1092. package/services/tool-call-cache/index.d.ts +13 -0
  1093. package/services/tool-call-cache/index.d.ts.map +1 -0
  1094. package/services/tool-call-cache/index.js +11 -0
  1095. package/services/trigger-event-bridge.d.ts +52 -0
  1096. package/services/trigger-event-bridge.d.ts.map +1 -0
  1097. package/services/trigger-event-bridge.js +217 -0
  1098. package/services/update-notifier.d.ts +6 -0
  1099. package/services/update-notifier.d.ts.map +1 -0
  1100. package/services/update-notifier.js +33 -0
  1101. package/services/vault-bootstrap.d.ts +31 -0
  1102. package/services/vault-bootstrap.d.ts.map +1 -0
  1103. package/services/vault-bootstrap.js +209 -0
  1104. package/services/vault-mirror.d.ts +44 -0
  1105. package/services/vault-mirror.d.ts.map +1 -0
  1106. package/services/vault-mirror.js +80 -0
  1107. package/styles/electrobun-mac-window-drag.css +66 -0
  1108. package/test/helpers/__tests__/live-agent-test.smoke.test.ts +105 -0
  1109. package/test/helpers/action-assertions.ts +364 -0
  1110. package/test/helpers/action-spy.ts +354 -0
  1111. package/test/helpers/browser-launch.ts +103 -0
  1112. package/test/helpers/browser-mocks.ts +275 -0
  1113. package/test/helpers/conditional-tests.ts +42 -0
  1114. package/test/helpers/conversation-harness.ts +334 -0
  1115. package/test/helpers/http.ts +150 -0
  1116. package/test/helpers/i18n.ts +5 -0
  1117. package/test/helpers/isolated-config.ts +34 -0
  1118. package/test/helpers/live-agent-test.ts +660 -0
  1119. package/test/helpers/live-child-env.ts +72 -0
  1120. package/test/helpers/live-provider.test.ts +124 -0
  1121. package/test/helpers/live-provider.ts +362 -0
  1122. package/test/helpers/live-runtime-server.ts +88 -0
  1123. package/test/helpers/loopback.ts +33 -0
  1124. package/test/helpers/pglite-runtime.ts +173 -0
  1125. package/test/helpers/react-test.ts +40 -0
  1126. package/test/helpers/real-connector.ts +250 -0
  1127. package/test/helpers/real-runtime.ts +542 -0
  1128. package/test/helpers/skip-without.ts +53 -0
  1129. package/test/helpers/stochastic-test.ts +186 -0
  1130. package/test/helpers/test-utils.ts +94 -0
  1131. package/test/helpers/trajectory-assertions.ts +168 -0
  1132. package/test/helpers/trajectory-harness.test.ts +101 -0
  1133. package/test/helpers/trajectory-harness.ts +988 -0
  1134. package/test/scripts/managed-test-command.mjs +632 -0
  1135. package/test/scripts/task-agent-live-smoke.ts +1335 -0
  1136. package/test/scripts/test-parallel.mjs +237 -0
  1137. package/test/scripts/test-root-unit.mjs +169 -0
  1138. package/test/scripts/test-runner.mjs +78 -0
  1139. package/test/scripts/validate-all-features.sh +541 -0
  1140. package/test-support/test-helpers.d.ts +111 -0
  1141. package/test-support/test-helpers.d.ts.map +1 -0
  1142. package/test-support/test-helpers.js +410 -0
  1143. package/ui-compat.d.ts +3 -0
  1144. package/ui-compat.d.ts.map +1 -0
  1145. package/ui-compat.js +3 -0
  1146. package/utils/eliza-root.d.ts +9 -0
  1147. package/utils/eliza-root.d.ts.map +1 -0
  1148. package/utils/eliza-root.js +101 -0
  1149. package/utils/globals.d.ts +7 -0
  1150. package/utils/globals.d.ts.map +1 -0
  1151. package/utils/globals.js +47 -0
  1152. package/App.d.ts +0 -5
  1153. package/App.d.ts.map +0 -1
  1154. package/App.js +0 -220
  1155. package/LICENSE +0 -21
  1156. package/actions/character.d.ts +0 -39
  1157. package/actions/character.d.ts.map +0 -1
  1158. package/actions/character.js +0 -247
  1159. package/actions/chat-helpers.d.ts +0 -47
  1160. package/actions/chat-helpers.d.ts.map +0 -1
  1161. package/actions/chat-helpers.js +0 -79
  1162. package/actions/cloud.d.ts +0 -17
  1163. package/actions/cloud.d.ts.map +0 -1
  1164. package/actions/cloud.js +0 -43
  1165. package/actions/index.d.ts +0 -12
  1166. package/actions/index.d.ts.map +0 -1
  1167. package/actions/index.js +0 -11
  1168. package/actions/lifecycle.d.ts +0 -43
  1169. package/actions/lifecycle.d.ts.map +0 -1
  1170. package/actions/lifecycle.js +0 -118
  1171. package/actions/onboarding.d.ts +0 -13
  1172. package/actions/onboarding.d.ts.map +0 -1
  1173. package/actions/onboarding.js +0 -26
  1174. package/actions/triggers.d.ts +0 -23
  1175. package/actions/triggers.d.ts.map +0 -1
  1176. package/actions/triggers.js +0 -148
  1177. package/api/client.d.ts +0 -2742
  1178. package/api/client.d.ts.map +0 -1
  1179. package/api/client.js +0 -2520
  1180. package/api/index.d.ts +0 -2
  1181. package/api/index.d.ts.map +0 -1
  1182. package/api/index.js +0 -1
  1183. package/autonomy/index.d.ts +0 -48
  1184. package/autonomy/index.d.ts.map +0 -1
  1185. package/autonomy/index.js +0 -330
  1186. package/bridge/capacitor-bridge.d.ts +0 -153
  1187. package/bridge/capacitor-bridge.d.ts.map +0 -1
  1188. package/bridge/capacitor-bridge.js +0 -193
  1189. package/bridge/electrobun-rpc.d.ts +0 -28
  1190. package/bridge/electrobun-rpc.d.ts.map +0 -1
  1191. package/bridge/electrobun-rpc.js +0 -35
  1192. package/bridge/electrobun-runtime.d.ts +0 -3
  1193. package/bridge/electrobun-runtime.d.ts.map +0 -1
  1194. package/bridge/electrobun-runtime.js +0 -17
  1195. package/bridge/index.d.ts +0 -6
  1196. package/bridge/index.d.ts.map +0 -1
  1197. package/bridge/index.js +0 -5
  1198. package/bridge/native-plugins.d.ts +0 -82
  1199. package/bridge/native-plugins.d.ts.map +0 -1
  1200. package/bridge/native-plugins.js +0 -39
  1201. package/bridge/plugin-bridge.d.ts +0 -116
  1202. package/bridge/plugin-bridge.d.ts.map +0 -1
  1203. package/bridge/plugin-bridge.js +0 -203
  1204. package/bridge/storage-bridge.d.ts +0 -39
  1205. package/bridge/storage-bridge.d.ts.map +0 -1
  1206. package/bridge/storage-bridge.js +0 -135
  1207. package/chat/index.d.ts +0 -57
  1208. package/chat/index.d.ts.map +0 -1
  1209. package/chat/index.js +0 -160
  1210. package/coding/index.d.ts +0 -25
  1211. package/coding/index.d.ts.map +0 -1
  1212. package/coding/index.js +0 -25
  1213. package/components/AdvancedPageView.d.ts +0 -17
  1214. package/components/AdvancedPageView.d.ts.map +0 -1
  1215. package/components/AdvancedPageView.js +0 -146
  1216. package/components/AgentActivityBox.d.ts +0 -7
  1217. package/components/AgentActivityBox.d.ts.map +0 -1
  1218. package/components/AgentActivityBox.js +0 -25
  1219. package/components/ApiKeyConfig.d.ts +0 -26
  1220. package/components/ApiKeyConfig.d.ts.map +0 -1
  1221. package/components/ApiKeyConfig.js +0 -119
  1222. package/components/AppsPageView.d.ts +0 -7
  1223. package/components/AppsPageView.d.ts.map +0 -1
  1224. package/components/AppsPageView.js +0 -31
  1225. package/components/AppsView.d.ts +0 -8
  1226. package/components/AppsView.d.ts.map +0 -1
  1227. package/components/AppsView.js +0 -149
  1228. package/components/AvatarLoader.d.ts +0 -13
  1229. package/components/AvatarLoader.d.ts.map +0 -1
  1230. package/components/AvatarLoader.js +0 -53
  1231. package/components/AvatarSelector.d.ts +0 -23
  1232. package/components/AvatarSelector.d.ts.map +0 -1
  1233. package/components/AvatarSelector.js +0 -105
  1234. package/components/BscTradePanel.d.ts +0 -22
  1235. package/components/BscTradePanel.d.ts.map +0 -1
  1236. package/components/BscTradePanel.js +0 -221
  1237. package/components/BugReportModal.d.ts +0 -2
  1238. package/components/BugReportModal.d.ts.map +0 -1
  1239. package/components/BugReportModal.js +0 -219
  1240. package/components/CharacterRoster.d.ts +0 -31
  1241. package/components/CharacterRoster.d.ts.map +0 -1
  1242. package/components/CharacterRoster.js +0 -41
  1243. package/components/CharacterView.d.ts +0 -8
  1244. package/components/CharacterView.d.ts.map +0 -1
  1245. package/components/CharacterView.js +0 -685
  1246. package/components/ChatAvatar.d.ts +0 -8
  1247. package/components/ChatAvatar.d.ts.map +0 -1
  1248. package/components/ChatAvatar.js +0 -89
  1249. package/components/ChatComposer.d.ts +0 -37
  1250. package/components/ChatComposer.d.ts.map +0 -1
  1251. package/components/ChatComposer.js +0 -136
  1252. package/components/ChatMessage.d.ts +0 -24
  1253. package/components/ChatMessage.d.ts.map +0 -1
  1254. package/components/ChatMessage.js +0 -187
  1255. package/components/ChatModalView.d.ts +0 -10
  1256. package/components/ChatModalView.d.ts.map +0 -1
  1257. package/components/ChatModalView.js +0 -57
  1258. package/components/ChatView.d.ts +0 -14
  1259. package/components/ChatView.d.ts.map +0 -1
  1260. package/components/ChatView.js +0 -526
  1261. package/components/CloudOnboarding.d.ts +0 -7
  1262. package/components/CloudOnboarding.d.ts.map +0 -1
  1263. package/components/CloudOnboarding.js +0 -22
  1264. package/components/CloudSourceControls.d.ts +0 -13
  1265. package/components/CloudSourceControls.d.ts.map +0 -1
  1266. package/components/CloudSourceControls.js +0 -16
  1267. package/components/CodingAgentSettingsSection.d.ts +0 -8
  1268. package/components/CodingAgentSettingsSection.d.ts.map +0 -1
  1269. package/components/CodingAgentSettingsSection.js +0 -292
  1270. package/components/CommandPalette.d.ts +0 -2
  1271. package/components/CommandPalette.d.ts.map +0 -1
  1272. package/components/CommandPalette.js +0 -181
  1273. package/components/CompanionSceneHost.d.ts +0 -14
  1274. package/components/CompanionSceneHost.d.ts.map +0 -1
  1275. package/components/CompanionSceneHost.js +0 -362
  1276. package/components/CompanionShell.d.ts +0 -17
  1277. package/components/CompanionShell.d.ts.map +0 -1
  1278. package/components/CompanionShell.js +0 -15
  1279. package/components/CompanionView.d.ts +0 -2
  1280. package/components/CompanionView.d.ts.map +0 -1
  1281. package/components/CompanionView.js +0 -22
  1282. package/components/ConfigPageView.d.ts +0 -11
  1283. package/components/ConfigPageView.d.ts.map +0 -1
  1284. package/components/ConfigPageView.js +0 -311
  1285. package/components/ConfigSaveFooter.d.ts +0 -8
  1286. package/components/ConfigSaveFooter.d.ts.map +0 -1
  1287. package/components/ConfigSaveFooter.js +0 -10
  1288. package/components/ConfirmModal.d.ts +0 -61
  1289. package/components/ConfirmModal.d.ts.map +0 -1
  1290. package/components/ConfirmModal.js +0 -164
  1291. package/components/ConnectionFailedBanner.d.ts +0 -6
  1292. package/components/ConnectionFailedBanner.d.ts.map +0 -1
  1293. package/components/ConnectionFailedBanner.js +0 -22
  1294. package/components/ConnectorsPageView.d.ts +0 -7
  1295. package/components/ConnectorsPageView.d.ts.map +0 -1
  1296. package/components/ConnectorsPageView.js +0 -8
  1297. package/components/ConversationsSidebar.d.ts +0 -9
  1298. package/components/ConversationsSidebar.d.ts.map +0 -1
  1299. package/components/ConversationsSidebar.js +0 -116
  1300. package/components/CustomActionEditor.d.ts +0 -10
  1301. package/components/CustomActionEditor.d.ts.map +0 -1
  1302. package/components/CustomActionEditor.js +0 -596
  1303. package/components/CustomActionsPanel.d.ts +0 -9
  1304. package/components/CustomActionsPanel.d.ts.map +0 -1
  1305. package/components/CustomActionsPanel.js +0 -107
  1306. package/components/CustomActionsView.d.ts +0 -2
  1307. package/components/CustomActionsView.d.ts.map +0 -1
  1308. package/components/CustomActionsView.js +0 -134
  1309. package/components/DatabasePageView.d.ts +0 -5
  1310. package/components/DatabasePageView.d.ts.map +0 -1
  1311. package/components/DatabasePageView.js +0 -28
  1312. package/components/DatabaseView.d.ts +0 -9
  1313. package/components/DatabaseView.d.ts.map +0 -1
  1314. package/components/DatabaseView.js +0 -311
  1315. package/components/ElizaCloudDashboard.d.ts +0 -2
  1316. package/components/ElizaCloudDashboard.d.ts.map +0 -1
  1317. package/components/ElizaCloudDashboard.js +0 -657
  1318. package/components/EmotePicker.d.ts +0 -2
  1319. package/components/EmotePicker.d.ts.map +0 -1
  1320. package/components/EmotePicker.js +0 -343
  1321. package/components/ErrorBoundary.d.ts +0 -22
  1322. package/components/ErrorBoundary.d.ts.map +0 -1
  1323. package/components/ErrorBoundary.js +0 -31
  1324. package/components/FineTuningView.d.ts +0 -2
  1325. package/components/FineTuningView.d.ts.map +0 -1
  1326. package/components/FineTuningView.js +0 -433
  1327. package/components/FlaminaGuide.d.ts +0 -10
  1328. package/components/FlaminaGuide.d.ts.map +0 -1
  1329. package/components/FlaminaGuide.js +0 -64
  1330. package/components/GameView.d.ts +0 -11
  1331. package/components/GameView.d.ts.map +0 -1
  1332. package/components/GameView.js +0 -294
  1333. package/components/GameViewOverlay.d.ts +0 -8
  1334. package/components/GameViewOverlay.d.ts.map +0 -1
  1335. package/components/GameViewOverlay.js +0 -70
  1336. package/components/GlobalEmoteOverlay.d.ts +0 -2
  1337. package/components/GlobalEmoteOverlay.d.ts.map +0 -1
  1338. package/components/GlobalEmoteOverlay.js +0 -112
  1339. package/components/Header.d.ts +0 -9
  1340. package/components/Header.d.ts.map +0 -1
  1341. package/components/Header.js +0 -123
  1342. package/components/HeartbeatsView.d.ts +0 -2
  1343. package/components/HeartbeatsView.d.ts.map +0 -1
  1344. package/components/HeartbeatsView.js +0 -378
  1345. package/components/InventoryView.d.ts +0 -10
  1346. package/components/InventoryView.d.ts.map +0 -1
  1347. package/components/InventoryView.js +0 -176
  1348. package/components/KnowledgeView.d.ts +0 -20
  1349. package/components/KnowledgeView.d.ts.map +0 -1
  1350. package/components/KnowledgeView.js +0 -483
  1351. package/components/LanguageDropdown.d.ts +0 -30
  1352. package/components/LanguageDropdown.d.ts.map +0 -1
  1353. package/components/LanguageDropdown.js +0 -99
  1354. package/components/LifoMonitorPanel.d.ts +0 -21
  1355. package/components/LifoMonitorPanel.d.ts.map +0 -1
  1356. package/components/LifoMonitorPanel.js +0 -24
  1357. package/components/LifoSandboxView.d.ts +0 -5
  1358. package/components/LifoSandboxView.d.ts.map +0 -1
  1359. package/components/LifoSandboxView.js +0 -333
  1360. package/components/LoadingScreen.d.ts +0 -13
  1361. package/components/LoadingScreen.d.ts.map +0 -1
  1362. package/components/LoadingScreen.js +0 -70
  1363. package/components/LogsPageView.d.ts +0 -2
  1364. package/components/LogsPageView.d.ts.map +0 -1
  1365. package/components/LogsPageView.js +0 -7
  1366. package/components/LogsView.d.ts +0 -5
  1367. package/components/LogsView.d.ts.map +0 -1
  1368. package/components/LogsView.js +0 -71
  1369. package/components/MediaGalleryView.d.ts +0 -9
  1370. package/components/MediaGalleryView.d.ts.map +0 -1
  1371. package/components/MediaGalleryView.js +0 -236
  1372. package/components/MediaSettingsSection.d.ts +0 -11
  1373. package/components/MediaSettingsSection.d.ts.map +0 -1
  1374. package/components/MediaSettingsSection.js +0 -329
  1375. package/components/MessageContent.d.ts +0 -51
  1376. package/components/MessageContent.d.ts.map +0 -1
  1377. package/components/MessageContent.js +0 -553
  1378. package/components/OnboardingWizard.d.ts +0 -2
  1379. package/components/OnboardingWizard.d.ts.map +0 -1
  1380. package/components/OnboardingWizard.js +0 -86
  1381. package/components/PairingView.d.ts +0 -5
  1382. package/components/PairingView.d.ts.map +0 -1
  1383. package/components/PairingView.js +0 -29
  1384. package/components/PermissionsSection.d.ts +0 -20
  1385. package/components/PermissionsSection.d.ts.map +0 -1
  1386. package/components/PermissionsSection.js +0 -573
  1387. package/components/PluginsPageView.d.ts +0 -5
  1388. package/components/PluginsPageView.d.ts.map +0 -1
  1389. package/components/PluginsPageView.js +0 -8
  1390. package/components/PluginsView.d.ts +0 -21
  1391. package/components/PluginsView.d.ts.map +0 -1
  1392. package/components/PluginsView.js +0 -1534
  1393. package/components/ProviderSwitcher.d.ts +0 -42
  1394. package/components/ProviderSwitcher.d.ts.map +0 -1
  1395. package/components/ProviderSwitcher.js +0 -493
  1396. package/components/RestartBanner.d.ts +0 -2
  1397. package/components/RestartBanner.d.ts.map +0 -1
  1398. package/components/RestartBanner.js +0 -36
  1399. package/components/RuntimeView.d.ts +0 -10
  1400. package/components/RuntimeView.d.ts.map +0 -1
  1401. package/components/RuntimeView.js +0 -165
  1402. package/components/SaveCommandModal.d.ts +0 -12
  1403. package/components/SaveCommandModal.d.ts.map +0 -1
  1404. package/components/SaveCommandModal.js +0 -84
  1405. package/components/SecretsView.d.ts +0 -9
  1406. package/components/SecretsView.d.ts.map +0 -1
  1407. package/components/SecretsView.js +0 -249
  1408. package/components/SettingsView.d.ts +0 -9
  1409. package/components/SettingsView.d.ts.map +0 -1
  1410. package/components/SettingsView.js +0 -230
  1411. package/components/ShellOverlays.d.ts +0 -8
  1412. package/components/ShellOverlays.d.ts.map +0 -1
  1413. package/components/ShellOverlays.js +0 -10
  1414. package/components/ShortcutsOverlay.d.ts +0 -2
  1415. package/components/ShortcutsOverlay.d.ts.map +0 -1
  1416. package/components/ShortcutsOverlay.js +0 -79
  1417. package/components/SkillsView.d.ts +0 -11
  1418. package/components/SkillsView.d.ts.map +0 -1
  1419. package/components/SkillsView.js +0 -358
  1420. package/components/StartupFailureView.d.ts +0 -8
  1421. package/components/StartupFailureView.d.ts.map +0 -1
  1422. package/components/StartupFailureView.js +0 -16
  1423. package/components/StreamView.d.ts +0 -16
  1424. package/components/StreamView.d.ts.map +0 -1
  1425. package/components/StreamView.js +0 -300
  1426. package/components/StripeEmbeddedCheckout.d.ts +0 -24
  1427. package/components/StripeEmbeddedCheckout.d.ts.map +0 -1
  1428. package/components/StripeEmbeddedCheckout.js +0 -101
  1429. package/components/SubscriptionStatus.d.ts +0 -23
  1430. package/components/SubscriptionStatus.d.ts.map +0 -1
  1431. package/components/SubscriptionStatus.js +0 -301
  1432. package/components/SystemWarningBanner.d.ts +0 -6
  1433. package/components/SystemWarningBanner.d.ts.map +0 -1
  1434. package/components/SystemWarningBanner.js +0 -46
  1435. package/components/ThemeToggle.d.ts +0 -21
  1436. package/components/ThemeToggle.d.ts.map +0 -1
  1437. package/components/ThemeToggle.js +0 -24
  1438. package/components/TrajectoriesView.d.ts +0 -12
  1439. package/components/TrajectoriesView.d.ts.map +0 -1
  1440. package/components/TrajectoriesView.js +0 -183
  1441. package/components/TrajectoryDetailView.d.ts +0 -13
  1442. package/components/TrajectoryDetailView.d.ts.map +0 -1
  1443. package/components/TrajectoryDetailView.js +0 -112
  1444. package/components/TriggersView.d.ts +0 -2
  1445. package/components/TriggersView.d.ts.map +0 -1
  1446. package/components/TriggersView.js +0 -1
  1447. package/components/VectorBrowserView.d.ts +0 -10
  1448. package/components/VectorBrowserView.d.ts.map +0 -1
  1449. package/components/VectorBrowserView.js +0 -1000
  1450. package/components/VoiceConfigView.d.ts +0 -11
  1451. package/components/VoiceConfigView.d.ts.map +0 -1
  1452. package/components/VoiceConfigView.js +0 -331
  1453. package/components/VrmStage.d.ts +0 -28
  1454. package/components/VrmStage.d.ts.map +0 -1
  1455. package/components/VrmStage.js +0 -178
  1456. package/components/WhatsAppQrOverlay.d.ts +0 -8
  1457. package/components/WhatsAppQrOverlay.d.ts.map +0 -1
  1458. package/components/WhatsAppQrOverlay.js +0 -63
  1459. package/components/apps/AppDetailPane.d.ts +0 -15
  1460. package/components/apps/AppDetailPane.d.ts.map +0 -1
  1461. package/components/apps/AppDetailPane.js +0 -13
  1462. package/components/apps/AppsCatalogGrid.d.ts +0 -20
  1463. package/components/apps/AppsCatalogGrid.d.ts.map +0 -1
  1464. package/components/apps/AppsCatalogGrid.js +0 -18
  1465. package/components/apps/extensions/registry.d.ts +0 -4
  1466. package/components/apps/extensions/registry.d.ts.map +0 -1
  1467. package/components/apps/extensions/registry.js +0 -7
  1468. package/components/apps/extensions/types.d.ts +0 -7
  1469. package/components/apps/extensions/types.d.ts.map +0 -1
  1470. package/components/apps/helpers.d.ts +0 -7
  1471. package/components/apps/helpers.d.ts.map +0 -1
  1472. package/components/apps/helpers.js +0 -44
  1473. package/components/avatar/VrmAnimationLoader.d.ts +0 -30
  1474. package/components/avatar/VrmAnimationLoader.d.ts.map +0 -1
  1475. package/components/avatar/VrmAnimationLoader.js +0 -99
  1476. package/components/avatar/VrmBlinkController.d.ts +0 -37
  1477. package/components/avatar/VrmBlinkController.d.ts.map +0 -1
  1478. package/components/avatar/VrmBlinkController.js +0 -98
  1479. package/components/avatar/VrmCameraManager.d.ts +0 -57
  1480. package/components/avatar/VrmCameraManager.d.ts.map +0 -1
  1481. package/components/avatar/VrmCameraManager.js +0 -277
  1482. package/components/avatar/VrmEngine.d.ts +0 -246
  1483. package/components/avatar/VrmEngine.d.ts.map +0 -1
  1484. package/components/avatar/VrmEngine.js +0 -2087
  1485. package/components/avatar/VrmFootShadow.d.ts +0 -18
  1486. package/components/avatar/VrmFootShadow.d.ts.map +0 -1
  1487. package/components/avatar/VrmFootShadow.js +0 -83
  1488. package/components/avatar/VrmViewer.d.ts +0 -60
  1489. package/components/avatar/VrmViewer.d.ts.map +0 -1
  1490. package/components/avatar/VrmViewer.js +0 -396
  1491. package/components/avatar/mixamoVRMRigMap.d.ts +0 -3
  1492. package/components/avatar/mixamoVRMRigMap.d.ts.map +0 -1
  1493. package/components/avatar/mixamoVRMRigMap.js +0 -56
  1494. package/components/avatar/retargetMixamoFbxToVrm.d.ts +0 -9
  1495. package/components/avatar/retargetMixamoFbxToVrm.d.ts.map +0 -1
  1496. package/components/avatar/retargetMixamoFbxToVrm.js +0 -88
  1497. package/components/avatar/retargetMixamoGltfToVrm.d.ts +0 -11
  1498. package/components/avatar/retargetMixamoGltfToVrm.d.ts.map +0 -1
  1499. package/components/avatar/retargetMixamoGltfToVrm.js +0 -80
  1500. package/components/chainConfig.d.ts +0 -89
  1501. package/components/chainConfig.d.ts.map +0 -1
  1502. package/components/chainConfig.js +0 -287
  1503. package/components/companion/CompanionHeader.d.ts +0 -15
  1504. package/components/companion/CompanionHeader.d.ts.map +0 -1
  1505. package/components/companion/CompanionHeader.js +0 -7
  1506. package/components/companion/CompanionSceneHost.d.ts +0 -2
  1507. package/components/companion/CompanionSceneHost.d.ts.map +0 -1
  1508. package/components/companion/CompanionSceneHost.js +0 -1
  1509. package/components/companion/VrmStage.d.ts +0 -3
  1510. package/components/companion/VrmStage.d.ts.map +0 -1
  1511. package/components/companion/VrmStage.js +0 -1
  1512. package/components/companion/index.d.ts +0 -18
  1513. package/components/companion/index.d.ts.map +0 -1
  1514. package/components/companion/index.js +0 -17
  1515. package/components/companion/walletUtils.d.ts +0 -95
  1516. package/components/companion/walletUtils.d.ts.map +0 -1
  1517. package/components/companion/walletUtils.js +0 -167
  1518. package/components/companion-shell-styles.d.ts +0 -38
  1519. package/components/companion-shell-styles.d.ts.map +0 -1
  1520. package/components/companion-shell-styles.js +0 -248
  1521. package/components/confirm-delete-control.d.ts +0 -16
  1522. package/components/confirm-delete-control.d.ts.map +0 -1
  1523. package/components/confirm-delete-control.js +0 -12
  1524. package/components/conversations/ConversationListItem.d.ts +0 -31
  1525. package/components/conversations/ConversationListItem.d.ts.map +0 -1
  1526. package/components/conversations/ConversationListItem.js +0 -52
  1527. package/components/conversations/conversation-utils.d.ts +0 -9
  1528. package/components/conversations/conversation-utils.d.ts.map +0 -1
  1529. package/components/conversations/conversation-utils.js +0 -138
  1530. package/components/format.d.ts +0 -54
  1531. package/components/format.d.ts.map +0 -1
  1532. package/components/format.js +0 -82
  1533. package/components/index.d.ts +0 -96
  1534. package/components/index.d.ts.map +0 -1
  1535. package/components/index.js +0 -95
  1536. package/components/inventory/CopyableAddress.d.ts +0 -8
  1537. package/components/inventory/CopyableAddress.d.ts.map +0 -1
  1538. package/components/inventory/CopyableAddress.js +0 -18
  1539. package/components/inventory/InventoryToolbar.d.ts +0 -25
  1540. package/components/inventory/InventoryToolbar.d.ts.map +0 -1
  1541. package/components/inventory/InventoryToolbar.js +0 -28
  1542. package/components/inventory/NftGrid.d.ts +0 -13
  1543. package/components/inventory/NftGrid.d.ts.map +0 -1
  1544. package/components/inventory/NftGrid.js +0 -29
  1545. package/components/inventory/TokenLogo.d.ts +0 -12
  1546. package/components/inventory/TokenLogo.d.ts.map +0 -1
  1547. package/components/inventory/TokenLogo.js +0 -33
  1548. package/components/inventory/TokensTable.d.ts +0 -24
  1549. package/components/inventory/TokensTable.d.ts.map +0 -1
  1550. package/components/inventory/TokensTable.js +0 -26
  1551. package/components/inventory/constants.d.ts +0 -52
  1552. package/components/inventory/constants.d.ts.map +0 -1
  1553. package/components/inventory/constants.js +0 -121
  1554. package/components/inventory/index.d.ts +0 -9
  1555. package/components/inventory/index.d.ts.map +0 -1
  1556. package/components/inventory/index.js +0 -8
  1557. package/components/inventory/media-url.d.ts +0 -6
  1558. package/components/inventory/media-url.d.ts.map +0 -1
  1559. package/components/inventory/media-url.js +0 -28
  1560. package/components/inventory/useInventoryData.d.ts +0 -53
  1561. package/components/inventory/useInventoryData.d.ts.map +0 -1
  1562. package/components/inventory/useInventoryData.js +0 -332
  1563. package/components/knowledge-upload-image.d.ts +0 -27
  1564. package/components/knowledge-upload-image.d.ts.map +0 -1
  1565. package/components/knowledge-upload-image.js +0 -146
  1566. package/components/labels.d.ts +0 -6
  1567. package/components/labels.d.ts.map +0 -1
  1568. package/components/labels.js +0 -40
  1569. package/components/onboarding/ActivateStep.d.ts +0 -2
  1570. package/components/onboarding/ActivateStep.d.ts.map +0 -1
  1571. package/components/onboarding/ActivateStep.js +0 -10
  1572. package/components/onboarding/CloudLoginStep.d.ts +0 -2
  1573. package/components/onboarding/CloudLoginStep.d.ts.map +0 -1
  1574. package/components/onboarding/CloudLoginStep.js +0 -20
  1575. package/components/onboarding/ConnectionStep.d.ts +0 -2
  1576. package/components/onboarding/ConnectionStep.d.ts.map +0 -1
  1577. package/components/onboarding/ConnectionStep.js +0 -609
  1578. package/components/onboarding/IdentityStep.d.ts +0 -2
  1579. package/components/onboarding/IdentityStep.d.ts.map +0 -1
  1580. package/components/onboarding/IdentityStep.js +0 -102
  1581. package/components/onboarding/OnboardingPanel.d.ts +0 -9
  1582. package/components/onboarding/OnboardingPanel.d.ts.map +0 -1
  1583. package/components/onboarding/OnboardingPanel.js +0 -24
  1584. package/components/onboarding/OnboardingStepNav.d.ts +0 -2
  1585. package/components/onboarding/OnboardingStepNav.d.ts.map +0 -1
  1586. package/components/onboarding/OnboardingStepNav.js +0 -24
  1587. package/components/onboarding/PermissionsStep.d.ts +0 -2
  1588. package/components/onboarding/PermissionsStep.d.ts.map +0 -1
  1589. package/components/onboarding/PermissionsStep.js +0 -7
  1590. package/components/onboarding/RpcStep.d.ts +0 -2
  1591. package/components/onboarding/RpcStep.d.ts.map +0 -1
  1592. package/components/onboarding/RpcStep.js +0 -125
  1593. package/components/onboarding/SaveKeysStep.d.ts +0 -2
  1594. package/components/onboarding/SaveKeysStep.d.ts.map +0 -1
  1595. package/components/onboarding/SaveKeysStep.js +0 -44
  1596. package/components/onboarding/WelcomeStep.d.ts +0 -2
  1597. package/components/onboarding/WelcomeStep.d.ts.map +0 -1
  1598. package/components/onboarding/WelcomeStep.js +0 -30
  1599. package/components/permissions/PermissionIcon.d.ts +0 -4
  1600. package/components/permissions/PermissionIcon.d.ts.map +0 -1
  1601. package/components/permissions/PermissionIcon.js +0 -12
  1602. package/components/permissions/StreamingPermissions.d.ts +0 -20
  1603. package/components/permissions/StreamingPermissions.d.ts.map +0 -1
  1604. package/components/permissions/StreamingPermissions.js +0 -178
  1605. package/components/plugins/showcase-data.d.ts +0 -7
  1606. package/components/plugins/showcase-data.d.ts.map +0 -1
  1607. package/components/plugins/showcase-data.js +0 -464
  1608. package/components/shared/ShellHeaderControls.d.ts +0 -27
  1609. package/components/shared/ShellHeaderControls.d.ts.map +0 -1
  1610. package/components/shared/ShellHeaderControls.js +0 -55
  1611. package/components/shared-companion-scene-context.d.ts +0 -3
  1612. package/components/shared-companion-scene-context.d.ts.map +0 -1
  1613. package/components/shared-companion-scene-context.js +0 -13
  1614. package/components/skeletons.d.ts +0 -17
  1615. package/components/skeletons.d.ts.map +0 -1
  1616. package/components/skeletons.js +0 -22
  1617. package/components/stream/ActivityFeed.d.ts +0 -5
  1618. package/components/stream/ActivityFeed.d.ts.map +0 -1
  1619. package/components/stream/ActivityFeed.js +0 -57
  1620. package/components/stream/AvatarPip.d.ts +0 -5
  1621. package/components/stream/AvatarPip.d.ts.map +0 -1
  1622. package/components/stream/AvatarPip.js +0 -6
  1623. package/components/stream/ChatContent.d.ts +0 -6
  1624. package/components/stream/ChatContent.d.ts.map +0 -1
  1625. package/components/stream/ChatContent.js +0 -69
  1626. package/components/stream/ChatTicker.d.ts +0 -5
  1627. package/components/stream/ChatTicker.d.ts.map +0 -1
  1628. package/components/stream/ChatTicker.js +0 -34
  1629. package/components/stream/IdleContent.d.ts +0 -5
  1630. package/components/stream/IdleContent.d.ts.map +0 -1
  1631. package/components/stream/IdleContent.js +0 -17
  1632. package/components/stream/StatusBar.d.ts +0 -36
  1633. package/components/stream/StatusBar.d.ts.map +0 -1
  1634. package/components/stream/StatusBar.js +0 -140
  1635. package/components/stream/StreamSettings.d.ts +0 -33
  1636. package/components/stream/StreamSettings.d.ts.map +0 -1
  1637. package/components/stream/StreamSettings.js +0 -99
  1638. package/components/stream/StreamTerminal.d.ts +0 -2
  1639. package/components/stream/StreamTerminal.d.ts.map +0 -1
  1640. package/components/stream/StreamTerminal.js +0 -52
  1641. package/components/stream/StreamVoiceConfig.d.ts +0 -10
  1642. package/components/stream/StreamVoiceConfig.d.ts.map +0 -1
  1643. package/components/stream/StreamVoiceConfig.js +0 -88
  1644. package/components/stream/helpers.d.ts +0 -32
  1645. package/components/stream/helpers.d.ts.map +0 -1
  1646. package/components/stream/helpers.js +0 -110
  1647. package/components/stream/overlays/OverlayLayer.d.ts +0 -20
  1648. package/components/stream/overlays/OverlayLayer.d.ts.map +0 -1
  1649. package/components/stream/overlays/OverlayLayer.js +0 -24
  1650. package/components/stream/overlays/built-in/ActionTickerWidget.d.ts +0 -8
  1651. package/components/stream/overlays/built-in/ActionTickerWidget.d.ts.map +0 -1
  1652. package/components/stream/overlays/built-in/ActionTickerWidget.js +0 -44
  1653. package/components/stream/overlays/built-in/AlertPopupWidget.d.ts +0 -7
  1654. package/components/stream/overlays/built-in/AlertPopupWidget.d.ts.map +0 -1
  1655. package/components/stream/overlays/built-in/AlertPopupWidget.js +0 -62
  1656. package/components/stream/overlays/built-in/BrandingWidget.d.ts +0 -7
  1657. package/components/stream/overlays/built-in/BrandingWidget.d.ts.map +0 -1
  1658. package/components/stream/overlays/built-in/BrandingWidget.js +0 -36
  1659. package/components/stream/overlays/built-in/CustomHtmlWidget.d.ts +0 -26
  1660. package/components/stream/overlays/built-in/CustomHtmlWidget.d.ts.map +0 -1
  1661. package/components/stream/overlays/built-in/CustomHtmlWidget.js +0 -78
  1662. package/components/stream/overlays/built-in/PeonGlassWidget.d.ts +0 -11
  1663. package/components/stream/overlays/built-in/PeonGlassWidget.d.ts.map +0 -1
  1664. package/components/stream/overlays/built-in/PeonGlassWidget.js +0 -188
  1665. package/components/stream/overlays/built-in/PeonHudWidget.d.ts +0 -10
  1666. package/components/stream/overlays/built-in/PeonHudWidget.d.ts.map +0 -1
  1667. package/components/stream/overlays/built-in/PeonHudWidget.js +0 -168
  1668. package/components/stream/overlays/built-in/PeonSakuraWidget.d.ts +0 -11
  1669. package/components/stream/overlays/built-in/PeonSakuraWidget.d.ts.map +0 -1
  1670. package/components/stream/overlays/built-in/PeonSakuraWidget.js +0 -213
  1671. package/components/stream/overlays/built-in/ThoughtBubbleWidget.d.ts +0 -8
  1672. package/components/stream/overlays/built-in/ThoughtBubbleWidget.d.ts.map +0 -1
  1673. package/components/stream/overlays/built-in/ThoughtBubbleWidget.js +0 -59
  1674. package/components/stream/overlays/built-in/ViewerCountWidget.d.ts +0 -7
  1675. package/components/stream/overlays/built-in/ViewerCountWidget.d.ts.map +0 -1
  1676. package/components/stream/overlays/built-in/ViewerCountWidget.js +0 -34
  1677. package/components/stream/overlays/built-in/index.d.ts +0 -13
  1678. package/components/stream/overlays/built-in/index.d.ts.map +0 -1
  1679. package/components/stream/overlays/built-in/index.js +0 -12
  1680. package/components/stream/overlays/registry.d.ts +0 -11
  1681. package/components/stream/overlays/registry.d.ts.map +0 -1
  1682. package/components/stream/overlays/registry.js +0 -16
  1683. package/components/stream/overlays/types.d.ts +0 -67
  1684. package/components/stream/overlays/types.d.ts.map +0 -1
  1685. package/components/stream/overlays/types.js +0 -7
  1686. package/components/stream/overlays/useOverlayLayout.d.ts +0 -27
  1687. package/components/stream/overlays/useOverlayLayout.d.ts.map +0 -1
  1688. package/components/stream/overlays/useOverlayLayout.js +0 -162
  1689. package/components/trajectory-format.d.ts +0 -6
  1690. package/components/trajectory-format.d.ts.map +0 -1
  1691. package/components/trajectory-format.js +0 -43
  1692. package/components/ui-badges.d.ts +0 -23
  1693. package/components/ui-badges.d.ts.map +0 -1
  1694. package/components/ui-badges.js +0 -38
  1695. package/components/ui-switch.d.ts +0 -14
  1696. package/components/ui-switch.d.ts.map +0 -1
  1697. package/components/ui-switch.js +0 -15
  1698. package/components/vector-browser-three.d.ts +0 -4
  1699. package/components/vector-browser-three.d.ts.map +0 -1
  1700. package/components/vector-browser-three.js +0 -21
  1701. package/config/branding.d.ts +0 -49
  1702. package/config/branding.d.ts.map +0 -1
  1703. package/config/branding.js +0 -16
  1704. package/config/config-catalog.d.ts +0 -376
  1705. package/config/config-catalog.d.ts.map +0 -1
  1706. package/config/config-catalog.js +0 -724
  1707. package/config/config-field.d.ts +0 -68
  1708. package/config/config-field.d.ts.map +0 -1
  1709. package/config/config-field.js +0 -840
  1710. package/config/config-renderer.d.ts +0 -176
  1711. package/config/config-renderer.d.ts.map +0 -1
  1712. package/config/config-renderer.js +0 -405
  1713. package/config/index.d.ts +0 -6
  1714. package/config/index.d.ts.map +0 -1
  1715. package/config/index.js +0 -5
  1716. package/config/ui-renderer.d.ts +0 -26
  1717. package/config/ui-renderer.d.ts.map +0 -1
  1718. package/config/ui-renderer.js +0 -815
  1719. package/config/ui-spec.d.ts +0 -164
  1720. package/config/ui-spec.d.ts.map +0 -1
  1721. package/config/ui-spec.js +0 -13
  1722. package/events/index.d.ts +0 -48
  1723. package/events/index.d.ts.map +0 -1
  1724. package/events/index.js +0 -45
  1725. package/hooks/index.d.ts +0 -15
  1726. package/hooks/index.d.ts.map +0 -1
  1727. package/hooks/index.js +0 -14
  1728. package/hooks/useBugReport.d.ts +0 -14
  1729. package/hooks/useBugReport.d.ts.map +0 -1
  1730. package/hooks/useBugReport.js +0 -18
  1731. package/hooks/useCanvasWindow.d.ts +0 -38
  1732. package/hooks/useCanvasWindow.d.ts.map +0 -1
  1733. package/hooks/useCanvasWindow.js +0 -273
  1734. package/hooks/useChatAvatarVoice.d.ts +0 -10
  1735. package/hooks/useChatAvatarVoice.d.ts.map +0 -1
  1736. package/hooks/useChatAvatarVoice.js +0 -71
  1737. package/hooks/useClickOutside.d.ts +0 -6
  1738. package/hooks/useClickOutside.d.ts.map +0 -1
  1739. package/hooks/useClickOutside.js +0 -25
  1740. package/hooks/useContextMenu.d.ts +0 -17
  1741. package/hooks/useContextMenu.d.ts.map +0 -1
  1742. package/hooks/useContextMenu.js +0 -100
  1743. package/hooks/useKeyboardShortcuts.d.ts +0 -17
  1744. package/hooks/useKeyboardShortcuts.d.ts.map +0 -1
  1745. package/hooks/useKeyboardShortcuts.js +0 -67
  1746. package/hooks/useLifoSync.d.ts +0 -18
  1747. package/hooks/useLifoSync.d.ts.map +0 -1
  1748. package/hooks/useLifoSync.js +0 -113
  1749. package/hooks/useMemoryMonitor.d.ts +0 -87
  1750. package/hooks/useMemoryMonitor.d.ts.map +0 -1
  1751. package/hooks/useMemoryMonitor.js +0 -209
  1752. package/hooks/useRenderGuard.d.ts +0 -17
  1753. package/hooks/useRenderGuard.d.ts.map +0 -1
  1754. package/hooks/useRenderGuard.js +0 -36
  1755. package/hooks/useRetakeCapture.d.ts +0 -12
  1756. package/hooks/useRetakeCapture.d.ts.map +0 -1
  1757. package/hooks/useRetakeCapture.js +0 -60
  1758. package/hooks/useStreamPopoutNavigation.d.ts +0 -3
  1759. package/hooks/useStreamPopoutNavigation.d.ts.map +0 -1
  1760. package/hooks/useStreamPopoutNavigation.js +0 -17
  1761. package/hooks/useTimeout.d.ts +0 -11
  1762. package/hooks/useTimeout.d.ts.map +0 -1
  1763. package/hooks/useTimeout.js +0 -32
  1764. package/hooks/useVoiceChat.d.ts +0 -94
  1765. package/hooks/useVoiceChat.d.ts.map +0 -1
  1766. package/hooks/useVoiceChat.js +0 -1077
  1767. package/hooks/useWhatsAppPairing.d.ts +0 -11
  1768. package/hooks/useWhatsAppPairing.d.ts.map +0 -1
  1769. package/hooks/useWhatsAppPairing.js +0 -95
  1770. package/i18n/index.d.ts +0 -7
  1771. package/i18n/index.d.ts.map +0 -1
  1772. package/i18n/index.js +0 -53
  1773. package/i18n/locales/en.json +0 -1268
  1774. package/i18n/locales/es.json +0 -1236
  1775. package/i18n/locales/ko.json +0 -1236
  1776. package/i18n/locales/pt.json +0 -1236
  1777. package/i18n/locales/zh-CN.json +0 -1236
  1778. package/i18n/messages.d.ts +0 -6
  1779. package/i18n/messages.d.ts.map +0 -1
  1780. package/i18n/messages.js +0 -14
  1781. package/navigation/index.d.ts +0 -27
  1782. package/navigation/index.d.ts.map +0 -1
  1783. package/navigation/index.js +0 -232
  1784. package/onboarding-config.d.ts +0 -25
  1785. package/onboarding-config.d.ts.map +0 -1
  1786. package/onboarding-config.js +0 -76
  1787. package/platform/browser-launch.d.ts +0 -2
  1788. package/platform/browser-launch.d.ts.map +0 -1
  1789. package/platform/browser-launch.js +0 -109
  1790. package/platform/index.d.ts +0 -14
  1791. package/platform/index.d.ts.map +0 -1
  1792. package/platform/index.js +0 -24
  1793. package/platform/init.d.ts +0 -40
  1794. package/platform/init.d.ts.map +0 -1
  1795. package/platform/init.js +0 -160
  1796. package/platform/lifo.d.ts +0 -51
  1797. package/platform/lifo.d.ts.map +0 -1
  1798. package/platform/lifo.js +0 -138
  1799. package/providers/index.d.ts +0 -19
  1800. package/providers/index.d.ts.map +0 -1
  1801. package/providers/index.js +0 -80
  1802. package/shell-params.d.ts +0 -12
  1803. package/shell-params.d.ts.map +0 -1
  1804. package/shell-params.js +0 -19
  1805. package/state/AppContext.d.ts +0 -12
  1806. package/state/AppContext.d.ts.map +0 -1
  1807. package/state/AppContext.js +0 -5102
  1808. package/state/index.d.ts +0 -7
  1809. package/state/index.d.ts.map +0 -1
  1810. package/state/index.js +0 -6
  1811. package/state/internal.d.ts +0 -7
  1812. package/state/internal.d.ts.map +0 -1
  1813. package/state/internal.js +0 -6
  1814. package/state/onboarding-resume.d.ts +0 -11
  1815. package/state/onboarding-resume.d.ts.map +0 -1
  1816. package/state/onboarding-resume.js +0 -187
  1817. package/state/parsers.d.ts +0 -26
  1818. package/state/parsers.d.ts.map +0 -1
  1819. package/state/parsers.js +0 -255
  1820. package/state/persistence.d.ts +0 -59
  1821. package/state/persistence.d.ts.map +0 -1
  1822. package/state/persistence.js +0 -328
  1823. package/state/shell-routing.d.ts +0 -12
  1824. package/state/shell-routing.d.ts.map +0 -1
  1825. package/state/shell-routing.js +0 -26
  1826. package/state/types.d.ts +0 -426
  1827. package/state/types.d.ts.map +0 -1
  1828. package/state/types.js +0 -89
  1829. package/state/ui-preferences.d.ts +0 -3
  1830. package/state/ui-preferences.d.ts.map +0 -1
  1831. package/state/ui-preferences.js +0 -1
  1832. package/state/useApp.d.ts +0 -4
  1833. package/state/useApp.d.ts.map +0 -1
  1834. package/state/useApp.js +0 -22
  1835. package/state/vrm.d.ts +0 -30
  1836. package/state/vrm.d.ts.map +0 -1
  1837. package/state/vrm.js +0 -82
  1838. package/styles/anime.css +0 -6364
  1839. package/styles/base.css +0 -255
  1840. package/styles/onboarding-game.css +0 -1095
  1841. package/styles/styles.css +0 -2087
  1842. package/styles/xterm.css +0 -241
  1843. package/types/index.d.ts +0 -657
  1844. package/types/index.d.ts.map +0 -1
  1845. package/types/index.js +0 -1
  1846. package/utils/asset-url.d.ts +0 -26
  1847. package/utils/asset-url.d.ts.map +0 -1
  1848. package/utils/asset-url.js +0 -99
  1849. package/utils/assistant-text.d.ts +0 -2
  1850. package/utils/assistant-text.d.ts.map +0 -1
  1851. package/utils/assistant-text.js +0 -161
  1852. package/utils/clipboard.d.ts +0 -2
  1853. package/utils/clipboard.d.ts.map +0 -1
  1854. package/utils/clipboard.js +0 -38
  1855. package/utils/desktop-dialogs.d.ts +0 -19
  1856. package/utils/desktop-dialogs.d.ts.map +0 -1
  1857. package/utils/desktop-dialogs.js +0 -50
  1858. package/utils/eliza-globals.d.ts +0 -11
  1859. package/utils/eliza-globals.d.ts.map +0 -1
  1860. package/utils/eliza-globals.js +0 -33
  1861. package/utils/index.d.ts +0 -8
  1862. package/utils/index.d.ts.map +0 -1
  1863. package/utils/index.js +0 -7
  1864. package/utils/number-parsing.d.ts +0 -44
  1865. package/utils/number-parsing.d.ts.map +0 -1
  1866. package/utils/number-parsing.js +0 -56
  1867. package/utils/openExternalUrl.d.ts +0 -2
  1868. package/utils/openExternalUrl.d.ts.map +0 -1
  1869. package/utils/openExternalUrl.js +0 -17
  1870. package/utils/spoken-text.d.ts +0 -2
  1871. package/utils/spoken-text.d.ts.map +0 -1
  1872. package/utils/spoken-text.js +0 -56
  1873. package/utils/streaming-text.d.ts +0 -3
  1874. package/utils/streaming-text.d.ts.map +0 -1
  1875. package/utils/streaming-text.js +0 -87
  1876. package/voice/index.d.ts +0 -2
  1877. package/voice/index.d.ts.map +0 -1
  1878. package/voice/index.js +0 -1
  1879. package/voice/types.d.ts +0 -25
  1880. package/voice/types.d.ts.map +0 -1
  1881. package/voice/types.js +0 -166
  1882. package/wallet-rpc.d.ts +0 -8
  1883. package/wallet-rpc.d.ts.map +0 -1
  1884. package/wallet-rpc.js +0 -131
  1885. /package/{components/apps/extensions → services/local-inference/voice}/types.js +0 -0
@@ -0,0 +1,2284 @@
1
+ /**
2
+ * Desktop Native Module for Electrobun
3
+ *
4
+ * Implements the desktop manager on top of Electrobun APIs:
5
+ * - System tray management (Tray)
6
+ * - Global keyboard shortcuts (GlobalShortcut)
7
+ * - Window management (BrowserWindow)
8
+ * - Native notifications (Utils.showNotification)
9
+ * - Clipboard operations (Utils.clipboard*)
10
+ * - Shell operations (Utils.openExternal, Utils.showItemInFolder)
11
+ * - App lifecycle (Utils.quit)
12
+ * - Path resolution (Utils.paths)
13
+ *
14
+ * Key differences from the prior desktop runtime:
15
+ * - No ipcMain — methods are called directly from rpc-handlers.ts
16
+ * - Uses sendToWebview callback instead of mainWindow.webContents.send()
17
+ * - No powerMonitor — power state via `pmset` (macOS), sysfs (Linux), or WinForms power line (Windows)
18
+ * - No nativeImage — tray icons use file paths directly
19
+ * - No setOpacity on BrowserWindow — no-op
20
+ * - No hide() on BrowserWindow — uses minimize() as fallback
21
+ * - No app.setLoginItemSettings — stubbed
22
+ */
23
+
24
+ import * as fs from "node:fs";
25
+ import os from "node:os";
26
+ import path from "node:path";
27
+ import Electrobun, {
28
+ type ApplicationMenuItemConfig,
29
+ BrowserView,
30
+ type BrowserWindow,
31
+ BuildConfig,
32
+ ContextMenu,
33
+ GlobalShortcut,
34
+ type MenuItemConfig,
35
+ Screen,
36
+ Session,
37
+ Tray,
38
+ Updater,
39
+ Utils,
40
+ } from "electrobun/bun";
41
+ import { getBrandConfig } from "../brand-config";
42
+ import { logger } from "../logger";
43
+ import type {
44
+ ClipboardReadResult,
45
+ ClipboardWriteOptions,
46
+ CursorPosition,
47
+ DesktopBuildInfo,
48
+ DesktopManagedWindowSnapshot,
49
+ DesktopReleaseNotesWindowInfo,
50
+ DesktopSessionSnapshot,
51
+ DesktopSessionStorageType,
52
+ DesktopUpdaterSnapshot,
53
+ DisplayInfo,
54
+ FileDialogOptions,
55
+ FileDialogResult,
56
+ MessageBoxOptions,
57
+ MessageBoxResult,
58
+ NotificationOptions,
59
+ PowerState,
60
+ ShortcutOptions,
61
+ TrayMenuItem,
62
+ TrayOptions,
63
+ VersionInfo,
64
+ WindowBounds,
65
+ WindowOptions,
66
+ } from "../rpc-schema";
67
+ import type { SendToWebview } from "../types.js";
68
+ import {
69
+ createBugReportBundle,
70
+ getStartupDiagnosticLogTail,
71
+ getStartupDiagnosticsSnapshot,
72
+ } from "./agent";
73
+ import {
74
+ isAppActive,
75
+ isKeyWindow,
76
+ makeKeyAndOrderFront,
77
+ orderOut,
78
+ } from "./mac-window-effects";
79
+ import {
80
+ linuxSysfsOnBattery,
81
+ parseLinuxLockedHintOutput,
82
+ parseMacOsHidIdleTimeOutput,
83
+ parseMacOsPowerSourceOutput,
84
+ parseMacOsSessionLockedOutput,
85
+ parseWindowsIdleTimeOutput,
86
+ parseWindowsLockStateOutput,
87
+ parseWindowsPowerLineOutput,
88
+ parseXprintidleOutput,
89
+ } from "./power-state";
90
+ import { checkWebGpuSupport } from "./webgpu-browser-support";
91
+
92
+ interface SetAlwaysOnTopOptions {
93
+ flag: boolean;
94
+ level?: string;
95
+ }
96
+
97
+ interface SetFullscreenOptions {
98
+ flag: boolean;
99
+ }
100
+
101
+ interface SetOpacityOptions {
102
+ opacity: number;
103
+ }
104
+
105
+ interface OpenExternalOptions {
106
+ url: string;
107
+ }
108
+
109
+ interface ShowItemInFolderOptions {
110
+ path: string;
111
+ }
112
+
113
+ type ElectrobunEventHandler = (...args: unknown[]) => void;
114
+
115
+ interface ElectrobunEventTarget {
116
+ off?: (event: string, handler: ElectrobunEventHandler) => void;
117
+ removeListener?: (event: string, handler: ElectrobunEventHandler) => void;
118
+ }
119
+
120
+ // ============================================================================
121
+ // Path name mapping: legacy desktop path names -> Utils.paths equivalents
122
+ // ============================================================================
123
+
124
+ const PATH_NAME_MAP: Record<string, string | (() => string)> = {
125
+ home: Utils.paths.home,
126
+ appData: Utils.paths.appData,
127
+ userData: Utils.paths.userData,
128
+ userCache: Utils.paths.userCache,
129
+ userLogs: Utils.paths.userLogs,
130
+ temp: Utils.paths.temp,
131
+ cache: Utils.paths.cache,
132
+ logs: Utils.paths.logs,
133
+ config: Utils.paths.config,
134
+ documents: Utils.paths.documents,
135
+ downloads: Utils.paths.downloads,
136
+ desktop: Utils.paths.desktop,
137
+ pictures: Utils.paths.pictures,
138
+ music: Utils.paths.music,
139
+ videos: Utils.paths.videos,
140
+ };
141
+
142
+ const DEFAULT_RELEASE_NOTES_URL = getBrandConfig().releaseUrl;
143
+ const RELEASE_NOTES_PARTITION = getBrandConfig().releaseNotesPartition;
144
+ const MACOS_IDLE_THRESHOLD_SECONDS = 60;
145
+ const MACOS_CGSESSION_PATH =
146
+ "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession";
147
+ const LINUX_IDLE_THRESHOLD_SECONDS = 60;
148
+ const WINDOWS_IDLE_THRESHOLD_SECONDS = 60;
149
+ const POWER_STATE_PROBE_TIMEOUT_MS = 1_500;
150
+
151
+ let activeDesktopManager: DesktopManager | null = null;
152
+ let nativeContextMenuEventsInstalled = false;
153
+
154
+ export function resetDesktopManagerForTesting(): void {
155
+ activeDesktopManager = null;
156
+ nativeContextMenuEventsInstalled = false;
157
+ }
158
+
159
+ /**
160
+ * Injectable shell-runner used by every native power-state probe in this
161
+ * module. Tests override this via {@link setNativeShellRunnerForTesting} so
162
+ * `pmset`, `ioreg`, `CGSession`, `xprintidle`, `loginctl`, `powershell`, and
163
+ * other host subprocesses are never invoked on developer machines during
164
+ * unit / integration runs.
165
+ */
166
+ export interface NativeShellRunner {
167
+ read(argv: string[]): Promise<string>;
168
+ readSafe(argv: string[], timeoutMs?: number): Promise<string | null>;
169
+ }
170
+
171
+ const realNativeShellRunner: NativeShellRunner = {
172
+ async read(argv) {
173
+ const proc = Bun.spawn(argv, {
174
+ stdout: "pipe",
175
+ stderr: "ignore",
176
+ });
177
+ const text = await new Response(proc.stdout).text();
178
+ await proc.exited;
179
+ return text;
180
+ },
181
+ async readSafe(argv, timeoutMs = POWER_STATE_PROBE_TIMEOUT_MS) {
182
+ try {
183
+ const proc = Bun.spawn(argv, {
184
+ stdout: "pipe",
185
+ stderr: "ignore",
186
+ });
187
+ const timer = setTimeout(() => {
188
+ try {
189
+ proc.kill();
190
+ } catch {
191
+ // already exited
192
+ }
193
+ }, timeoutMs);
194
+ const text = await new Response(proc.stdout).text();
195
+ await proc.exited;
196
+ clearTimeout(timer);
197
+ if (typeof proc.exitCode === "number" && proc.exitCode !== 0) {
198
+ return null;
199
+ }
200
+ return text;
201
+ } catch {
202
+ return null;
203
+ }
204
+ },
205
+ };
206
+
207
+ let activeNativeShellRunner: NativeShellRunner = realNativeShellRunner;
208
+
209
+ /**
210
+ * Test-only seam: swap the native shell runner used by power-state probes.
211
+ * Pass `null` to restore the real `Bun.spawn`-backed implementation.
212
+ */
213
+ export function setNativeShellRunnerForTesting(
214
+ runner: NativeShellRunner | null,
215
+ ): void {
216
+ activeNativeShellRunner = runner ?? realNativeShellRunner;
217
+ }
218
+
219
+ function readProcessStdout(argv: string[]): Promise<string> {
220
+ return activeNativeShellRunner.read(argv);
221
+ }
222
+
223
+ function readProcessStdoutSafe(
224
+ argv: string[],
225
+ timeoutMs = POWER_STATE_PROBE_TIMEOUT_MS,
226
+ ): Promise<string | null> {
227
+ return activeNativeShellRunner.readSafe(argv, timeoutMs);
228
+ }
229
+
230
+ async function readLinuxLockedHint(): Promise<boolean | null> {
231
+ const sessionId = process.env.XDG_SESSION_ID?.trim();
232
+ if (!sessionId) {
233
+ return null;
234
+ }
235
+ const output = await readProcessStdoutSafe([
236
+ "loginctl",
237
+ "show-session",
238
+ sessionId,
239
+ "-p",
240
+ "LockedHint",
241
+ ]);
242
+ return output ? parseLinuxLockedHintOutput(output) : null;
243
+ }
244
+
245
+ const WINDOWS_IDLE_POWERSHELL_SCRIPT = [
246
+ "Add-Type -Namespace W -Name U32 -MemberDefinition @'",
247
+ ' [DllImport("user32.dll")] public static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);',
248
+ " [StructLayout(LayoutKind.Sequential)] public struct LASTINPUTINFO {",
249
+ " public uint cbSize; public uint dwTime;",
250
+ " }",
251
+ "'@;",
252
+ "$info = New-Object W.U32+LASTINPUTINFO;",
253
+ "$info.cbSize = [System.Runtime.InteropServices.Marshal]::SizeOf($info);",
254
+ "[void][W.U32]::GetLastInputInfo([ref]$info);",
255
+ "[int]($env:COMPUTERNAME | Out-Null);",
256
+ "[int][System.Environment]::TickCount - [int]$info.dwTime",
257
+ ].join(" ");
258
+
259
+ // ============================================================================
260
+ // DesktopManager
261
+ // ============================================================================
262
+
263
+ /**
264
+ * Desktop Manager — handles all native desktop features for Electrobun.
265
+ *
266
+ * This implementation does not register IPC handlers.
267
+ * Methods are called directly from rpc-handlers.ts. Push events to the
268
+ * webview are sent via the sendToWebview callback.
269
+ */
270
+ export class DesktopManager {
271
+ private mainWindow: BrowserWindow | null = null;
272
+ private tray: Tray | null = null;
273
+ private releaseNotesWindow: BrowserWindow | null = null;
274
+ private releaseNotesView: BrowserView | null = null;
275
+ private shortcuts: Map<string, ShortcutOptions> = new Map();
276
+ private notificationCounter = 0;
277
+ private sendToWebview: SendToWebview | null = null;
278
+ private _windowFocused = true;
279
+ private _windowHidden = false;
280
+ private _focusPoller: ReturnType<typeof setInterval> | null = null;
281
+ private _appActive = false;
282
+
283
+ // Callback to open the settings window (set by index.ts)
284
+ private openSettingsCallback: ((tabHint?: string) => void) | null = null;
285
+ private openSurfaceWindowCallback:
286
+ | ((
287
+ surface:
288
+ | "chat"
289
+ | "browser"
290
+ | "release"
291
+ | "triggers"
292
+ | "plugins"
293
+ | "connectors"
294
+ | "cloud",
295
+ browse?: string,
296
+ alwaysOnTop?: boolean,
297
+ ) => Promise<DesktopManagedWindowSnapshot> | DesktopManagedWindowSnapshot)
298
+ | null = null;
299
+ private openAppWindowCallback:
300
+ | ((options: {
301
+ slug?: string;
302
+ title: string;
303
+ path: string;
304
+ alwaysOnTop?: boolean;
305
+ }) =>
306
+ | Promise<DesktopManagedWindowSnapshot>
307
+ | DesktopManagedWindowSnapshot)
308
+ | null = null;
309
+ private managedWindowAlwaysOnTopCallback:
310
+ | ((id: string, flag: boolean) => boolean)
311
+ | null = null;
312
+ private openExternalHandler:
313
+ | ((url: string) => boolean | Promise<boolean>)
314
+ | null = null;
315
+ private requestQuitCallback: (() => void | Promise<void>) | null = null;
316
+ private restoreMainWindowCallback: (() => void | Promise<void>) | null = null;
317
+
318
+ // Track menu items for context-menu-clicked matching
319
+ private trayMenuItems: Map<string, TrayMenuItem> = new Map();
320
+ private trayClickHandler: (() => void) | null = null;
321
+ private contextMenuHandler: ElectrobunEventHandler | null = null;
322
+ private windowEventHandlers: Partial<
323
+ Record<"focus" | "blur" | "close" | "resize" | "move", () => void>
324
+ > = {};
325
+ private appExitStarted = false;
326
+
327
+ constructor() {
328
+ activeDesktopManager = this;
329
+ this.ensureNativeContextMenuEvents();
330
+ }
331
+
332
+ // MARK: - Configuration
333
+
334
+ /**
335
+ * Set the main BrowserWindow reference and wire up window events.
336
+ */
337
+ setMainWindow(window: BrowserWindow): void {
338
+ if (this.mainWindow === window) {
339
+ return;
340
+ }
341
+
342
+ this.teardownWindowEvents(this.mainWindow);
343
+ this.mainWindow = window;
344
+ this.setupWindowEvents();
345
+ }
346
+
347
+ async getShellDiagnosticsState(): Promise<{
348
+ trayPresent: boolean;
349
+ mainWindowPresent: boolean;
350
+ windowVisible: boolean;
351
+ windowFocused: boolean;
352
+ }> {
353
+ return {
354
+ trayPresent: Boolean(this.tray),
355
+ mainWindowPresent: Boolean(this.mainWindow),
356
+ windowVisible: (await this.isWindowVisible()).visible,
357
+ windowFocused: this._windowFocused,
358
+ };
359
+ }
360
+
361
+ /**
362
+ * Set the callback used to push messages to the webview renderer.
363
+ */
364
+ setSendToWebview(fn: SendToWebview): void {
365
+ this.sendToWebview = fn;
366
+ }
367
+
368
+ /**
369
+ * Set the callback used to open the settings window from menus.
370
+ */
371
+ setOpenSettingsCallback(cb: (tabHint?: string) => void): void {
372
+ this.openSettingsCallback = cb;
373
+ }
374
+
375
+ /**
376
+ * Set the callback used to open detached surface windows from RPC or menus.
377
+ */
378
+ setOpenSurfaceWindowCallback(
379
+ cb: (
380
+ surface:
381
+ | "chat"
382
+ | "browser"
383
+ | "release"
384
+ | "triggers"
385
+ | "plugins"
386
+ | "connectors"
387
+ | "cloud",
388
+ browse?: string,
389
+ alwaysOnTop?: boolean,
390
+ ) => Promise<DesktopManagedWindowSnapshot> | DesktopManagedWindowSnapshot,
391
+ ): void {
392
+ this.openSurfaceWindowCallback = cb;
393
+ }
394
+
395
+ setOpenAppWindowCallback(
396
+ cb:
397
+ | ((options: {
398
+ slug?: string;
399
+ title: string;
400
+ path: string;
401
+ alwaysOnTop?: boolean;
402
+ }) =>
403
+ | Promise<DesktopManagedWindowSnapshot>
404
+ | DesktopManagedWindowSnapshot)
405
+ | null,
406
+ ): void {
407
+ this.openAppWindowCallback = cb;
408
+ }
409
+
410
+ setManagedWindowAlwaysOnTopCallback(
411
+ cb: ((id: string, flag: boolean) => boolean) | null,
412
+ ): void {
413
+ this.managedWindowAlwaysOnTopCallback = cb;
414
+ }
415
+
416
+ /**
417
+ * Optionally handle trusted external URLs inside an app-managed window.
418
+ */
419
+ setOpenExternalHandler(
420
+ cb: ((url: string) => boolean | Promise<boolean>) | null,
421
+ ): void {
422
+ this.openExternalHandler = cb;
423
+ }
424
+
425
+ setRequestQuitCallback(cb: (() => void | Promise<void>) | null): void {
426
+ this.requestQuitCallback = cb;
427
+ }
428
+
429
+ setRestoreMainWindowCallback(cb: (() => void | Promise<void>) | null): void {
430
+ this.restoreMainWindowCallback = cb;
431
+ }
432
+
433
+ clearMainWindow(window?: BrowserWindow | null): void {
434
+ if (!window || this.mainWindow === window) {
435
+ this.teardownWindowEvents(this.mainWindow);
436
+ this.mainWindow = null;
437
+ }
438
+ }
439
+
440
+ /**
441
+ * Open the settings window via the registered callback.
442
+ */
443
+ openSettings(tabHint?: string): void {
444
+ this.openSettingsCallback?.(tabHint);
445
+ }
446
+
447
+ /**
448
+ * Open a detached surface window via the registered callback.
449
+ */
450
+ openSurfaceWindow(
451
+ surface:
452
+ | "chat"
453
+ | "browser"
454
+ | "release"
455
+ | "triggers"
456
+ | "plugins"
457
+ | "connectors"
458
+ | "cloud",
459
+ browse?: string,
460
+ alwaysOnTop?: boolean,
461
+ ): Promise<DesktopManagedWindowSnapshot | null> {
462
+ return Promise.resolve(
463
+ this.openSurfaceWindowCallback?.(surface, browse, alwaysOnTop) ?? null,
464
+ );
465
+ }
466
+
467
+ async openAppWindow(options: {
468
+ slug?: string;
469
+ title: string;
470
+ path: string;
471
+ alwaysOnTop?: boolean;
472
+ }): Promise<DesktopManagedWindowSnapshot | null> {
473
+ return this.openAppWindowCallback?.(options) ?? null;
474
+ }
475
+
476
+ setManagedWindowAlwaysOnTop(id: string, flag: boolean): boolean {
477
+ return this.managedWindowAlwaysOnTopCallback?.(id, flag) ?? false;
478
+ }
479
+
480
+ private getWindow(): BrowserWindow | null {
481
+ return this.mainWindow ?? null;
482
+ }
483
+
484
+ private send(message: string, payload?: unknown): void {
485
+ if (this.sendToWebview) {
486
+ this.sendToWebview(message, payload);
487
+ }
488
+ }
489
+
490
+ private ensureNativeContextMenuEvents(): void {
491
+ activeDesktopManager = this;
492
+ if (nativeContextMenuEventsInstalled) {
493
+ return;
494
+ }
495
+
496
+ nativeContextMenuEventsInstalled = true;
497
+ ContextMenu.on("context-menu-clicked", (event) => {
498
+ activeDesktopManager?.handleNativeContextMenuClick(
499
+ event as {
500
+ data?: {
501
+ action?: string;
502
+ data?: { text?: string };
503
+ };
504
+ },
505
+ );
506
+ });
507
+ }
508
+
509
+ private handleNativeContextMenuClick(event: {
510
+ data?: { action?: string; data?: { text?: string } };
511
+ }): void {
512
+ const action = event.data?.action;
513
+ const text = event.data?.data?.text?.trim();
514
+
515
+ if (!action) {
516
+ return;
517
+ }
518
+
519
+ if (action === "copy-selection") {
520
+ if (text) {
521
+ Utils.clipboardWriteText(text);
522
+ }
523
+ return;
524
+ }
525
+
526
+ if (!text) {
527
+ return;
528
+ }
529
+
530
+ if (action === "ask-agent") {
531
+ this.send("contextMenuAskAgent", { text });
532
+ return;
533
+ }
534
+
535
+ if (action === "quote-in-chat") {
536
+ this.send("contextMenuQuoteInChat", { text });
537
+ return;
538
+ }
539
+
540
+ if (action === "create-skill") {
541
+ this.send("contextMenuCreateSkill", { text });
542
+ return;
543
+ }
544
+
545
+ if (action === "save-as-command") {
546
+ this.send("contextMenuSaveAsCommand", { text });
547
+ }
548
+ }
549
+
550
+ // MARK: - System Tray
551
+
552
+ async createTray(options: TrayOptions): Promise<void> {
553
+ if (this.tray) {
554
+ await this.destroyTray();
555
+ }
556
+
557
+ const iconPath = this.resolveIconPath(options.icon);
558
+
559
+ this.tray = new Tray({
560
+ title: options.tooltip ?? options.title ?? "",
561
+ image: iconPath,
562
+ });
563
+
564
+ if (options.title && process.platform === "darwin") {
565
+ this.tray.setTitle(options.title);
566
+ }
567
+
568
+ if (options.menu) {
569
+ this.setTrayMenu({ menu: options.menu });
570
+ }
571
+
572
+ this.setupTrayEvents();
573
+ }
574
+
575
+ async updateTray(options: Partial<TrayOptions>): Promise<void> {
576
+ if (!this.tray) return;
577
+
578
+ if (options.icon) {
579
+ const iconPath = this.resolveIconPath(options.icon);
580
+ this.tray.setImage(iconPath);
581
+ }
582
+
583
+ if (options.title !== undefined && process.platform === "darwin") {
584
+ this.tray.setTitle(options.title);
585
+ }
586
+
587
+ if (options.menu) {
588
+ this.setTrayMenu({ menu: options.menu });
589
+ }
590
+ }
591
+
592
+ async destroyTray(): Promise<void> {
593
+ this.teardownTrayEvents();
594
+ if (this.tray) {
595
+ this.tray.remove();
596
+ this.tray = null;
597
+ }
598
+ this.trayMenuItems.clear();
599
+ }
600
+
601
+ setTrayMenu(options: { menu: TrayMenuItem[] }): void {
602
+ if (!this.tray) return;
603
+
604
+ // Store menu items for action matching
605
+ this.trayMenuItems.clear();
606
+ this.indexMenuItems(options.menu);
607
+
608
+ const template = this.buildMenuTemplate(options.menu);
609
+ this.tray.setMenu(template);
610
+ }
611
+
612
+ /**
613
+ * Recursively index menu items by id for context-menu-clicked matching.
614
+ */
615
+ private indexMenuItems(items: TrayMenuItem[]): void {
616
+ for (const item of items) {
617
+ if (item.id) {
618
+ this.trayMenuItems.set(item.id, item);
619
+ }
620
+ if (item.submenu) {
621
+ this.indexMenuItems(item.submenu);
622
+ }
623
+ }
624
+ }
625
+
626
+ /**
627
+ * Convert TrayMenuItem[] to Electrobun's menu format.
628
+ * Electrobun uses { type, label, action, submenu? }.
629
+ */
630
+ private buildMenuTemplate(items: TrayMenuItem[]): MenuItemConfig[] {
631
+ return items.map((item): MenuItemConfig => {
632
+ if (item.type === "separator") {
633
+ return { type: "separator" };
634
+ }
635
+
636
+ const menuItem: MenuItemConfig & { type: "normal" } = {
637
+ type: "normal",
638
+ label: item.label ?? "",
639
+ // Use the item id as the action identifier for matching clicks
640
+ action: item.id,
641
+ };
642
+
643
+ if (item.enabled === false) {
644
+ menuItem.enabled = false;
645
+ }
646
+
647
+ if (item.submenu) {
648
+ menuItem.submenu = this.buildMenuTemplate(item.submenu);
649
+ }
650
+
651
+ return menuItem;
652
+ });
653
+ }
654
+
655
+ private setupTrayEvents(): void {
656
+ if (!this.tray) return;
657
+
658
+ this.teardownTrayEvents();
659
+
660
+ // Electrobun tray click is simpler — no bounds/modifiers
661
+ this.trayClickHandler = () => {
662
+ void this.showWindow().catch((err: unknown) => {
663
+ logger.warn(
664
+ `[Desktop] Failed to show window from tray click: ${err instanceof Error ? err.message : String(err)}`,
665
+ );
666
+ });
667
+ this.send("desktopTrayClick", {
668
+ x: 0,
669
+ y: 0,
670
+ button: "left",
671
+ modifiers: { alt: false, shift: false, ctrl: false, meta: false },
672
+ });
673
+ };
674
+ this.tray.on("tray-clicked", this.trayClickHandler);
675
+
676
+ const triggerAgentRestart = () => {
677
+ // Lazy import to avoid circular dependency (agent → desktop → agent).
678
+ import("./agent").then(({ getAgentManager }) => {
679
+ getAgentManager()
680
+ .restart()
681
+ .catch((err: unknown) => {
682
+ logger.error(
683
+ `[Desktop] Agent restart failed: ${err instanceof Error ? err.message : String(err)}`,
684
+ );
685
+ });
686
+ });
687
+ };
688
+
689
+ // Tray menu item clicks fire "tray-clicked" on the global event bus
690
+ // (NOT "context-menu-clicked" — that's for right-click context menus).
691
+ // The event data shape is { data: { id, action, data? } }.
692
+ // Electrobun emits ElectrobunEvent<TrayClickedData> for tray-clicked;
693
+ // the shape carries { data: { action, id, data? } }.
694
+ this.contextMenuHandler = ((e: { data?: { action?: string } }): void => {
695
+ const action = e?.data?.action;
696
+ if (!action) return;
697
+
698
+ // Native actions — these must work even when the renderer RPC bridge
699
+ // is not yet connected (e.g. PGLite init on Windows can take 240s).
700
+ if (action === "show" || action === "tray-show-window") {
701
+ void this.showWindow().catch((err: unknown) => {
702
+ logger.warn(
703
+ `[Desktop] Failed to show window from tray menu: ${err instanceof Error ? err.message : String(err)}`,
704
+ );
705
+ });
706
+ } else if (action === "tray-hide-window") {
707
+ void this.hideWindow().catch((err: unknown) => {
708
+ logger.warn(
709
+ `[Desktop] Failed to hide window from tray menu: ${err instanceof Error ? err.message : String(err)}`,
710
+ );
711
+ });
712
+ } else if (action === "restart-agent" || action === "tray-restart") {
713
+ triggerAgentRestart();
714
+ } else if (action === "quit") {
715
+ Utils.quit();
716
+ } else if (action === "open-settings") {
717
+ this.openSettingsCallback?.();
718
+ }
719
+
720
+ // Renderer notification for all items
721
+ const menuItem = this.trayMenuItems.get(action);
722
+ if (menuItem) {
723
+ this.send("desktopTrayMenuClick", {
724
+ itemId: menuItem.id,
725
+ checked:
726
+ menuItem.type === "checkbox" ? !menuItem.checked : menuItem.checked,
727
+ });
728
+ }
729
+ }) as ElectrobunEventHandler;
730
+ Electrobun.events.on(
731
+ "tray-clicked",
732
+ this.contextMenuHandler as ElectrobunEventHandler,
733
+ );
734
+ }
735
+
736
+ private teardownTrayEvents(): void {
737
+ this.removeEventHandler(this.tray, "tray-clicked", this.trayClickHandler);
738
+ this.removeEventHandler(
739
+ Electrobun.events,
740
+ "tray-clicked",
741
+ this.contextMenuHandler,
742
+ );
743
+ this.trayClickHandler = null;
744
+ this.contextMenuHandler = null;
745
+ }
746
+
747
+ private removeEventHandler(
748
+ target: unknown,
749
+ event: string,
750
+ handler: ElectrobunEventHandler | null | undefined,
751
+ ): void {
752
+ const eventTarget = target as ElectrobunEventTarget | null | undefined;
753
+ if (!eventTarget || !handler) {
754
+ return;
755
+ }
756
+
757
+ if (typeof eventTarget.off === "function") {
758
+ eventTarget.off(event, handler);
759
+ return;
760
+ }
761
+
762
+ if (typeof eventTarget.removeListener === "function") {
763
+ eventTarget.removeListener(event, handler);
764
+ }
765
+ }
766
+
767
+ // MARK: - Global Shortcuts
768
+
769
+ async registerShortcut(
770
+ options: ShortcutOptions,
771
+ ): Promise<{ success: boolean }> {
772
+ // Unregister existing shortcut with same id
773
+ if (this.shortcuts.has(options.id)) {
774
+ const existing = this.shortcuts.get(options.id);
775
+ if (existing) {
776
+ GlobalShortcut.unregister(existing.accelerator);
777
+ }
778
+ }
779
+
780
+ try {
781
+ GlobalShortcut.register(options.accelerator, () => {
782
+ this.send("desktopShortcutPressed", {
783
+ id: options.id,
784
+ accelerator: options.accelerator,
785
+ });
786
+ });
787
+ this.shortcuts.set(options.id, options);
788
+ return { success: true };
789
+ } catch {
790
+ return { success: false };
791
+ }
792
+ }
793
+
794
+ async unregisterShortcut(options: { id: string }): Promise<void> {
795
+ const shortcut = this.shortcuts.get(options.id);
796
+ if (shortcut) {
797
+ GlobalShortcut.unregister(shortcut.accelerator);
798
+ this.shortcuts.delete(options.id);
799
+ }
800
+ }
801
+
802
+ async unregisterAllShortcuts(): Promise<void> {
803
+ GlobalShortcut.unregisterAll();
804
+ this.shortcuts.clear();
805
+ }
806
+
807
+ async isShortcutRegistered(options: {
808
+ accelerator: string;
809
+ }): Promise<{ registered: boolean }> {
810
+ return { registered: GlobalShortcut.isRegistered(options.accelerator) };
811
+ }
812
+
813
+ // MARK: - Auto Launch
814
+
815
+ async setAutoLaunch(options: {
816
+ enabled: boolean;
817
+ openAsHidden?: boolean;
818
+ }): Promise<void> {
819
+ const appPath = process.execPath;
820
+
821
+ const openAsHidden = options.openAsHidden ?? false;
822
+
823
+ if (process.platform === "darwin") {
824
+ await this.setAutoLaunchMac(options.enabled, appPath, openAsHidden);
825
+ } else if (process.platform === "linux") {
826
+ this.setAutoLaunchLinux(options.enabled, appPath, openAsHidden);
827
+ } else if (process.platform === "win32") {
828
+ await this.setAutoLaunchWin(options.enabled, appPath, openAsHidden);
829
+ } else {
830
+ logger.warn(
831
+ `[DesktopManager] setAutoLaunch: unsupported platform ${process.platform}`,
832
+ );
833
+ }
834
+ }
835
+
836
+ async getAutoLaunchStatus(): Promise<{
837
+ enabled: boolean;
838
+ openAsHidden: boolean;
839
+ }> {
840
+ if (process.platform === "darwin") {
841
+ const plistPath = this.getMacLaunchAgentPath();
842
+ if (!fs.existsSync(plistPath))
843
+ return { enabled: false, openAsHidden: false };
844
+ const content = fs.readFileSync(plistPath, "utf8");
845
+ return { enabled: true, openAsHidden: content.includes("--hidden") };
846
+ }
847
+
848
+ if (process.platform === "linux") {
849
+ const desktopPath = this.getLinuxAutostartPath();
850
+ if (!fs.existsSync(desktopPath))
851
+ return { enabled: false, openAsHidden: false };
852
+ const content = fs.readFileSync(desktopPath, "utf8");
853
+ return { enabled: true, openAsHidden: content.includes("--hidden") };
854
+ }
855
+
856
+ if (process.platform === "win32") {
857
+ const { enabled, openAsHidden } = await this.getAutoLaunchStatusWin();
858
+ return { enabled, openAsHidden };
859
+ }
860
+
861
+ return { enabled: false, openAsHidden: false };
862
+ }
863
+
864
+ // MARK: - Auto-launch helpers (macOS)
865
+
866
+ private getMacLaunchAgentPath(): string {
867
+ return path.join(
868
+ os.homedir(),
869
+ "Library",
870
+ "LaunchAgents",
871
+ getBrandConfig().macLaunchAgentPlist,
872
+ );
873
+ }
874
+
875
+ private async setAutoLaunchMac(
876
+ enabled: boolean,
877
+ appPath: string,
878
+ openAsHidden = false,
879
+ ): Promise<void> {
880
+ const plistPath = this.getMacLaunchAgentPath();
881
+
882
+ if (enabled) {
883
+ const hiddenArg = openAsHidden ? "\n <string>--hidden</string>" : "";
884
+ const plistContent = `<?xml version="1.0" encoding="UTF-8"?>
885
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
886
+ <plist version="1.0">
887
+ <dict>
888
+ <key>Label</key>
889
+ <string>${getBrandConfig().macLaunchAgentLabel}</string>
890
+ <key>ProgramArguments</key>
891
+ <array>
892
+ <string>${appPath}</string>${hiddenArg}
893
+ </array>
894
+ <key>RunAtLoad</key>
895
+ <true/>
896
+ <key>KeepAlive</key>
897
+ <false/>
898
+ </dict>
899
+ </plist>
900
+ `;
901
+ const dir = path.dirname(plistPath);
902
+ if (!fs.existsSync(dir)) {
903
+ fs.mkdirSync(dir, { recursive: true });
904
+ }
905
+ fs.writeFileSync(plistPath, plistContent, "utf8");
906
+
907
+ const proc = Bun.spawn(["launchctl", "load", plistPath], {
908
+ stdout: "pipe",
909
+ stderr: "pipe",
910
+ });
911
+ await proc.exited;
912
+ } else {
913
+ if (fs.existsSync(plistPath)) {
914
+ const proc = Bun.spawn(["launchctl", "unload", plistPath], {
915
+ stdout: "pipe",
916
+ stderr: "pipe",
917
+ });
918
+ await proc.exited;
919
+ fs.unlinkSync(plistPath);
920
+ }
921
+ }
922
+ }
923
+
924
+ // MARK: - Auto-launch helpers (Linux)
925
+
926
+ private getLinuxAutostartPath(): string {
927
+ return path.join(
928
+ os.homedir(),
929
+ ".config",
930
+ "autostart",
931
+ getBrandConfig().linuxDesktopFileName,
932
+ );
933
+ }
934
+
935
+ private setAutoLaunchLinux(
936
+ enabled: boolean,
937
+ appPath: string,
938
+ openAsHidden = false,
939
+ ): void {
940
+ const desktopPath = this.getLinuxAutostartPath();
941
+
942
+ if (enabled) {
943
+ const execLine = openAsHidden ? `${appPath} --hidden` : appPath;
944
+ const desktopContent = `[Desktop Entry]
945
+ Type=Application
946
+ Name=${getBrandConfig().linuxDesktopEntryName}
947
+ Exec=${execLine}
948
+ X-GNOME-Autostart-enabled=true
949
+ `;
950
+ const dir = path.dirname(desktopPath);
951
+ if (!fs.existsSync(dir)) {
952
+ fs.mkdirSync(dir, { recursive: true });
953
+ }
954
+ fs.writeFileSync(desktopPath, desktopContent, "utf8");
955
+ } else {
956
+ if (fs.existsSync(desktopPath)) {
957
+ fs.unlinkSync(desktopPath);
958
+ }
959
+ }
960
+ }
961
+
962
+ // MARK: - Auto-launch helpers (Windows)
963
+
964
+ private readonly WIN_REG_KEY =
965
+ "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
966
+
967
+ private async setAutoLaunchWin(
968
+ enabled: boolean,
969
+ appPath: string,
970
+ openAsHidden = false,
971
+ ): Promise<void> {
972
+ if (enabled) {
973
+ const launchValue = openAsHidden ? `${appPath} --hidden` : appPath;
974
+ const proc = Bun.spawn(
975
+ [
976
+ "reg",
977
+ "add",
978
+ this.WIN_REG_KEY,
979
+ "/v",
980
+ getBrandConfig().windowsRegistryValueName,
981
+ "/t",
982
+ "REG_SZ",
983
+ "/d",
984
+ launchValue,
985
+ "/f",
986
+ ],
987
+ { stdout: "pipe", stderr: "pipe" },
988
+ );
989
+ await proc.exited;
990
+ } else {
991
+ const proc = Bun.spawn(
992
+ [
993
+ "reg",
994
+ "delete",
995
+ this.WIN_REG_KEY,
996
+ "/v",
997
+ getBrandConfig().windowsRegistryValueName,
998
+ "/f",
999
+ ],
1000
+ { stdout: "pipe", stderr: "pipe" },
1001
+ );
1002
+ await proc.exited;
1003
+ }
1004
+ }
1005
+
1006
+ private async getAutoLaunchStatusWin(): Promise<{
1007
+ enabled: boolean;
1008
+ openAsHidden: boolean;
1009
+ }> {
1010
+ try {
1011
+ const proc = Bun.spawn(
1012
+ [
1013
+ "reg",
1014
+ "query",
1015
+ this.WIN_REG_KEY,
1016
+ "/v",
1017
+ getBrandConfig().windowsRegistryValueName,
1018
+ ],
1019
+ { stdout: "pipe", stderr: "pipe" },
1020
+ );
1021
+ const [stdout] = await Promise.all([
1022
+ new Response(proc.stdout).text(),
1023
+ proc.exited,
1024
+ ]);
1025
+ if (!stdout.includes(getBrandConfig().windowsRegistryValueName))
1026
+ return { enabled: false, openAsHidden: false };
1027
+ return { enabled: true, openAsHidden: stdout.includes("--hidden") };
1028
+ } catch {
1029
+ return { enabled: false, openAsHidden: false };
1030
+ }
1031
+ }
1032
+
1033
+ // MARK: - Window Management
1034
+
1035
+ async setWindowOptions(options: WindowOptions): Promise<void> {
1036
+ const win = this.getWindow();
1037
+ if (!win) return;
1038
+
1039
+ if (options.width !== undefined || options.height !== undefined) {
1040
+ const { width: currentW, height: currentH } = win.getSize();
1041
+ win.setSize(options.width ?? currentW, options.height ?? currentH);
1042
+ }
1043
+
1044
+ if (options.x !== undefined || options.y !== undefined) {
1045
+ const { x: currentX, y: currentY } = win.getPosition();
1046
+ win.setPosition(options.x ?? currentX, options.y ?? currentY);
1047
+ }
1048
+
1049
+ // minWidth/minHeight/maxWidth/maxHeight — not directly supported
1050
+ // in Electrobun BrowserWindow. Skip silently.
1051
+
1052
+ if (options.alwaysOnTop !== undefined) {
1053
+ win.setAlwaysOnTop(options.alwaysOnTop);
1054
+ }
1055
+
1056
+ if (options.fullscreen !== undefined) {
1057
+ win.setFullScreen(options.fullscreen);
1058
+ }
1059
+
1060
+ // opacity — no setOpacity in Electrobun (no-op)
1061
+ if (options.opacity !== undefined) {
1062
+ // No-op: Electrobun BrowserWindow does not support setOpacity
1063
+ }
1064
+
1065
+ if (options.title !== undefined) {
1066
+ win.setTitle(options.title);
1067
+ }
1068
+
1069
+ // resizable — not directly settable post-creation in Electrobun.
1070
+ // Skip silently.
1071
+ }
1072
+
1073
+ async getWindowBounds(): Promise<WindowBounds> {
1074
+ const win = this.getWindow();
1075
+ if (!win) return { x: 0, y: 0, width: 0, height: 0 };
1076
+ const { x, y } = win.getPosition();
1077
+ const { width, height } = win.getSize();
1078
+ return { x, y, width, height };
1079
+ }
1080
+
1081
+ async setWindowBounds(options: WindowBounds): Promise<void> {
1082
+ const win = this.getWindow();
1083
+ if (!win) return;
1084
+ win.setPosition(options.x, options.y);
1085
+ win.setSize(options.width, options.height);
1086
+ }
1087
+
1088
+ async minimizeWindow(): Promise<void> {
1089
+ this.getWindow()?.minimize();
1090
+ }
1091
+
1092
+ async unminimizeWindow(): Promise<void> {
1093
+ this.getWindow()?.unminimize();
1094
+ }
1095
+
1096
+ async maximizeWindow(): Promise<void> {
1097
+ this.getWindow()?.maximize();
1098
+ }
1099
+
1100
+ async unmaximizeWindow(): Promise<void> {
1101
+ this.getWindow()?.unmaximize();
1102
+ }
1103
+
1104
+ async closeWindow(): Promise<void> {
1105
+ this.getWindow()?.close();
1106
+ }
1107
+
1108
+ async showWindow(): Promise<void> {
1109
+ let win = this.mainWindow;
1110
+ if (!win) {
1111
+ await this.restoreMainWindowCallback?.();
1112
+ win = this.mainWindow;
1113
+ }
1114
+ if (!win) return;
1115
+ try {
1116
+ this.showMainWindow(win);
1117
+ } catch {
1118
+ this.clearMainWindow(win);
1119
+ await this.restoreMainWindowCallback?.();
1120
+ win = this.mainWindow;
1121
+ if (!win) return;
1122
+ this.showMainWindow(win);
1123
+ }
1124
+ }
1125
+
1126
+ async hideWindow(): Promise<void> {
1127
+ const win = this.mainWindow;
1128
+ if (!win) return;
1129
+ const ptr = (win as { ptr?: unknown }).ptr;
1130
+ if (ptr && process.platform === "darwin") {
1131
+ // orderOut removes the window from screen AND Cmd+Tab / Mission Control
1132
+ orderOut(ptr as Parameters<typeof orderOut>[0]);
1133
+ } else {
1134
+ // Non-macOS fallback: minimize
1135
+ win.minimize();
1136
+ }
1137
+ this._windowHidden = true;
1138
+ }
1139
+
1140
+ async focusWindow(): Promise<void> {
1141
+ this.getWindow()?.focus();
1142
+ }
1143
+
1144
+ async isWindowMaximized(): Promise<{ maximized: boolean }> {
1145
+ const win = this.getWindow();
1146
+ return { maximized: win ? win.isMaximized() : false };
1147
+ }
1148
+
1149
+ async isWindowMinimized(): Promise<{ minimized: boolean }> {
1150
+ const win = this.getWindow();
1151
+ return { minimized: win ? win.isMinimized() : false };
1152
+ }
1153
+
1154
+ async isWindowVisible(): Promise<{ visible: boolean }> {
1155
+ if (this._windowHidden) return { visible: false };
1156
+ const win = this.getWindow();
1157
+ if (!win) return { visible: false };
1158
+ return { visible: !win.isMinimized() };
1159
+ }
1160
+
1161
+ async isWindowFocused(): Promise<{ focused: boolean }> {
1162
+ return { focused: this._windowFocused };
1163
+ }
1164
+
1165
+ async setAlwaysOnTop(options: SetAlwaysOnTopOptions): Promise<void> {
1166
+ // Electrobun setAlwaysOnTop takes a boolean — ignore level
1167
+ this.getWindow()?.setAlwaysOnTop(options.flag);
1168
+ }
1169
+
1170
+ async setFullscreen(options: SetFullscreenOptions): Promise<void> {
1171
+ this.getWindow()?.setFullScreen(options.flag);
1172
+ }
1173
+
1174
+ async setOpacity(_options: SetOpacityOptions): Promise<void> {
1175
+ // No-op: Electrobun BrowserWindow does not support setOpacity
1176
+ }
1177
+
1178
+ private showMainWindow(win: BrowserWindow): void {
1179
+ const ptr = (win as { ptr?: unknown }).ptr;
1180
+ if (ptr && process.platform === "darwin") {
1181
+ makeKeyAndOrderFront(ptr as Parameters<typeof makeKeyAndOrderFront>[0]);
1182
+ } else {
1183
+ win.show();
1184
+ win.focus();
1185
+ }
1186
+ this._windowHidden = false;
1187
+ }
1188
+
1189
+ private setupWindowEvents(): void {
1190
+ const win = this.mainWindow;
1191
+ if (!win) return;
1192
+
1193
+ const focusHandler = () => {
1194
+ this._windowFocused = true;
1195
+ this.send("desktopWindowFocus");
1196
+ };
1197
+ this.windowEventHandlers.focus = focusHandler;
1198
+ win.on("focus", focusHandler);
1199
+
1200
+ // Blur via native event (Electrobun may not surface this, but try it for free)
1201
+ const blurHandler = () => {
1202
+ this._windowFocused = false;
1203
+ this.send("desktopWindowBlur");
1204
+ };
1205
+ this.windowEventHandlers.blur = blurHandler;
1206
+ win.on("blur", blurHandler);
1207
+
1208
+ const closeHandler = () => {
1209
+ this.send("desktopWindowClose");
1210
+ };
1211
+ this.windowEventHandlers.close = closeHandler;
1212
+ win.on("close", closeHandler);
1213
+
1214
+ const resizeHandler = () => {
1215
+ // Electrobun fires resize but doesn't distinguish maximize/unmaximize.
1216
+ // We detect state changes to emit the right event.
1217
+ if (win.isMaximized()) {
1218
+ this.send("desktopWindowMaximize");
1219
+ }
1220
+ };
1221
+ this.windowEventHandlers.resize = resizeHandler;
1222
+ win.on("resize", resizeHandler);
1223
+
1224
+ let wasMaximized = false;
1225
+ const moveHandler = () => {
1226
+ // Only emit desktopWindowUnmaximize when transitioning FROM maximized
1227
+ // to not-maximized, not on every move during a normal window drag.
1228
+ const isMaximized = win.isMaximized();
1229
+ if (wasMaximized && !isMaximized) {
1230
+ this.send("desktopWindowUnmaximize");
1231
+ }
1232
+ wasMaximized = isMaximized;
1233
+ };
1234
+ this.windowEventHandlers.move = moveHandler;
1235
+ win.on("move", moveHandler);
1236
+
1237
+ // Blur fallback: poll [NSWindow isKeyWindow] at 2Hz on macOS.
1238
+ // Electrobun does not guarantee blur events, so this gives bounded
1239
+ // ≤500ms latency for focus-loss detection.
1240
+ if (process.platform === "darwin") {
1241
+ this._startFocusPoller();
1242
+ }
1243
+ }
1244
+
1245
+ private teardownWindowEvents(window: BrowserWindow | null): void {
1246
+ if (!window) {
1247
+ return;
1248
+ }
1249
+
1250
+ this.removeEventHandler(window, "focus", this.windowEventHandlers.focus);
1251
+ this.removeEventHandler(window, "blur", this.windowEventHandlers.blur);
1252
+ this.removeEventHandler(window, "close", this.windowEventHandlers.close);
1253
+ this.removeEventHandler(window, "resize", this.windowEventHandlers.resize);
1254
+ this.removeEventHandler(window, "move", this.windowEventHandlers.move);
1255
+ this.windowEventHandlers = {};
1256
+ }
1257
+
1258
+ private _startFocusPoller(): void {
1259
+ if (this._focusPoller) return;
1260
+ this._focusPoller = setInterval(() => {
1261
+ const win = this.mainWindow;
1262
+ if (!win) return;
1263
+
1264
+ // Electrobun does not expose an application activation callback.
1265
+ // When the app becomes foreground again with only a minimized window
1266
+ // (for example via Dock click), restore it automatically.
1267
+ const appActive = isAppActive();
1268
+ if (!this._appActive && appActive && win.isMinimized()) {
1269
+ void this.showWindow();
1270
+ }
1271
+ this._appActive = appActive;
1272
+
1273
+ const ptr = (win as { ptr?: unknown }).ptr;
1274
+ if (!ptr) return;
1275
+ const focused = isKeyWindow(ptr as Parameters<typeof isKeyWindow>[0]);
1276
+ if (focused !== this._windowFocused) {
1277
+ this._windowFocused = focused;
1278
+ if (!focused) {
1279
+ this.send("desktopWindowBlur");
1280
+ }
1281
+ }
1282
+ }, 500);
1283
+ }
1284
+
1285
+ // MARK: - Notifications
1286
+
1287
+ async showNotification(
1288
+ options: NotificationOptions,
1289
+ ): Promise<{ id: string }> {
1290
+ const id = `notification_${++this.notificationCounter}`;
1291
+
1292
+ // Electrobun Utils.showNotification — fire-and-forget, no event callbacks
1293
+ Utils.showNotification({
1294
+ title: options.title,
1295
+ body: options.body,
1296
+ subtitle: undefined,
1297
+ silent: options.silent,
1298
+ });
1299
+
1300
+ return { id };
1301
+ }
1302
+
1303
+ async closeNotification(_options: { id: string }): Promise<void> {
1304
+ // Electrobun does not support programmatic notification dismissal.
1305
+ // No-op.
1306
+ }
1307
+
1308
+ // MARK: - Power Monitor
1309
+
1310
+ async getPowerState(): Promise<PowerState> {
1311
+ try {
1312
+ if (process.platform === "darwin") {
1313
+ const powerSource = parseMacOsPowerSourceOutput(
1314
+ await readProcessStdout(["pmset", "-g", "batt"]),
1315
+ );
1316
+ const idleTime =
1317
+ parseMacOsHidIdleTimeOutput(
1318
+ await readProcessStdout(["ioreg", "-c", "IOHIDSystem"]),
1319
+ ) ?? 0;
1320
+ const locked = fs.existsSync(MACOS_CGSESSION_PATH)
1321
+ ? parseMacOsSessionLockedOutput(
1322
+ await readProcessStdout([
1323
+ MACOS_CGSESSION_PATH,
1324
+ "-currentSession",
1325
+ ]),
1326
+ )
1327
+ : null;
1328
+ const idleState =
1329
+ locked === true
1330
+ ? "locked"
1331
+ : idleTime >= MACOS_IDLE_THRESHOLD_SECONDS
1332
+ ? "idle"
1333
+ : locked === false
1334
+ ? "active"
1335
+ : "unknown";
1336
+ return {
1337
+ onBattery: powerSource.known ? powerSource.onBattery : false,
1338
+ idleState,
1339
+ idleTime,
1340
+ };
1341
+ }
1342
+ if (process.platform === "linux") {
1343
+ const idleOutput = await readProcessStdoutSafe(["xprintidle"]);
1344
+ const idleTime =
1345
+ idleOutput !== null ? (parseXprintidleOutput(idleOutput) ?? 0) : 0;
1346
+ const locked = await readLinuxLockedHint();
1347
+ const idleState =
1348
+ locked === true
1349
+ ? "locked"
1350
+ : idleOutput === null
1351
+ ? "unknown"
1352
+ : idleTime >= LINUX_IDLE_THRESHOLD_SECONDS
1353
+ ? "idle"
1354
+ : locked === false
1355
+ ? "active"
1356
+ : "active";
1357
+ return {
1358
+ onBattery: linuxSysfsOnBattery(),
1359
+ idleState,
1360
+ idleTime,
1361
+ };
1362
+ }
1363
+ if (process.platform === "win32") {
1364
+ const batteryOutput = await readProcessStdoutSafe([
1365
+ "powershell",
1366
+ "-NoProfile",
1367
+ "-NoLogo",
1368
+ "-Command",
1369
+ "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SystemInformation]::PowerStatus.PowerLineStatus.ToString()",
1370
+ ]);
1371
+ const batteryParsed = batteryOutput
1372
+ ? parseWindowsPowerLineOutput(batteryOutput)
1373
+ : { onBattery: false, known: false };
1374
+ const idleOutput = await readProcessStdoutSafe([
1375
+ "powershell",
1376
+ "-NoProfile",
1377
+ "-NoLogo",
1378
+ "-Command",
1379
+ WINDOWS_IDLE_POWERSHELL_SCRIPT,
1380
+ ]);
1381
+ const idleTime =
1382
+ idleOutput !== null
1383
+ ? (parseWindowsIdleTimeOutput(idleOutput) ?? 0)
1384
+ : 0;
1385
+ const lockOutput = await readProcessStdoutSafe([
1386
+ "powershell",
1387
+ "-NoProfile",
1388
+ "-NoLogo",
1389
+ "-Command",
1390
+ "(Get-Process logonui -ErrorAction SilentlyContinue).Count",
1391
+ ]);
1392
+ const locked = lockOutput
1393
+ ? parseWindowsLockStateOutput(lockOutput)
1394
+ : null;
1395
+ const idleState =
1396
+ locked === true
1397
+ ? "locked"
1398
+ : idleOutput === null
1399
+ ? "unknown"
1400
+ : idleTime >= WINDOWS_IDLE_THRESHOLD_SECONDS
1401
+ ? "idle"
1402
+ : "active";
1403
+ return {
1404
+ onBattery: batteryParsed.known ? batteryParsed.onBattery : false,
1405
+ idleState,
1406
+ idleTime,
1407
+ };
1408
+ }
1409
+ } catch {
1410
+ // Fall through to stub below
1411
+ }
1412
+ return { onBattery: false, idleState: "unknown", idleTime: 0 };
1413
+ }
1414
+
1415
+ // MARK: - App
1416
+
1417
+ private async beginAppExit(reason: string): Promise<void> {
1418
+ if (this.appExitStarted) {
1419
+ return;
1420
+ }
1421
+ this.appExitStarted = true;
1422
+ await this.showWindow().catch(() => {});
1423
+ this.send("desktopShutdownStarted", { reason });
1424
+ await new Promise((resolve) => setTimeout(resolve, 150));
1425
+ }
1426
+
1427
+ async quit(): Promise<void> {
1428
+ await this.beginAppExit("desktop-quit");
1429
+ if (this.requestQuitCallback) {
1430
+ await this.requestQuitCallback();
1431
+ return;
1432
+ }
1433
+ Utils.quit();
1434
+ }
1435
+
1436
+ async relaunch(): Promise<void> {
1437
+ await this.beginAppExit("desktop-relaunch");
1438
+ try {
1439
+ const child = Bun.spawn([process.execPath, ...process.argv.slice(1)], {
1440
+ detached: true,
1441
+ stdout: "ignore",
1442
+ stderr: "ignore",
1443
+ stdin: "ignore",
1444
+ });
1445
+ // Detach so the new instance survives the parent quitting
1446
+ child.unref?.();
1447
+ } catch (err) {
1448
+ logger.error(
1449
+ `[DesktopManager] relaunch: failed to spawn new instance: ${err instanceof Error ? err.message : String(err)}`,
1450
+ );
1451
+ }
1452
+ Utils.quit();
1453
+ }
1454
+
1455
+ async getVersion(): Promise<VersionInfo> {
1456
+ let version = "0.0.0";
1457
+ try {
1458
+ version = await Updater.localInfo.version();
1459
+ } catch {
1460
+ // Updater may not be available in dev
1461
+ }
1462
+
1463
+ return {
1464
+ version,
1465
+ name: getBrandConfig().appName,
1466
+ runtime: `electrobun/${Bun.version}`,
1467
+ };
1468
+ }
1469
+
1470
+ async isPackaged(): Promise<{ packaged: boolean }> {
1471
+ // In Electrobun, check if running from a built bundle
1472
+ // DEV mode typically has specific env flags
1473
+ return {
1474
+ packaged:
1475
+ process.env.NODE_ENV === "production" || !process.env.ELECTROBUN_DEV,
1476
+ };
1477
+ }
1478
+
1479
+ async getPath(options: { name: string }): Promise<{ path: string }> {
1480
+ const mapped = PATH_NAME_MAP[options.name];
1481
+ if (typeof mapped === "function") {
1482
+ return { path: mapped() };
1483
+ }
1484
+ if (typeof mapped === "string") {
1485
+ return { path: mapped };
1486
+ }
1487
+
1488
+ // Fallback: try to return a sensible default under userData
1489
+ logger.warn(
1490
+ `[DesktopManager] Unknown path name "${options.name}", falling back to userData`,
1491
+ );
1492
+ return { path: Utils.paths.userData };
1493
+ }
1494
+
1495
+ async getStartupDiagnostics(): Promise<{
1496
+ state: "not_started" | "starting" | "running" | "stopped" | "error";
1497
+ phase: string;
1498
+ updatedAt: string;
1499
+ lastError: string | null;
1500
+ agentName: string | null;
1501
+ port: number | null;
1502
+ startedAt: number | null;
1503
+ platform: string;
1504
+ arch: string;
1505
+ configDir: string;
1506
+ logPath: string;
1507
+ statusPath: string;
1508
+ logTail: string;
1509
+ appVersion?: string;
1510
+ appRuntime?: string;
1511
+ packaged?: boolean;
1512
+ locale?: string;
1513
+ }> {
1514
+ const snapshot = getStartupDiagnosticsSnapshot();
1515
+ const version = await this.getVersion();
1516
+ const packaged = await this.isPackaged();
1517
+ const locale = Intl.DateTimeFormat().resolvedOptions().locale;
1518
+ return {
1519
+ ...snapshot,
1520
+ logTail: getStartupDiagnosticLogTail(),
1521
+ appVersion: version.version,
1522
+ appRuntime: version.runtime,
1523
+ packaged: packaged.packaged,
1524
+ locale,
1525
+ };
1526
+ }
1527
+
1528
+ async openLogsFolder(): Promise<void> {
1529
+ const diagnostics = getStartupDiagnosticsSnapshot();
1530
+ const folderPath = path.dirname(diagnostics.logPath);
1531
+ Utils.openPath(folderPath);
1532
+ }
1533
+
1534
+ async createBugReportBundle(options: {
1535
+ reportMarkdown: string;
1536
+ reportJson: Record<string, unknown>;
1537
+ prefix?: string;
1538
+ }): Promise<{
1539
+ directory: string;
1540
+ reportMarkdownPath: string;
1541
+ reportJsonPath: string;
1542
+ startupLogPath: string | null;
1543
+ startupStatusPath: string | null;
1544
+ }> {
1545
+ return createBugReportBundle(options);
1546
+ }
1547
+
1548
+ async checkForUpdates(): Promise<DesktopUpdaterSnapshot> {
1549
+ const availability = this.getUpdaterAvailability();
1550
+ if (!availability.canAutoUpdate) {
1551
+ return this.buildUpdaterSnapshot(undefined, availability);
1552
+ }
1553
+
1554
+ try {
1555
+ const result = await Updater.checkForUpdate();
1556
+ if (result?.updateAvailable) {
1557
+ void this.downloadUpdateWithRetry().catch((error: unknown) => {
1558
+ logger.warn(
1559
+ `[Desktop] Update download failed after retries: ${error instanceof Error ? error.message : String(error)}`,
1560
+ );
1561
+ });
1562
+ }
1563
+ return await this.getUpdaterState();
1564
+ } catch (error) {
1565
+ return this.buildUpdaterSnapshot(error, availability);
1566
+ }
1567
+ }
1568
+
1569
+ async getUpdaterState(): Promise<DesktopUpdaterSnapshot> {
1570
+ return this.buildUpdaterSnapshot();
1571
+ }
1572
+
1573
+ private async downloadUpdateWithRetry(
1574
+ maxAttempts = 3,
1575
+ baseDelayMs = 2_000,
1576
+ ): Promise<void> {
1577
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
1578
+ try {
1579
+ await Updater.downloadUpdate();
1580
+ return;
1581
+ } catch (error) {
1582
+ const isLastAttempt = attempt === maxAttempts;
1583
+ if (isLastAttempt) throw error;
1584
+ const delay = baseDelayMs * 2 ** (attempt - 1);
1585
+ logger.warn(
1586
+ `[Desktop] Update download attempt ${attempt}/${maxAttempts} failed, retrying in ${delay}ms: ${error instanceof Error ? error.message : String(error)}`,
1587
+ );
1588
+ await new Promise((resolve) => setTimeout(resolve, delay));
1589
+ }
1590
+ }
1591
+ }
1592
+
1593
+ async applyUpdate(): Promise<void> {
1594
+ const availability = this.getUpdaterAvailability();
1595
+ if (!availability.canAutoUpdate) {
1596
+ throw new Error(
1597
+ availability.autoUpdateDisabledReason ??
1598
+ "Auto-update is unavailable for this installation.",
1599
+ );
1600
+ }
1601
+
1602
+ Updater.applyUpdate();
1603
+ }
1604
+
1605
+ async getBuildInfo(): Promise<DesktopBuildInfo> {
1606
+ const config = await BuildConfig.get();
1607
+ return {
1608
+ platform: process.platform,
1609
+ arch: process.arch,
1610
+ defaultRenderer: config.defaultRenderer,
1611
+ availableRenderers: config.availableRenderers,
1612
+ cefVersion: config.cefVersion,
1613
+ bunVersion: config.bunVersion,
1614
+ runtime: config.runtime,
1615
+ };
1616
+ }
1617
+
1618
+ async getDockIconVisibility(): Promise<{ visible: boolean }> {
1619
+ if (process.platform !== "darwin") {
1620
+ return { visible: true };
1621
+ }
1622
+
1623
+ return {
1624
+ visible: Utils.isDockIconVisible?.() ?? true,
1625
+ };
1626
+ }
1627
+
1628
+ async setDockIconVisibility(options: {
1629
+ visible: boolean;
1630
+ }): Promise<{ visible: boolean }> {
1631
+ if (process.platform === "darwin") {
1632
+ Utils.setDockIconVisible?.(options.visible);
1633
+ }
1634
+
1635
+ return this.getDockIconVisibility();
1636
+ }
1637
+
1638
+ async showSelectionContextMenu(options: {
1639
+ text: string;
1640
+ }): Promise<{ shown: boolean }> {
1641
+ const text = options.text.trim();
1642
+ if (!text) {
1643
+ return { shown: false };
1644
+ }
1645
+
1646
+ const menu: ApplicationMenuItemConfig[] = [
1647
+ {
1648
+ type: "normal",
1649
+ label: "Ask Agent",
1650
+ action: "ask-agent",
1651
+ data: { text },
1652
+ },
1653
+ {
1654
+ type: "normal",
1655
+ label: "Quote in Chat",
1656
+ action: "quote-in-chat",
1657
+ data: { text },
1658
+ },
1659
+ {
1660
+ type: "normal",
1661
+ label: "Create Skill",
1662
+ action: "create-skill",
1663
+ data: { text },
1664
+ },
1665
+ {
1666
+ type: "normal",
1667
+ label: "Save as Command",
1668
+ action: "save-as-command",
1669
+ data: { text },
1670
+ },
1671
+ { type: "separator" },
1672
+ {
1673
+ type: "normal",
1674
+ label: "Copy Selection",
1675
+ action: "copy-selection",
1676
+ data: { text },
1677
+ },
1678
+ ];
1679
+
1680
+ ContextMenu.showContextMenu(menu);
1681
+ return { shown: true };
1682
+ }
1683
+
1684
+ async getSessionSnapshot(options: {
1685
+ partition: string;
1686
+ }): Promise<DesktopSessionSnapshot> {
1687
+ return this.readSessionSnapshot(options.partition);
1688
+ }
1689
+
1690
+ async clearSessionData(options: {
1691
+ partition: string;
1692
+ storageTypes?: DesktopSessionStorageType[] | "all";
1693
+ clearCookies?: boolean;
1694
+ }): Promise<DesktopSessionSnapshot> {
1695
+ const session = this.getSession(options.partition);
1696
+ const shouldClearCookies =
1697
+ options.clearCookies === true ||
1698
+ options.storageTypes === "all" ||
1699
+ options.storageTypes?.includes("cookies");
1700
+
1701
+ if (shouldClearCookies) {
1702
+ session.cookies.clear();
1703
+ }
1704
+
1705
+ if (options.storageTypes === "all") {
1706
+ session.clearStorageData("all");
1707
+ } else if (options.storageTypes) {
1708
+ const storageTypes = options.storageTypes.filter(
1709
+ (type) => type !== "cookies",
1710
+ );
1711
+ if (storageTypes.length > 0) {
1712
+ session.clearStorageData(
1713
+ storageTypes as Exclude<DesktopSessionStorageType, "cookies">[],
1714
+ );
1715
+ }
1716
+ }
1717
+
1718
+ return this.readSessionSnapshot(options.partition);
1719
+ }
1720
+
1721
+ async getWebGpuBrowserStatus(): Promise<
1722
+ ReturnType<typeof checkWebGpuSupport>
1723
+ > {
1724
+ const config = await BuildConfig.get();
1725
+ return checkWebGpuSupport(this.resolvePreferredBrowserRenderer(config));
1726
+ }
1727
+
1728
+ async openReleaseNotesWindow(options: {
1729
+ url: string;
1730
+ title?: string;
1731
+ }): Promise<DesktopReleaseNotesWindowInfo> {
1732
+ const url = this.normalizeReleaseNotesUrl(options.url);
1733
+ const title =
1734
+ options.title?.trim() || `${getBrandConfig().appName} Release Notes`;
1735
+
1736
+ if (this.releaseNotesWindow && this.releaseNotesView) {
1737
+ this.releaseNotesWindow.setTitle(title);
1738
+ if (this.releaseNotesView.url !== url) {
1739
+ this.releaseNotesView.loadURL(url);
1740
+ }
1741
+ this.releaseNotesWindow.focus();
1742
+ return {
1743
+ url,
1744
+ windowId: this.releaseNotesWindow.id,
1745
+ webviewId: this.releaseNotesView.id,
1746
+ };
1747
+ }
1748
+
1749
+ const buildConfig = await BuildConfig.get();
1750
+ const renderer = this.resolvePreferredBrowserRenderer(buildConfig);
1751
+ const win = new Electrobun.BrowserWindow({
1752
+ title,
1753
+ frame: {
1754
+ x: 170,
1755
+ y: 110,
1756
+ width: 1180,
1757
+ height: 860,
1758
+ },
1759
+ renderer,
1760
+ transparent: false,
1761
+ titleBarStyle: "default",
1762
+ });
1763
+
1764
+ // BrowserWindow always creates a default webview. Remove it so the
1765
+ // manual BrowserView becomes the only live browsing surface.
1766
+ win.webview.remove();
1767
+
1768
+ const view = new BrowserView({
1769
+ url,
1770
+ renderer,
1771
+ windowId: win.id,
1772
+ partition: RELEASE_NOTES_PARTITION,
1773
+ sandbox: true,
1774
+ navigationRules: JSON.stringify(
1775
+ this.buildReleaseNotesNavigationRules(url),
1776
+ ),
1777
+ frame: {
1778
+ x: 0,
1779
+ y: 0,
1780
+ width: win.frame.width,
1781
+ height: win.frame.height,
1782
+ },
1783
+ });
1784
+
1785
+ win.on("close", () => {
1786
+ this.releaseNotesView?.remove();
1787
+ this.releaseNotesWindow = null;
1788
+ this.releaseNotesView = null;
1789
+ });
1790
+
1791
+ this.releaseNotesWindow = win;
1792
+ this.releaseNotesView = view;
1793
+ win.focus();
1794
+
1795
+ return {
1796
+ url,
1797
+ windowId: win.id,
1798
+ webviewId: view.id,
1799
+ };
1800
+ }
1801
+
1802
+ // MARK: - Clipboard
1803
+
1804
+ async writeToClipboard(options: ClipboardWriteOptions): Promise<void> {
1805
+ if (options.text) {
1806
+ Utils.clipboardWriteText(options.text);
1807
+ } else if (options.image) {
1808
+ // clipboardWriteImage expects a Uint8Array — decode base64 before passing.
1809
+ const bytes = Buffer.from(options.image, "base64");
1810
+ Utils.clipboardWriteImage(new Uint8Array(bytes));
1811
+ }
1812
+ // html/rtf not supported by Electrobun clipboard — drop silently
1813
+ }
1814
+
1815
+ async readFromClipboard(): Promise<ClipboardReadResult> {
1816
+ const text = Utils.clipboardReadText();
1817
+ let hasImage = false;
1818
+ try {
1819
+ const imgData = Utils.clipboardReadImage();
1820
+ hasImage = !!imgData && imgData.length > 0;
1821
+ } catch {
1822
+ // clipboardReadImage may throw if no image data
1823
+ }
1824
+
1825
+ return {
1826
+ text: text || undefined,
1827
+ // html/rtf not supported by Electrobun clipboard
1828
+ hasImage,
1829
+ };
1830
+ }
1831
+
1832
+ async clearClipboard(): Promise<void> {
1833
+ Utils.clipboardClear();
1834
+ }
1835
+
1836
+ async clipboardAvailableFormats(): Promise<{ formats: string[] }> {
1837
+ const formats = Utils.clipboardAvailableFormats?.() ?? [];
1838
+ return { formats: Array.isArray(formats) ? formats : [] };
1839
+ }
1840
+
1841
+ // MARK: - Shell
1842
+
1843
+ /**
1844
+ * Open an external URL in the default browser.
1845
+ * SECURITY: restricted to http/https to prevent opening arbitrary protocols.
1846
+ */
1847
+ async openExternal(options: OpenExternalOptions): Promise<void> {
1848
+ const url = typeof options.url === "string" ? options.url.trim() : "";
1849
+ try {
1850
+ const parsed = new URL(url);
1851
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
1852
+ throw new Error(
1853
+ `Blocked openExternal for non-http(s) URL: ${parsed.protocol}`,
1854
+ );
1855
+ }
1856
+ } catch (err) {
1857
+ if (err instanceof TypeError) {
1858
+ throw new Error(`Invalid URL passed to openExternal: ${url}`);
1859
+ }
1860
+ throw err;
1861
+ }
1862
+
1863
+ if (this.openExternalHandler) {
1864
+ try {
1865
+ const handled = await this.openExternalHandler(url);
1866
+ if (handled) {
1867
+ return;
1868
+ }
1869
+ } catch (err) {
1870
+ logger.warn(
1871
+ `[Desktop] openExternal handler failed: ${err instanceof Error ? err.message : String(err)}`,
1872
+ );
1873
+ }
1874
+ }
1875
+
1876
+ Utils.openExternal(url);
1877
+ }
1878
+
1879
+ /**
1880
+ * Reveal a file in the OS file manager.
1881
+ * SECURITY: requires an absolute path.
1882
+ */
1883
+ async showItemInFolder(options: ShowItemInFolderOptions): Promise<void> {
1884
+ const p = typeof options.path === "string" ? options.path.trim() : "";
1885
+ if (!p || !path.isAbsolute(p)) {
1886
+ throw new Error("showItemInFolder requires an absolute path");
1887
+ }
1888
+ Utils.showItemInFolder(p);
1889
+ }
1890
+
1891
+ async openPath(options: { path: string }): Promise<void> {
1892
+ const p = typeof options.path === "string" ? options.path.trim() : "";
1893
+ if (!p) {
1894
+ throw new Error("openPath requires a non-empty path");
1895
+ }
1896
+ Utils.openPath(p);
1897
+ }
1898
+
1899
+ async beep(): Promise<void> {
1900
+ try {
1901
+ if (process.platform === "darwin") {
1902
+ Bun.spawn(["afplay", "/System/Library/Sounds/Funk.aiff"], {
1903
+ stdout: "ignore",
1904
+ stderr: "ignore",
1905
+ });
1906
+ } else if (process.platform === "linux") {
1907
+ // Try paplay (PulseAudio), fall back to terminal bell
1908
+ try {
1909
+ const proc = Bun.spawn(
1910
+ ["paplay", "/usr/share/sounds/freedesktop/stereo/bell.oga"],
1911
+ { stdout: "ignore", stderr: "ignore" },
1912
+ );
1913
+ await proc.exited;
1914
+ } catch {
1915
+ process.stdout.write("\x07");
1916
+ }
1917
+ } else if (process.platform === "win32") {
1918
+ const proc = Bun.spawn(
1919
+ ["powershell", "-NoProfile", "-Command", "[Console]::Beep(800, 200)"],
1920
+ { stdout: "ignore", stderr: "ignore" },
1921
+ );
1922
+ await proc.exited;
1923
+ }
1924
+ } catch {
1925
+ // beep is best-effort — never throw
1926
+ }
1927
+ }
1928
+
1929
+ // MARK: - Screen / Display
1930
+
1931
+ async getPrimaryDisplay(): Promise<DisplayInfo> {
1932
+ const display = Screen.getPrimaryDisplay();
1933
+ return {
1934
+ id: display.id ?? 0,
1935
+ bounds: display.bounds,
1936
+ workArea: display.workArea,
1937
+ scaleFactor: display.scaleFactor ?? 1,
1938
+ isPrimary: display.isPrimary ?? true,
1939
+ };
1940
+ }
1941
+
1942
+ async getAllDisplays(): Promise<{ displays: DisplayInfo[] }> {
1943
+ const displays = Screen.getAllDisplays();
1944
+ return {
1945
+ displays: displays.map((d) => ({
1946
+ id: d.id ?? 0,
1947
+ bounds: d.bounds,
1948
+ workArea: d.workArea,
1949
+ scaleFactor: d.scaleFactor ?? 1,
1950
+ isPrimary: d.isPrimary ?? false,
1951
+ })),
1952
+ };
1953
+ }
1954
+
1955
+ async getCursorPosition(): Promise<CursorPosition> {
1956
+ return Screen.getCursorScreenPoint();
1957
+ }
1958
+
1959
+ // MARK: - Message Box
1960
+
1961
+ async showMessageBox(options: MessageBoxOptions): Promise<MessageBoxResult> {
1962
+ const autoConfirm =
1963
+ process.env.ELIZA_DESKTOP_TEST_AUTO_CONFIRM_DIALOGS === "1" ||
1964
+ process.env.ELIZA_DESKTOP_TEST_AUTO_CONFIRM_RESET === "1";
1965
+ if (autoConfirm) {
1966
+ return { response: options.defaultId ?? 0 };
1967
+ }
1968
+ const result = await Utils.showMessageBox({
1969
+ type: options.type ?? "info",
1970
+ title: options.title,
1971
+ message: options.message,
1972
+ detail: options.detail,
1973
+ buttons: options.buttons ?? ["OK"],
1974
+ defaultId: options.defaultId ?? 0,
1975
+ cancelId: options.cancelId,
1976
+ });
1977
+ return { response: result.response ?? result };
1978
+ }
1979
+
1980
+ // MARK: - File Dialogs
1981
+
1982
+ /**
1983
+ * Show a native file/directory open picker.
1984
+ * Maps to Electrobun's Utils.openFileDialog.
1985
+ */
1986
+ async showOpenDialog(options: FileDialogOptions): Promise<FileDialogResult> {
1987
+ const filePaths = await Utils.openFileDialog({
1988
+ startingFolder: options.defaultPath,
1989
+ allowedFileTypes: options.allowedFileTypes,
1990
+ canChooseFiles: options.canChooseFiles ?? true,
1991
+ canChooseDirectory: options.canChooseDirectory ?? false,
1992
+ allowsMultipleSelection: options.allowsMultipleSelection ?? false,
1993
+ });
1994
+ const canceled = filePaths.length === 0 || filePaths[0] === "";
1995
+ return { canceled, filePaths: canceled ? [] : filePaths };
1996
+ }
1997
+
1998
+ /**
1999
+ * Show a native directory picker for save operations.
2000
+ * Electrobun has no separate save dialog — we pick a directory and the
2001
+ * caller appends the filename. Returns the chosen directory path.
2002
+ */
2003
+ async showSaveDialog(options: FileDialogOptions): Promise<FileDialogResult> {
2004
+ const filePaths = await Utils.openFileDialog({
2005
+ startingFolder: options.defaultPath,
2006
+ allowedFileTypes: options.allowedFileTypes,
2007
+ canChooseFiles: false,
2008
+ canChooseDirectory: true,
2009
+ allowsMultipleSelection: false,
2010
+ });
2011
+ const canceled = filePaths.length === 0 || filePaths[0] === "";
2012
+ return { canceled, filePaths: canceled ? [] : filePaths };
2013
+ }
2014
+
2015
+ /**
2016
+ * Pick a workspace folder for store-distributed builds. Maps to a directory-only
2017
+ * NSOpenPanel on macOS (via Electrobun's openFileDialog).
2018
+ *
2019
+ * The `bookmark` field is the OS-specific persistence handle: on macOS, a
2020
+ * base64 NSURLBookmarkCreationOptions.WithSecurityScope blob the caller
2021
+ * stores and re-resolves on next launch. Bookmark creation requires a
2022
+ * native bridge that this build does not yet ship, so we currently return
2023
+ * `bookmark: null` and rely on the picker re-prompt at next launch when
2024
+ * the path no longer resolves under the sandbox. TODO: wire into the
2025
+ * `native/` module's NSURL bookmark API to make grants persistent.
2026
+ */
2027
+ async pickWorkspaceFolder(options: {
2028
+ defaultPath?: string;
2029
+ promptTitle?: string;
2030
+ }): Promise<{ canceled: boolean; path: string; bookmark: string | null }> {
2031
+ const filePaths = await Utils.openFileDialog({
2032
+ startingFolder: options.defaultPath,
2033
+ canChooseFiles: false,
2034
+ canChooseDirectory: true,
2035
+ allowsMultipleSelection: false,
2036
+ });
2037
+ const canceled = filePaths.length === 0 || filePaths[0] === "";
2038
+ if (canceled) {
2039
+ return { canceled: true, path: "", bookmark: null };
2040
+ }
2041
+ return { canceled: false, path: filePaths[0], bookmark: null };
2042
+ }
2043
+
2044
+ // MARK: - Helpers
2045
+
2046
+ /**
2047
+ * Resolve an icon path, trying absolute, then relative to known asset dirs.
2048
+ */
2049
+ private resolveIconPath(iconPath: string): string {
2050
+ if (path.isAbsolute(iconPath)) {
2051
+ return iconPath;
2052
+ }
2053
+
2054
+ // Try relative to the electrobun assets directory
2055
+ const assetsPath = path.join(import.meta.dir, "../../assets", iconPath);
2056
+ if (fs.existsSync(assetsPath)) {
2057
+ return assetsPath;
2058
+ }
2059
+
2060
+ // Try relative to cwd
2061
+ const cwdPath = path.join(process.cwd(), iconPath);
2062
+ if (fs.existsSync(cwdPath)) {
2063
+ return cwdPath;
2064
+ }
2065
+
2066
+ // Return as-is and let Electrobun handle it
2067
+ return iconPath;
2068
+ }
2069
+
2070
+ private getSession(partition: string) {
2071
+ const normalized = partition.trim() || "persist:default";
2072
+ if (normalized === "persist:default") {
2073
+ return Session.defaultSession;
2074
+ }
2075
+ return Session.fromPartition(normalized);
2076
+ }
2077
+
2078
+ private readSessionSnapshot(partition: string): DesktopSessionSnapshot {
2079
+ const session = this.getSession(partition);
2080
+ const cookies = session.cookies.get().map((cookie) => ({
2081
+ name: cookie.name,
2082
+ domain: cookie.domain,
2083
+ path: cookie.path,
2084
+ secure: cookie.secure,
2085
+ httpOnly: cookie.httpOnly,
2086
+ session: (cookie as typeof cookie & { session?: boolean }).session,
2087
+ expirationDate: cookie.expirationDate,
2088
+ }));
2089
+
2090
+ return {
2091
+ partition: session.partition,
2092
+ persistent: session.partition.startsWith("persist:"),
2093
+ cookieCount: cookies.length,
2094
+ cookies,
2095
+ };
2096
+ }
2097
+
2098
+ private normalizeReleaseNotesUrl(url: string): string {
2099
+ const trimmed = url.trim() || DEFAULT_RELEASE_NOTES_URL;
2100
+ const parsed = new URL(trimmed);
2101
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
2102
+ throw new Error("Release notes URL must use http or https");
2103
+ }
2104
+ return parsed.toString();
2105
+ }
2106
+
2107
+ private buildReleaseNotesNavigationRules(url: string): string[] {
2108
+ const parsed = new URL(url);
2109
+ const origin = parsed.origin.replace(/\/+$/, "");
2110
+ return [parsed.toString(), `${origin}/*`];
2111
+ }
2112
+
2113
+ private async buildUpdaterSnapshot(
2114
+ error?: unknown,
2115
+ availability = this.getUpdaterAvailability(),
2116
+ ): Promise<DesktopUpdaterSnapshot> {
2117
+ let currentVersion = "unknown";
2118
+ let currentHash: string | undefined;
2119
+ let channel: string | undefined;
2120
+ let baseUrl: string | undefined;
2121
+ let snapshotError =
2122
+ error instanceof Error ? error.message : error ? String(error) : null;
2123
+
2124
+ try {
2125
+ const localInfo = await Updater.getLocallocalInfo();
2126
+ currentVersion = localInfo.version;
2127
+ currentHash = localInfo.hash;
2128
+ channel = localInfo.channel;
2129
+ baseUrl = localInfo.baseUrl;
2130
+ } catch (localError) {
2131
+ if (!snapshotError) {
2132
+ snapshotError =
2133
+ localError instanceof Error
2134
+ ? localError.message
2135
+ : String(localError ?? "Unknown updater error");
2136
+ }
2137
+ }
2138
+
2139
+ const updateInfo =
2140
+ (Updater.updateInfo?.() as Partial<{
2141
+ version: string;
2142
+ hash: string;
2143
+ updateAvailable: boolean;
2144
+ updateReady: boolean;
2145
+ error: string;
2146
+ }>) ?? {};
2147
+ const lastStatusEntry = Updater.getStatusHistory?.().at(-1) ?? null;
2148
+
2149
+ return {
2150
+ currentVersion,
2151
+ currentHash,
2152
+ channel,
2153
+ baseUrl,
2154
+ appBundlePath: availability.appBundlePath,
2155
+ canAutoUpdate: availability.canAutoUpdate,
2156
+ autoUpdateDisabledReason: availability.autoUpdateDisabledReason,
2157
+ updateAvailable: Boolean(updateInfo.updateAvailable),
2158
+ updateReady: Boolean(updateInfo.updateReady),
2159
+ latestVersion: updateInfo.version ?? null,
2160
+ latestHash: updateInfo.hash ?? null,
2161
+ error: updateInfo.error || snapshotError,
2162
+ lastStatus: lastStatusEntry
2163
+ ? {
2164
+ status: lastStatusEntry.status,
2165
+ message: lastStatusEntry.message,
2166
+ timestamp: lastStatusEntry.timestamp,
2167
+ }
2168
+ : null,
2169
+ };
2170
+ }
2171
+
2172
+ private getUpdaterAvailability(): {
2173
+ appBundlePath: string | null;
2174
+ canAutoUpdate: boolean;
2175
+ autoUpdateDisabledReason: string | null;
2176
+ } {
2177
+ if (process.platform !== "darwin") {
2178
+ return {
2179
+ appBundlePath: null,
2180
+ canAutoUpdate: true,
2181
+ autoUpdateDisabledReason: null,
2182
+ };
2183
+ }
2184
+
2185
+ const appBundlePath = this.resolveMacAppBundlePath(process.execPath);
2186
+ if (!appBundlePath) {
2187
+ return {
2188
+ appBundlePath: null,
2189
+ canAutoUpdate: false,
2190
+ autoUpdateDisabledReason: `${getBrandConfig().appName} must run from an installed .app bundle to enable in-place updates.`,
2191
+ };
2192
+ }
2193
+
2194
+ const supportedRoots = [
2195
+ "/Applications",
2196
+ path.join(Utils.paths.home, "Applications"),
2197
+ ].map((root) => path.resolve(root));
2198
+ const normalizedBundlePath = path.resolve(appBundlePath);
2199
+ const inApplications = supportedRoots.some((root) => {
2200
+ const normalizedRoot = root.endsWith(path.sep)
2201
+ ? root
2202
+ : `${root}${path.sep}`;
2203
+ return (
2204
+ normalizedBundlePath === root ||
2205
+ normalizedBundlePath.startsWith(normalizedRoot)
2206
+ );
2207
+ });
2208
+
2209
+ if (inApplications) {
2210
+ return {
2211
+ appBundlePath: normalizedBundlePath,
2212
+ canAutoUpdate: true,
2213
+ autoUpdateDisabledReason: null,
2214
+ };
2215
+ }
2216
+
2217
+ return {
2218
+ appBundlePath: normalizedBundlePath,
2219
+ canAutoUpdate: false,
2220
+ autoUpdateDisabledReason: `Move ${path.basename(
2221
+ normalizedBundlePath,
2222
+ )} to /Applications to enable in-place desktop updates.`,
2223
+ };
2224
+ }
2225
+
2226
+ private resolveMacAppBundlePath(execPath: string): string | null {
2227
+ let current = path.resolve(execPath);
2228
+ while (true) {
2229
+ if (current.endsWith(".app")) {
2230
+ return current;
2231
+ }
2232
+ const parent = path.dirname(current);
2233
+ if (parent === current) {
2234
+ return null;
2235
+ }
2236
+ current = parent;
2237
+ }
2238
+ }
2239
+
2240
+ private resolvePreferredBrowserRenderer(
2241
+ buildInfo: Awaited<ReturnType<typeof BuildConfig.get>>,
2242
+ ): "native" | "cef" {
2243
+ if (
2244
+ process.platform === "linux" &&
2245
+ buildInfo.availableRenderers.includes("cef")
2246
+ ) {
2247
+ return "cef";
2248
+ }
2249
+
2250
+ return buildInfo.defaultRenderer;
2251
+ }
2252
+
2253
+ /**
2254
+ * Clean up all resources.
2255
+ */
2256
+ dispose(): void {
2257
+ if (this._focusPoller) {
2258
+ clearInterval(this._focusPoller);
2259
+ this._focusPoller = null;
2260
+ }
2261
+ this.teardownWindowEvents(this.mainWindow);
2262
+ this.mainWindow = null;
2263
+ this.releaseNotesView?.remove();
2264
+ this.releaseNotesView = null;
2265
+ this.releaseNotesWindow = null;
2266
+ this.unregisterAllShortcuts();
2267
+ void this.destroyTray();
2268
+ this.trayMenuItems.clear();
2269
+ this.sendToWebview = null;
2270
+ }
2271
+ }
2272
+
2273
+ // ============================================================================
2274
+ // Singleton
2275
+ // ============================================================================
2276
+
2277
+ let desktopManager: DesktopManager | null = null;
2278
+
2279
+ export function getDesktopManager(): DesktopManager {
2280
+ if (!desktopManager) {
2281
+ desktopManager = new DesktopManager();
2282
+ }
2283
+ return desktopManager;
2284
+ }