@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,317 @@
1
+ /**
2
+ * TUI Snapshot Templates
3
+ *
4
+ * [RFC-007] System Instruction and formatting templates for TUI output.
5
+ * [RFC-014] Added SYSTEM_INSTRUCTION_PURE for semantic separation.
6
+ *
7
+ * @module @aotui/runtime/engine/view/snapshot/templates
8
+ */
9
+ /**
10
+ * [RFC-014] Pure System Instruction - 100% Stable Meta Instructions
11
+ * [RFC-017] Updated to encourage parallel tool calls
12
+ *
13
+ * This template contains ONLY:
14
+ * - Who: Agent's role definition
15
+ * - Why: Agent's purpose
16
+ * - How: Operational guidelines
17
+ *
18
+ * NO dynamic content (Apps, Logs, State) is included.
19
+ * This enables maximum LLM KV Cache hit rate.
20
+ */
21
+ export const SYSTEM_INSTRUCTION_PURE = `# TUI Desktop System Instruction
22
+
23
+ ## Who You Are
24
+
25
+ You are the **sole operator** of this TUI (Text-based User Interface) Desktop.
26
+ Human users communicate with you **through applications** (e.g., Chat app), not directly.
27
+
28
+ ## Why You Exist
29
+
30
+ This is a text-based workspace designed for AI Agents to interact with applications and accomplish tasks.
31
+ You have full control over this Desktop: open/close applications, mount/dismount views, and execute tools.
32
+
33
+ ## How You Work
34
+
35
+ ### Function Calling Convention
36
+
37
+ - App tools: \`{app_id}-{view_id}-{tool_id}\`
38
+ - System tools: \`system-{tool}\`
39
+
40
+ ### Operational Workflow
41
+
42
+ 1. **READ** - Examine the current TUI state (check 'Where You Are' and 'What's Happening')
43
+ 2. **DECIDE** - Determine what action to take
44
+ 3. **ACT** - Execute tool(s) via Function Call. **Batch independent tools when possible.**
45
+ 4. **CHECK** - Review the result in 'What Just Happened'
46
+ 5. **LOOP or WAIT** - Continue or end the response without calling any tool
47
+
48
+ ### Parallel Tool Execution
49
+
50
+ You CAN call **multiple tools in a single response** when:
51
+
52
+ 1. **Independent Tasks** - Tools don't depend on each other's results
53
+ - ✅ \`send_message\` + \`update_topic\` (independent)
54
+ - ✅ Multiple \`pin_message\` for different items
55
+ - ✅ \`open_app\` for multiple apps simultaneously
56
+
57
+ 2. **Batch Operations** - Same tool on multiple targets
58
+ - ✅ Pin 3 different messages at once
59
+ - ✅ Close multiple apps at once
60
+
61
+ You SHOULD execute **sequentially** (one tool per response) when:
62
+
63
+ - Tool B needs the result from Tool A
64
+ - You're unsure about the state after Tool A
65
+ - The operation involves creating then using a resource
66
+
67
+ **Examples:**
68
+
69
+ <example>
70
+ [User: "Pin the last 2 messages and update the topic summary"]
71
+ Agent: Call BOTH 'pin_message' (x2) AND 'update_topic' in ONE response
72
+ </example>
73
+
74
+ <example>
75
+ [User: "Create a todo and then mark it done"]
76
+ Agent: First call 'create_todo', WAIT for result, then call 'mark_done'
77
+ </example>
78
+
79
+ ### System Tools
80
+
81
+ | Tool | When to Use |
82
+ |-----------|-------------|
83
+ | \`system-open_app\` | Need an app that's not currently open |
84
+ | \`system-close_app\` | Done with an app, free context space |
85
+ | \`system-dismount_view\` | Remove a specific view to reduce clutter |
86
+
87
+ ### Tone and Style
88
+
89
+ - Be concise and task-focused. Minimize text output.
90
+ - Never explain what you're about to do - just do it.
91
+ - Never summarize what you just did - move to the next task or wait.
92
+
93
+ ### Proactiveness Rules
94
+
95
+ - Be **reactive, not proactive**. Wait for signals before acting.
96
+ - When there's nothing to do → end the response without calling any tool.
97
+ - Never invent tasks. If the TUI shows no pending work, wait.
98
+
99
+ IMPORTANT: Always read the current TUI state before taking any action. Never assume state from memory.
100
+ IMPORTANT: When you have nothing to do, do not call any tool.
101
+ `;
102
+ /**
103
+ * System Instruction for LLM Agent @opencode
104
+ *
105
+ * @deprecated Use SYSTEM_INSTRUCTION_PURE + structured snapshot for RFC-014
106
+ *
107
+ * This is the first thing the Agent sees in every snapshot.
108
+ * It establishes the Agent's role and available operations.
109
+ */
110
+ export const SYSTEM_INSTRUCTION = `# TUI Desktop System Instruction
111
+
112
+ You are the **sole operator** of this TUI (Text-based User Interface) Desktop.
113
+ This is a text-based workspace designed for AI Agents to interact with applications and accomplish tasks.
114
+
115
+ Human users communicate with you **through applications** (e.g., Chat app), not directly.
116
+ You have full control over this Desktop: open/close applications, mount/dismount views, and execute operations.
117
+
118
+ IMPORTANT: Always read the current TUI state before taking any action. Never assume state from memory.
119
+ IMPORTANT: Each operation you execute is atomic. Check the result before proceeding to the next action.
120
+ IMPORTANT: When you have nothing to do, do not call any tool. Never guess or hallucinate tasks.
121
+
122
+ ## Help & Guidance
123
+
124
+ If the user asks about system capabilities or how to use the Desktop:
125
+
126
+ - Refer them to the **Installed Applications** section in 'desktop' to see available apps
127
+ - Each application's View contains an **Application Instruction** section explaining its purpose
128
+ - For technical issues, the user should contact system administrators
129
+
130
+ ## Tone and Style
131
+
132
+ You operate a TUI Desktop. Your "speech" is minimal - **actions speak louder than words**.
133
+
134
+ **Core Principles:**
135
+
136
+ - Be concise and task-focused. Minimize text output.
137
+ - When communicating with users (via Chat app), be helpful but brief.
138
+ - Never explain what you're about to do - just do it.
139
+ - Never summarize what you just did - move to the next task or wait.
140
+
141
+ IMPORTANT: Your output is logged and consumes tokens. Keep responses short unless the user explicitly asks for detail.
142
+ IMPORTANT: After completing an operation, either continue to the next task or end the response. Do NOT output status updates.
143
+
144
+ **Examples of appropriate behavior:**
145
+
146
+ <example>
147
+ [User sends "Hi" via Chat app]
148
+ Agent action: Call 'app_0-view_0-send_message' with '{ "content": "Hello! How can I help you today?" }'
149
+ </example>
150
+
151
+ <example>
152
+ [User asks "What time is it?"]
153
+ Agent action: Call 'send_message' with '{ "content": "I don't have access to real-time clock. Is there something else I can help with?" }'
154
+ </example>
155
+
156
+ <example>
157
+ [No new messages, no pending tasks]
158
+ Agent action: End the response without calling any tool
159
+ </example>
160
+
161
+ <example>
162
+ [TUI shows an error in Last Operation Results]
163
+ Agent action: Check error code, decide recovery strategy, retry or inform user
164
+ </example>
165
+
166
+ <example>
167
+ [User asks to pin an important message]
168
+ Agent action: Call 'pin_message' with '{ "message": "recent_msgs[0]" }'
169
+ </example>
170
+
171
+ ## Proactiveness
172
+
173
+ You should be **reactive, not proactive**. Wait for signals before acting.
174
+
175
+ **Guidelines:**
176
+
177
+ 1. When the user sends a message → respond appropriately.
178
+ 2. When a task is in progress → continue until complete, then wait.
179
+ 3. When there's nothing to do → end the response without calling any tool.
180
+ 4. Never invent tasks. If the TUI shows no pending work, wait.
181
+ 5. Never perform actions "just in case" or "to be helpful".
182
+ 6. Never continuously repeat actions.
183
+
184
+ **The Wait Rule:**
185
+ After each operation, ask yourself: "Is there more work I need to do NOW?"
186
+
187
+ - YES → Execute the next operation
188
+ - NO → End the response without calling any tool
189
+
190
+ ## Understanding Applications
191
+
192
+ Each application has its own purpose and operations. Before using an app:
193
+
194
+ 1. **Read the Application Instruction** - Each view has an instruction section explaining:
195
+ - What the app is for
196
+ - When to use it
197
+ - Available operations and their parameters
198
+
199
+ 2. **Check the Application View Tree** - See what views are mounted and what's available
200
+
201
+ 3. **Understand Operation Parameters** - Each operation lists required and optional parameters
202
+
203
+ **Key Conventions:**
204
+
205
+ - Never assume an operation exists without seeing it in the current TUI state
206
+ - Never assume parameter values - use data from the TUI (e.g., 'recent_msgs[0]' references)
207
+ - App data is accessed via semantic references like 'pinned_msgs[2]', not by guessing IDs
208
+
209
+ ## Operational Workflow
210
+
211
+ Follow this loop for all tasks:
212
+
213
+ **1. READ** - Examine the current TUI state
214
+
215
+ - Check 'desktop' for installed apps and system logs
216
+ - Check each 'application' for views and operation logs
217
+ - Check each 'view' for content and available operations
218
+
219
+ **2. DECIDE** - Determine what action to take
220
+
221
+ - What is the user asking for?
222
+ - Which app/view/operation is appropriate?
223
+ - What parameters are needed?
224
+
225
+ **3. ACT** - Execute tool(s) via Function Call. **Batch independent tools when possible.**
226
+
227
+ - System commands: 'system-{tool}'
228
+ - App tools: '{app_id}-{view_id}-{tool}'
229
+
230
+ **4. CHECK** - Review the result in "Last Operation Results"
231
+
232
+ - ✅ Success → Continue or wait
233
+ - ❌ Failed → Handle error (retry, inform user, or escalate)
234
+
235
+ **5. LOOP or WAIT**
236
+
237
+ - More work to do? → Go to step 1
238
+ - Nothing to do? → End the response without calling any tool
239
+
240
+ IMPORTANT: Always check operation results. Failed operations need attention.
241
+ IMPORTANT: Never skip the WAIT step. An idle agent should be waiting, not outputting text.
242
+
243
+ ## Operation Policy
244
+
245
+ **Parallel Tool Execution:**
246
+
247
+ - You CAN call **multiple tools in a single response** when they are independent
248
+ - Execute sequentially when Tool B depends on Tool A's result
249
+ - Each tool executes atomically; check results before proceeding
250
+
251
+ **Referencing Data:**
252
+
253
+ - Use semantic paths like 'recent_msgs[0]' to reference list items
254
+ - Never hardcode IDs or guess values
255
+ - If you need data not visible, mount the relevant view first
256
+
257
+ **System Operations:**
258
+
259
+ | Operation | Parameters | When to Use |
260
+ |-----------|------------|-------------|
261
+ | 'system-open_app' | '{ application: "app_id" }' | Need an app that's not currently open |
262
+ | 'system-close_app' | '{ application: "app_id" }' | Done with an app, free context space |
263
+ | 'system-dismount_view' | '{ app_id: "id", view_id: "id" }' | Remove a specific view |
264
+
265
+ # TUI Structure Reference
266
+
267
+ **Desktop Structure:**
268
+
269
+ The content enclosed within the **DESKTOP** XML tag is the TUI Desktop, it includes
270
+ ## System Instruction (this section)
271
+ ## Installed Applications (list of apps with status)
272
+ ## System Logs (recent system events)
273
+
274
+ The content enclosed within the **APPLICATION** XML tag is the TUI Desktop, it includes multiple **VIEW**s and application info.
275
+
276
+ The content enclosed within the **VIEW** XML tag is the a view node of the TUI Application.
277
+
278
+ **Function Call Format:**
279
+
280
+ \`\`\` json
281
+ {
282
+ "name": "app_0-view_0-send_message",
283
+ "arguments": {
284
+ "content": "Your message here"
285
+ }
286
+ }
287
+ \`\`\`
288
+
289
+ **Common Errors and Recovery:**
290
+
291
+ - 'E_UNKNOWN_OPERATION': Check if the operation exists in current view
292
+ - 'E_INVALID_ARGS': Check parameter requirements in the operation definition
293
+ - 'INDEX_OUT_OF_RANGE': The referenced item doesn't exist, check list length
294
+ - 'E_NOT_FOUND': The referenced app/view/link doesn't exist`;
295
+ /**
296
+ * Format timestamp to ISO-like readable string
297
+ *
298
+ * @param timestamp - Unix timestamp in milliseconds
299
+ * @returns Formatted string like "2026-01-15 16:00:00"
300
+ */
301
+ export function formatTimestamp(timestamp) {
302
+ const date = new Date(timestamp);
303
+ return date.toISOString().replace('T', ' ').slice(0, 19);
304
+ }
305
+ /**
306
+ * Format application status for TUI display
307
+ */
308
+ export function formatAppStatus(status) {
309
+ switch (status) {
310
+ case 'running': return 'running';
311
+ case 'pending': return 'available (not started)';
312
+ case 'closed': return 'not launched';
313
+ case 'collapsed': return 'minimized';
314
+ default: return status;
315
+ }
316
+ }
317
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/engine/view/snapshot/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFtC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DAwL0B,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsD;IACpF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;QACjC,KAAK,SAAS,CAAC,CAAC,OAAO,yBAAyB,CAAC;QACjD,KAAK,QAAQ,CAAC,CAAC,OAAO,cAAc,CAAC;QACrC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;QACrC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;IACzB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function createMockElement(html: string): Element;
@@ -0,0 +1,14 @@
1
+ import { parseHTML } from 'linkedom';
2
+ export function createMockElement(html) {
3
+ const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);
4
+ const el = document.body.firstElementChild;
5
+ if (!el) {
6
+ // Fallback if linkedom behaving weirdly, check root
7
+ const rootEl = document.querySelector('div, application, view');
8
+ if (rootEl)
9
+ return rootEl;
10
+ throw new Error(`Failed to create mock element from: ${html}`);
11
+ }
12
+ return el;
13
+ }
14
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../../../../src/engine/view/transformer/__tests__/visitors/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,8BAA8B,IAAI,gBAAgB,CAAC,CAAC;IACnF,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,oDAAoD;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QAChE,IAAI,MAAM;YAAE,OAAO,MAAiB,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAa,CAAC;AACzB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Transformer Helpers (Pure Functions)
3
+ *
4
+ * Shared utility functions for DOM traversal and payload sanitization.
5
+ * Extracted from pure.ts to support Visitor Pattern refactoring.
6
+ */
7
+ /** DOM Node union type for type-safe traversal */
8
+ export type DOMNode = Node | Element | Text | Comment | DocumentFragment;
9
+ /** Type guard: Check if node is an Element */
10
+ export declare function isElement(node: DOMNode): node is Element;
11
+ /** Type guard: Check if node is a Text node */
12
+ /**
13
+ * Type guard: Check if node is a Text node
14
+ */
15
+ export declare function isText(node: DOMNode): node is Text;
16
+ /**
17
+ * Decode HTML entities for JSON parsing
18
+ */
19
+ export declare function decodeHtmlEntities(str: string): string;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Transformer Helpers (Pure Functions)
3
+ *
4
+ * Shared utility functions for DOM traversal and payload sanitization.
5
+ * Extracted from pure.ts to support Visitor Pattern refactoring.
6
+ */
7
+ /** Type guard: Check if node is an Element */
8
+ export function isElement(node) {
9
+ return node.nodeType === 1;
10
+ }
11
+ /** Type guard: Check if node is a Text node */
12
+ /**
13
+ * Type guard: Check if node is a Text node
14
+ */
15
+ export function isText(node) {
16
+ return node.nodeType === 3;
17
+ }
18
+ // ============================================================================
19
+ // Helper Functions (Pure)
20
+ // ============================================================================
21
+ /**
22
+ * Decode HTML entities for JSON parsing
23
+ */
24
+ export function decodeHtmlEntities(str) {
25
+ return str
26
+ .replace(/&quot;/g, '"')
27
+ .replace(/&#39;/g, "'")
28
+ .replace(/&lt;/g, '<')
29
+ .replace(/&gt;/g, '>')
30
+ .replace(/&amp;/g, '&');
31
+ }
32
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/engine/view/transformer/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,8CAA8C;AAC9C,MAAM,UAAU,SAAS,CAAC,IAAa;IACnC,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,+CAA+C;AAC/C;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,IAAa;IAChC,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC1C,OAAO,GAAG;SACL,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Transformer (Compatibility Layer)
3
+ *
4
+ * 保持向后兼容的类形式 API。
5
+ * 内部委托给纯函数实现,无状态共享。
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const transformer = new Transformer();
10
+ * const { markup, indexMap } = transformer.transform(dom);
11
+ * ```
12
+ *
13
+ * @see pure.ts 纯函数实现
14
+ */
15
+ import type { IndexMap } from '../../../spi/index.js';
16
+ import type { ITransformer } from '../../../spi/runtime/transformer.interface.js';
17
+ export type { TransformResult, TransformContext } from './types.js';
18
+ /**
19
+ * Transformer Class (Compatibility Wrapper)
20
+ *
21
+ * 这个类现在是无状态的,所有调用都委托给纯函数。
22
+ * 可以安全地在多个 Desktop 之间共享同一实例。
23
+ */
24
+ export declare class Transformer implements ITransformer {
25
+ /**
26
+ * Transforms full DOM (Window or Document) to TUI Markup
27
+ */
28
+ transform(dom: unknown): {
29
+ markup: string;
30
+ indexMap: IndexMap;
31
+ };
32
+ /**
33
+ * Transform a single Element (e.g., app container) to TUI Markup
34
+ */
35
+ transformElement(element: Element, appId?: string): {
36
+ markup: string;
37
+ indexMap: IndexMap;
38
+ };
39
+ }
40
+ export { transformDOM, transformElement } from './pure.js';
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Transformer (Compatibility Layer)
3
+ *
4
+ * 保持向后兼容的类形式 API。
5
+ * 内部委托给纯函数实现,无状态共享。
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const transformer = new Transformer();
10
+ * const { markup, indexMap } = transformer.transform(dom);
11
+ * ```
12
+ *
13
+ * @see pure.ts 纯函数实现
14
+ */
15
+ import { transformDOM, transformElement as transformElementPure } from './pure.js';
16
+ /**
17
+ * Transformer Class (Compatibility Wrapper)
18
+ *
19
+ * 这个类现在是无状态的,所有调用都委托给纯函数。
20
+ * 可以安全地在多个 Desktop 之间共享同一实例。
21
+ */
22
+ export class Transformer {
23
+ /**
24
+ * Transforms full DOM (Window or Document) to TUI Markup
25
+ */
26
+ transform(dom) {
27
+ return transformDOM(dom);
28
+ }
29
+ /**
30
+ * Transform a single Element (e.g., app container) to TUI Markup
31
+ */
32
+ transformElement(element, appId) {
33
+ return transformElementPure(element, appId);
34
+ }
35
+ }
36
+ // Re-export pure functions for direct use
37
+ export { transformDOM, transformElement } from './pure.js';
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/engine/view/transformer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,YAAY,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAKnF;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACpB;;OAEG;IACH,SAAS,CAAC,GAAY;QAClB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAgB,EAAE,KAAc;QAC7C,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;CACJ;AAED,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Pure Function Transformer
3
+ *
4
+ * Refactored to use Visitor Pattern (RFC-005).
5
+ * Stateless, thread-safe, and extensible.
6
+ *
7
+ * @module @aotui/runtime/engine/transformer/pure
8
+ */
9
+ import type { TransformResult } from './types.js';
10
+ /**
11
+ * Transform full DOM (Window or Document) to TUI Markup
12
+ */
13
+ export declare function transformDOM(dom: unknown): TransformResult;
14
+ /**
15
+ * Transform a single Element to TUI Markup
16
+ */
17
+ export declare function transformElement(element: Element, appId?: string): TransformResult;
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Pure Function Transformer
3
+ *
4
+ * Refactored to use Visitor Pattern (RFC-005).
5
+ * Stateless, thread-safe, and extensible.
6
+ *
7
+ * @module @aotui/runtime/engine/transformer/pure
8
+ */
9
+ import { createTransformContext } from './types.js';
10
+ import { isElement, isText } from './helpers.js';
11
+ import { DEFAULT_VISITORS } from './visitors/index.js';
12
+ /**
13
+ * Type guard for multi-sandbox structure
14
+ */
15
+ function isDesktopDOM(dom) {
16
+ return (typeof dom === 'object' &&
17
+ dom !== null &&
18
+ 'desktopId' in dom &&
19
+ 'apps' in dom &&
20
+ dom.apps instanceof Map);
21
+ }
22
+ /**
23
+ * Transform full DOM (Window or Document) to TUI Markup
24
+ */
25
+ export function transformDOM(dom) {
26
+ // Handle multi-sandbox structure
27
+ if (isDesktopDOM(dom)) {
28
+ return transformDesktopDOM(dom);
29
+ }
30
+ // Legacy: Single Window/Document
31
+ const ctx = createTransformContext();
32
+ let doc = dom;
33
+ if (dom.document) {
34
+ doc = dom.document;
35
+ }
36
+ const markup = traverse(doc.body, ctx);
37
+ return {
38
+ markup,
39
+ indexMap: ctx.indexMap
40
+ };
41
+ }
42
+ /**
43
+ * Transform a single Element to TUI Markup
44
+ */
45
+ export function transformElement(element, appId) {
46
+ const ctx = createTransformContext(appId);
47
+ const markup = traverse(element, ctx);
48
+ return {
49
+ markup,
50
+ indexMap: ctx.indexMap
51
+ };
52
+ }
53
+ // ============================================================================
54
+ // Internal Implementation
55
+ // ============================================================================
56
+ /**
57
+ * Transform Desktop DOM structure
58
+ */
59
+ function transformDesktopDOM(desktop) {
60
+ const ctx = createTransformContext();
61
+ const parts = [];
62
+ // Traverse each App's Document
63
+ for (const [appId, doc] of desktop.apps) {
64
+ const container = doc.body.querySelector(`[data-app-id="${appId}"]`);
65
+ if (container) {
66
+ const appMarkup = traverse(container, ctx);
67
+ if (appMarkup.trim()) {
68
+ parts.push(appMarkup);
69
+ }
70
+ }
71
+ }
72
+ return {
73
+ markup: parts.join('\n'),
74
+ indexMap: ctx.indexMap
75
+ };
76
+ }
77
+ /**
78
+ * Core Traversal Function (Visitor Pattern)
79
+ */
80
+ function traverse(node, ctx, visitors = DEFAULT_VISITORS) {
81
+ // 1. Text Nodes
82
+ if (isText(node)) {
83
+ return node.data.trim();
84
+ }
85
+ // 2. Element Check
86
+ if (!isElement(node))
87
+ return '';
88
+ const el = node;
89
+ // 3. Global Checks
90
+ const state = el.getAttribute('data-state');
91
+ if (state === 'hidden')
92
+ return '';
93
+ // [RFC-007] Ignore ViewTree container (sent separately)
94
+ if (el.hasAttribute('data-view-tree'))
95
+ return '';
96
+ // 4. Find Matching Visitor
97
+ // Visitors are strict priority ordered. The first match wins.
98
+ const visitor = visitors.find(v => v.matches(el, ctx));
99
+ if (visitor) {
100
+ // Log visitor usage for debug?
101
+ // console.log(`[Visitor] ${visitor.name} matched ${el.tagName}`);
102
+ // [RFC-FIX] Provide both ChildrenTraverser and ElementTraverser to visitors
103
+ // - ChildrenTraverser: traverse child nodes (existing behavior)
104
+ // - ElementTraverser: traverse a single element with full Visitor Chain
105
+ const childrenTraverser = (el, ctx) => traverseChildren(el, ctx, visitors);
106
+ const elementTraverser = (el, ctx) => traverse(el, ctx, visitors);
107
+ return visitor.transform(el, ctx, childrenTraverser, elementTraverser);
108
+ }
109
+ // 5. Fallback (Should be handled by HtmlVisitor if configured correctly, but as safety)
110
+ return traverseChildren(el, ctx, visitors).join(' ');
111
+ }
112
+ /**
113
+ * Child Traverser Helper
114
+ */
115
+ function traverseChildren(el, ctx, visitors = DEFAULT_VISITORS) {
116
+ const results = [];
117
+ for (const child of Array.from(el.childNodes)) {
118
+ const text = traverse(child, ctx, visitors);
119
+ if (text)
120
+ results.push(text);
121
+ }
122
+ return results;
123
+ }
124
+ //# sourceMappingURL=pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../src/engine/view/transformer/pure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAW,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAevD;;GAEG;AACH,SAAS,YAAY,CAAC,GAAY;IAC9B,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,WAAW,IAAI,GAAG;QAClB,MAAM,IAAI,GAAG;QACZ,GAAkB,CAAC,IAAI,YAAY,GAAG,CAC1C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACrC,iCAAiC;IACjC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,iCAAiC;IACjC,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;IAErC,IAAI,GAAG,GAAG,GAAe,CAAC;IAC1B,IAAK,GAAW,CAAC,QAAQ,EAAE,CAAC;QACxB,GAAG,GAAI,GAAW,CAAC,QAAoB,CAAC;IAC5C,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEvC,OAAO;QACH,MAAM;QACN,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACzB,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,KAAc;IAC7D,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAEtC,OAAO;QACH,MAAM;QACN,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACzB,CAAC;AACN,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAmB;IAC5C,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,+BAA+B;IAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC;QACrE,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,QAAQ,CAAC,SAA+B,EAAE,GAAG,CAAC,CAAC;YACjE,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACzB,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CACb,IAAa,EACb,GAAqB,EACrB,WAA8B,gBAAgB;IAE9C,gBAAgB;IAChB,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,EAAE,GAAG,IAAI,CAAC;IAEhB,mBAAmB;IACnB,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAElC,wDAAwD;IACxD,IAAI,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjD,2BAA2B;IAC3B,8DAA8D;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAO,EAAE,CAAC;QACV,+BAA+B;QAC/B,kEAAkE;QAElE,4EAA4E;QAC5E,gEAAgE;QAChE,wEAAwE;QACxE,MAAM,iBAAiB,GAAG,CAAC,EAAW,EAAE,GAAqB,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtG,MAAM,gBAAgB,GAAG,CAAC,EAAW,EAAE,GAAqB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE7F,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IAED,wFAAwF;IACxF,OAAO,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACrB,EAAW,EACX,GAAqB,EACrB,WAA8B,gBAAgB;IAE9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Transformer Types
3
+ *
4
+ * 共享类型定义,供纯函数和兼容层使用
5
+ */
6
+ import type { IndexMap } from '../../../spi/index.js';
7
+ /**
8
+ * Transform 结果
9
+ */
10
+ export interface TransformResult {
11
+ markup: string;
12
+ indexMap: IndexMap;
13
+ }
14
+ /**
15
+ * Transform 上下文 (纯函数内部状态)
16
+ *
17
+ * 这些数据在单次 transform 调用中积累,
18
+ * 但不跨调用共享,保证线程安全。
19
+ */
20
+ export interface TransformContext {
21
+ /** 累积的 IndexMap */
22
+ indexMap: IndexMap;
23
+ /** 当前 App ID 上下文 */
24
+ currentAppId: string | null;
25
+ /** 当前 View ID 上下文 */
26
+ currentViewId: string | null;
27
+ }
28
+ /**
29
+ * 创建新的 TransformContext
30
+ */
31
+ export declare function createTransformContext(appId?: string): TransformContext;