@xopcai/xopc 0.0.210 → 0.0.211

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 (263) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-JLmEb1p0.js → activity-store-BzjFoSr0.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CI1zQfzY.js → agent-avatar-dicebear-DTfjhfVE.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-CjhgfuVJ.js +68 -0
  6. package/dist/gateway/static/root/assets/{api-C6MmWfcb.js → api-D269PnU9.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-Cd02GGpV.js → app-management-settings-panel-BFpfQDWc.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-Db-h2I3G.js → appearance-settings-DLxFdqhY.js} +1 -1
  9. package/dist/gateway/static/root/assets/{apps-page-BT7F4WBI.js → apps-page-CjmlGB5V.js} +1 -1
  10. package/dist/gateway/static/root/assets/{archive-plugin-CMHzJT2a.js → archive-plugin-DPlH4dnc.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-BzhI2LoH.js → attachment-load-xqfLLd0I.js} +1 -1
  12. package/dist/gateway/static/root/assets/automations-page-4m6Ey6wG.js +6 -0
  13. package/dist/gateway/static/root/assets/{binary-plugins-DsUeHvZO.js → binary-plugins-C0tuoPXk.js} +1 -1
  14. package/dist/gateway/static/root/assets/{block-editor-CFfsIeZ4.js → block-editor-Deyphj1o.js} +47 -47
  15. package/dist/gateway/static/root/assets/browser-settings-page-CAGCYx8U.js +8 -0
  16. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BiWghvJ0.js → browser-workflow-inputs-CYEbXyRF.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-workflows-page-DPLdT6Zn.js → browser-workflows-page-Bf0tPbGi.js} +2 -2
  18. package/dist/gateway/static/root/assets/capabilities-settings-panel-CKfLsxTI.js +7 -0
  19. package/dist/gateway/static/root/assets/{capability-presets-api-CTxGFvsS.js → capability-presets-api-DPkFA_-R.js} +1 -1
  20. package/dist/gateway/static/root/assets/capability-presets-settings-panel-CpipKNqX.js +3 -0
  21. package/dist/gateway/static/root/assets/{channel-recipient-api-BklVUOxC.js → channel-recipient-api-DqKaAcnZ.js} +1 -1
  22. package/dist/gateway/static/root/assets/channels-settings-Bvq-O4pt.js +1 -0
  23. package/dist/gateway/static/root/assets/channels-status-swr-CrMld2l7.js +1 -0
  24. package/dist/gateway/static/root/assets/{chat-terminal-dock-0F4Jmma2.js → chat-terminal-dock-CTDRZa7e.js} +2 -2
  25. package/dist/gateway/static/root/assets/{connectors-api-BvIZ51ty.js → connectors-api-Buu8fif8.js} +1 -1
  26. package/dist/gateway/static/root/assets/connectors-page-CSQRzaVn.js +2 -0
  27. package/dist/gateway/static/root/assets/{cron-expression-BHmwaMbO.js → cron-expression-DTLR82NB.js} +1 -1
  28. package/dist/gateway/static/root/assets/{date-picker-fj_pPCv5.js → date-picker-DyNogHQH.js} +1 -1
  29. package/dist/gateway/static/root/assets/{dependency-picker-DsWvwOv-.js → dependency-picker-BpnCuo7B.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-mjkF0Xxh.js → desktop-pet-CDKI4gVB.js} +1 -1
  31. package/dist/gateway/static/root/assets/{desktop-pet-settings-ClwUpRYu.js → desktop-pet-settings-DjT5C2a3.js} +1 -1
  32. package/dist/gateway/static/root/assets/{directory-picker-path-field-OkqRFyRL.js → directory-picker-path-field-DlJY90TM.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-debug-page-DC69wplH.js → extension-debug-page-DWf2z7q5.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-DCtk6zdJ.js → extension-page-Dorx0kf9.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-Bkm4zzv-.js → extension-settings-page-B1wU9ZOB.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-config-api-Dr_NQt7v.js → gateway-config-api-B1lG4dNr.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-config-swr-CEfv8N1J.js → gateway-config-swr-BIxuwPQi.js} +1 -1
  38. package/dist/gateway/static/root/assets/gateway-settings-DqIOqJjM.js +1 -0
  39. package/dist/gateway/static/root/assets/{gateway-startup-retry-B8hebJ7s.js → gateway-startup-retry-BpZgd4U-.js} +1 -1
  40. package/dist/gateway/static/root/assets/heartbeat-settings-DG4Kmgkc.js +1 -0
  41. package/dist/gateway/static/root/assets/home-page-BhqItS_s.js +1 -0
  42. package/dist/gateway/static/root/assets/image-generation-api-PkhYohDa.js +1 -0
  43. package/dist/gateway/static/root/assets/index-DLhvsU9B.css +2 -0
  44. package/dist/gateway/static/root/assets/{index-DJ7HSgKs.js → index-_cuTcWjB.js} +78 -56
  45. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DCQvf05d.js → keyboard-shortcuts-settings-6OQT3gQF.js} +1 -1
  46. package/dist/gateway/static/root/assets/local-app-workbench-page-DWjTmzxw.js +2 -0
  47. package/dist/gateway/static/root/assets/{local-apps-page-B3Ugd0my.js → local-apps-page-DfruRAmE.js} +1 -1
  48. package/dist/gateway/static/root/assets/{locale-store-hDBVeG3G.js → locale-store-C5MK9WcP.js} +1 -1
  49. package/dist/gateway/static/root/assets/logs-page-BA5efZ8B.js +2 -0
  50. package/dist/gateway/static/root/assets/{management-settings-C-S5Llq3.js → management-settings-L1VYkywO.js} +1 -1
  51. package/dist/gateway/static/root/assets/{markdown-split-DuVq37Uh.js → markdown-split-oqgHbqt-.js} +1 -1
  52. package/dist/gateway/static/root/assets/markdown-view-DD_PgVue.css +1 -0
  53. package/dist/gateway/static/root/assets/{markdown-view-D8eO_6h3.js → markdown-view-V4rcPPH0.js} +1 -1
  54. package/dist/gateway/static/root/assets/{media-plugins-C1V6pkX3.js → media-plugins-Bb6gSX2o.js} +1 -1
  55. package/dist/gateway/static/root/assets/messages-ctG2e-ix.js +3 -0
  56. package/dist/gateway/static/root/assets/{notes-page-Dn71ZV8c.js → notes-page-B1rOXjpT.js} +1 -1
  57. package/dist/gateway/static/root/assets/notes-workbench-CkHXVmKP.js +4 -0
  58. package/dist/gateway/static/root/assets/{page-tabs-B5a5aSoS.js → page-tabs-CBuCKeyy.js} +1 -1
  59. package/dist/gateway/static/root/assets/{preview-open-alternatives-5041AIBX.js → preview-open-alternatives-BQ0tLfPO.js} +1 -1
  60. package/dist/gateway/static/root/assets/{product-open-page-7UkouFQU.js → product-open-page-DPeFn7Hu.js} +1 -1
  61. package/dist/gateway/static/root/assets/project-detail-page-DCqet9-L.js +1 -0
  62. package/dist/gateway/static/root/assets/projects-page-D0t_AjzG.js +1 -0
  63. package/dist/gateway/static/root/assets/remote-access-hub-BUWPoBvw.js +1 -0
  64. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DvaXzHYS.js → runtime-tools-settings-panel-BCfQNzjG.js} +2 -2
  65. package/dist/gateway/static/root/assets/{schema-form-Dlxl_5X0.js → schema-form-Bo7YbHYN.js} +1 -1
  66. package/dist/gateway/static/root/assets/sessions-page-vLhrrM3m.js +1 -0
  67. package/dist/gateway/static/root/assets/settings-advanced-gate-OP1y0Y8M.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-form-section-CSaiuuer.js → settings-form-section-B9dnKr3M.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-loading-skeleton-H3mJwt3r.js → settings-loading-skeleton-CYDV2JtY.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-Cs7zA4BS.js → settings-page-DbrIYfS9.js} +1 -1
  71. package/dist/gateway/static/root/assets/{setup-status-panel-CwgMODfJ.js → setup-status-panel-Cxc-Ejl5.js} +1 -1
  72. package/dist/gateway/static/root/assets/{share-preview-page-Bdpw5m7M.js → share-preview-page-olgr7LLN.js} +1 -1
  73. package/dist/gateway/static/root/assets/shares-settings-ZOqC6-aA.js +1 -0
  74. package/dist/gateway/static/root/assets/skill-reload-api-DwvC3Iuf.js +1 -0
  75. package/dist/gateway/static/root/assets/{skills-page-Bup3Lg1Z.js → skills-page-PE16CNw5.js} +1 -1
  76. package/dist/gateway/static/root/assets/{skills-page.utils-D22ORR21.js → skills-page.utils-nXmBcBxt.js} +1 -1
  77. package/dist/gateway/static/root/assets/{system-settings-panel-GmtWsfjB.js → system-settings-panel-C3qPwAdY.js} +1 -1
  78. package/dist/gateway/static/root/assets/task-detail-page-DCRB-5q-.js +1 -0
  79. package/dist/gateway/static/root/assets/{theme-store-CtY8RwMX.js → theme-store-KR5Otp5w.js} +1 -1
  80. package/dist/gateway/static/root/assets/{typed-models-lib-C2aOdlEA.js → typed-models-lib-lMZodtDF.js} +1 -1
  81. package/dist/gateway/static/root/assets/{use-autosave-DOj5i8d_.js → use-autosave-CKpatP3S.js} +1 -1
  82. package/dist/gateway/static/root/assets/user-context-page-CoiedRuA.js +1 -0
  83. package/dist/gateway/static/root/assets/{voice-api-key-field-5WfurWYa.js → voice-api-key-field-CDcv0Wbh.js} +1 -1
  84. package/dist/gateway/static/root/assets/{work-discovery-overlay-D5_MH3n3.js → work-discovery-overlay-CGdT22un.js} +1 -1
  85. package/dist/gateway/static/root/assets/work-discovery-page-BwaU1RqI.js +1 -0
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-bBA8LinI.js → workflow-run-setup-panel-BAHYNlQt.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-DHYmh9G7.js +5 -0
  88. package/dist/gateway/static/root/index.html +10 -10
  89. package/dist/package.js +1 -1
  90. package/dist/src/agent/agent-manager.js +1 -1
  91. package/dist/src/agent/image/generation/providers/xopc-cloud.js +2 -1
  92. package/dist/src/agent/image/tool-model-config.js +15 -9
  93. package/dist/src/agent/memory/builtin-provider.js +0 -1
  94. package/dist/src/agent/memory/create-memory-manager.js +1 -1
  95. package/dist/src/agent/tools/image-generate-tool.js +23 -7
  96. package/dist/src/agent-runtime/index.js +1 -1
  97. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  98. package/dist/src/capabilities/readiness/from-config.d.ts +10 -0
  99. package/dist/src/capabilities/readiness/from-config.js +128 -0
  100. package/dist/src/capabilities/readiness/index.d.ts +3 -0
  101. package/dist/src/capabilities/readiness/index.js +3 -0
  102. package/dist/src/capabilities/readiness/planner.d.ts +3 -0
  103. package/dist/src/capabilities/readiness/planner.js +56 -0
  104. package/dist/src/capabilities/readiness/types.d.ts +35 -0
  105. package/dist/src/capabilities/readiness/types.js +1 -0
  106. package/dist/src/cli/commands/agent.js +9 -0
  107. package/dist/src/cli/commands/auth.js +4 -3
  108. package/dist/src/cli/commands/connectors.js +1 -1
  109. package/dist/src/cli/commands/models.js +2 -1
  110. package/dist/src/cli/commands/onboard/model.d.ts +3 -21
  111. package/dist/src/cli/commands/onboard/model.js +10 -86
  112. package/dist/src/cli/utils/oauth-login.d.ts +2 -0
  113. package/dist/src/cli/utils/oauth-login.js +9 -1
  114. package/dist/src/config/agent-profile.js +1 -1
  115. package/dist/src/config/index.js +2 -2
  116. package/dist/src/config/paths-state.d.ts +2 -0
  117. package/dist/src/config/paths-state.js +5 -1
  118. package/dist/src/config/paths.d.ts +1 -1
  119. package/dist/src/config/paths.js +2 -2
  120. package/dist/src/config/schema.js +1 -1
  121. package/dist/src/connectors/composio-sessions.d.ts +1 -0
  122. package/dist/src/connectors/composio-sessions.js +2 -1
  123. package/dist/src/connectors/composio.js +8 -3
  124. package/dist/src/connectors/connected-source-cursor.d.ts +9 -0
  125. package/dist/src/connectors/connected-source-cursor.js +30 -0
  126. package/dist/src/connectors/connected-source-ingestion.js +67 -46
  127. package/dist/src/connectors/connected-source-normalizers.d.ts +1 -0
  128. package/dist/src/connectors/connected-source-normalizers.js +33 -2
  129. package/dist/src/connectors/connected-source-sanitization.d.ts +1 -0
  130. package/dist/src/connectors/connected-source-sanitization.js +21 -0
  131. package/dist/src/connectors/connector-identity.js +10 -2
  132. package/dist/src/connectors/content-enrichment.d.ts +29 -0
  133. package/dist/src/connectors/content-enrichment.js +273 -0
  134. package/dist/src/connectors/health.js +1 -1
  135. package/dist/src/connectors/learning-coordinator.js +1 -2
  136. package/dist/src/connectors/learning-recipes.js +28 -33
  137. package/dist/src/discussions/live-worker.d.ts +1 -0
  138. package/dist/src/discussions/live-worker.js +7 -1
  139. package/dist/src/discussions/repository.js +11 -1
  140. package/dist/src/discussions/sealer.d.ts +1 -1
  141. package/dist/src/discussions/sealer.js +16 -7
  142. package/dist/src/discussions/transcript.js +27 -1
  143. package/dist/src/discussions/types.d.ts +4 -0
  144. package/dist/src/gateway/agents-admin.js +1 -1
  145. package/dist/src/gateway/heartbeat/service.js +1 -1
  146. package/dist/src/gateway/hono/app.js +8 -3
  147. package/dist/src/gateway/hono/middleware/strict-rate-limit.d.ts +4 -0
  148. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +8 -1
  149. package/dist/src/gateway/hono/oauth-async.d.ts +11 -5
  150. package/dist/src/gateway/hono/oauth-async.js +29 -16
  151. package/dist/src/gateway/hono/oauth.d.ts +1 -3
  152. package/dist/src/gateway/hono/oauth.js +22 -22
  153. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  154. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  155. package/dist/src/gateway/hono/routes/deps.d.ts +1 -0
  156. package/dist/src/gateway/hono/routes/discussions.js +2 -1
  157. package/dist/src/gateway/hono/routes/lazy-bundles.js +2 -1
  158. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  159. package/dist/src/gateway/hono/routes/models.js +59 -5
  160. package/dist/src/gateway/hono/routes/understanding-sources.js +29 -0
  161. package/dist/src/gateway/hono/routes/voice.d.ts +1 -2
  162. package/dist/src/gateway/hono/routes/voice.js +16 -35
  163. package/dist/src/gateway/rate-limit/buckets.d.ts +3 -0
  164. package/dist/src/gateway/rate-limit/buckets.js +12 -0
  165. package/dist/src/gateway/service/session-input-coordinator.js +1 -2
  166. package/dist/src/gateway/service.js +20 -5
  167. package/dist/src/heartbeat/index.js +1 -1
  168. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +1 -1
  169. package/dist/src/knowledge/connected-understanding-pipeline.js +74 -25
  170. package/dist/src/knowledge/ingestion-service.js +33 -15
  171. package/dist/src/knowledge/types.d.ts +2 -0
  172. package/dist/src/media-understanding/audio-transcription-runner.d.ts +2 -0
  173. package/dist/src/media-understanding/audio-transcription-runner.js +3 -1
  174. package/dist/src/media-understanding/runner.js +3 -1
  175. package/dist/src/media-understanding/types.d.ts +2 -0
  176. package/dist/src/providers/model-catalog-persistence.d.ts +9 -0
  177. package/dist/src/providers/model-catalog-persistence.js +172 -0
  178. package/dist/src/providers/model-catalog-ranking.d.ts +2 -0
  179. package/dist/src/providers/model-catalog-ranking.js +17 -0
  180. package/dist/src/providers/model-catalog-store.d.ts +13 -3
  181. package/dist/src/providers/model-catalog-store.js +24 -5
  182. package/dist/src/providers/model-catalog-sync-service.d.ts +3 -3
  183. package/dist/src/providers/model-catalog-sync-service.js +12 -7
  184. package/dist/src/providers/provider-auth-service.d.ts +1 -0
  185. package/dist/src/providers/provider-auth-service.js +3 -0
  186. package/dist/src/providers/provider-disconnect.d.ts +11 -0
  187. package/dist/src/providers/provider-disconnect.js +33 -0
  188. package/dist/src/providers/xopc-cloud-catalog-coordinator.d.ts +56 -0
  189. package/dist/src/providers/xopc-cloud-catalog-coordinator.js +182 -0
  190. package/dist/src/providers/xopc-cloud-model-source.d.ts +6 -10
  191. package/dist/src/providers/xopc-cloud-model-source.js +49 -27
  192. package/dist/src/storage/sqlite/knowledge-repository.d.ts +1 -0
  193. package/dist/src/storage/sqlite/knowledge-repository.js +4 -0
  194. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +8 -0
  195. package/dist/src/storage/sqlite/user-context-quality-repository.js +21 -1
  196. package/dist/src/tui/backends/embedded-backend.js +11 -3
  197. package/dist/src/tui/tui-oauth-login.js +5 -0
  198. package/dist/src/tui/tui-startup-resources.js +1 -1
  199. package/dist/src/user-context/sources/activity-clustering.js +30 -117
  200. package/dist/src/user-context/sources/index.d.ts +1 -0
  201. package/dist/src/user-context/sources/index.js +2 -1
  202. package/dist/src/user-context/sources/signal-clustering.d.ts +18 -0
  203. package/dist/src/user-context/sources/signal-clustering.js +131 -0
  204. package/dist/src/voice/audio/normalize.d.ts +17 -0
  205. package/dist/src/voice/audio/normalize.js +155 -0
  206. package/dist/src/voice/language-profile.d.ts +1 -4
  207. package/dist/src/voice/language-profile.js +2 -25
  208. package/dist/src/voice/local/runtime-client.d.ts +2 -0
  209. package/dist/src/voice/local/runtime-client.js +20 -1
  210. package/dist/src/voice/local/runtime-worker.js +7 -13
  211. package/dist/src/voice/local/wav.js +1 -1
  212. package/dist/src/voice/stt/availability.d.ts +1 -4
  213. package/dist/src/voice/stt/availability.js +3 -15
  214. package/dist/src/voice/stt/config.js +1 -0
  215. package/dist/src/voice/stt/factory.js +23 -0
  216. package/dist/src/voice/stt/index.d.ts +1 -0
  217. package/dist/src/voice/stt/index.js +2 -2
  218. package/dist/src/voice/stt/list-providers.js +1 -1
  219. package/dist/src/voice/stt/providers/local-transcription.js +7 -3
  220. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +3 -1
  221. package/dist/src/voice/stt/transcribe-core.d.ts +5 -1
  222. package/dist/src/voice/stt/transcribe-core.js +13 -5
  223. package/dist/src/voice/stt/types.d.ts +2 -0
  224. package/dist/src/voice/tts/factory.d.ts +1 -1
  225. package/dist/src/voice/tts/factory.js +23 -1
  226. package/dist/src/voice/tts/merge-config.js +5 -3
  227. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +3 -1
  228. package/dist/src/voice/tts/types.d.ts +2 -0
  229. package/dist/src/voice/tts/types.js +4 -2
  230. package/dist/src/work-discovery/evaluation.d.ts +23 -0
  231. package/dist/src/work-discovery/evaluation.js +18 -1
  232. package/dist/src/work-discovery/index.js +2 -2
  233. package/package.json +4 -3
  234. package/dist/gateway/static/root/assets/agents-DqGMj3QJ.js +0 -68
  235. package/dist/gateway/static/root/assets/automations-page-CwOXGV9z.js +0 -6
  236. package/dist/gateway/static/root/assets/browser-settings-page-CyRLhCod.js +0 -8
  237. package/dist/gateway/static/root/assets/capabilities-settings-panel-jRKcS7lZ.js +0 -7
  238. package/dist/gateway/static/root/assets/capability-presets-settings-panel-B3bKdtwU.js +0 -3
  239. package/dist/gateway/static/root/assets/channels-settings-yZBWH02s.js +0 -1
  240. package/dist/gateway/static/root/assets/channels-status-swr-C3zlimZd.js +0 -1
  241. package/dist/gateway/static/root/assets/connectors-page-OX4KvUkA.js +0 -2
  242. package/dist/gateway/static/root/assets/gateway-settings-V1XVxjHa.js +0 -1
  243. package/dist/gateway/static/root/assets/heartbeat-settings-CWUBAQrE.js +0 -1
  244. package/dist/gateway/static/root/assets/home-page-D57cYRd3.js +0 -1
  245. package/dist/gateway/static/root/assets/index-PNBFdxHb.css +0 -2
  246. package/dist/gateway/static/root/assets/local-app-workbench-page-BbAiMZE1.js +0 -2
  247. package/dist/gateway/static/root/assets/logs-page-nXdF3wOT.js +0 -2
  248. package/dist/gateway/static/root/assets/markdown-view-B12xeflb.css +0 -1
  249. package/dist/gateway/static/root/assets/messages-1qg_hOOd.js +0 -3
  250. package/dist/gateway/static/root/assets/notes-workbench-BYPoZeRw.js +0 -4
  251. package/dist/gateway/static/root/assets/project-detail-page-D27nOKbo.js +0 -1
  252. package/dist/gateway/static/root/assets/projects-page-CdB5cJJ-.js +0 -1
  253. package/dist/gateway/static/root/assets/remote-access-hub-DFoZ3UNS.js +0 -1
  254. package/dist/gateway/static/root/assets/sessions-page-C1cbIcJ7.js +0 -1
  255. package/dist/gateway/static/root/assets/settings-advanced-gate-DnXRlQXS.js +0 -1
  256. package/dist/gateway/static/root/assets/shares-settings-hlUgIkrp.js +0 -1
  257. package/dist/gateway/static/root/assets/skill-reload-api-DR31B_Gz.js +0 -1
  258. package/dist/gateway/static/root/assets/task-detail-page-CTKDpxhf.js +0 -1
  259. package/dist/gateway/static/root/assets/user-context-page-keJJYpix.js +0 -1
  260. package/dist/gateway/static/root/assets/work-discovery-page-BcvBiebt.js +0 -1
  261. package/dist/gateway/static/root/assets/workflows-page-Cz2VpWdj.js +0 -5
  262. package/dist/src/voice/local/runtime-dispatcher.d.ts +0 -9
  263. package/dist/src/voice/local/runtime-dispatcher.js +0 -20
