@xopcai/xopc 0.0.303 → 0.0.307

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 (431) hide show
  1. package/README.md +4 -4
  2. package/README.zh-CN.md +4 -4
  3. package/dist/browser-ext/dist/assets/{auth-B_9ZuGDx.js → auth-C3yV1y_l.js} +67 -22
  4. package/dist/browser-ext/dist/background.js +4 -4
  5. package/dist/browser-ext/dist/sidepanel.html +1 -1
  6. package/dist/browser-ext/dist/sidepanel.js +3 -3
  7. package/dist/browser-ext/manifest.json +1 -1
  8. package/dist/extensions/feishu/xopc.extension.json +0 -3
  9. package/dist/extensions/telegram/xopc.extension.json +1 -4
  10. package/dist/extensions/weixin/xopc.extension.json +0 -3
  11. package/dist/gateway/static/root/assets/{activity-store-DCi5rh4e.js → activity-store-wgSB2HYK.js} +1 -1
  12. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Ch3DzUvP.js → agent-avatar-dicebear-CZeQo09T.js} +1 -1
  13. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BPsRb9Ck.js +1 -0
  14. package/dist/gateway/static/root/assets/{agents-DXHD-ST3.js → agents-BlrHMbRx.js} +1 -1
  15. package/dist/gateway/static/root/assets/{api-CAV9PN9i.js → api-BKHmTb0w.js} +1 -1
  16. package/dist/gateway/static/root/assets/api-DFOlahZv.js +1 -0
  17. package/dist/gateway/static/root/assets/app-management-settings-panel-Bzw4fQP8.js +1 -0
  18. package/dist/gateway/static/root/assets/appearance-settings-8GZpUXva.js +1 -0
  19. package/dist/gateway/static/root/assets/apps-page-BkQQtIxH.js +1 -0
  20. package/dist/gateway/static/root/assets/{archive-plugin-BKGzaVvM.js → archive-plugin-CQ2NaoHb.js} +1 -1
  21. package/dist/gateway/static/root/assets/{attachment-load-8bARdLnp.js → attachment-load-BFi1H7yJ.js} +1 -1
  22. package/dist/gateway/static/root/assets/{automations-page-BAEenyzx.js → automations-page-CDBXcii_.js} +1 -1
  23. package/dist/gateway/static/root/assets/automations-workspace-CUpiTTiY.js +6 -0
  24. package/dist/gateway/static/root/assets/{binary-plugins-Cv3GS9Eo.js → binary-plugins-D07eWmOx.js} +1 -1
  25. package/dist/gateway/static/root/assets/{block-editor-D4ZIVQbk.css → block-editor-BdOTO0Yo.css} +1 -1
  26. package/dist/gateway/static/root/assets/{block-editor-DUeb92LG.js → block-editor-CtVnjyYU.js} +3 -3
  27. package/dist/gateway/static/root/assets/{browser-automation-inputs-BGT0xoTv.js → browser-automation-inputs-BzkJog8e.js} +1 -1
  28. package/dist/gateway/static/root/assets/{browser-automations-page-D1O22WIf.js → browser-automations-page-DyrSbDdG.js} +2 -2
  29. package/dist/gateway/static/root/assets/browser-settings-page-CqTxLpil.js +3 -0
  30. package/dist/gateway/static/root/assets/button-CS04eWY9.js +1 -0
  31. package/dist/gateway/static/root/assets/capabilities-settings-panel-BZ_-pnS6.js +8 -0
  32. package/dist/gateway/static/root/assets/channels-settings-DAD9qE3J.js +1 -0
  33. package/dist/gateway/static/root/assets/{channels-status-swr-C_icwbWj.js → channels-status-swr-B2JwuTjG.js} +1 -1
  34. package/dist/gateway/static/root/assets/{chat-terminal-dock-D-JYPVYl.js → chat-terminal-dock-B62SZdAo.js} +2 -2
  35. package/dist/gateway/static/root/assets/{computer-settings-page-Bcfp948A.js → computer-settings-page-ClSresNq.js} +1 -1
  36. package/dist/gateway/static/root/assets/connector-service-page-CPqVmNvx.js +1 -0
  37. package/dist/gateway/static/root/assets/connectors-page-BUQyg3CW.js +2 -0
  38. package/dist/gateway/static/root/assets/cron-expression-CTMi_tql.js +2 -0
  39. package/dist/gateway/static/root/assets/date-picker-B71AJK50.js +1 -0
  40. package/dist/gateway/static/root/assets/{dependency-picker-UtoUm57Q.js → dependency-picker-DlyGK-kA.js} +1 -1
  41. package/dist/gateway/static/root/assets/{desktop-pet-Bryx7gRM.js → desktop-pet-DGkbTE8_.js} +1 -1
  42. package/dist/gateway/static/root/assets/desktop-pet-settings-BY8r9j66.js +1 -0
  43. package/dist/gateway/static/root/assets/device-pairing-wizard-DzRrgd59.js +1 -0
  44. package/dist/gateway/static/root/assets/{extension-debug-page-DQlFTVBx.js → extension-debug-page-L8Mm1n3A.js} +1 -1
  45. package/dist/gateway/static/root/assets/{extension-page-BSsqRDXh.js → extension-page-CFc4vSNU.js} +1 -1
  46. package/dist/gateway/static/root/assets/{extension-settings-page-DbVZv9ve.js → extension-settings-page-B5zWyHr3.js} +1 -1
  47. package/dist/gateway/static/root/assets/{gateway-config-swr-D5AM8cyQ.js → gateway-config-swr-B6wHa6ZI.js} +1 -1
  48. package/dist/gateway/static/root/assets/gateway-realtime-B53R0CA4.js +1 -0
  49. package/dist/gateway/static/root/assets/gateway-realtime-store-BLDgrJ30.js +1 -0
  50. package/dist/gateway/static/root/assets/gateway-settings-D7qmTH4R.js +1 -0
  51. package/dist/gateway/static/root/assets/{gateway-startup-retry-CSJWdnFs.js → gateway-startup-retry-DRzGnEV-.js} +1 -1
  52. package/dist/gateway/static/root/assets/{heartbeat-settings-Cxowc29b.js → heartbeat-settings-Glsl3X5b.js} +1 -1
  53. package/dist/gateway/static/root/assets/home-page-s9hDQ8Hc.js +1 -0
  54. package/dist/gateway/static/root/assets/{image-generation-api-BNh604hw.js → image-generation-api-Ck_pyDom.js} +1 -1
  55. package/dist/gateway/static/root/assets/imports-page-ByBX7ome.js +1 -0
  56. package/dist/gateway/static/root/assets/index-RBCkv8a_.js +79 -0
  57. package/dist/gateway/static/root/assets/index-cFU4S35z.css +1 -0
  58. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-C45RlO8a.js +1 -0
  59. package/dist/gateway/static/root/assets/local-app-workbench-page-DP0x2jpR.js +2 -0
  60. package/dist/gateway/static/root/assets/{local-apps-page-CXPaPDGm.js → local-apps-page-C_AQc2bI.js} +1 -1
  61. package/dist/gateway/static/root/assets/{locale-store-DLK05Y1a.js → locale-store-msTfRK8P.js} +1 -1
  62. package/dist/gateway/static/root/assets/logs-page-DvM8Pyok.js +2 -0
  63. package/dist/gateway/static/root/assets/management-settings-D1uwSutV.js +1 -0
  64. package/dist/gateway/static/root/assets/{markdown-view-B8maDRWh.js → markdown-view-BInabSKf.js} +2 -2
  65. package/dist/gateway/static/root/assets/{media-plugins-tSJ0CvcX.js → media-plugins-C4mhf13f.js} +1 -1
  66. package/dist/gateway/static/root/assets/messages-F74LVAiU.js +3 -0
  67. package/dist/gateway/static/root/assets/note-detail-panel-D35sErp2.js +5 -0
  68. package/dist/gateway/static/root/assets/notes-page-8jCDklDn.js +8 -0
  69. package/dist/gateway/static/root/assets/{page-tabs-CQx6H-GS.js → page-tabs-1go_BtX1.js} +1 -1
  70. package/dist/gateway/static/root/assets/{popover-select-DldSX8GX.js → popover-select-9i-ZtHXL.js} +1 -1
  71. package/dist/gateway/static/root/assets/{preview-open-alternatives-A3-bVtdy.js → preview-open-alternatives-DmoSC0j1.js} +1 -1
  72. package/dist/gateway/static/root/assets/{proactive-page-D46cR3sf.js → proactive-page-xAjKTIID.js} +1 -1
  73. package/dist/gateway/static/root/assets/{product-open-page-CujZXOea.js → product-open-page-gmi5LLwM.js} +1 -1
  74. package/dist/gateway/static/root/assets/project-detail-page-BUMQHy_N.js +1 -0
  75. package/dist/gateway/static/root/assets/projects-page-DT-Mt7XR.js +1 -0
  76. package/dist/gateway/static/root/assets/{registry-api-BMFL4vis.js → registry-api-BSWtko7U.js} +1 -1
  77. package/dist/gateway/static/root/assets/remote-access-hub-Clz3byir.js +1 -0
  78. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CR0qvq9C.js → runtime-tools-settings-panel-ClkOoxDl.js} +2 -2
  79. package/dist/gateway/static/root/assets/{schema-form-BUD9lLEE.js → schema-form-BuEmLiaU.js} +1 -1
  80. package/dist/gateway/static/root/assets/sessions-page-tQRwktKm.js +1 -0
  81. package/dist/gateway/static/root/assets/settings-advanced-gate-DqWg9XS5.js +1 -0
  82. package/dist/gateway/static/root/assets/{settings-form-section-BZPCUH6a.js → settings-form-section-Dor39QON.js} +1 -1
  83. package/dist/gateway/static/root/assets/{settings-page-XoHmqIdm.js → settings-page-Xj-yvIc8.js} +1 -1
  84. package/dist/gateway/static/root/assets/setup-status-panel-BB_sMB7P.js +1 -0
  85. package/dist/gateway/static/root/assets/share-preview-page-BFWZoXdm.js +2 -0
  86. package/dist/gateway/static/root/assets/shares-settings-oDALm4b6.js +1 -0
  87. package/dist/gateway/static/root/assets/skill-reload-api-DmwelnfK.js +1 -0
  88. package/dist/gateway/static/root/assets/skills-page-BE9JXz4U.js +2 -0
  89. package/dist/gateway/static/root/assets/{skills-page.utils-CH-quGxZ.js → skills-page.utils-Ii8qeXhs.js} +1 -1
  90. package/dist/gateway/static/root/assets/{system-settings-panel-CGC7eBso.js → system-settings-panel-Di6OSO-0.js} +1 -1
  91. package/dist/gateway/static/root/assets/task-detail-page-D1AWszc7.js +1 -0
  92. package/dist/gateway/static/root/assets/theme-store-1SZ-HFHX.js +1 -0
  93. package/dist/gateway/static/root/assets/tunnel-api-DDOlOYlj.js +1 -0
  94. package/dist/gateway/static/root/assets/{use-autosave-BydB6x2K.js → use-autosave-CQ8uWNnB.js} +1 -1
  95. package/dist/gateway/static/root/assets/user-model-page-C00i4ea0.js +2 -0
  96. package/dist/gateway/static/root/assets/{voice-api-key-field-CPUDBcag.js → voice-api-key-field-COTzshjL.js} +1 -1
  97. package/dist/gateway/static/root/assets/{voice-config-api-bZqN8-UF.js → voice-config-api-DgJML_uM.js} +1 -1
  98. package/dist/gateway/static/root/assets/{work-discovery-overlay-D_FmJbGH.js → work-discovery-overlay-_URrXbi4.js} +1 -1
  99. package/dist/gateway/static/root/assets/workflow-run-setup-panel-CALs-1nd.js +3 -0
  100. package/dist/gateway/static/root/assets/workflows-page-BUiBjz6m.js +6 -0
  101. package/dist/gateway/static/root/channel-icons/feishu.svg +6 -12
  102. package/dist/gateway/static/root/connector-icons/SOURCES.md +12 -0
  103. package/dist/gateway/static/root/connector-icons/dingtalk-mark.svg +1 -0
  104. package/dist/gateway/static/root/connector-icons/tencent-meeting-mark.svg +37 -0
  105. package/dist/gateway/static/root/connector-icons/wps-calendar.svg +14 -0
  106. package/dist/gateway/static/root/connector-icons/wps-docs.svg +14 -0
  107. package/dist/gateway/static/root/connector-icons/wps-mail.svg +7 -0
  108. package/dist/gateway/static/root/index.html +14 -12
  109. package/dist/package.js +1 -1
  110. package/dist/packages/gateway-contract/src/device-pairing.js +100 -7
  111. package/dist/packages/gateway-contract/src/gateway-scopes.js +53 -0
  112. package/dist/packages/gateway-contract/src/index.js +2 -0
  113. package/dist/packages/realtime-client/src/index.js +14 -2
  114. package/dist/packages/realtime-protocol/src/index.js +18 -14
  115. package/dist/src/agent/agent-instance-gateway.d.ts +2 -0
  116. package/dist/src/agent/agent-manager.d.ts +2 -0
  117. package/dist/src/agent/agent-manager.js +40 -12
  118. package/dist/src/agent/agent-scope.d.ts +4 -1
  119. package/dist/src/agent/agent-scope.js +19 -3
  120. package/dist/src/agent/commands/command-isolation.js +11 -9
  121. package/dist/src/agent/commands/command-registry.js +18 -33
  122. package/dist/src/agent/context/audit.js +12 -2
  123. package/dist/src/agent/context/coordinator.d.ts +13 -3
  124. package/dist/src/agent/context/coordinator.js +27 -11
  125. package/dist/src/agent/context/execution-context.js +42 -22
  126. package/dist/src/agent/context/execution-context.types.d.ts +4 -2
  127. package/dist/src/agent/context/execution-scope.d.ts +2 -2
  128. package/dist/src/agent/context/execution-scope.js +1 -1
  129. package/dist/src/agent/context/project-context.d.ts +2 -2
  130. package/dist/src/agent/context/project-context.js +3 -3
  131. package/dist/src/agent/embedded/run-for-session.d.ts +1 -0
  132. package/dist/src/agent/embedded/run-for-session.js +7 -1
  133. package/dist/src/agent/external-tools/composio-provider.js +83 -20
  134. package/dist/src/agent/external-tools/gateway-tools.js +2 -1
  135. package/dist/src/agent/inbound/attachment-pipeline.d.ts +2 -0
  136. package/dist/src/agent/inbound/attachment-pipeline.js +3 -3
  137. package/dist/src/agent/inbound/inbound-loop.js +1 -0
  138. package/dist/src/agent/inbound/turn-dispatcher.js +3 -3
  139. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  140. package/dist/src/agent/mcp/mcp-stdio-transport.js +5 -2
  141. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +1 -1
  142. package/dist/src/agent/memory/compaction-promotion.js +7 -2
  143. package/dist/src/agent/memory/create-memory-manager.js +1 -0
  144. package/dist/src/agent/memory/manager.d.ts +6 -0
  145. package/dist/src/agent/memory/manager.js +74 -39
  146. package/dist/src/agent/memory/runtime.d.ts +3 -3
  147. package/dist/src/agent/memory/runtime.js +11 -4
  148. package/dist/src/agent/orchestration/agent-orchestrator.js +4 -1
  149. package/dist/src/agent/prompt/cache-boundary.d.ts +2 -0
  150. package/dist/src/agent/prompt/cache-boundary.js +10 -1
  151. package/dist/src/agent/service/build-direct-message-content.d.ts +1 -0
  152. package/dist/src/agent/service/build-direct-message-content.js +2 -1
  153. package/dist/src/agent/service/direct-turn-helpers.js +3 -2
  154. package/dist/src/agent/service/process-direct-streaming.d.ts +3 -1
  155. package/dist/src/agent/service/process-direct-streaming.js +3 -2
  156. package/dist/src/agent/service/webchat-tts.d.ts +0 -4
  157. package/dist/src/agent/service/webchat-tts.js +20 -19
  158. package/dist/src/agent/tools/factory.js +3 -3
  159. package/dist/src/agent/tools/knowledge-memory-tool.d.ts +2 -2
  160. package/dist/src/agent/tools/knowledge-memory-tool.js +7 -7
  161. package/dist/src/browser/native-messaging-host.js +2 -2
  162. package/dist/src/channels/attachments/voice-stt-webchat.d.ts +3 -0
  163. package/dist/src/channels/attachments/voice-stt-webchat.js +22 -9
  164. package/dist/src/cli/commands/agent.js +2 -0
  165. package/dist/src/cli/commands/config.js +8 -9
  166. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  167. package/dist/src/cli/commands/extension-marketplace.js +69 -44
  168. package/dist/src/cli/commands/extension-pack.js +0 -2
  169. package/dist/src/cli/commands/extension.js +4 -25
  170. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  171. package/dist/src/cli/commands/onboard/gateway.js +2 -1
  172. package/dist/src/cli/utils/init-workspace-core.js +5 -2
  173. package/dist/src/config/index.js +2 -2
  174. package/dist/src/config/loader.d.ts +1 -0
  175. package/dist/src/config/loader.js +14 -1
  176. package/dist/src/config/schema.d.ts +22 -3
  177. package/dist/src/config/schema.js +13 -3
  178. package/dist/src/connectors/account-access.d.ts +4 -0
  179. package/dist/src/connectors/account-access.js +23 -0
  180. package/dist/src/connectors/approval-resume.d.ts +4 -0
  181. package/dist/src/connectors/approval-resume.js +23 -0
  182. package/dist/src/connectors/auth-provider-registry.d.ts +1 -0
  183. package/dist/src/connectors/auth-provider-registry.js +2 -1
  184. package/dist/src/connectors/authorization-attempts.d.ts +21 -0
  185. package/dist/src/connectors/authorization-attempts.js +33 -0
  186. package/dist/src/connectors/builtin-catalog.js +1 -3
  187. package/dist/src/connectors/catalog.js +2 -1
  188. package/dist/src/connectors/china-catalog.d.ts +2 -0
  189. package/dist/src/connectors/china-catalog.js +430 -0
  190. package/dist/src/connectors/composio-backends.d.ts +26 -0
  191. package/dist/src/connectors/composio-backends.js +65 -0
  192. package/dist/src/connectors/composio-catalog.js +2 -1
  193. package/dist/src/connectors/composio-managed-client.js +3 -1
  194. package/dist/src/connectors/composio-managed-events.js +5 -2
  195. package/dist/src/connectors/composio-session-types.d.ts +2 -0
  196. package/dist/src/connectors/composio-sessions.d.ts +11 -2
  197. package/dist/src/connectors/composio-sessions.js +137 -35
  198. package/dist/src/connectors/composio-triggers.js +4 -2
  199. package/dist/src/connectors/composio.d.ts +11 -8
  200. package/dist/src/connectors/composio.js +68 -84
  201. package/dist/src/connectors/connected-source-ingestion.js +4 -3
  202. package/dist/src/connectors/connection-recovery-service.js +25 -13
  203. package/dist/src/connectors/connector-identity.d.ts +2 -0
  204. package/dist/src/connectors/connector-identity.js +18 -5
  205. package/dist/src/connectors/content-enrichment.js +1 -1
  206. package/dist/src/connectors/instances.js +1 -7
  207. package/dist/src/connectors/learning-coordinator.js +4 -3
  208. package/dist/src/connectors/materialize.js +14 -1
  209. package/dist/src/connectors/policy.d.ts +1 -1
  210. package/dist/src/connectors/policy.js +1 -1
  211. package/dist/src/connectors/principal.js +24 -3
  212. package/dist/src/connectors/providers.d.ts +1 -0
  213. package/dist/src/connectors/providers.js +14 -2
  214. package/dist/src/connectors/runtime-adapter-registry.js +4 -9
  215. package/dist/src/connectors/secret-store.d.ts +4 -1
  216. package/dist/src/connectors/secret-store.js +7 -3
  217. package/dist/src/connectors/source-change-publisher.js +4 -2
  218. package/dist/src/connectors/types.d.ts +16 -11
  219. package/dist/src/connectors/workflow-preflight.d.ts +2 -1
  220. package/dist/src/connectors/workflow-preflight.js +20 -3
  221. package/dist/src/execution-environments/local-worktree-manager.js +17 -15
  222. package/dist/src/execution-environments/store.js +4 -2
  223. package/dist/src/execution-environments/types.d.ts +3 -0
  224. package/dist/src/execution-environments/types.js +2 -1
  225. package/dist/src/execution-environments/worktree-safety.d.ts +8 -0
  226. package/dist/src/execution-environments/worktree-safety.js +43 -0
  227. package/dist/src/extensions/activation-planner.d.ts +1 -1
  228. package/dist/src/extensions/activation-planner.js +1 -1
  229. package/dist/src/extensions/api-version.d.ts +4 -0
  230. package/dist/src/extensions/api-version.js +15 -0
  231. package/dist/src/extensions/api.d.ts +3 -9
  232. package/dist/src/extensions/api.js +26 -32
  233. package/dist/src/extensions/config-validation.d.ts +8 -0
  234. package/dist/src/extensions/config-validation.js +25 -0
  235. package/dist/src/extensions/extension-registry-impl.d.ts +20 -9
  236. package/dist/src/extensions/extension-registry-impl.js +79 -11
  237. package/dist/src/extensions/hooks.d.ts +1 -1
  238. package/dist/src/extensions/index.d.ts +2 -1
  239. package/dist/src/extensions/install-transaction.d.ts +2 -0
  240. package/dist/src/extensions/install-transaction.js +32 -21
  241. package/dist/src/extensions/install.js +18 -1
  242. package/dist/src/extensions/loader.d.ts +5 -5
  243. package/dist/src/extensions/loader.js +109 -47
  244. package/dist/src/extensions/lockfile.d.ts +3 -5
  245. package/dist/src/extensions/lockfile.js +41 -14
  246. package/dist/src/extensions/normalize-manifest.js +6 -60
  247. package/dist/src/extensions/sdk/index.d.ts +3 -2
  248. package/dist/src/extensions/sdk/index.js +2 -2
  249. package/dist/src/extensions/sdk/testing.js +0 -4
  250. package/dist/src/extensions/security.js +5 -7
  251. package/dist/src/extensions/types/core.d.ts +0 -5
  252. package/dist/src/extensions/types/index.d.ts +1 -1
  253. package/dist/src/extensions/types/manifest.d.ts +1 -25
  254. package/dist/src/extensions/types/providers.d.ts +1 -1
  255. package/dist/src/extensions/types/registration.d.ts +0 -12
  256. package/dist/src/extensions/update.js +71 -30
  257. package/dist/src/gateway/heartbeat/service.js +2 -2
  258. package/dist/src/gateway/hono/lib/config-payload.d.ts +3 -1
  259. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +47 -10
  260. package/dist/src/gateway/hono/routes/connectors.js +208 -17
  261. package/dist/src/gateway/hono/routes/context-sources.js +1 -1
  262. package/dist/src/gateway/hono/routes/devices.js +10 -7
  263. package/dist/src/gateway/hono/routes/endpoint-compatibility.js +6 -0
  264. package/dist/src/gateway/hono/routes/extension-gateway.js +0 -33
  265. package/dist/src/gateway/hono/routes/home.js +4 -1
  266. package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -1
  267. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  268. package/dist/src/gateway/hono/routes/realtime.js +30 -8
  269. package/dist/src/gateway/hono/routes/user-model.js +25 -6
  270. package/dist/src/gateway/index.js +4 -1
  271. package/dist/src/gateway/lock.d.ts +2 -0
  272. package/dist/src/gateway/lock.js +31 -14
  273. package/dist/src/gateway/run-loop.js +2 -1
  274. package/dist/src/gateway/security/gateway-scopes.d.ts +2 -5
  275. package/dist/src/gateway/security/gateway-scopes.js +3 -45
  276. package/dist/src/gateway/security/index.js +2 -1
  277. package/dist/src/gateway/service.js +11 -7
  278. package/dist/src/heartbeat/index.js +1 -1
  279. package/dist/src/imports/importService.d.ts +1 -1
  280. package/dist/src/imports/inventory.js +16 -2
  281. package/dist/src/imports/productImport.js +5 -5
  282. package/dist/src/imports/types.d.ts +3 -3
  283. package/dist/src/infra/exec.d.ts +2 -2
  284. package/dist/src/infra/exec.js +32 -27
  285. package/dist/src/infra/run-command.js +15 -50
  286. package/dist/src/infra/update-restart.js +1 -1
  287. package/dist/src/knowledge/connected-knowledge-pipeline.js +13 -3
  288. package/dist/src/knowledge-memory/domain.d.ts +17 -1
  289. package/dist/src/knowledge-memory/index.js +2 -2
  290. package/dist/src/knowledge-memory/repository.d.ts +26 -4
  291. package/dist/src/knowledge-memory/repository.js +171 -36
  292. package/dist/src/mcp/channel-bridge.js +7 -3
  293. package/dist/src/media-understanding/registry.js +6 -1
  294. package/dist/src/migrations/knowledge-memory-read-policy-config.d.ts +2 -0
  295. package/dist/src/migrations/knowledge-memory-read-policy-config.js +48 -0
  296. package/dist/src/migrations/runner.js +2 -1
  297. package/dist/src/proactive/follow-ups.js +2 -1
  298. package/dist/src/process/bounded-output.d.ts +10 -0
  299. package/dist/src/process/bounded-output.js +41 -0
  300. package/dist/src/process/kill-tree.d.ts +6 -17
  301. package/dist/src/process/kill-tree.js +43 -75
  302. package/dist/src/process/process-spec.d.ts +39 -0
  303. package/dist/src/process/process-spec.js +13 -0
  304. package/dist/src/process/run-process.d.ts +4 -0
  305. package/dist/src/process/run-process.js +97 -0
  306. package/dist/src/providers/plugin-registry.d.ts +1 -1
  307. package/dist/src/providers/plugin-registry.js +6 -0
  308. package/dist/src/realtime/runtime.js +3 -1
  309. package/dist/src/session/store.js +1 -1
  310. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +3 -0
  311. package/dist/src/storage/sqlite/connection-wait-repository.js +63 -2
  312. package/dist/src/storage/sqlite/connector-account-repository.d.ts +6 -0
  313. package/dist/src/storage/sqlite/connector-account-repository.js +35 -7
  314. package/dist/src/storage/sqlite/connector-repository.js +15 -10
  315. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +1 -1
  316. package/dist/src/storage/sqlite/device-pairing-approval.js +1 -1
  317. package/dist/src/storage/sqlite/index.d.ts +1 -1
  318. package/dist/src/storage/sqlite/index.js +6 -4
  319. package/dist/src/storage/sqlite/migrations/180_execution_environment_ownership.sql +7 -0
  320. package/dist/src/storage/sqlite/migrations/181_knowledge_item_status_events.sql +12 -0
  321. package/dist/src/storage/sqlite/migrations/182_connector_account_policies.sql +92 -0
  322. package/dist/src/storage/sqlite/migrations/183_connector_backend_consistency.sql +20 -0
  323. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  324. package/dist/src/storage/sqlite/migrations/runner.js +7 -7
  325. package/dist/src/storage/sqlite/schema.js +1 -1
  326. package/dist/src/storage/sqlite/schema.sql +13 -0
  327. package/dist/src/storage/sqlite/transcript-repository.d.ts +4 -0
  328. package/dist/src/storage/sqlite/transcript-repository.js +36 -1
  329. package/dist/src/tasks/home-query-service.js +3 -3
  330. package/dist/src/tui/backends/embedded-backend.d.ts +24 -8
  331. package/dist/src/tui/backends/embedded-backend.js +114 -10
  332. package/dist/src/tui/backends/gateway-realtime-backend.d.ts +18 -0
  333. package/dist/src/tui/backends/gateway-realtime-backend.js +31 -4
  334. package/dist/src/tui/components/assistant-message.d.ts +4 -1
  335. package/dist/src/tui/components/assistant-message.js +10 -2
  336. package/dist/src/tui/components/cell-render-mode.d.ts +4 -0
  337. package/dist/src/tui/components/cell-render-mode.js +1 -0
  338. package/dist/src/tui/components/chat-log.d.ts +17 -4
  339. package/dist/src/tui/components/chat-log.js +68 -50
  340. package/dist/src/tui/components/custom-editor.d.ts +2 -2
  341. package/dist/src/tui/components/custom-editor.js +5 -1
  342. package/dist/src/tui/components/pending-input-preview.d.ts +9 -0
  343. package/dist/src/tui/components/pending-input-preview.js +33 -0
  344. package/dist/src/tui/components/semantic-cell.d.ts +17 -0
  345. package/dist/src/tui/components/semantic-cell.js +29 -0
  346. package/dist/src/tui/components/tool-execution.d.ts +5 -1
  347. package/dist/src/tui/components/tool-execution.js +33 -10
  348. package/dist/src/tui/components/transcript-overlay.d.ts +29 -0
  349. package/dist/src/tui/components/transcript-overlay.js +114 -0
  350. package/dist/src/tui/components/tui-bottom-bar.js +3 -1
  351. package/dist/src/tui/components/user-message.d.ts +5 -1
  352. package/dist/src/tui/components/user-message.js +12 -1
  353. package/dist/src/tui/extension-host/load-extensions.d.ts +1 -1
  354. package/dist/src/tui/extension-host/runtime-context.js +2 -1
  355. package/dist/src/tui/extension-host/runtime.d.ts +1 -1
  356. package/dist/src/tui/format-tui-hotkeys.js +8 -1
  357. package/dist/src/tui/tui-agent-events.js +31 -0
  358. package/dist/src/tui/tui-backend.d.ts +23 -11
  359. package/dist/src/tui/tui-backend.js +1 -9
  360. package/dist/src/tui/tui-chat-input-state.d.ts +25 -0
  361. package/dist/src/tui/tui-chat-input-state.js +36 -0
  362. package/dist/src/tui/tui-command-formatters.js +2 -1
  363. package/dist/src/tui/tui-commands.js +1 -1
  364. package/dist/src/tui/tui-startup-resources.js +1 -1
  365. package/dist/src/tui/tui-types.d.ts +2 -1
  366. package/dist/src/tui/tui-types.js +2 -1
  367. package/dist/src/tui/tui.js +122 -30
  368. package/dist/src/tui/xopc-tui-keybindings.d.ts +23 -3
  369. package/dist/src/tui/xopc-tui-keybindings.js +22 -2
  370. package/dist/src/user-context/access-policy.d.ts +2 -2
  371. package/dist/src/user-context/access-policy.js +10 -2
  372. package/dist/src/user-context/config.d.ts +23 -6
  373. package/dist/src/user-context/config.js +54 -7
  374. package/dist/src/voice/platform-streams.js +11 -1
  375. package/dist/src/voice/realtime/omniEngine.js +13 -1
  376. package/dist/src/voice/realtime/runtime.js +2 -1
  377. package/dist/src/voice/tts/audio.js +1 -1
  378. package/dist/src/voice/tts/speech-registry.js +6 -1
  379. package/dist/src/workflows/domain/definition.d.ts +1 -0
  380. package/dist/src/workflows/domain/validation.js +1 -1
  381. package/dist/src/workflows/service/workflow-run-service.js +14 -0
  382. package/dist/src/workflows/service/workflow-session-bridge.d.ts +1 -0
  383. package/dist/src/workflows/service/workflow-session-bridge.js +1 -0
  384. package/package.json +5 -3
  385. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-4oGrNj3m.js +0 -1
  386. package/dist/gateway/static/root/assets/api-fPapljyb.js +0 -1
  387. package/dist/gateway/static/root/assets/app-management-settings-panel-CdXnNtTg.js +0 -1
  388. package/dist/gateway/static/root/assets/appearance-settings-izNAyDhW.js +0 -1
  389. package/dist/gateway/static/root/assets/apps-page-BQb3RCga.js +0 -1
  390. package/dist/gateway/static/root/assets/automations-workspace-5vTl4x0h.js +0 -6
  391. package/dist/gateway/static/root/assets/browser-settings-page-CH9prS-f.js +0 -3
  392. package/dist/gateway/static/root/assets/button-CGlRPNzi.js +0 -1
  393. package/dist/gateway/static/root/assets/capabilities-settings-panel-DMURlZbj.js +0 -8
  394. package/dist/gateway/static/root/assets/channels-settings-CFBS3Yqy.js +0 -1
  395. package/dist/gateway/static/root/assets/connectors-page-DI1c3BMz.js +0 -2
  396. package/dist/gateway/static/root/assets/cron-expression-BJMBFKCh.js +0 -2
  397. package/dist/gateway/static/root/assets/date-picker-BFRIn5y9.js +0 -1
  398. package/dist/gateway/static/root/assets/desktop-pet-settings-DFsyEJUr.js +0 -1
  399. package/dist/gateway/static/root/assets/device-pairing-wizard-C3TQVPRy.js +0 -1
  400. package/dist/gateway/static/root/assets/gateway-settings-DUqVsB3X.js +0 -1
  401. package/dist/gateway/static/root/assets/home-page-CLkumXdN.js +0 -1
  402. package/dist/gateway/static/root/assets/imports-page-DXNfRmk9.js +0 -1
  403. package/dist/gateway/static/root/assets/index-BLRIcVQa.css +0 -1
  404. package/dist/gateway/static/root/assets/index-gheM453N.js +0 -79
  405. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-5Hcec8Xf.js +0 -1
  406. package/dist/gateway/static/root/assets/local-app-workbench-page-BDg1-fcw.js +0 -2
  407. package/dist/gateway/static/root/assets/logs-page-BWZc5jwO.js +0 -2
  408. package/dist/gateway/static/root/assets/management-settings-COa3PhMs.js +0 -1
  409. package/dist/gateway/static/root/assets/messages-C9h8SImu.js +0 -3
  410. package/dist/gateway/static/root/assets/note-detail-panel-D_YGzNcR.js +0 -5
  411. package/dist/gateway/static/root/assets/notes-page-D1f2oI2-.js +0 -8
  412. package/dist/gateway/static/root/assets/project-detail-page-CRlD_Rwv.js +0 -1
  413. package/dist/gateway/static/root/assets/projects-page-mmX0SavY.js +0 -1
  414. package/dist/gateway/static/root/assets/remote-access-hub-Cqr3K6T5.js +0 -1
  415. package/dist/gateway/static/root/assets/sessions-page-CPkvbdJP.js +0 -1
  416. package/dist/gateway/static/root/assets/settings-advanced-gate-Cu0DAbeH.js +0 -1
  417. package/dist/gateway/static/root/assets/setup-status-panel-D8fQF1jZ.js +0 -1
  418. package/dist/gateway/static/root/assets/share-preview-page-BgHqwTuT.js +0 -2
  419. package/dist/gateway/static/root/assets/shares-settings-Id4vRHzI.js +0 -1
  420. package/dist/gateway/static/root/assets/skill-reload-api-BB2Fj_di.js +0 -1
  421. package/dist/gateway/static/root/assets/skills-page-BAwF4LpS.js +0 -2
  422. package/dist/gateway/static/root/assets/task-detail-page-BVjw812D.js +0 -1
  423. package/dist/gateway/static/root/assets/theme-store-KfFEGMlp.js +0 -1
  424. package/dist/gateway/static/root/assets/tunnel-api-Do98Xk05.js +0 -1
  425. package/dist/gateway/static/root/assets/user-model-page-Nv68a4ak.js +0 -2
  426. package/dist/gateway/static/root/assets/workflow-run-setup-panel-1lZ_btki.js +0 -3
  427. package/dist/gateway/static/root/assets/workflows-page-DFOhccm3.js +0 -6
  428. package/dist/src/extensions/when-context.d.ts +0 -6
  429. package/dist/src/extensions/when-context.js +0 -26
  430. package/dist/src/extensions/when-expression.d.ts +0 -11
  431. package/dist/src/extensions/when-expression.js +0 -213
