@aotui/runtime 1.0.0

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 (388) hide show
  1. package/dist/adapters/aotui-driven-source.d.ts +106 -0
  2. package/dist/adapters/aotui-driven-source.js +549 -0
  3. package/dist/adapters/aotui-driven-source.js.map +1 -0
  4. package/dist/adapters/bridge/index.d.ts +94 -0
  5. package/dist/adapters/bridge/index.js +199 -0
  6. package/dist/adapters/bridge/index.js.map +1 -0
  7. package/dist/adapters/index.d.ts +7 -0
  8. package/dist/adapters/index.js +8 -0
  9. package/dist/adapters/index.js.map +1 -0
  10. package/dist/adapters/session/index.d.ts +7 -0
  11. package/dist/adapters/session/index.js +2 -0
  12. package/dist/adapters/session/index.js.map +1 -0
  13. package/dist/adapters/session/session.d.ts +46 -0
  14. package/dist/adapters/session/session.js +76 -0
  15. package/dist/adapters/session/session.js.map +1 -0
  16. package/dist/adapters/session/types.d.ts +52 -0
  17. package/dist/adapters/session/types.js +7 -0
  18. package/dist/adapters/session/types.js.map +1 -0
  19. package/dist/adapters/system-instruction.d.ts +9 -0
  20. package/dist/adapters/system-instruction.js +434 -0
  21. package/dist/adapters/system-instruction.js.map +1 -0
  22. package/dist/benchmarks/dom-engine-comparison.d.ts +1 -0
  23. package/dist/benchmarks/dom-engine-comparison.js +84 -0
  24. package/dist/benchmarks/dom-engine-comparison.js.map +1 -0
  25. package/dist/benchmarks/shadow-dom-check.d.ts +1 -0
  26. package/dist/benchmarks/shadow-dom-check.js +44 -0
  27. package/dist/benchmarks/shadow-dom-check.js.map +1 -0
  28. package/dist/cli.d.ts +17 -0
  29. package/dist/cli.js +314 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/engine/app/config.d.ts +81 -0
  32. package/dist/engine/app/config.js +32 -0
  33. package/dist/engine/app/config.js.map +1 -0
  34. package/dist/engine/app/index.d.ts +14 -0
  35. package/dist/engine/app/index.js +33 -0
  36. package/dist/engine/app/index.js.map +1 -0
  37. package/dist/engine/app/manager.d.ts +194 -0
  38. package/dist/engine/app/manager.js +340 -0
  39. package/dist/engine/app/manager.js.map +1 -0
  40. package/dist/engine/app/registry.d.ts +138 -0
  41. package/dist/engine/app/registry.js +473 -0
  42. package/dist/engine/app/registry.js.map +1 -0
  43. package/dist/engine/app/worker-app-host.service.d.ts +62 -0
  44. package/dist/engine/app/worker-app-host.service.js +189 -0
  45. package/dist/engine/app/worker-app-host.service.js.map +1 -0
  46. package/dist/engine/app/worker-host.d.ts +139 -0
  47. package/dist/engine/app/worker-host.js +397 -0
  48. package/dist/engine/app/worker-host.js.map +1 -0
  49. package/dist/engine/app/worker-pool.d.ts +45 -0
  50. package/dist/engine/app/worker-pool.js +122 -0
  51. package/dist/engine/app/worker-pool.js.map +1 -0
  52. package/dist/engine/app/worker-sandbox.d.ts +152 -0
  53. package/dist/engine/app/worker-sandbox.js +290 -0
  54. package/dist/engine/app/worker-sandbox.js.map +1 -0
  55. package/dist/engine/core/desktop-logger.d.ts +69 -0
  56. package/dist/engine/core/desktop-logger.js +124 -0
  57. package/dist/engine/core/desktop-logger.js.map +1 -0
  58. package/dist/engine/core/desktop.d.ts +208 -0
  59. package/dist/engine/core/desktop.js +351 -0
  60. package/dist/engine/core/desktop.js.map +1 -0
  61. package/dist/engine/core/index.d.ts +12 -0
  62. package/dist/engine/core/index.js +28 -0
  63. package/dist/engine/core/index.js.map +1 -0
  64. package/dist/engine/core/llm-output-channel.d.ts +45 -0
  65. package/dist/engine/core/llm-output-channel.js +122 -0
  66. package/dist/engine/core/llm-output-channel.js.map +1 -0
  67. package/dist/engine/core/manager.d.ts +59 -0
  68. package/dist/engine/core/manager.js +131 -0
  69. package/dist/engine/core/manager.js.map +1 -0
  70. package/dist/engine/core/operation-log-buffer.d.ts +79 -0
  71. package/dist/engine/core/operation-log-buffer.js +108 -0
  72. package/dist/engine/core/operation-log-buffer.js.map +1 -0
  73. package/dist/engine/core/operation-log-formatter.d.ts +44 -0
  74. package/dist/engine/core/operation-log-formatter.js +180 -0
  75. package/dist/engine/core/operation-log-formatter.js.map +1 -0
  76. package/dist/engine/core/services/lock.service.d.ts +33 -0
  77. package/dist/engine/core/services/lock.service.js +99 -0
  78. package/dist/engine/core/services/lock.service.js.map +1 -0
  79. package/dist/engine/core/signal-bus.d.ts +84 -0
  80. package/dist/engine/core/signal-bus.js +160 -0
  81. package/dist/engine/core/signal-bus.js.map +1 -0
  82. package/dist/engine/core/signal-service.d.ts +42 -0
  83. package/dist/engine/core/signal-service.js +58 -0
  84. package/dist/engine/core/signal-service.js.map +1 -0
  85. package/dist/engine/system/dispatcher.d.ts +18 -0
  86. package/dist/engine/system/dispatcher.js +48 -0
  87. package/dist/engine/system/dispatcher.js.map +1 -0
  88. package/dist/engine/system/index.d.ts +10 -0
  89. package/dist/engine/system/index.js +20 -0
  90. package/dist/engine/system/index.js.map +1 -0
  91. package/dist/engine/system/operations/index.d.ts +26 -0
  92. package/dist/engine/system/operations/index.js +38 -0
  93. package/dist/engine/system/operations/index.js.map +1 -0
  94. package/dist/engine/system/operations/registry.d.ts +62 -0
  95. package/dist/engine/system/operations/registry.js +101 -0
  96. package/dist/engine/system/operations/registry.js.map +1 -0
  97. package/dist/engine/system/operations/system/close-app.d.ts +13 -0
  98. package/dist/engine/system/operations/system/close-app.js +43 -0
  99. package/dist/engine/system/operations/system/close-app.js.map +1 -0
  100. package/dist/engine/system/operations/system/dismount-view.d.ts +13 -0
  101. package/dist/engine/system/operations/system/dismount-view.js +48 -0
  102. package/dist/engine/system/operations/system/dismount-view.js.map +1 -0
  103. package/dist/engine/system/operations/system/index.d.ts +6 -0
  104. package/dist/engine/system/operations/system/index.js +7 -0
  105. package/dist/engine/system/operations/system/index.js.map +1 -0
  106. package/dist/engine/system/operations/system/open-app.d.ts +13 -0
  107. package/dist/engine/system/operations/system/open-app.js +43 -0
  108. package/dist/engine/system/operations/system/open-app.js.map +1 -0
  109. package/dist/engine/system/registry.d.ts +36 -0
  110. package/dist/engine/system/registry.js +101 -0
  111. package/dist/engine/system/registry.js.map +1 -0
  112. package/dist/engine/view/index.d.ts +13 -0
  113. package/dist/engine/view/index.js +20 -0
  114. package/dist/engine/view/index.js.map +1 -0
  115. package/dist/engine/view/manager.d.ts +42 -0
  116. package/dist/engine/view/manager.js +57 -0
  117. package/dist/engine/view/manager.js.map +1 -0
  118. package/dist/engine/view/snapshot/builder.d.ts +34 -0
  119. package/dist/engine/view/snapshot/builder.js +119 -0
  120. package/dist/engine/view/snapshot/builder.js.map +1 -0
  121. package/dist/engine/view/snapshot/formatter.d.ts +76 -0
  122. package/dist/engine/view/snapshot/formatter.js +297 -0
  123. package/dist/engine/view/snapshot/formatter.js.map +1 -0
  124. package/dist/engine/view/snapshot/index.d.ts +8 -0
  125. package/dist/engine/view/snapshot/index.js +8 -0
  126. package/dist/engine/view/snapshot/index.js.map +1 -0
  127. package/dist/engine/view/snapshot/templates.d.ts +41 -0
  128. package/dist/engine/view/snapshot/templates.js +317 -0
  129. package/dist/engine/view/snapshot/templates.js.map +1 -0
  130. package/dist/engine/view/transformer/__tests__/visitors/test-utils.d.ts +1 -0
  131. package/dist/engine/view/transformer/__tests__/visitors/test-utils.js +14 -0
  132. package/dist/engine/view/transformer/__tests__/visitors/test-utils.js.map +1 -0
  133. package/dist/engine/view/transformer/helpers.d.ts +19 -0
  134. package/dist/engine/view/transformer/helpers.js +32 -0
  135. package/dist/engine/view/transformer/helpers.js.map +1 -0
  136. package/dist/engine/view/transformer/index.d.ts +40 -0
  137. package/dist/engine/view/transformer/index.js +38 -0
  138. package/dist/engine/view/transformer/index.js.map +1 -0
  139. package/dist/engine/view/transformer/pure.d.ts +17 -0
  140. package/dist/engine/view/transformer/pure.js +124 -0
  141. package/dist/engine/view/transformer/pure.js.map +1 -0
  142. package/dist/engine/view/transformer/types.d.ts +31 -0
  143. package/dist/engine/view/transformer/types.js +16 -0
  144. package/dist/engine/view/transformer/types.js.map +1 -0
  145. package/dist/engine/view/transformer/visitors/application.visitor.d.ts +8 -0
  146. package/dist/engine/view/transformer/visitors/application.visitor.js +37 -0
  147. package/dist/engine/view/transformer/visitors/application.visitor.js.map +1 -0
  148. package/dist/engine/view/transformer/visitors/html.visitor.d.ts +8 -0
  149. package/dist/engine/view/transformer/visitors/html.visitor.js +161 -0
  150. package/dist/engine/view/transformer/visitors/html.visitor.js.map +1 -0
  151. package/dist/engine/view/transformer/visitors/index.d.ts +12 -0
  152. package/dist/engine/view/transformer/visitors/index.js +27 -0
  153. package/dist/engine/view/transformer/visitors/index.js.map +1 -0
  154. package/dist/engine/view/transformer/visitors/interface.d.ts +53 -0
  155. package/dist/engine/view/transformer/visitors/interface.js +8 -0
  156. package/dist/engine/view/transformer/visitors/interface.js.map +1 -0
  157. package/dist/engine/view/transformer/visitors/operation.visitor.d.ts +9 -0
  158. package/dist/engine/view/transformer/visitors/operation.visitor.js +122 -0
  159. package/dist/engine/view/transformer/visitors/operation.visitor.js.map +1 -0
  160. package/dist/engine/view/transformer/visitors/view-link.visitor.d.ts +15 -0
  161. package/dist/engine/view/transformer/visitors/view-link.visitor.js +98 -0
  162. package/dist/engine/view/transformer/visitors/view-link.visitor.js.map +1 -0
  163. package/dist/engine/view/transformer/visitors/view.visitor.d.ts +8 -0
  164. package/dist/engine/view/transformer/visitors/view.visitor.js +43 -0
  165. package/dist/engine/view/transformer/visitors/view.visitor.js.map +1 -0
  166. package/dist/engine/view/types.d.ts +70 -0
  167. package/dist/engine/view/types.js +17 -0
  168. package/dist/engine/view/types.js.map +1 -0
  169. package/dist/facades/facades.d.ts +40 -0
  170. package/dist/facades/facades.js +66 -0
  171. package/dist/facades/facades.js.map +1 -0
  172. package/dist/facades/index.d.ts +13 -0
  173. package/dist/facades/index.js +15 -0
  174. package/dist/facades/index.js.map +1 -0
  175. package/dist/factory/createKernel.d.ts +37 -0
  176. package/dist/factory/createKernel.js +42 -0
  177. package/dist/factory/createKernel.js.map +1 -0
  178. package/dist/factory/index.d.ts +9 -0
  179. package/dist/factory/index.js +10 -0
  180. package/dist/factory/index.js.map +1 -0
  181. package/dist/index.d.ts +35 -0
  182. package/dist/index.js +69 -0
  183. package/dist/index.js.map +1 -0
  184. package/dist/internal/browser.d.ts +20 -0
  185. package/dist/internal/browser.js +20 -0
  186. package/dist/internal/browser.js.map +1 -0
  187. package/dist/kernel/index.d.ts +120 -0
  188. package/dist/kernel/index.js +328 -0
  189. package/dist/kernel/index.js.map +1 -0
  190. package/dist/spi/app/aoapp.d.ts +86 -0
  191. package/dist/spi/app/aoapp.js +39 -0
  192. package/dist/spi/app/aoapp.js.map +1 -0
  193. package/dist/spi/app/app-config.interface.d.ts +9 -0
  194. package/dist/spi/app/app-config.interface.js +2 -0
  195. package/dist/spi/app/app-config.interface.js.map +1 -0
  196. package/dist/spi/app/app-factory.interface.d.ts +78 -0
  197. package/dist/spi/app/app-factory.interface.js +49 -0
  198. package/dist/spi/app/app-factory.interface.js.map +1 -0
  199. package/dist/spi/app/app-kernel.interface.d.ts +139 -0
  200. package/dist/spi/app/app-kernel.interface.js +2 -0
  201. package/dist/spi/app/app-kernel.interface.js.map +1 -0
  202. package/dist/spi/app/app.interface.d.ts +84 -0
  203. package/dist/spi/app/app.interface.js +8 -0
  204. package/dist/spi/app/app.interface.js.map +1 -0
  205. package/dist/spi/app/index.d.ts +26 -0
  206. package/dist/spi/app/index.js +13 -0
  207. package/dist/spi/app/index.js.map +1 -0
  208. package/dist/spi/app/public-types.d.ts +309 -0
  209. package/dist/spi/app/public-types.js +17 -0
  210. package/dist/spi/app/public-types.js.map +1 -0
  211. package/dist/spi/app/ref-exporter.interface.d.ts +23 -0
  212. package/dist/spi/app/ref-exporter.interface.js +10 -0
  213. package/dist/spi/app/ref-exporter.interface.js.map +1 -0
  214. package/dist/spi/app/store.interface.d.ts +45 -0
  215. package/dist/spi/app/store.interface.js +11 -0
  216. package/dist/spi/app/store.interface.js.map +1 -0
  217. package/dist/spi/app/view-context-core.interface.d.ts +50 -0
  218. package/dist/spi/app/view-context-core.interface.js +8 -0
  219. package/dist/spi/app/view-context-core.interface.js.map +1 -0
  220. package/dist/spi/app/view-context-ext.interface.d.ts +79 -0
  221. package/dist/spi/app/view-context-ext.interface.js +19 -0
  222. package/dist/spi/app/view-context-ext.interface.js.map +1 -0
  223. package/dist/spi/app/view-factory.interface.d.ts +46 -0
  224. package/dist/spi/app/view-factory.interface.js +2 -0
  225. package/dist/spi/app/view-factory.interface.js.map +1 -0
  226. package/dist/spi/app/view-link.types.d.ts +136 -0
  227. package/dist/spi/app/view-link.types.js +19 -0
  228. package/dist/spi/app/view-link.types.js.map +1 -0
  229. package/dist/spi/app/view-tree.interface.d.ts +254 -0
  230. package/dist/spi/app/view-tree.interface.js +13 -0
  231. package/dist/spi/app/view-tree.interface.js.map +1 -0
  232. package/dist/spi/app/view.interface.d.ts +122 -0
  233. package/dist/spi/app/view.interface.js +15 -0
  234. package/dist/spi/app/view.interface.js.map +1 -0
  235. package/dist/spi/bridge/bridge.interface.d.ts +118 -0
  236. package/dist/spi/bridge/bridge.interface.js +32 -0
  237. package/dist/spi/bridge/bridge.interface.js.map +1 -0
  238. package/dist/spi/bridge/index.d.ts +8 -0
  239. package/dist/spi/bridge/index.js +9 -0
  240. package/dist/spi/bridge/index.js.map +1 -0
  241. package/dist/spi/component-factory.interface.d.ts +123 -0
  242. package/dist/spi/component-factory.interface.js +15 -0
  243. package/dist/spi/component-factory.interface.js.map +1 -0
  244. package/dist/spi/config/define-config.d.ts +31 -0
  245. package/dist/spi/config/define-config.js +72 -0
  246. package/dist/spi/config/define-config.js.map +1 -0
  247. package/dist/spi/config/domains/bridge.config.d.ts +21 -0
  248. package/dist/spi/config/domains/bridge.config.js +10 -0
  249. package/dist/spi/config/domains/bridge.config.js.map +1 -0
  250. package/dist/spi/config/domains/lock.config.d.ts +20 -0
  251. package/dist/spi/config/domains/lock.config.js +10 -0
  252. package/dist/spi/config/domains/lock.config.js.map +1 -0
  253. package/dist/spi/config/domains/logger.config.d.ts +28 -0
  254. package/dist/spi/config/domains/logger.config.js +11 -0
  255. package/dist/spi/config/domains/logger.config.js.map +1 -0
  256. package/dist/spi/config/domains/snapshot.config.d.ts +20 -0
  257. package/dist/spi/config/domains/snapshot.config.js +10 -0
  258. package/dist/spi/config/domains/snapshot.config.js.map +1 -0
  259. package/dist/spi/config/domains/transform.config.d.ts +28 -0
  260. package/dist/spi/config/domains/transform.config.js +11 -0
  261. package/dist/spi/config/domains/transform.config.js.map +1 -0
  262. package/dist/spi/config/domains/worker.config.d.ts +54 -0
  263. package/dist/spi/config/domains/worker.config.js +15 -0
  264. package/dist/spi/config/domains/worker.config.js.map +1 -0
  265. package/dist/spi/config/index.d.ts +16 -0
  266. package/dist/spi/config/index.js +18 -0
  267. package/dist/spi/config/index.js.map +1 -0
  268. package/dist/spi/config/types.d.ts +38 -0
  269. package/dist/spi/config/types.js +7 -0
  270. package/dist/spi/config/types.js.map +1 -0
  271. package/dist/spi/config/validate.d.ts +12 -0
  272. package/dist/spi/config/validate.js +90 -0
  273. package/dist/spi/config/validate.js.map +1 -0
  274. package/dist/spi/core/errors.d.ts +117 -0
  275. package/dist/spi/core/errors.js +233 -0
  276. package/dist/spi/core/errors.js.map +1 -0
  277. package/dist/spi/core/id-factory.d.ts +85 -0
  278. package/dist/spi/core/id-factory.js +119 -0
  279. package/dist/spi/core/id-factory.js.map +1 -0
  280. package/dist/spi/core/index.d.ts +21 -0
  281. package/dist/spi/core/index.js +25 -0
  282. package/dist/spi/core/index.js.map +1 -0
  283. package/dist/spi/core/llm-output.d.ts +74 -0
  284. package/dist/spi/core/llm-output.js +12 -0
  285. package/dist/spi/core/llm-output.js.map +1 -0
  286. package/dist/spi/core/operation-log.d.ts +133 -0
  287. package/dist/spi/core/operation-log.js +13 -0
  288. package/dist/spi/core/operation-log.js.map +1 -0
  289. package/dist/spi/core/operations.d.ts +198 -0
  290. package/dist/spi/core/operations.js +13 -0
  291. package/dist/spi/core/operations.js.map +1 -0
  292. package/dist/spi/core/signals.d.ts +16 -0
  293. package/dist/spi/core/signals.js +7 -0
  294. package/dist/spi/core/signals.js.map +1 -0
  295. package/dist/spi/core/snapshot.d.ts +77 -0
  296. package/dist/spi/core/snapshot.js +18 -0
  297. package/dist/spi/core/snapshot.js.map +1 -0
  298. package/dist/spi/core/tool-call.d.ts +60 -0
  299. package/dist/spi/core/tool-call.js +10 -0
  300. package/dist/spi/core/tool-call.js.map +1 -0
  301. package/dist/spi/core/types.d.ts +68 -0
  302. package/dist/spi/core/types.js +8 -0
  303. package/dist/spi/core/types.js.map +1 -0
  304. package/dist/spi/index.d.ts +31 -0
  305. package/dist/spi/index.js +57 -0
  306. package/dist/spi/index.js.map +1 -0
  307. package/dist/spi/runtime/app-host.interface.d.ts +142 -0
  308. package/dist/spi/runtime/app-host.interface.js +10 -0
  309. package/dist/spi/runtime/app-host.interface.js.map +1 -0
  310. package/dist/spi/runtime/app-installer.interface.d.ts +33 -0
  311. package/dist/spi/runtime/app-installer.interface.js +2 -0
  312. package/dist/spi/runtime/app-installer.interface.js.map +1 -0
  313. package/dist/spi/runtime/context.interface.d.ts +10 -0
  314. package/dist/spi/runtime/context.interface.js +2 -0
  315. package/dist/spi/runtime/context.interface.js.map +1 -0
  316. package/dist/spi/runtime/desktop-context.interface.d.ts +45 -0
  317. package/dist/spi/runtime/desktop-context.interface.js +10 -0
  318. package/dist/spi/runtime/desktop-context.interface.js.map +1 -0
  319. package/dist/spi/runtime/desktop-dom.interface.d.ts +48 -0
  320. package/dist/spi/runtime/desktop-dom.interface.js +13 -0
  321. package/dist/spi/runtime/desktop-dom.interface.js.map +1 -0
  322. package/dist/spi/runtime/desktop-lifecycle.interface.d.ts +23 -0
  323. package/dist/spi/runtime/desktop-lifecycle.interface.js +2 -0
  324. package/dist/spi/runtime/desktop-lifecycle.interface.js.map +1 -0
  325. package/dist/spi/runtime/desktop-lock.interface.d.ts +50 -0
  326. package/dist/spi/runtime/desktop-lock.interface.js +2 -0
  327. package/dist/spi/runtime/desktop-lock.interface.js.map +1 -0
  328. package/dist/spi/runtime/desktop-manager.interface.d.ts +22 -0
  329. package/dist/spi/runtime/desktop-manager.interface.js +13 -0
  330. package/dist/spi/runtime/desktop-manager.interface.js.map +1 -0
  331. package/dist/spi/runtime/desktop-repository.interface.d.ts +8 -0
  332. package/dist/spi/runtime/desktop-repository.interface.js +2 -0
  333. package/dist/spi/runtime/desktop-repository.interface.js.map +1 -0
  334. package/dist/spi/runtime/desktop-state-accessor.interface.d.ts +22 -0
  335. package/dist/spi/runtime/desktop-state-accessor.interface.js +2 -0
  336. package/dist/spi/runtime/desktop-state-accessor.interface.js.map +1 -0
  337. package/dist/spi/runtime/dispatcher.interface.d.ts +34 -0
  338. package/dist/spi/runtime/dispatcher.interface.js +10 -0
  339. package/dist/spi/runtime/dispatcher.interface.js.map +1 -0
  340. package/dist/spi/runtime/index.d.ts +28 -0
  341. package/dist/spi/runtime/index.js +11 -0
  342. package/dist/spi/runtime/index.js.map +1 -0
  343. package/dist/spi/runtime/kernel.interface.d.ts +221 -0
  344. package/dist/spi/runtime/kernel.interface.js +7 -0
  345. package/dist/spi/runtime/kernel.interface.js.map +1 -0
  346. package/dist/spi/runtime/llm-output-channel.interface.d.ts +81 -0
  347. package/dist/spi/runtime/llm-output-channel.interface.js +12 -0
  348. package/dist/spi/runtime/llm-output-channel.interface.js.map +1 -0
  349. package/dist/spi/runtime/signal.interface.d.ts +80 -0
  350. package/dist/spi/runtime/signal.interface.js +9 -0
  351. package/dist/spi/runtime/signal.interface.js.map +1 -0
  352. package/dist/spi/runtime/snapshot.interface.d.ts +126 -0
  353. package/dist/spi/runtime/snapshot.interface.js +14 -0
  354. package/dist/spi/runtime/snapshot.interface.js.map +1 -0
  355. package/dist/spi/runtime/transformer.interface.d.ts +47 -0
  356. package/dist/spi/runtime/transformer.interface.js +10 -0
  357. package/dist/spi/runtime/transformer.interface.js.map +1 -0
  358. package/dist/spi/runtime/worker-message.interface.d.ts +80 -0
  359. package/dist/spi/runtime/worker-message.interface.js +49 -0
  360. package/dist/spi/runtime/worker-message.interface.js.map +1 -0
  361. package/dist/spi/runtime/worker-runtime.interface.d.ts +177 -0
  362. package/dist/spi/runtime/worker-runtime.interface.js +14 -0
  363. package/dist/spi/runtime/worker-runtime.interface.js.map +1 -0
  364. package/dist/spi/worker-protocol/index.d.ts +26 -0
  365. package/dist/spi/worker-protocol/index.js +29 -0
  366. package/dist/spi/worker-protocol/index.js.map +1 -0
  367. package/dist/spi/worker-protocol/messages.d.ts +257 -0
  368. package/dist/spi/worker-protocol/messages.js +42 -0
  369. package/dist/spi/worker-protocol/messages.js.map +1 -0
  370. package/dist/spi/worker-protocol/types.d.ts +12 -0
  371. package/dist/spi/worker-protocol/types.js +16 -0
  372. package/dist/spi/worker-protocol/types.js.map +1 -0
  373. package/dist/worker-runtime/app-kernel/AppKernel.d.ts +178 -0
  374. package/dist/worker-runtime/app-kernel/AppKernel.js +622 -0
  375. package/dist/worker-runtime/app-kernel/AppKernel.js.map +1 -0
  376. package/dist/worker-runtime/app-kernel/index.d.ts +23 -0
  377. package/dist/worker-runtime/app-kernel/index.js +23 -0
  378. package/dist/worker-runtime/app-kernel/index.js.map +1 -0
  379. package/dist/worker-runtime/app-kernel/view-registry.d.ts +85 -0
  380. package/dist/worker-runtime/app-kernel/view-registry.js +119 -0
  381. package/dist/worker-runtime/app-kernel/view-registry.js.map +1 -0
  382. package/dist/worker-runtime/app-kernel/view-tree.d.ts +222 -0
  383. package/dist/worker-runtime/app-kernel/view-tree.js +682 -0
  384. package/dist/worker-runtime/app-kernel/view-tree.js.map +1 -0
  385. package/dist/worker-runtime/index.d.ts +16 -0
  386. package/dist/worker-runtime/index.js +731 -0
  387. package/dist/worker-runtime/index.js.map +1 -0
  388. package/package.json +67 -0