@@ -834,7 +834,7 @@ activityDetailDefault: z.enum([
834
834
  "always",
835
835
  "inbound",
836
836
  "tagged"
837
- ]).default("inbound"),
837
+ ]).default("off"),
838
838
  fallback: TTSFallbackConfigSchema.optional(),
839
839
  maxTextLength: z.number().int().min(1).default(512),
840
840
  timeoutMs: z.number().int().min(1e3).max(18e4).default(6e4),
@@ -122,6 +122,7 @@ export declare class ComposioSessionsAdapter {
122
122
  constructor(options?: {
123
123
  resolver?: CredentialResolver;
124
124
  clientFactory?: ClientFactory;
125
+ fileDownloadDir?: string;
125
126
  });
126
127
  createSession(context: ComposioSessionContext): Promise<ComposioSessionLike>;
127
128
  getToolkitAuthState(toolkit: string): Promise<ComposioToolkitAuthState>;
@@ -103,8 +103,9 @@ var ComposioSessionsAdapter = class {
103
103
  apiKey,
104
104
  baseURL: process.env.XOPC_COMPOSIO_BASE_URL?.trim() || void 0,
105
105
  allowTracking: false,
106
- dangerouslyAllowAutoUploadDownloadFiles: false,
106
+ dangerouslyAllowAutoUploadDownloadFiles: Boolean(options.fileDownloadDir),
107
107
  fileUploadDirs: false,
108
+ ...options.fileDownloadDir ? { fileDownloadDir: options.fileDownloadDir } : {},
108
109
  provider: new PiProvider(),
109
110
  host: "xopc"
110
111
  });