@@ -1,8 +1,8 @@
1
- import type { ExtensionRegistryImpl } from '../../extensions/loader.js';
1
+ import type { ExtensionRegistryImpl } from '../../extensions/extension-registry-impl.js';
2
2
  import { type SessionTimelineItem } from '../../session/transcript-outline.js';
3
3
  import { type Config } from '../../config/schema.js';
4
4
  import type { ExportFormat } from '../../session/types.js';
5
- import type { ChatSendOptions, HistoryMessage, TuiBackend, TuiCompactionResult, TuiComposerHistoryItem, TuiEvent, TuiModelChoice, TuiShareRequest, TuiShareResult, TuiSessionStats, TuiSessionItem, TuiTranscriptTreeEntry, TuiAgentInfo, TuiWorkspaceFileSearchEntry, TuiWorkflowRunStartRequest, TuiWorkflowRunStartResult, TuiStartupProjectResult } from '../tui-backend.js';
5
+ import type { ChatSendOptions, HistoryMessage, TuiBackend, TuiCompactionResult, TuiComposerHistoryItem, TuiEvent, TuiModelChoice, TuiShareRequest, TuiShareResult, TuiSessionStats, TuiSessionItem, TuiTranscriptTreeEntry, TuiAgentInfo, TuiWorkspaceFileSearchEntry, TuiWorkflowRunStartRequest, TuiWorkflowRunStartResult, TuiStartupProjectResult, TuiChatInputState } from '../tui-backend.js';
6
6
  import type { SessionInfo } from '../tui-types.js';