@@ -0,0 +1,194 @@
1
+ /**
2
+ * AppManager - App 安装与生命周期管理
3
+ *
4
+ * [Worker-Only] 重构为使用 WorkerSandbox 实现 App 隔离
5
+ *
6
+ * 职责:
7
+ * - App 安装 (Worker 模式)
8
+ * - App 生命周期 (open/close/pause/resume)
9
+ * - App 状态查询
10
+ * - 管理 WorkerSandbox 集合
11
+ *
12
+ * 设计说明:
13
+ * - 每个 App 在独立的 Worker Thread 中运行
14
+ * - 通过 mirrorDOM 实现主线程 DOM 同步
15
+ * - AppManager 持有 Desktop 引用用于日志和信号
16
+ */
17
+ import type { AppID, AppState, IDesktop } from '../../spi/index.js';
18
+ import { WorkerSandbox } from './worker-sandbox.js';
19
+ /**
20
+ * 已安装的 App 信息
21
+ */
22
+ export interface InstalledApp {
23
+ appId: AppID;
24
+ name?: string;
25
+ /** [RFC-013] App 描述 - 告诉 Agent 什么时候使用此 App */
26
+ description?: string;
27
+ /** App 是什么 (用于 Desktop State 展示) */
28
+ whatItIs?: string;
29
+ /** 什么时候用 (用于 Desktop State 展示) */
30
+ whenToUse?: string;
31
+ html: string;
32
+ /**
33
+ * [RFC-014] App 状态
34
+ * - 'pending': 已注册但未启动 (懒加载)
35
+ * - 'running': 正在运行
36
+ * - 'closed': 已关闭
37
+ * - 'collapsed': 已折叠
38
+ */
39
+ status: 'pending' | 'running' | 'closed' | 'collapsed';
40
+ installedAt: number;
41
+ /** [RFC-014] 懒加载: 模块路径 */
42
+ modulePath?: string;
43
+ /** [RFC-014] 懒加载: Worker 脚本路径 */
44
+ workerScript?: string;
45
+ /** [RFC-014] 消息角色 */
46
+ promptRole?: 'user' | 'assistant';
47
+ }
48
+ export interface AppManagerOptions {
49
+ /** App 安装回调 */
50
+ onAppInstalled?: (appId: AppID) => void;
51
+ /** App 移除回调 */
52
+ onAppRemoved?: (appId: AppID) => void;
53
+ }
54
+ export declare class AppManager {
55
+ /** [Worker-Only] WorkerSandbox 集合 - 核心隔离机制 */
56
+ private workers;
57
+ /** 已安装 App 元数据 (用于序列化和状态查询) */
58
+ private installedApps;
59
+ /** App ID 计数器 */
60
+ private appIdCounter;
61
+ /** 配置选项 */
62
+ private options;
63
+ /** Desktop 引用 (用于日志和信号) */
64
+ private readonly desktop;
65
+ constructor(desktop: IDesktop, options?: AppManagerOptions);
66
+ /**
67
+ * [Worker-Only] 安装 App
68
+ *
69
+ * App 运行在独立的 Worker Thread 中,通过 IPC 通信
70
+ *
71
+ * [C1 Fix] workerScriptPath 现在是可选的,默认使用 Runtime 内置的 worker-runtime
72
+ */
73
+ install(appModulePath: string, options?: {
74
+ workerScriptPath?: string;
75
+ appId?: AppID;
76
+ name?: string;
77
+ /** [RFC-013] App description for Agent */
78
+ description?: string;
79
+ /** App 是什么 */
80
+ whatItIs?: string;
81
+ /** 什么时候用 */
82
+ whenToUse?: string;
83
+ config?: import('../../spi/app/app-config.interface.js').AppLaunchConfig;
84
+ runtimeConfig?: import('../../spi/config/index.js').RuntimeConfig;
85
+ /** [RFC-014] App Role */
86
+ promptRole?: 'user' | 'assistant';
87
+ }): Promise<AppID>;
88
+ /**
89
+ * [RFC-014] 注册待启动 App (懒加载)
90
+ *
91
+ * App 信息写入 installedApps,但不启动 Worker。
92
+ * Agent 可以在 Snapshot 中看到这些 App,并通过 open_app 启动。
93
+ */
94
+ registerPendingApp(options: {
95
+ appId?: AppID;
96
+ name?: string;
97
+ description?: string;
98
+ whatItIs?: string;
99
+ whenToUse?: string;
100
+ modulePath: string;
101
+ workerScriptPath?: string;
102
+ promptRole?: 'user' | 'assistant';
103
+ }): AppID;
104
+ /**
105
+ * [RFC-014] 启动待启动 App
106
+ *
107
+ * 将 pending 状态的 App 真正安装并启动 Worker
108
+ */
109
+ startPendingApp(appId: AppID): Promise<boolean>;
110
+ /**
111
+ * 暂停所有 App
112
+ */
113
+ pauseAll(): Promise<void>;
114
+ /**
115
+ * 恢复所有 App
116
+ */
117
+ resumeAll(): Promise<void>;
118
+ /**
119
+ * 关闭所有 App
120
+ */
121
+ closeAll(): Promise<void>;
122
+ /**
123
+ * [RFC-015] 删除所有 App
124
+ *
125
+ * 1. 触发每个 App 的 onDelete (数据清理)
126
+ * 2. 关闭并销毁 Worker
127
+ */
128
+ deleteAll(): Promise<void>;
129
+ /**
130
+ * 打开指定 App (显示已关闭/折叠的 App)
131
+ */
132
+ openApp(appId: AppID): Promise<void>;
133
+ /**
134
+ * 关闭指定 App (隐藏 UI)
135
+ */
136
+ closeApp(appId: AppID): Promise<void>;
137
+ /**
138
+ * 折叠指定 App
139
+ */
140
+ collapseApp(appId: AppID): Promise<void>;
141
+ /**
142
+ * 显示指定 App (从折叠状态恢复)
143
+ */
144
+ showApp(appId: AppID): Promise<void>;
145
+ /**
146
+ * 获取所有 Workers
147
+ */
148
+ getAllWorkers(): Map<AppID, WorkerSandbox>;
149
+ /**
150
+ * 获取所有已安装 App
151
+ */
152
+ getInstalledApps(): InstalledApp[];
153
+ /**
154
+ * 获取动态 App ID 列表
155
+ */
156
+ getDynamicAppIds(): AppID[];
157
+ /**
158
+ * 获取 App 状态列表
159
+ */
160
+ getAppStates(): AppState[];
161
+ /**
162
+ * 获取 WorkerSandbox
163
+ */
164
+ getWorkerSandbox(appId: AppID): WorkerSandbox | undefined;
165
+ /**
166
+ * 检查 App 是否运行在 Worker 模式
167
+ *
168
+ * 在 Worker-Only 架构下,始终返回 true
169
+ */
170
+ isWorkerMode(appId: AppID): boolean;
171
+ /**
172
+ * [RFC-011] Broadcast LLM text to all Workers
173
+ * [RFC-020] Now accepts structured payload { reasoning?, content? }
174
+ *
175
+ * Called by Desktop when LLMOutputChannelService receives new text.
176
+ */
177
+ broadcastLLMOutput(payload: {
178
+ reasoning?: string;
179
+ content?: string;
180
+ }, type: 'complete', meta?: {
181
+ model?: string;
182
+ providerId?: string;
183
+ modelId?: string;
184
+ usage?: {
185
+ promptTokens: number;
186
+ completionTokens: number;
187
+ totalTokens: number;
188
+ };
189
+ }): void;
190
+ /**
191
+ * 清理所有 Worker
192
+ */
193
+ cleanup(): void;
194
+ }
@@ -0,0 +1,340 @@
1
+ /**
2
+ * AppManager - App 安装与生命周期管理
3
+ *
4
+ * [Worker-Only] 重构为使用 WorkerSandbox 实现 App 隔离
5
+ *
6
+ * 职责:
7
+ * - App 安装 (Worker 模式)
8
+ * - App 生命周期 (open/close/pause/resume)
9
+ * - App 状态查询
10
+ * - 管理 WorkerSandbox 集合
11
+ *
12
+ * 设计说明:
13
+ * - 每个 App 在独立的 Worker Thread 中运行
14
+ * - 通过 mirrorDOM 实现主线程 DOM 同步
15
+ * - AppManager 持有 Desktop 引用用于日志和信号
16
+ */
17
+ import { createAppId } from '../../spi/index.js';
18
+ import { WorkerSandbox } from './worker-sandbox.js';
19
+ export class AppManager {
20
+ // ════════════════════════════════════════════════════════════════
21
+ // Private State
22
+ // ════════════════════════════════════════════════════════════════
23
+ /** [Worker-Only] WorkerSandbox 集合 - 核心隔离机制 */
24
+ workers = new Map();
25
+ /** 已安装 App 元数据 (用于序列化和状态查询) */
26
+ installedApps = new Map();
27
+ /** App ID 计数器 */
28
+ appIdCounter = 0;
29
+ /** 配置选项 */
30
+ options;
31
+ /** Desktop 引用 (用于日志和信号) */
32
+ desktop;
33
+ // ════════════════════════════════════════════════════════════════
34
+ // Constructor
35
+ // ════════════════════════════════════════════════════════════════
36
+ constructor(desktop, options) {
37
+ this.desktop = desktop;
38
+ this.options = options || {};
39
+ }
40
+ // ════════════════════════════════════════════════════════════════
41
+ // 安装方法
42
+ // ════════════════════════════════════════════════════════════════
43
+ /**
44
+ * [Worker-Only] 安装 App
45
+ *
46
+ * App 运行在独立的 Worker Thread 中,通过 IPC 通信
47
+ *
48
+ * [C1 Fix] workerScriptPath 现在是可选的,默认使用 Runtime 内置的 worker-runtime
49
+ */
50
+ async install(appModulePath, options) {
51
+ // 分配 ID
52
+ const appId = options?.appId ?? createAppId(this.appIdCounter++);
53
+ // 创建 WorkerSandbox
54
+ const workerSandbox = new WorkerSandbox({
55
+ appId,
56
+ desktopId: this.desktop.id,
57
+ name: options?.name,
58
+ appModulePath,
59
+ workerScriptPath: options?.workerScriptPath,
60
+ config: options?.config, // ✨ 传递配置
61
+ runtimeConfig: options?.runtimeConfig, // [RFC-005] Pass configuration
62
+ });
63
+ // 设置更新回调
64
+ workerSandbox.onUpdateRequest = () => {
65
+ this.desktop.emitSignal('manual_refresh');
66
+ };
67
+ // 启动 Worker 并打开 App
68
+ await workerSandbox.installDynamic();
69
+ // [RFC-001 Phase 2] Removed Mirror DOM initialization and initial HTML push
70
+ // Worker now uses Snapshot Fragment protocol exclusively.
71
+ // 注册
72
+ this.workers.set(appId, workerSandbox);
73
+ // 记录元数据
74
+ this.installedApps.set(appId, {
75
+ appId,
76
+ name: options?.name,
77
+ description: options?.description, // [RFC-013]
78
+ whatItIs: options?.whatItIs,
79
+ whenToUse: options?.whenToUse,
80
+ html: '', // 初始为空,之后通过 mirrorDOM 同步
81
+ status: 'running',
82
+ installedAt: Date.now(),
83
+ promptRole: options?.promptRole,
84
+ });
85
+ this.desktop.logSystem(`Installed Worker app: ${appId}`);
86
+ this.desktop.emitSignal('app_opened');
87
+ this.options.onAppInstalled?.(appId);
88
+ return appId;
89
+ }
90
+ /**
91
+ * [RFC-014] 注册待启动 App (懒加载)
92
+ *
93
+ * App 信息写入 installedApps,但不启动 Worker。
94
+ * Agent 可以在 Snapshot 中看到这些 App,并通过 open_app 启动。
95
+ */
96
+ registerPendingApp(options) {
97
+ const appId = options.appId ?? createAppId(this.appIdCounter++);
98
+ this.installedApps.set(appId, {
99
+ appId,
100
+ name: options.name,
101
+ description: options.description,
102
+ whatItIs: options.whatItIs,
103
+ whenToUse: options.whenToUse,
104
+ html: '',
105
+ status: 'pending',
106
+ installedAt: Date.now(),
107
+ modulePath: options.modulePath,
108
+ workerScript: options.workerScriptPath,
109
+ promptRole: options.promptRole,
110
+ });
111
+ this.desktop.logSystem(`Registered pending app: ${appId} (${options.name ?? 'unnamed'})`);
112
+ return appId;
113
+ }
114
+ /**
115
+ * [RFC-014] 启动待启动 App
116
+ *
117
+ * 将 pending 状态的 App 真正安装并启动 Worker
118
+ */
119
+ async startPendingApp(appId) {
120
+ const app = this.installedApps.get(appId);
121
+ if (!app) {
122
+ console.warn(`[AppManager] Cannot start ${appId}: not found`);
123
+ return false;
124
+ }
125
+ if (app.status !== 'pending') {
126
+ console.warn(`[AppManager] App ${appId} is not pending (status: ${app.status})`);
127
+ return false;
128
+ }
129
+ if (!app.modulePath) {
130
+ console.error(`[AppManager] Cannot start ${appId}: missing modulePath`);
131
+ return false;
132
+ }
133
+ // 真正安装 Worker
134
+ await this.install(app.modulePath, {
135
+ appId,
136
+ name: app.name,
137
+ description: app.description,
138
+ workerScriptPath: app.workerScript,
139
+ promptRole: app.promptRole,
140
+ });
141
+ this.desktop.logSystem(`Started pending app: ${appId}`);
142
+ return true;
143
+ }
144
+ // ════════════════════════════════════════════════════════════════
145
+ // 生命周期方法
146
+ // ════════════════════════════════════════════════════════════════
147
+ /**
148
+ * 暂停所有 App
149
+ */
150
+ async pauseAll() {
151
+ for (const [appId, worker] of this.workers) {
152
+ if (worker.status === 'running') {
153
+ await worker.pause();
154
+ }
155
+ }
156
+ }
157
+ /**
158
+ * 恢复所有 App
159
+ */
160
+ async resumeAll() {
161
+ for (const [appId, worker] of this.workers) {
162
+ if (worker.status === 'paused') {
163
+ await worker.resume();
164
+ }
165
+ }
166
+ }
167
+ /**
168
+ * 关闭所有 App
169
+ */
170
+ async closeAll() {
171
+ for (const [appId, worker] of this.workers) {
172
+ await worker.close();
173
+ worker.dispose();
174
+ this.options.onAppRemoved?.(appId);
175
+ }
176
+ this.workers.clear();
177
+ }
178
+ /**
179
+ * [RFC-015] 删除所有 App
180
+ *
181
+ * 1. 触发每个 App 的 onDelete (数据清理)
182
+ * 2. 关闭并销毁 Worker
183
+ */
184
+ async deleteAll() {
185
+ for (const [appId, worker] of this.workers) {
186
+ await worker.delete();
187
+ worker.dispose();
188
+ this.options.onAppRemoved?.(appId);
189
+ }
190
+ this.workers.clear();
191
+ }
192
+ /**
193
+ * 打开指定 App (显示已关闭/折叠的 App)
194
+ */
195
+ async openApp(appId) {
196
+ // [RFC-014] Check if app is pending and start it
197
+ const app = this.installedApps.get(appId);
198
+ if (app?.status === 'pending') {
199
+ const started = await this.startPendingApp(appId);
200
+ if (!started) {
201
+ console.warn(`Failed to start pending app ${appId}`);
202
+ return;
203
+ }
204
+ // After start, worker should exist and status should be running
205
+ }
206
+ const worker = this.workers.get(appId);
207
+ if (!worker) {
208
+ console.warn(`App ${appId} not found.`);
209
+ return;
210
+ }
211
+ // [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
212
+ if (app)
213
+ app.status = 'running';
214
+ this.desktop.logSystem(`Opened application: ${appId}`);
215
+ this.desktop.logAppOperation(appId, 'Application opened.');
216
+ this.desktop.emitSignal('app_opened');
217
+ }
218
+ /**
219
+ * 关闭指定 App (隐藏 UI)
220
+ */
221
+ async closeApp(appId) {
222
+ const worker = this.workers.get(appId);
223
+ if (!worker)
224
+ return;
225
+ // [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
226
+ const app = this.installedApps.get(appId);
227
+ if (app)
228
+ app.status = 'closed';
229
+ this.desktop.logSystem(`Closed application: ${appId}`);
230
+ this.desktop.logAppOperation(appId, 'Application closed.');
231
+ this.desktop.emitSignal('dom_mutation');
232
+ }
233
+ /**
234
+ * 折叠指定 App
235
+ */
236
+ async collapseApp(appId) {
237
+ const worker = this.workers.get(appId);
238
+ if (!worker)
239
+ return;
240
+ // [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
241
+ const app = this.installedApps.get(appId);
242
+ if (app)
243
+ app.status = 'collapsed';
244
+ this.desktop.logAppOperation(appId, 'Application collapsed.');
245
+ this.desktop.emitSignal('dom_mutation');
246
+ }
247
+ /**
248
+ * 显示指定 App (从折叠状态恢复)
249
+ */
250
+ async showApp(appId) {
251
+ const worker = this.workers.get(appId);
252
+ if (!worker)
253
+ return;
254
+ // [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
255
+ const app = this.installedApps.get(appId);
256
+ if (app)
257
+ app.status = 'running';
258
+ this.desktop.logAppOperation(appId, 'Application shown.');
259
+ this.desktop.emitSignal('dom_mutation');
260
+ }
261
+ // ════════════════════════════════════════════════════════════════
262
+ // 查询方法
263
+ // ════════════════════════════════════════════════════════════════
264
+ /**
265
+ * 获取所有 Workers
266
+ */
267
+ getAllWorkers() {
268
+ return this.workers;
269
+ }
270
+ /**
271
+ * 获取所有已安装 App
272
+ */
273
+ getInstalledApps() {
274
+ return Array.from(this.installedApps.values());
275
+ }
276
+ /**
277
+ * 获取动态 App ID 列表
278
+ */
279
+ getDynamicAppIds() {
280
+ return Array.from(this.workers.keys());
281
+ }
282
+ /**
283
+ * 获取 App 状态列表
284
+ */
285
+ getAppStates() {
286
+ // [RFC-001 Phase 2] HTML is no longer available in AppManager (Headless)
287
+ // Clients should subscribe to Snapshots.
288
+ return Array.from(this.installedApps.entries()).map(([appId, app]) => ({
289
+ appId,
290
+ name: app.name,
291
+ html: app.html,
292
+ status: app.status,
293
+ installedAt: app.installedAt
294
+ }));
295
+ }
296
+ /**
297
+ * 获取 WorkerSandbox
298
+ */
299
+ getWorkerSandbox(appId) {
300
+ return this.workers.get(appId);
301
+ }
302
+ /**
303
+ * 检查 App 是否运行在 Worker 模式
304
+ *
305
+ * 在 Worker-Only 架构下,始终返回 true
306
+ */
307
+ isWorkerMode(appId) {
308
+ return this.workers.has(appId);
309
+ }
310
+ // ════════════════════════════════════════════════════════════════
311
+ // [RFC-011] LLM Output Channel
312
+ // ════════════════════════════════════════════════════════════════
313
+ /**
314
+ * [RFC-011] Broadcast LLM text to all Workers
315
+ * [RFC-020] Now accepts structured payload { reasoning?, content? }
316
+ *
317
+ * Called by Desktop when LLMOutputChannelService receives new text.
318
+ */
319
+ broadcastLLMOutput(payload, type, meta) {
320
+ console.log(`[AppManager] Broadcasting LLM text to ${this.workers.size} workers`);
321
+ for (const [appId, worker] of this.workers) {
322
+ worker.pushLLMOutput(payload, type, meta);
323
+ }
324
+ }
325
+ // ════════════════════════════════════════════════════════════════
326
+ // 清理
327
+ // ════════════════════════════════════════════════════════════════
328
+ /**
329
+ * 清理所有 Worker
330
+ */
331
+ cleanup() {
332
+ for (const worker of this.workers.values()) {
333
+ worker.dispose();
334
+ }
335
+ this.workers.clear();
336
+ this.installedApps.clear();
337
+ this.appIdCounter = 0;
338
+ }
339
+ }
340
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/engine/app/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * App Registry
3
+ *
4
+ * 管理第三方 TUI App 的注册和加载。
5
+ *
6
+ * 职责:
7
+ * - 从 ~/.agentina/config.json 加载配置
8
+ * - 动态加载 App 模块
9
+ * - 为 Desktop 提供 App 安装服务
10
+ *
11
+ * @module @aotui/runtime/engine/app-registry
12
+ */
13
+ import type { IDesktop, AppID, TUIAppFactory, AOAppManifest } from '../../spi/index.js';
14
+ import type { TUIConfig } from './config.js';
15
+ import type { AppLaunchConfig } from '../../spi/app/app-config.interface.js';
16
+ export type { TUIConfig, AppConfigEntry } from './config.js';
17
+ /**
18
+ * 已加载的 App 信息
19
+ */
20
+ export interface LoadedApp {
21
+ /** App 名称 (来自 manifest) */
22
+ name: string;
23
+ /** App 清单 (传统模式) 或 undefined (方案 B kernelConfig 模式) */
24
+ manifest?: AOAppManifest;
25
+ /** 工厂对象 */
26
+ factory: TUIAppFactory;
27
+ /** 来源 */
28
+ source: string;
29
+ }
30
+ /**
31
+ * AppRegistry 配置
32
+ */
33
+ export interface AppRegistryOptions {
34
+ /** 配置文件路径 (默认 ~/.agentina/config.json) */
35
+ configPath?: string;
36
+ /** 是否自动加载 (默认 true) */
37
+ autoLoad?: boolean;
38
+ }
39
+ /**
40
+ * App Registry
41
+ *
42
+ * 管理第三方 TUI App 的生命周期
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const registry = new AppRegistry();
47
+ * await registry.loadFromConfig();
48
+ *
49
+ * // 为 Desktop 安装所有已注册的 App
50
+ * await registry.installAllTo(desktop);
51
+ * ```
52
+ */
53
+ export declare class AppRegistry {
54
+ private apps;
55
+ private config;
56
+ private configPath;
57
+ constructor(options?: AppRegistryOptions);
58
+ /**
59
+ * 从配置文件加载所有 App
60
+ */
61
+ loadFromConfig(): Promise<void>;
62
+ /**
63
+ * 添加 App 到配置
64
+ *
65
+ * @param source 来源 (npm:xxx, local:xxx, git:xxx)
66
+ * @param options 选项
67
+ */
68
+ add(source: string, options?: {
69
+ force?: boolean;
70
+ alias?: string;
71
+ }): Promise<string>;
72
+ /**
73
+ * 注册临时 App (不保存到配置文件)
74
+ * 用于开发环境自动发现或运行时动态添加
75
+ */
76
+ registerTransient(source: string, options?: {
77
+ alias?: string;
78
+ }): Promise<string>;
79
+ /**
80
+ * 移除 App
81
+ */
82
+ remove(name: string): Promise<void>;
83
+ /**
84
+ * 列出所有已安装的 App
85
+ */
86
+ list(): LoadedApp[];
87
+ /**
88
+ * 获取已安装的 App
89
+ */
90
+ get(name: string): LoadedApp | undefined;
91
+ /**
92
+ * 检查 App 是否已安装
93
+ */
94
+ has(name: string): boolean;
95
+ /**
96
+ * 启用/禁用 App
97
+ */
98
+ setEnabled(name: string, enabled: boolean): Promise<void>;
99
+ /**
100
+ * [RFC-014] 设置 App 自动启动状态
101
+ *
102
+ * @param name - App 名称
103
+ * @param autoStart - 是否在 Desktop 创建时自动启动
104
+ */
105
+ setAutoStart(name: string, autoStart: boolean): Promise<void>;
106
+ /**
107
+ * [Option D] 为 Desktop 安装所有已注册的 App (配置驱动)
108
+ *
109
+ * 使用 config.json 中的 runtime.workerScript 作为默认 Worker 脚本,
110
+ * 各 App 可以通过 workerScript 字段覆盖。
111
+ *
112
+ * @param desktop - 目标 Desktop
113
+ * @param options - 可选配置
114
+ * @returns 已安装的 App ID 列表
115
+ */
116
+ installAll(desktop: IDesktop, options?: {
117
+ defaultWorkerScript?: string;
118
+ /** [RFC-025] Dynamic config to inject into all apps (e.g. projectPath) */
119
+ dynamicConfig?: AppLaunchConfig;
120
+ }): Promise<AppID[]>;
121
+ /**
122
+ * 解析模块路径
123
+ *
124
+ * [Fix] Now properly resolves directory paths to their entry points
125
+ * by checking aoapp.json, package.json, or defaulting to index.js
126
+ */
127
+ resolveModulePath(source: string): string | null;
128
+ /**
129
+ * 获取配置(用于调试)
130
+ */
131
+ getConfig(): TUIConfig;
132
+ private getDefaultConfigPath;
133
+ private readConfig;
134
+ private saveConfig;
135
+ private loadFactory;
136
+ }
137
+ export type { TUIAppFactory, AOAppManifest } from '../../spi/index.js';
138
+ export { isTUIAppFactory, validateManifest, isValidAppName } from '../../spi/index.js';