@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,297 @@
1
+ /**
2
+ * SnapshotFormatter - TUI Snapshot Formatter
3
+ *
4
+ * [RFC-007] Transforms Worker fragments and Desktop metadata into
5
+ * complete TUI snapshots conforming to TUI_DEMO.md format.
6
+ * [RFC-014] Added structured output for semantic separation.
7
+ *
8
+ * @module @aotui/runtime/engine/view/snapshot/formatter
9
+ */
10
+ import { SYSTEM_INSTRUCTION, SYSTEM_INSTRUCTION_PURE, formatTimestamp, formatAppStatus } from './templates.js';
11
+ /**
12
+ * SnapshotFormatter Implementation
13
+ *
14
+ * Assembles complete TUI snapshots from:
15
+ * 1. Desktop metadata (`<desktop>` section)
16
+ * 2. Worker fragments (`<application>` sections)
17
+ *
18
+ * [RFC-014] Now also returns structured output for semantic separation.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const formatter = new SnapshotFormatter();
23
+ * const { markup, indexMap, structured } = formatter.format(fragments, metadata);
24
+ * ```
25
+ */
26
+ export class SnapshotFormatter {
27
+ systemLogLimit;
28
+ appLogLimit;
29
+ constructor(config) {
30
+ this.systemLogLimit = config?.systemLogLimit ?? 5;
31
+ this.appLogLimit = config?.appLogLimit ?? 3;
32
+ }
33
+ resolveUniqueToolKey(rawKey, mergedIndexMap) {
34
+ if (!(rawKey in mergedIndexMap)) {
35
+ return rawKey;
36
+ }
37
+ const toolPrefix = 'tool:';
38
+ const normalized = rawKey.startsWith(toolPrefix) ? rawKey.slice(toolPrefix.length) : rawKey;
39
+ const dashIndex = normalized.indexOf('-');
40
+ const appName = dashIndex > 0 ? normalized.slice(0, dashIndex) : normalized;
41
+ const rest = dashIndex > 0 ? normalized.slice(dashIndex + 1) : '';
42
+ let suffix = 2;
43
+ while (true) {
44
+ const candidateCore = rest.length > 0
45
+ ? `${appName}_${suffix}-${rest}`
46
+ : `${appName}_${suffix}`;
47
+ const candidate = `${toolPrefix}${candidateCore}`;
48
+ if (!(candidate in mergedIndexMap)) {
49
+ return candidate;
50
+ }
51
+ suffix += 1;
52
+ }
53
+ }
54
+ /**
55
+ * Format complete TUI snapshot
56
+ *
57
+ * [RFC-014] Now returns both legacy markup and structured output.
58
+ */
59
+ format(fragments, metadata) {
60
+ const parts = [];
61
+ const mergedIndexMap = {};
62
+ // 1. Build <desktop> section (legacy - includes SYSTEM_INSTRUCTION)
63
+ parts.push(this.buildDesktopSection(metadata));
64
+ // 2. Build <application> sections for each running app
65
+ const appStates = [];
66
+ const viewStates = [];
67
+ for (const fragment of fragments) {
68
+ parts.push(this.buildApplicationSection(fragment, metadata));
69
+ // [RFC-014] Collect app state for structured output
70
+ const apps = metadata.getInstalledApps();
71
+ const appInfo = apps.find(a => a.appId === fragment.appId);
72
+ appStates.push({
73
+ appId: fragment.appId,
74
+ appName: appInfo?.name ?? fragment.appId,
75
+ markup: this.buildApplicationSection(fragment, metadata),
76
+ timestamp: fragment.timestamp,
77
+ role: appInfo?.promptRole
78
+ });
79
+ if (fragment.views && fragment.views.length > 0) {
80
+ for (const view of fragment.views) {
81
+ viewStates.push({
82
+ appId: fragment.appId,
83
+ appName: appInfo?.name ?? fragment.appId,
84
+ viewId: view.viewId,
85
+ viewType: view.viewType,
86
+ viewName: view.viewName,
87
+ markup: view.markup,
88
+ timestamp: view.timestamp,
89
+ role: appInfo?.promptRole,
90
+ });
91
+ }
92
+ }
93
+ // Merge indexMap with appId namespace
94
+ // fragment.indexMap keys are in "viewId:refId" format
95
+ // BUT: operation metadata keys are "tool:app_0.view_0.op_name" (already complete)
96
+ // console.log(`[SnapshotFormatter] Fragment from ${fragment.appId}, indexMap keys:`, Object.keys(fragment.indexMap));
97
+ for (const [key, value] of Object.entries(fragment.indexMap)) {
98
+ // Skip operation metadata (already contains full path)
99
+ if (key.startsWith('tool:')) {
100
+ // console.log(`[SnapshotFormatter] Preserving operation metadata: ${key}`);
101
+ const resolvedKey = this.resolveUniqueToolKey(key, mergedIndexMap);
102
+ mergedIndexMap[resolvedKey] = value;
103
+ continue;
104
+ }
105
+ // Only add appId prefix for data references
106
+ const fullKey = `${fragment.appId}:${key}`;
107
+ // console.log(`[SnapshotFormatter] Adding data ref: ${key} → ${fullKey}`);
108
+ mergedIndexMap[fullKey] = value;
109
+ }
110
+ }
111
+ // [RFC-014] Build structured output
112
+ const structured = {
113
+ systemInstruction: SYSTEM_INSTRUCTION_PURE,
114
+ desktopState: this.buildDesktopStateOnly(metadata),
115
+ appStates,
116
+ viewStates,
117
+ };
118
+ return {
119
+ markup: parts.join('\n\n'),
120
+ indexMap: mergedIndexMap,
121
+ structured
122
+ };
123
+ }
124
+ /**
125
+ * [RFC-014] Build desktop state without system instruction
126
+ *
127
+ * Returns only "Where" information:
128
+ * - Installed Applications
129
+ * - System Logs
130
+ */
131
+ buildDesktopStateOnly(metadata) {
132
+ let apps = [];
133
+ let logs = [];
134
+ try {
135
+ apps = metadata.getInstalledApps();
136
+ }
137
+ catch { /* graceful degradation */ }
138
+ try {
139
+ logs = metadata.getSystemLogs(this.systemLogLimit);
140
+ }
141
+ catch { /* graceful degradation */ }
142
+ // Format apps
143
+ const appsMarkup = this.formatAppsMarkup(apps);
144
+ // Format logs
145
+ const logsMarkup = logs.length > 0
146
+ ? logs.map(log => `- [${formatTimestamp(log.timestamp)}] ${log.message}`).join('\n')
147
+ : '- No recent activity.';
148
+ return `<desktop>
149
+
150
+ ## Installed TUI Applications
151
+ ${appsMarkup}
152
+
153
+ ## System Logs
154
+ ${logsMarkup}
155
+
156
+ </desktop>`;
157
+ }
158
+ /**
159
+ * Format apps list markup (shared between legacy and structured output)
160
+ */
161
+ formatAppsMarkup(apps) {
162
+ if (apps.length === 0) {
163
+ return '- No applications installed.';
164
+ }
165
+ return apps.map((app, index) => {
166
+ const name = app.name || app.appId;
167
+ const whatItIs = app.whatItIs ?? app.description ?? 'Not provided';
168
+ const whenToUse = app.whenToUse ?? 'Not provided';
169
+ const lines = [
170
+ `${index + 1}. ${name}`,
171
+ ` - Status: ${formatAppStatus(app.status)}`,
172
+ ` - What it is: ${whatItIs}`,
173
+ ` - When to use: ${whenToUse}`,
174
+ ];
175
+ return lines.join('\n');
176
+ }).join('\n');
177
+ }
178
+ /**
179
+ * Build <desktop> section with system info
180
+ */
181
+ buildDesktopSection(metadata) {
182
+ let apps = [];
183
+ let logs = [];
184
+ // Graceful degradation for missing methods
185
+ try {
186
+ apps = metadata.getInstalledApps();
187
+ }
188
+ catch {
189
+ if (process.env.NODE_ENV !== 'production') {
190
+ console.warn('[SnapshotFormatter] getInstalledApps() failed, using empty array');
191
+ }
192
+ }
193
+ try {
194
+ logs = metadata.getSystemLogs(this.systemLogLimit);
195
+ }
196
+ catch {
197
+ if (process.env.NODE_ENV !== 'production') {
198
+ console.warn('[SnapshotFormatter] getSystemLogs() failed, using empty array');
199
+ }
200
+ }
201
+ // Format installed apps list
202
+ // [RFC-014] Group apps by status: Running vs Available (Pending)
203
+ const runningApps = apps.filter(a => a.status === 'running' || a.status === 'collapsed' || a.status === 'closed');
204
+ const pendingApps = apps.filter(a => a.status === 'pending');
205
+ let appsMarkup = '';
206
+ if (runningApps.length > 0) {
207
+ appsMarkup += '### Running Applications\n';
208
+ appsMarkup += runningApps.map(app => {
209
+ const lines = [
210
+ `- [${app.name}](application:${app.appId})`,
211
+ ` - State: ${formatAppStatus(app.status)}`
212
+ ];
213
+ if (app.description) {
214
+ lines.push(` - Description: ${app.description}`);
215
+ }
216
+ return lines.join('\n');
217
+ }).join('\n');
218
+ appsMarkup += '\n\n';
219
+ }
220
+ if (pendingApps.length > 0) {
221
+ appsMarkup += '### Available Applications (Not Started)\n';
222
+ appsMarkup += pendingApps.map(app => {
223
+ const lines = [
224
+ `- [${app.name}](application:${app.appId})`, // Same link format as running apps
225
+ ` - State: pending`,
226
+ ` - Description: ${app.description || 'No description available'}`,
227
+ ` - Action: Call \`open_app({ app_id: "${app.appId}" })\` to start`
228
+ ];
229
+ return lines.join('\n');
230
+ }).join('\n');
231
+ }
232
+ if (apps.length === 0) {
233
+ appsMarkup = '- No applications installed.';
234
+ }
235
+ // Format system logs (most recent first)
236
+ const logsMarkup = logs.length > 0
237
+ ? logs.map(log => `- [${formatTimestamp(log.timestamp)}] ${log.message}`).join('\n')
238
+ : '- No recent activity.';
239
+ return `<desktop>
240
+
241
+ ${SYSTEM_INSTRUCTION}
242
+
243
+ ## Installed TUI Applications
244
+ ${appsMarkup}
245
+
246
+ ## System Logs
247
+ ${logsMarkup}
248
+
249
+ </desktop>`;
250
+ }
251
+ /**
252
+ * Build <application> section with app info and views
253
+ *
254
+ * [RFC-017] Removed "## Recent Operations" section - feedback now provided
255
+ * via AI SDK standard tool-result messages (RFC-015)
256
+ */
257
+ buildApplicationSection(fragment, metadata) {
258
+ // Get app info from metadata
259
+ const apps = metadata.getInstalledApps();
260
+ const appInfo = apps.find(a => a.appId === fragment.appId);
261
+ const appName = appInfo?.name ?? fragment.appId;
262
+ // Use viewTree from fragment or default message
263
+ const viewTree = fragment.viewTree ?? '## Application View Tree\n- No views.';
264
+ // Prepare application_info block
265
+ const appInfoBlock = `<application_info>\n${viewTree}\n</application_info>`;
266
+ // [RFC-Fix] Avoid double wrapping if Transformer already output <application>
267
+ const trimmedMarkup = fragment.markup.trim();
268
+ if (trimmedMarkup.startsWith('<application')) {
269
+ // Find the end of the opening tag
270
+ const openTagMatch = trimmedMarkup.match(/^<application[^>]*>/);
271
+ if (openTagMatch) {
272
+ const openTag = openTagMatch[0];
273
+ // Check if it's a self-closing tag (e.g. collapsed/closed state)
274
+ if (openTag.endsWith('/>')) {
275
+ // Expand self-closing tag to include info
276
+ // <application ... /> -> <application ...>\n<info>\n</application>
277
+ const expandedOpenTag = openTag.slice(0, -2) + '>';
278
+ return `${expandedOpenTag}\n\n${appInfoBlock}\n\n</application>`;
279
+ }
280
+ else {
281
+ // Standard tag: <application ...> ... </application>
282
+ // Insert info after opening tag
283
+ const content = trimmedMarkup.substring(openTag.length);
284
+ return `${openTag}\n\n${appInfoBlock}\n${content}`;
285
+ }
286
+ }
287
+ }
288
+ return `<application id="${fragment.appId}" name="${appName}">
289
+
290
+ ${appInfoBlock}
291
+
292
+ ${fragment.markup}
293
+
294
+ </application>`;
295
+ }
296
+ }
297
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../../src/engine/view/snapshot/formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Snapshot Module Exports
3
+ */
4
+ export { SnapshotBuilder } from './builder.js';
5
+ export type { SnapshotResult } from './builder.js';
6
+ export { SYSTEM_INSTRUCTION, formatTimestamp, formatAppStatus } from './templates.js';
7
+ export { SnapshotFormatter } from './formatter.js';
8
+ export type { SnapshotFormatterConfig } from './formatter.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Snapshot Module Exports
3
+ */
4
+ export { SnapshotBuilder } from './builder.js';
5
+ export { SYSTEM_INSTRUCTION, formatTimestamp, formatAppStatus } from './templates.js';
6
+ // [RFC-007] SnapshotFormatter for TUI output
7
+ export { SnapshotFormatter } from './formatter.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/engine/view/snapshot/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtF,6CAA6C;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,41 @@
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 declare const SYSTEM_INSTRUCTION_PURE = "# TUI Desktop System Instruction\n\n## Who You Are\n\nYou are the **sole operator** of this TUI (Text-based User Interface) Desktop.\nHuman users communicate with you **through applications** (e.g., Chat app), not directly.\n\n## Why You Exist\n\nThis is a text-based workspace designed for AI Agents to interact with applications and accomplish tasks.\nYou have full control over this Desktop: open/close applications, mount/dismount views, and execute tools.\n\n## How You Work\n\n### Function Calling Convention\n\n- App tools: `{app_id}-{view_id}-{tool_id}`\n- System tools: `system-{tool}`\n\n### Operational Workflow\n\n1. **READ** - Examine the current TUI state (check 'Where You Are' and 'What's Happening')\n2. **DECIDE** - Determine what action to take\n3. **ACT** - Execute tool(s) via Function Call. **Batch independent tools when possible.**\n4. **CHECK** - Review the result in 'What Just Happened'\n5. **LOOP or WAIT** - Continue or end the response without calling any tool\n\n### Parallel Tool Execution\n\nYou CAN call **multiple tools in a single response** when:\n\n1. **Independent Tasks** - Tools don't depend on each other's results\n - \u2705 `send_message` + `update_topic` (independent)\n - \u2705 Multiple `pin_message` for different items\n - \u2705 `open_app` for multiple apps simultaneously\n\n2. **Batch Operations** - Same tool on multiple targets\n - \u2705 Pin 3 different messages at once\n - \u2705 Close multiple apps at once\n\nYou SHOULD execute **sequentially** (one tool per response) when:\n\n- Tool B needs the result from Tool A\n- You're unsure about the state after Tool A\n- The operation involves creating then using a resource\n\n**Examples:**\n\n<example>\n[User: \"Pin the last 2 messages and update the topic summary\"]\nAgent: Call BOTH 'pin_message' (x2) AND 'update_topic' in ONE response\n</example>\n\n<example>\n[User: \"Create a todo and then mark it done\"]\nAgent: First call 'create_todo', WAIT for result, then call 'mark_done'\n</example>\n\n### System Tools\n\n| Tool | When to Use |\n|-----------|-------------|\n| `system-open_app` | Need an app that's not currently open |\n| `system-close_app` | Done with an app, free context space |\n| `system-dismount_view` | Remove a specific view to reduce clutter |\n\n### Tone and Style\n\n- Be concise and task-focused. Minimize text output.\n- Never explain what you're about to do - just do it.\n- Never summarize what you just did - move to the next task or wait.\n\n### Proactiveness Rules\n\n- Be **reactive, not proactive**. Wait for signals before acting.\n- When there's nothing to do \u2192 end the response without calling any tool.\n- Never invent tasks. If the TUI shows no pending work, wait.\n\nIMPORTANT: Always read the current TUI state before taking any action. Never assume state from memory.\nIMPORTANT: When you have nothing to do, do not call any tool.\n";
22
+ /**
23
+ * System Instruction for LLM Agent @opencode
24
+ *
25
+ * @deprecated Use SYSTEM_INSTRUCTION_PURE + structured snapshot for RFC-014
26
+ *
27
+ * This is the first thing the Agent sees in every snapshot.
28
+ * It establishes the Agent's role and available operations.
29
+ */
30
+ export declare const SYSTEM_INSTRUCTION = "# TUI Desktop System Instruction\n\nYou are the **sole operator** of this TUI (Text-based User Interface) Desktop.\nThis is a text-based workspace designed for AI Agents to interact with applications and accomplish tasks.\n\nHuman users communicate with you **through applications** (e.g., Chat app), not directly.\nYou have full control over this Desktop: open/close applications, mount/dismount views, and execute operations.\n\nIMPORTANT: Always read the current TUI state before taking any action. Never assume state from memory.\nIMPORTANT: Each operation you execute is atomic. Check the result before proceeding to the next action.\nIMPORTANT: When you have nothing to do, do not call any tool. Never guess or hallucinate tasks.\n\n## Help & Guidance\n\nIf the user asks about system capabilities or how to use the Desktop:\n\n- Refer them to the **Installed Applications** section in 'desktop' to see available apps\n- Each application's View contains an **Application Instruction** section explaining its purpose\n- For technical issues, the user should contact system administrators\n\n## Tone and Style\n\nYou operate a TUI Desktop. Your \"speech\" is minimal - **actions speak louder than words**.\n\n**Core Principles:**\n\n- Be concise and task-focused. Minimize text output.\n- When communicating with users (via Chat app), be helpful but brief.\n- Never explain what you're about to do - just do it.\n- Never summarize what you just did - move to the next task or wait.\n\nIMPORTANT: Your output is logged and consumes tokens. Keep responses short unless the user explicitly asks for detail.\nIMPORTANT: After completing an operation, either continue to the next task or end the response. Do NOT output status updates.\n\n**Examples of appropriate behavior:**\n\n<example>\n[User sends \"Hi\" via Chat app]\nAgent action: Call 'app_0-view_0-send_message' with '{ \"content\": \"Hello! How can I help you today?\" }'\n</example>\n\n<example>\n[User asks \"What time is it?\"]\nAgent action: Call 'send_message' with '{ \"content\": \"I don't have access to real-time clock. Is there something else I can help with?\" }'\n</example>\n\n<example>\n[No new messages, no pending tasks]\nAgent action: End the response without calling any tool\n</example>\n\n<example>\n[TUI shows an error in Last Operation Results]\nAgent action: Check error code, decide recovery strategy, retry or inform user\n</example>\n\n<example>\n[User asks to pin an important message]\nAgent action: Call 'pin_message' with '{ \"message\": \"recent_msgs[0]\" }'\n</example>\n\n## Proactiveness\n\nYou should be **reactive, not proactive**. Wait for signals before acting. \n\n**Guidelines:**\n\n1. When the user sends a message \u2192 respond appropriately.\n2. When a task is in progress \u2192 continue until complete, then wait.\n3. When there's nothing to do \u2192 end the response without calling any tool.\n4. Never invent tasks. If the TUI shows no pending work, wait.\n5. Never perform actions \"just in case\" or \"to be helpful\".\n6. Never continuously repeat actions.\n\n**The Wait Rule:**\nAfter each operation, ask yourself: \"Is there more work I need to do NOW?\"\n\n- YES \u2192 Execute the next operation\n- NO \u2192 End the response without calling any tool\n\n## Understanding Applications\n\nEach application has its own purpose and operations. Before using an app:\n\n1. **Read the Application Instruction** - Each view has an instruction section explaining:\n - What the app is for\n - When to use it\n - Available operations and their parameters\n\n2. **Check the Application View Tree** - See what views are mounted and what's available\n\n3. **Understand Operation Parameters** - Each operation lists required and optional parameters\n\n**Key Conventions:**\n\n- Never assume an operation exists without seeing it in the current TUI state\n- Never assume parameter values - use data from the TUI (e.g., 'recent_msgs[0]' references)\n- App data is accessed via semantic references like 'pinned_msgs[2]', not by guessing IDs\n\n## Operational Workflow\n\nFollow this loop for all tasks:\n\n**1. READ** - Examine the current TUI state\n\n- Check 'desktop' for installed apps and system logs\n- Check each 'application' for views and operation logs\n- Check each 'view' for content and available operations\n\n**2. DECIDE** - Determine what action to take\n\n- What is the user asking for?\n- Which app/view/operation is appropriate?\n- What parameters are needed?\n\n**3. ACT** - Execute tool(s) via Function Call. **Batch independent tools when possible.**\n\n- System commands: 'system-{tool}'\n- App tools: '{app_id}-{view_id}-{tool}'\n\n**4. CHECK** - Review the result in \"Last Operation Results\"\n\n- \u2705 Success \u2192 Continue or wait\n- \u274C Failed \u2192 Handle error (retry, inform user, or escalate)\n\n**5. LOOP or WAIT**\n\n- More work to do? \u2192 Go to step 1\n- Nothing to do? \u2192 End the response without calling any tool\n\nIMPORTANT: Always check operation results. Failed operations need attention.\nIMPORTANT: Never skip the WAIT step. An idle agent should be waiting, not outputting text.\n\n## Operation Policy\n\n**Parallel Tool Execution:**\n\n- You CAN call **multiple tools in a single response** when they are independent\n- Execute sequentially when Tool B depends on Tool A's result\n- Each tool executes atomically; check results before proceeding\n\n**Referencing Data:**\n\n- Use semantic paths like 'recent_msgs[0]' to reference list items\n- Never hardcode IDs or guess values\n- If you need data not visible, mount the relevant view first\n\n**System Operations:**\n\n| Operation | Parameters | When to Use |\n|-----------|------------|-------------|\n| 'system-open_app' | '{ application: \"app_id\" }' | Need an app that's not currently open |\n| 'system-close_app' | '{ application: \"app_id\" }' | Done with an app, free context space |\n| 'system-dismount_view' | '{ app_id: \"id\", view_id: \"id\" }' | Remove a specific view |\n\n# TUI Structure Reference\n\n**Desktop Structure:**\n\nThe content enclosed within the **DESKTOP** XML tag is the TUI Desktop, it includes\n ## System Instruction (this section)\n ## Installed Applications (list of apps with status)\n ## System Logs (recent system events)\n\nThe content enclosed within the **APPLICATION** XML tag is the TUI Desktop, it includes multiple **VIEW**s and application info.\n\nThe content enclosed within the **VIEW** XML tag is the a view node of the TUI Application.\n\n**Function Call Format:**\n\n``` json\n{\n \"name\": \"app_0-view_0-send_message\",\n \"arguments\": {\n \"content\": \"Your message here\"\n }\n}\n```\n\n**Common Errors and Recovery:**\n\n- 'E_UNKNOWN_OPERATION': Check if the operation exists in current view\n- 'E_INVALID_ARGS': Check parameter requirements in the operation definition\n- 'INDEX_OUT_OF_RANGE': The referenced item doesn't exist, check list length\n- 'E_NOT_FOUND': The referenced app/view/link doesn't exist";
31
+ /**
32
+ * Format timestamp to ISO-like readable string
33
+ *
34
+ * @param timestamp - Unix timestamp in milliseconds
35
+ * @returns Formatted string like "2026-01-15 16:00:00"
36
+ */
37
+ export declare function formatTimestamp(timestamp: number): string;
38
+ /**
39
+ * Format application status for TUI display
40
+ */
41
+ export declare function formatAppStatus(status: 'pending' | 'running' | 'closed' | 'collapsed'): string;