7
7
  interface EmbeddedBackendOptions {
8
8
  config?: Config;
@@ -28,6 +28,7 @@ export declare class EmbeddedBackend implements TuiBackend {
28
28
  private workflowRunService;
29
29
  private running;
30
30
  private chatAbort;
31
+ private readonly chatInputStates;
31
32
  onEvent?: (evt: TuiEvent) => void;
32
33
  onConnected?: () => void;
33
34
  onDisconnected?: (reason: string) => void;
@@ -73,15 +74,30 @@ export declare class EmbeddedBackend implements TuiBackend {
73
74
  }): Promise<{
74
75
  ok: boolean;
75
76
  effectiveDelivery?: 'next' | 'steer';
77
+ state?: TuiChatInputState;
76
78
  }>;
77
- getChatInputState(conversationId: string): Promise<{
79
+ getChatInputState(conversationId: string): Promise<TuiChatInputState>;
80
+ updateChatInput(opts: {
78
81
  conversationId: string;
79
- revision: number;
80
- inputs: {
81
- id: string;
82
- status: string;
83
- }[];
82
+ inputId: string;
83
+ version: number;
84
+ content: string;
85
+ }): Promise<{
86
+ ok: boolean;
87
+ state?: TuiChatInputState;
88
+ }>;
89
+ removeChatInput(opts: {
90
+ conversationId: string;
91
+ inputId: string;
92
+ version: number;
93
+ }): Promise<{
94
+ ok: boolean;
95
+ state?: TuiChatInputState;
84
96
  }>;
97
+ private appendPendingChatInput;
98
+ private consumePendingChatInput;
99
+ private publishChatInputState;
100
+ private replaceEmbeddedQueue;
85
101
  loadHistory(opts: {
86
102
  conversationId: string;
87
103
  limit?: number;
@@ -33,6 +33,7 @@ import { WorkflowSessionBridge } from "../../workflows/service/workflow-session-
33
33
  import { ChatStreamMapper } from "../../gateway/chat-stream/mapper.js";
34
34
  import { getXopcCloudCatalogCoordinator } from "../../providers/xopc-cloud-catalog-coordinator.js";
35
35
  import { fuzzySearchWorkspaceFiles } from "../../gateway/workspace-file-search.js";
36
+ import { commitDeliveredChatInput } from "../tui-chat-input-state.js";
36
37
  import { sessionMetadataToTuiItem } from "../tui-session-format.js";
37
38
  import { buildTuiTranscriptTree, transcriptTreeEntryIdToRowNumber } from "../tui-transcript-tree.js";
38
39
  import { computeTuiSessionStats } from "../tui-session-stats.js";
@@ -54,6 +55,14 @@ function isPathSameOrInside(parentDir, childDir) {
54
55
  const rel = relative(resolve(parentDir), resolve(childDir));
55
56
  return rel === "" || !!rel && !rel.startsWith("..") && !isAbsolute(rel);
56
57
  }
58
+ function deliveredUserMessageText(event) {
59
+ if (event.type !== "message_start" || !event.message || typeof event.message !== "object") return void 0;
60
+ const message = event.message;
61
+ if (message.role !== "user") return void 0;
62
+ if (typeof message.content === "string") return message.content;
63
+ if (!Array.isArray(message.content)) return void 0;
64
+ return message.content.map((block) => block && typeof block === "object" && block.type === "text" ? String(block.text ?? "") : "").join("");
65
+ }
57
66
  /**
58
67
  * TUI backend that runs the agent in-process (no gateway required).
59
68
  *
@@ -71,6 +80,7 @@ var EmbeddedBackend = class {
71
80
  workflowRunService = null;
72
81
  running = false;
73
82
  chatAbort = null;
83
+ chatInputStates = /* @__PURE__ */ new Map();
74
84
  onEvent;
75
85
  onConnected;
76
86
  onDisconnected;
@@ -319,6 +329,7 @@ var EmbeddedBackend = class {
319
329
  source: "embedded"
320
330
  });
321
331
  (async () => {
332
+ let initialUserMessageObserved = false;
322
333
  try {
323
334
  const messageForAgent = opts.message.trimStart().startsWith("/") ? opts.message : prependEnvelopeTimestamp(opts.message);
324
335
  const stream = agent.turnDispatcher.processDirectStreaming(messageForAgent, opts.conversationId, {
@@ -330,6 +341,9 @@ var EmbeddedBackend = class {
330
341
  });
331
342
  for await (const event of stream) {
332
343
  if (signal.aborted) break;
344
+ const deliveredInput = deliveredUserMessageText(event);
345
+ if (deliveredInput !== void 0) if (initialUserMessageObserved) this.consumePendingChatInput(opts.conversationId, deliveredInput);
346
+ else initialUserMessageObserved = true;
333
347
  for (const mapped of mapper.map(event)) this.onEvent?.({
334
348
  event: mapped.type,
335
349
  data: mapped,
@@ -369,10 +383,11 @@ var EmbeddedBackend = class {
369
383
  async submitChatInput(opts) {
370
384
  if (!this.agent) return { ok: false };
371
385
  if (opts.delivery === "steer") {
372
- const ok = await this.agent.turnDispatcher.steerWebchatSession(opts.conversationId, opts.message);
386
+ if (!await this.agent.turnDispatcher.steerWebchatSession(opts.conversationId, opts.message)) return { ok: false };
373
387
  return {
374
- ok,
375
- effectiveDelivery: ok ? "steer" : void 0
388
+ ok: true,
389
+ effectiveDelivery: "steer",
390
+ state: this.appendPendingChatInput(opts.conversationId, opts.message, "steer")
376
391
  };
377
392
  }
378
393
  const { getEmbeddedRunByConversationId } = await import("../../agent/embedded/runs.js");
@@ -381,20 +396,109 @@ var EmbeddedBackend = class {
381
396
  await handle.session.followUp(opts.message);
382
397
  return {
383
398
  ok: true,
384
- effectiveDelivery: "next"
399
+ effectiveDelivery: "next",
400
+ state: this.appendPendingChatInput(opts.conversationId, opts.message, "next")
385
401
  };
386
402
  }
387
403
  async getChatInputState(conversationId) {
388
- const { getEmbeddedRunByConversationId } = await import("../../agent/embedded/runs.js");
389
- const handle = getEmbeddedRunByConversationId(conversationId);
404
+ return this.chatInputStates.get(conversationId) ?? {
405
+ conversationId,
406
+ revision: 0,
407
+ inputs: []
408
+ };
409
+ }
410
+ async updateChatInput(opts) {
411
+ const current = await this.getChatInputState(opts.conversationId);
412
+ const target = current.inputs.find((input) => input.id === opts.inputId);
413
+ if (!target || target.version !== opts.version || target.status !== "queued") return {
414
+ ok: false,
415
+ state: current
416
+ };
417
+ const state = {
418
+ ...current,
419
+ revision: current.revision + 1,
420
+ inputs: current.inputs.map((input) => input.id === target.id ? {
421
+ ...input,
422
+ content: opts.content,
423
+ version: input.version + 1
424
+ } : input)
425
+ };
426
+ if (!await this.replaceEmbeddedQueue(opts.conversationId, state)) return {
427
+ ok: false,
428
+ state: current
429
+ };
430
+ this.publishChatInputState(state);
431
+ return {
432
+ ok: true,
433
+ state
434
+ };
435
+ }
436
+ async removeChatInput(opts) {
437
+ const current = await this.getChatInputState(opts.conversationId);
438
+ const target = current.inputs.find((input) => input.id === opts.inputId);
439
+ if (!target || target.version !== opts.version || target.status !== "queued" && target.status !== "interrupted") return {
440
+ ok: false,
441
+ state: current
442
+ };
443
+ const state = {
444
+ ...current,
445
+ revision: current.revision + 1,
446
+ inputs: current.inputs.filter((input) => input.id !== target.id)
447
+ };
448
+ if (!await this.replaceEmbeddedQueue(opts.conversationId, state)) return {
449
+ ok: false,
450
+ state: current
451
+ };
452
+ this.publishChatInputState(state);
390
453
  return {
454
+ ok: true,
455
+ state
456
+ };
457
+ }
458
+ appendPendingChatInput(conversationId, content, delivery) {
459
+ const current = this.chatInputStates.get(conversationId) ?? {
391
460
  conversationId,
392
461
  revision: 0,
393
- inputs: Array.from({ length: handle?.session.pendingMessageCount ?? 0 }, (_, index) => ({
394
- id: String(index),
395
- status: "queued"
396
- }))
462
+ inputs: []
397
463
  };
464
+ const state = {
465
+ ...current,
466
+ revision: current.revision + 1,
467
+ inputs: [...current.inputs, {
468
+ id: crypto.randomUUID(),
469
+ content,
470
+ requestedDelivery: delivery,
471
+ effectiveDelivery: delivery,
472
+ status: delivery === "steer" ? "injecting" : "queued",
473
+ version: 1,
474
+ position: current.inputs.length
475
+ }]
476
+ };
477
+ this.publishChatInputState(state);
478
+ return state;
479
+ }
480
+ consumePendingChatInput(conversationId, content) {
481
+ const current = this.chatInputStates.get(conversationId);
482
+ if (!current?.inputs.length) return;
483
+ const next = commitDeliveredChatInput(current, content);
484
+ if (next !== current) this.publishChatInputState(next);
485
+ }
486
+ publishChatInputState(state) {
487
+ this.chatInputStates.set(state.conversationId, state);
488
+ this.onEvent?.({
489
+ event: "session.input-state",
490
+ data: state,
491
+ source: "embedded"
492
+ });
493
+ }
494
+ async replaceEmbeddedQueue(conversationId, state) {
495
+ const { getEmbeddedRunByConversationId } = await import("../../agent/embedded/runs.js");
496
+ const handle = getEmbeddedRunByConversationId(conversationId);
497
+ if (!handle) return false;
498
+ handle.session.clearQueue();
499
+ for (const input of state.inputs) if (input.status === "injecting") await handle.session.steer(input.content);
500
+ else await handle.session.followUp(input.content);
501
+ return true;
398
502
  }
399
503
  async loadHistory(opts) {
400
504
  if (!this.agent) return { messages: [] };
@@ -71,8 +71,26 @@ export declare class GatewayRealtimeBackend implements TuiBackend {
71
71
  }): Promise<{
72
72
  ok: boolean;
73
73
  effectiveDelivery?: 'next' | 'steer';
74
+ state?: TuiChatInputState;
74
75
  }>;
75
76
  getChatInputState(conversationId: string): Promise<TuiChatInputState>;
77
+ updateChatInput(opts: {
78
+ conversationId: string;
79
+ inputId: string;
80
+ version: number;
81
+ content: string;
82
+ }): Promise<{
83
+ ok: boolean;
84
+ state?: TuiChatInputState;
85
+ }>;
86
+ removeChatInput(opts: {
87
+ conversationId: string;
88
+ inputId: string;
89
+ version: number;
90
+ }): Promise<{
91
+ ok: boolean;
92
+ state?: TuiChatInputState;
93
+ }>;
76
94
  getStartupResources(conversationId: string): Promise<TuiStartupResources>;
77
95
  loadHistory(opts: {
78
96
  conversationId: string;
@@ -224,7 +224,8 @@ var GatewayRealtimeBackend = class {
224
224
  const json = await res.json();
225
225
  return {
226
226
  ok: json.ok === true,
227
- effectiveDelivery: json.payload?.effectiveDelivery
227
+ effectiveDelivery: json.payload?.effectiveDelivery,
228
+ state: json.payload?.state
228
229
  };
229
230
  } catch {
230
231
  return { ok: false };
@@ -235,6 +236,28 @@ var GatewayRealtimeBackend = class {
235
236
  if (!res.ok) throw new Error(`Input state failed (${res.status})`);
236
237
  return (await res.json()).payload;
237
238
  }
239
+ async updateChatInput(opts) {
240
+ const res = await gatewayFetch(this.baseUrl, `/api/sessions/${encodeURIComponent(opts.conversationId)}/inputs/${encodeURIComponent(opts.inputId)}`, this.credential, {
241
+ method: "PATCH",
242
+ body: JSON.stringify({
243
+ version: opts.version,
244
+ content: opts.content
245
+ })
246
+ });
247
+ const json = await res.json().catch(() => ({}));
248
+ return {
249
+ ok: res.ok && json.ok === true,
250
+ state: json.payload
251
+ };
252
+ }
253
+ async removeChatInput(opts) {
254
+ const res = await gatewayFetch(this.baseUrl, `/api/sessions/${encodeURIComponent(opts.conversationId)}/inputs/${encodeURIComponent(opts.inputId)}?version=${opts.version}`, this.credential, { method: "DELETE" });
255
+ const json = await res.json().catch(() => ({}));
256
+ return {
257
+ ok: res.ok && json.ok === true,
258
+ state: json.payload
259
+ };
260
+ }
238
261
  async getStartupResources(conversationId) {
239
262
  const empty = {
240
263
  context: [],
@@ -726,12 +749,16 @@ var GatewayRealtimeBackend = class {
726
749
  method: "POST",
727
750
  body: JSON.stringify({
728
751
  clientId: this.clientId,
729
- clientKind: "tui"
752
+ clientKind: "tui",
753
+ protocolVersion: 2
730
754
  })
731
755
  });
732
756
  const body = await response.json().catch(() => null);
733
- if (!response.ok || !body?.payload?.ticket) throw new Error(body?.error?.message ?? `Realtime ticket failed (${response.status})`);
734
- return body.payload.ticket;
757
+ if (!response.ok || !body?.payload?.ticket || !body.payload.realtime) throw new Error(body?.error?.message ?? `Realtime ticket failed (${response.status})`);
758
+ return {
759
+ ticket: body.payload.ticket,
760
+ realtime: body.payload.realtime
761
+ };
735
762
  },
736
763
  createWebSocket: (url) => new WebSocket(url),
737
764
  onStateChange: (state, error) => {
@@ -1,21 +1,24 @@
1
1
  import type { AgentMessage } from '@earendil-works/pi-agent-core';
2
2
  import { Container } from '@earendil-works/pi-tui';
3
+ import type { CellRenderMode, ModeAwareCell } from './cell-render-mode.js';
3
4
  export type AssistantMessageOptions = {
4
5
  hideThinkingBlock?: boolean;
5
6
  hiddenThinkingLabel?: string;
6
7
  };
7
8
  export declare function createAssistantMessageFromText(text: string): AgentMessage;
8
- export declare class AssistantMessageComponent extends Container {
9
+ export declare class AssistantMessageComponent extends Container implements ModeAwareCell {
9
10
  private readonly contentContainer;
10
11
  private message;
11
12
  private linkedToolCall;
12
13
  private hideThinkingBlock;
13
14
  private hiddenThinkingLabel;
15
+ private renderMode;
14
16
  constructor(message?: AgentMessage, options?: AssistantMessageOptions);
15
17
  updateContent(message: AgentMessage): void;
16
18
  setHasToolCalls(hasTools: boolean): void;
17
19
  setHideThinkingBlock(hide: boolean): void;
18
20
  setHiddenThinkingLabel(label: string): void;
21
+ setRenderMode(mode: CellRenderMode): void;
19
22
  invalidate(): void;
20
23
  render(width: number): string[];
21
24
  private refresh;
@@ -101,6 +101,7 @@ var AssistantMessageComponent = class extends Container {
101
101
  linkedToolCall = false;
102
102
  hideThinkingBlock = false;
103
103
  hiddenThinkingLabel = "Thinking...";
104
+ renderMode = "compact";
104
105
  constructor(message, options = {}) {
105
106
  super();
106
107
  this.hideThinkingBlock = options.hideThinkingBlock ?? false;
@@ -126,11 +127,17 @@ var AssistantMessageComponent = class extends Container {
126
127
  this.hiddenThinkingLabel = label;
127
128
  this.refresh();
128
129
  }
130
+ setRenderMode(mode) {
131
+ if (this.renderMode === mode) return;
132
+ this.renderMode = mode;
133
+ this.refresh();
134
+ }
129
135
  invalidate() {
130
136
  super.invalidate();
131
137
  this.refresh();
132
138
  }
133
139
  render(width) {
140
+ if (this.renderMode === "raw") return new Text(JSON.stringify(this.message ?? {}, null, 2), 0, 0).render(width);
134
141
  const lines = super.render(width);
135
142
  if (hasToolCalls(this.message) || this.linkedToolCall || lines.length === 0) return lines;
136
143
  lines[0] = OSC133_ZONE_START + lines[0];
@@ -155,7 +162,8 @@ var AssistantMessageComponent = class extends Container {
155
162
  for (let i = 0; i < blocks.length; i++) {
156
163
  const block = blocks[i];
157
164
  if (block.type === "text") {
158
- const text = compactToolAdjacentText(blockText(block, "text"), this.linkedToolCall).trim();
165
+ const sourceText = blockText(block, "text");
166
+ const text = (this.renderMode === "compact" ? compactToolAdjacentText(sourceText, this.linkedToolCall) : sourceText).trim();
159
167
  if (!text) continue;
160
168
  if (renderedVisible > 0) this.contentContainer.addChild(new Spacer(1));
161
169
  this.contentContainer.addChild(new Markdown(text, 1, 0, markdownTheme, { color: (line) => theme.assistantText(line) }, { preserveOrderedListMarkers: true }));
@@ -164,7 +172,7 @@ var AssistantMessageComponent = class extends Container {
164
172
  const thinking = blockText(block, "thinking").trim();
165
173
  if (!thinking) continue;
166
174
  if (renderedVisible > 0) this.contentContainer.addChild(new Spacer(1));
167
- const text = this.hideThinkingBlock ? this.hiddenThinkingLabel : thinking;
175
+ const text = this.renderMode === "compact" && this.hideThinkingBlock ? this.hiddenThinkingLabel : thinking;
168
176
  this.contentContainer.addChild(new Markdown(text, 1, 0, markdownTheme, { color: (line) => theme.dim(theme.italic(line)) }, { preserveOrderedListMarkers: true }));
169
177
  renderedVisible++;
170
178
  } else if (block.type === "image" || block.type === "image_url") {
@@ -0,0 +1,4 @@
1
+ export type CellRenderMode = 'compact' | 'transcript' | 'raw';
2
+ export interface ModeAwareCell {
3
+ setRenderMode(mode: CellRenderMode): void;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -8,6 +8,8 @@ import { type CustomMessageSummary } from './custom-message.js';
8
8
  import type { TuiMessageRenderer } from '../../extensions/types/tui.js';
9
9
  import { type ToolExecutionOptions } from './tool-execution.js';
10
10
  import type { TuiBranchSummary, TuiCompactionResult } from '../tui-backend.js';
11
+ import type { CellRenderMode } from './cell-render-mode.js';
12
+ import { type SemanticCellData } from './semantic-cell.js';
11
13
  export type ChatLogEntryMeta = {
12
14
  displayIndex?: number;
13
15
  historyIndex?: number;
@@ -22,11 +24,12 @@ export declare class ChatLog extends Container {
22
24
  private branchBlocks;
23
25
  private branchMessageBlocks;
24
26
  private customBlocks;
27
+ private semanticCells;
25
28
  private customMessageRenderers;
26
29
  private assistantMessages;
27
- private streamingRuns;
30
+ private activeAssistantByRun;
28
31
  /** After finalizeAssistant, late tool execution events can still arrive; keep the bubble to link tools. */
29
- private assistantAnchorByRunId;
32
+ private committedAssistantByRun;
30
33
  private runsWithTools;
31
34
  private toolsExpanded;
32
35
  private showThinking;
@@ -39,9 +42,10 @@ export declare class ChatLog extends Container {
39
42
  private entryRecords;
40
43
  private viewportRowsProvider;
41
44
  private historyViewDisplayIndex;
45
+ private renderMode;
46
+ private readonly activeCells;
47
+ private readonly committedCells;
42
48
  constructor(keybindings?: KeybindingsManager);
43
- private pruneOverflow;
44
- private dropReferences;
45
49
  private append;
46
50
  clearAll(): void;
47
51
  private createAssistantMessage;
@@ -52,6 +56,7 @@ export declare class ChatLog extends Container {
52
56
  addBranchSummary(summary: TuiBranchSummary): void;
53
57
  addBranchMessageSummary(summary: BranchMessageSummary): void;
54
58
  addCustomMessage(summary: CustomMessageSummary): void;
59
+ upsertSemanticCell(id: string, data: SemanticCellData): void;
55
60
  setCustomMessageRenderer(customType: string, renderer: TuiMessageRenderer | undefined): void;
56
61
  addUser(text: string | unknown[], meta?: ChatLogEntryMeta): void;
57
62
  /** Stream local `!command` output in a bordered block. */
@@ -72,6 +77,14 @@ export declare class ChatLog extends Container {
72
77
  setShowThinking(showThinking: boolean): void;
73
78
  setHiddenThinkingLabel(label?: string): void;
74
79
  setToolImageOptions(options: ToolExecutionOptions): void;
80
+ setRenderMode(mode: CellRenderMode): void;
81
+ getRenderMode(): CellRenderMode;
82
+ private applyRenderMode;
83
+ getCellLifecycleCounts(): {
84
+ active: number;
85
+ committed: number;
86
+ };
87
+ private commitCell;
75
88
  getLastAssistantText(): string;
76
89
  setViewportRowsProvider(provider: (() => number) | undefined): void;
77
90
  jumpToDisplayIndex(displayIndex: number): boolean;