@@ -92,14 +92,19 @@ const COMPOSIO_CURATED_ACTIONS = {
92
92
  },
93
93
  googlecalendar: {
94
94
  GOOGLECALENDAR_FIND_EVENT: "read",
95
- GOOGLECALENDAR_LIST_EVENTS: "read",
95
+ GOOGLECALENDAR_SYNC_EVENTS: "read",
96
96
  GOOGLECALENDAR_CREATE_EVENT: "write",
97
97
  GOOGLECALENDAR_UPDATE_EVENT: "write",
98
98
  GOOGLECALENDAR_DELETE_EVENT: "admin"
99
99
  },
100
100
  googledrive: {
101
- GOOGLEDRIVE_SEARCH_FILES: "read",
102
- GOOGLEDRIVE_GET_FILE: "read",
101
+ GOOGLEDRIVE_FIND_FILE: "read",
102
+ GOOGLEDRIVE_GET_ABOUT: "read",
103
+ GOOGLEDRIVE_GET_FILE_METADATA: "read",
104
+ GOOGLEDRIVE_DOWNLOAD_FILE: "read",
105
+ GOOGLEDRIVE_EXPORT_GOOGLE_WORKSPACE_FILE: "read",
106
+ GOOGLEDRIVE_GET_CHANGES_START_PAGE_TOKEN: "read",
107
+ GOOGLEDRIVE_LIST_CHANGES: "read",
103
108
  GOOGLEDRIVE_CREATE_FILE: "write",
104
109
  GOOGLEDRIVE_UPDATE_FILE: "write",
105
110
  GOOGLEDRIVE_DELETE_FILE: "admin"
@@ -0,0 +1,9 @@
1
+ export type ConnectedSourceCursor = {
2
+ version: 1;
3
+ checkpoint?: string;
4
+ scanStartedAt?: string;
5
+ pageToken?: string;
6
+ syncToken?: string;
7
+ };
8
+ export declare function decodeConnectedSourceCursor(value: string | undefined): ConnectedSourceCursor | undefined;
9
+ export declare function encodeConnectedSourceCursor(cursor: Omit<ConnectedSourceCursor, 'version'>): string;
@@ -0,0 +1,30 @@
1
+ //#region src/connectors/connected-source-cursor.ts
2
+ function optionalText(value) {
3
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
4
+ }
5
+ function decodeConnectedSourceCursor(value) {
6
+ if (!value) return void 0;
7
+ try {
8
+ const parsed = JSON.parse(value);
9
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return void 0;
10
+ const row = parsed;
11
+ if (row.version !== 1) return void 0;
12
+ return {
13
+ version: 1,
14
+ ...optionalText(row.checkpoint) ? { checkpoint: optionalText(row.checkpoint) } : {},
15
+ ...optionalText(row.scanStartedAt) ? { scanStartedAt: optionalText(row.scanStartedAt) } : {},
16
+ ...optionalText(row.pageToken) ? { pageToken: optionalText(row.pageToken) } : {},
17
+ ...optionalText(row.syncToken) ? { syncToken: optionalText(row.syncToken) } : {}
18
+ };
19
+ } catch {
20
+ return;
21
+ }
22
+ }
23
+ function encodeConnectedSourceCursor(cursor) {
24
+ return JSON.stringify({
25
+ version: 1,
26
+ ...cursor
27
+ });
28
+ }
29
+ //#endregion
30
+ export { decodeConnectedSourceCursor, encodeConnectedSourceCursor };
@@ -1,51 +1,29 @@
1
1
  import { getConnectorInstallation, listConnectorConnections } from "../storage/sqlite/connector-repository.js";
2
2
  import "../storage/sqlite/index.js";
3
3
  import { ComposioSessionsAdapter } from "./composio-sessions.js";
4
+ import { decodeConnectedSourceCursor, encodeConnectedSourceCursor } from "./connected-source-cursor.js";
4
5
  import { scopeForComposioAction } from "./composio.js";
5
6
  import { getConnectorDefinition } from "./catalog.js";
6
- import { getConnectorInstance } from "./instances.js";
7
7
  import { getWorkspacePath } from "../config/workspace-path-helpers.js";
8
+ import { getConnectorInstance } from "./instances.js";
8
9
  import { KnowledgeIngestionService } from "../knowledge/ingestion-service.js";
9
10
  import { ConnectedKnowledgePipeline } from "../knowledge/connected-knowledge-pipeline.js";
10
11
  import { LocalFolderKnowledgeSourceAdapter } from "../knowledge/local-folder-adapter.js";
11
12
  import "../knowledge/index.js";
12
13
  import { normalizeConnectedSourceResult } from "./connected-source-normalizers.js";
14
+ import { sanitizeConnectedSourceValue } from "./connected-source-sanitization.js";
13
15
  import { createHash } from "node:crypto";
14
16
  //#region src/connectors/connected-source-ingestion.ts
15
17
  const COMPOSIO_CONNECTED_SOURCE_TOOLKITS = new Set([
16
18
  "gmail",
17
19
  "googlecalendar",
18
20
  "googledrive",
19
- "googledocs",
20
- "googlesheets",
21
- "notion",
22
- "slack",
23
21
  "github",
24
- "linear",
25
- "jira",
26
- "outlook",
27
- "microsoft_teams",
28
- "one_drive",
29
- "excel"
22
+ "linear"
30
23
  ]);
31
- const SENSITIVE_KEY_RE = /(?:^|_)(?:api_?key|token|secret|password|passwd|authorization|credential|private_?key)(?:$|_)/i;
32
- const INLINE_SECRET_PATTERNS = [
33
- /\bsk-[A-Za-z0-9_-]{8,}\b/g,
34
- /\bghp_[A-Za-z0-9]{20,}\b/g,
35
- /\bxox[baprs]-[A-Za-z0-9-]{20,}\b/g,
36
- /-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/g
37
- ];
38
24
  function asRecord(value) {
39
25
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
40
26
  }
41
- function sanitizeSourceValue(value, depth = 0) {
42
- if (depth > 12) return "[MaxDepth]";
43
- if (typeof value === "string") return INLINE_SECRET_PATTERNS.reduce((text, pattern) => text.replace(pattern, "[REDACTED]"), value);
44
- if (Array.isArray(value)) return value.map((item) => sanitizeSourceValue(item, depth + 1));
45
- const record = asRecord(value);
46
- if (!record) return value;
47
- return Object.fromEntries(Object.entries(record).map(([key, nested]) => [key, SENSITIVE_KEY_RE.test(key) ? "[REDACTED]" : sanitizeSourceValue(nested, depth + 1)]));
48
- }
49
27
  function boundedPersonValue(value, maxLength = 320) {
50
28
  return typeof value === "string" ? value.trim().slice(0, maxLength) : "";
51
29
  }
@@ -66,7 +44,7 @@ function personEntities(record) {
66
44
  const nested = asRecord(value);
67
45
  if (!nested) return [];
68
46
  const name = boundedPersonValue(nested.name, 160) || boundedPersonValue(nested.displayName, 160);
69
- const email = boundedPersonValue(nested.email);
47
+ const email = boundedPersonValue(nested.email) || boundedPersonValue(nested.emailAddress);
70
48
  const username = boundedPersonValue(nested.username, 160);
71
49
  return name || email || username ? [{
72
50
  role,
@@ -83,6 +61,7 @@ function personEntities(record) {
83
61
  "user",
84
62
  "username",
85
63
  "owner",
64
+ "owners",
86
65
  "assignee",
87
66
  "attendees",
88
67
  "participants"
@@ -108,14 +87,26 @@ function peopleSignals(entities) {
108
87
  function connectionIdentities(identity) {
109
88
  return [...new Set(Object.values(identity).filter((value) => typeof value === "string").map((value) => value.trim().toLowerCase()).filter(Boolean))];
110
89
  }
90
+ function resultPayload(value) {
91
+ const root = asRecord(value) ?? {};
92
+ return asRecord(root.data) ?? root;
93
+ }
94
+ function paginationValue(result, ...keys) {
95
+ const payload = resultPayload(result);
96
+ const pagination = asRecord(payload.pagination) ?? asRecord(payload.pageInfo) ?? {};
97
+ for (const key of keys) {
98
+ const value = payload[key] ?? pagination[key];
99
+ if (typeof value === "string" && value.trim()) return value.trim();
100
+ }
101
+ }
111
102
  function resultToSourceItems(input) {
112
103
  return normalizeConnectedSourceResult(input).slice(0, 200).map((entity) => {
113
104
  const record = entity.value;
114
105
  const people = personEntities(record);
115
106
  const ownerIdentities = connectionIdentities(input.connectionIdentity);
116
107
  const observedIdentities = peopleSignals(people).map((value) => value.toLowerCase());
117
- const actorAttributed = entity.metadata.actorAttributed === true || input.toolkit === "gmail" || input.toolkit === "googlecalendar" || input.toolkit === "github" && observedIdentities.some((value) => ownerIdentities.includes(value));
118
- const serialized = JSON.stringify(sanitizeSourceValue(entity.value), null, 2);
108
+ const actorAttributed = entity.metadata.actorAttributed === true || input.toolkit === "gmail" || input.toolkit === "googlecalendar" || ["github", "googledrive"].includes(input.toolkit) && observedIdentities.some((value) => ownerIdentities.includes(value));
109
+ const serialized = JSON.stringify(sanitizeConnectedSourceValue(entity.value), null, 2);
119
110
  const normalizedText = serialized.length > 8e3 ? `${serialized.slice(0, 8e3)}\n…` : serialized;
120
111
  const contentHash = createHash("sha256").update(serialized).digest("hex");
121
112
  return {
@@ -144,7 +135,8 @@ function resultToSourceItems(input) {
144
135
  sensitivity: "personal",
145
136
  retentionClass: "bounded",
146
137
  synthesisPipeline: "connected_knowledge",
147
- synthesisStatus: input.streamKind === "inventory" ? "ignored" : entity.synthesisStatus
138
+ synthesisStatus: input.streamKind === "inventory" ? "ignored" : entity.synthesisStatus,
139
+ deletedAt: entity.deletedAt
148
140
  };
149
141
  });
150
142
  }
@@ -154,7 +146,10 @@ var ComposioKnowledgeSourceAdapter = class {
154
146
  this.input = input;
155
147
  }
156
148
  async pull(pull) {
157
- const execution = await this.input.adapter.executeWithPolicy({
149
+ const cursor = decodeConnectedSourceCursor(pull.cursor);
150
+ const scanStartedAt = cursor?.scanStartedAt ?? (/* @__PURE__ */ new Date()).toISOString();
151
+ const warnings = pull.cursor && !cursor ? ["Stored connected-source cursor was invalid and was replaced."] : [];
152
+ const execute = (cursorValue) => this.input.adapter.executeWithPolicy({
158
153
  context: {
159
154
  principalId: "local-owner",
160
155
  toolkits: [this.input.toolkit]
@@ -174,26 +169,52 @@ var ComposioKnowledgeSourceAdapter = class {
174
169
  curated: true,
175
170
  cachedAt: (/* @__PURE__ */ new Date()).toISOString()
176
171
  },
177
- args: this.input.buildArguments?.(pull) ?? this.input.arguments,
172
+ args: this.input.buildArguments?.({
173
+ ...pull,
174
+ cursor: cursorValue
175
+ }) ?? this.input.arguments,
178
176
  confirmed: true
179
177
  });
178
+ let execution;
179
+ try {
180
+ execution = await execute(pull.cursor);
181
+ } catch (error) {
182
+ const message = error instanceof Error ? error.message : String(error);
183
+ if (this.input.toolkit !== "googlecalendar" || !cursor?.syncToken || !/\b410\b|sync.?token/i.test(message)) throw error;
184
+ warnings.push("Expired Google Calendar sync token was replaced with a full sync.");
185
+ execution = await execute(void 0);
186
+ }
180
187
  if (execution.decision !== "allowed") throw new Error(execution.reason);
188
+ const items = resultToSourceItems({
189
+ result: execution.result,
190
+ sourceInstanceId: pull.instanceId,
191
+ collectionScope: pull.collectionScope,
192
+ streamKind: this.input.streamKind,
193
+ connectorId: this.input.connectorId,
194
+ connectionId: this.input.connection.id,
195
+ actionId: this.input.actionId,
196
+ toolkit: this.input.toolkit,
197
+ agentId: this.input.agentId,
198
+ workspaceId: this.input.workspaceId,
199
+ connectionIdentity: this.input.connection.identity
200
+ });
201
+ const nextPageToken = paginationValue(execution.result, "nextPageToken", "next_page_token");
202
+ const nextSyncToken = paginationValue(execution.result, "nextSyncToken", "next_sync_token");
203
+ const completeSnapshot = this.input.streamKind === "inventory" && (this.input.toolkit === "github" || !cursor?.checkpoint);
181
204
  return {
182
- items: resultToSourceItems({
183
- result: execution.result,
184
- sourceInstanceId: pull.instanceId,
185
- collectionScope: pull.collectionScope,
186
- streamKind: this.input.streamKind,
187
- connectorId: this.input.connectorId,
188
- connectionId: this.input.connection.id,
189
- actionId: this.input.actionId,
190
- toolkit: this.input.toolkit,
191
- agentId: this.input.agentId,
192
- workspaceId: this.input.workspaceId,
193
- connectionIdentity: this.input.connection.identity
205
+ items,
206
+ nextCursor: nextPageToken ? encodeConnectedSourceCursor({
207
+ checkpoint: cursor?.checkpoint,
208
+ scanStartedAt,
209
+ pageToken: nextPageToken,
210
+ syncToken: cursor?.syncToken
211
+ }) : encodeConnectedSourceCursor({
212
+ checkpoint: scanStartedAt,
213
+ ...nextSyncToken ? { syncToken: nextSyncToken } : {}
194
214
  }),
195
- nextCursor: (/* @__PURE__ */ new Date()).toISOString(),
196
- warnings: []
215
+ hasMore: Boolean(nextPageToken),
216
+ warnings,
217
+ ...completeSnapshot ? { snapshotExternalIds: items.map((item) => item.externalId) } : {}
197
218
  };
198
219
  }
199
220
  };
@@ -4,6 +4,7 @@ export type ConnectedSourceEntity = {
4
4
  itemType: string;
5
5
  occurredAt?: string;
6
6
  sourceUpdatedAt?: string;
7
+ deletedAt?: string;
7
8
  value: Record<string, unknown>;
8
9
  metadata: Record<string, unknown>;
9
10
  synthesisStatus: KnowledgeSynthesisStatus;
@@ -65,11 +65,13 @@ function normalizeCalendar(result) {
65
65
  const externalId = text(event, "id", "eventId", "event_id");
66
66
  if (!externalId) return [];
67
67
  const occurredAt = time(event.start ?? event.startTime ?? event.start_time);
68
+ const sourceUpdatedAt = time(event.updated ?? event.updatedAt ?? event.updated_at);
68
69
  return [{
69
70
  externalId,
70
71
  itemType: "calendar_event",
71
72
  occurredAt,
72
- sourceUpdatedAt: time(event.updated ?? event.updatedAt ?? event.updated_at),
73
+ sourceUpdatedAt,
74
+ ...event.status === "cancelled" ? { deletedAt: sourceUpdatedAt ?? (/* @__PURE__ */ new Date()).toISOString() } : {},
73
75
  value: compact({
74
76
  id: externalId,
75
77
  title: text(event, "summary", "title", "name"),
@@ -88,6 +90,34 @@ function normalizeCalendar(result) {
88
90
  }];
89
91
  });
90
92
  }
93
+ function normalizeGoogleDrive(result) {
94
+ return rows(payload(result), "files", "items").flatMap((file) => {
95
+ const externalId = text(file, "id", "fileId", "file_id");
96
+ const name = text(file, "name", "title");
97
+ if (!externalId || !name || file.trashed === true) return [];
98
+ const modifiedAt = time(file.modifiedTime ?? file.modified_time ?? file.modifiedDate);
99
+ return [{
100
+ externalId,
101
+ itemType: "cloud_document",
102
+ occurredAt: modifiedAt ?? time(file.createdTime ?? file.created_time ?? file.createdDate),
103
+ sourceUpdatedAt: modifiedAt,
104
+ value: compact({
105
+ id: externalId,
106
+ title: name,
107
+ mimeType: text(file, "mimeType", "mime_type"),
108
+ modifiedAt,
109
+ owners: file.owners,
110
+ webViewLink: text(file, "webViewLink", "web_view_link")
111
+ }),
112
+ metadata: {
113
+ observationKind: "document_metadata",
114
+ logicalEventKey: `googledrive:file:${externalId}`,
115
+ mimeType: text(file, "mimeType", "mime_type")
116
+ },
117
+ synthesisStatus: "ignored"
118
+ }];
119
+ });
120
+ }
91
121
  function repositoryName(row) {
92
122
  const explicit = text(record(row.repository) ?? record(row.repo), "full_name", "name") ?? text(row, "repository_full_name", "full_name", "repo");
93
123
  if (explicit) return explicit;
@@ -178,8 +208,9 @@ function normalizeExternalTasks(result, toolkit) {
178
208
  function normalizeConnectedSourceResult(input) {
179
209
  if (input.toolkit === "gmail") return normalizeGmail(input.result);
180
210
  if (input.toolkit === "googlecalendar") return normalizeCalendar(input.result);
211
+ if (input.toolkit === "googledrive") return normalizeGoogleDrive(input.result);
181
212
  if (input.toolkit === "github") return normalizeGitHub(input.result, input.actionId);
182
- if (input.toolkit === "linear" || input.toolkit === "jira") return normalizeExternalTasks(input.result, input.toolkit);
213
+ if (input.toolkit === "linear") return normalizeExternalTasks(input.result, input.toolkit);
183
214
  return [];
184
215
  }
185
216
  //#endregion
@@ -0,0 +1 @@
1
+ export declare function sanitizeConnectedSourceValue(value: unknown, depth?: number): unknown;
@@ -0,0 +1,21 @@
1
+ //#region src/connectors/connected-source-sanitization.ts
2
+ const SENSITIVE_KEY_RE = /(?:^|_)(?:api_?key|token|secret|password|passwd|authorization|credential|private_?key)(?:$|_)/i;
3
+ const INLINE_SECRET_PATTERNS = [
4
+ /\bsk-[A-Za-z0-9_-]{8,}\b/g,
5
+ /\bghp_[A-Za-z0-9]{20,}\b/g,
6
+ /\bxox[baprs]-[A-Za-z0-9-]{20,}\b/g,
7
+ /-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/g
8
+ ];
9
+ function record(value) {
10
+ return value && typeof value === "object" && !Array.isArray(value) ? value : null;
11
+ }
12
+ function sanitizeConnectedSourceValue(value, depth = 0) {
13
+ if (depth > 12) return "[MaxDepth]";
14
+ if (typeof value === "string") return INLINE_SECRET_PATTERNS.reduce((text, pattern) => text.replace(pattern, "[REDACTED]"), value);
15
+ if (Array.isArray(value)) return value.map((item) => sanitizeConnectedSourceValue(item, depth + 1));
16
+ const source = record(value);
17
+ if (!source) return value;
18
+ return Object.fromEntries(Object.entries(source).map(([key, nested]) => [key, SENSITIVE_KEY_RE.test(key) ? "[REDACTED]" : sanitizeConnectedSourceValue(nested, depth + 1)]));
19
+ }
20
+ //#endregion
21
+ export { sanitizeConnectedSourceValue };
@@ -23,6 +23,13 @@ function normalizeConnectorIdentity(toolkit, result) {
23
23
  profileUrl: text(row, ["html_url"])
24
24
  };
25
25
  if (toolkit === "gmail") return { email: text(row, ["emailAddress", "email"]) };
26
+ if (toolkit === "googledrive") {
27
+ const user = object(row.user);
28
+ return {
29
+ email: text(user, ["emailAddress", "email"]) ?? text(row, ["emailAddress", "email"]),
30
+ displayName: text(user, ["displayName", "name"])
31
+ };
32
+ }
26
33
  if (toolkit === "slack") return {
27
34
  enterpriseId: text(row, ["enterprise_id", "enterpriseId"]),
28
35
  workspaceId: text(row, ["team_id", "teamId"]),
@@ -62,9 +69,9 @@ function connectorIdentityKey(toolkit, identity) {
62
69
  if (!workspaceId || !subjectId) return void 0;
63
70
  return `slack:${text(identity, ["enterpriseId", "enterprise_id"]) ?? "-"}:${workspaceId}:${subjectId}`;
64
71
  }
65
- if (normalizedToolkit === "gmail") {
72
+ if (normalizedToolkit === "gmail" || normalizedToolkit === "googledrive") {
66
73
  const email = text(identity, ["email"]);
67
- return email ? `gmail:${email.toLowerCase()}` : void 0;
74
+ return email ? `${normalizedToolkit}:${email.toLowerCase()}` : void 0;
68
75
  }
69
76
  if (normalizedToolkit === "github") {
70
77
  const username = text(identity, ["username"]);
@@ -75,6 +82,7 @@ function mergeConnectorIdentity(toolkit, current, incoming) {
75
82
  const normalizedToolkit = toolkit.trim().toLowerCase();
76
83
  if (![
77
84
  "gmail",
85
+ "googledrive",
78
86
  "github",
79
87
  "slack"
80
88
  ].includes(normalizedToolkit)) return {
@@ -0,0 +1,29 @@
1
+ import { ComposioSessionsAdapter } from './composio-sessions.js';
2
+ type ContentReadAdapter = Pick<ComposioSessionsAdapter, 'executeWithPolicy'>;
3
+ export type ConnectedContentCandidate = {
4
+ sourceItemId: string;
5
+ sourceInstanceId: string;
6
+ toolkit: 'gmail' | 'googledrive';
7
+ title: string;
8
+ occurredAt?: string;
9
+ mimeType?: string;
10
+ };
11
+ export type ConnectedContentReadResult = {
12
+ requested: number;
13
+ completed: number;
14
+ failed: Array<{
15
+ sourceItemId: string;
16
+ error: string;
17
+ }>;
18
+ recordIds: string[];
19
+ };
20
+ export declare function listConnectedContentCandidates(options: {
21
+ agentId: string;
22
+ limit?: number;
23
+ }): ConnectedContentCandidate[];
24
+ export declare function readConnectedContent(input: {
25
+ sourceItemIds: string[];
26
+ agentId: string;
27
+ adapterFactory?: (downloadDirectory: string) => ContentReadAdapter;
28
+ }): Promise<ConnectedContentReadResult>;
29
+ export {};