@xopcai/xopc 0.0.171 → 0.0.173

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 (228) 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-BLz30jWq.js → activity-store-ByVA0N5n.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BKZO0EFn.js → agent-avatar-dicebear-CJ5HvqE7.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents--TQ9jM_1.js +2 -0
  6. package/dist/gateway/static/root/assets/{api-N2qKY-WI.js → api-BZtCKzg4.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-CNZkpXCD.js → app-management-settings-panel-B0oNNcFn.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-Drf5a563.js → appearance-settings-DbIj4NQ1.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-BDsoZDEn.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-ChVwOXE5.js → archive-plugin-BICLQFWJ.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-BVK3Y2d9.js → attachment-load-DV3PteSU.js} +1 -1
  12. package/dist/gateway/static/root/assets/{automation-suggestion-card-DH4N0SYR.js → automation-suggestion-card-CZUImis0.js} +1 -1
  13. package/dist/gateway/static/root/assets/automations-page-CHrNcppN.js +6 -0
  14. package/dist/gateway/static/root/assets/{binary-plugins-CeHY6VVP.js → binary-plugins-D6zkab6N.js} +1 -1
  15. package/dist/gateway/static/root/assets/block-editor-zCzoQI-g.js +184 -0
  16. package/dist/gateway/static/root/assets/browser-settings-page-BQoRuQzH.js +8 -0
  17. package/dist/gateway/static/root/assets/{browser-workflow-inputs-femCtfpo.js → browser-workflow-inputs-CY3X83xQ.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-workflows-page-o0GVE_aF.js → browser-workflows-page-DDRtZLuM.js} +2 -2
  19. package/dist/gateway/static/root/assets/capabilities-settings-panel-BOcU0qeM.js +7 -0
  20. package/dist/gateway/static/root/assets/{capability-presets-api-Bx-JJC0R.js → capability-presets-api-pYLW6P7g.js} +1 -1
  21. package/dist/gateway/static/root/assets/capability-presets-settings-panel-CJ1F_hlX.js +1 -0
  22. package/dist/gateway/static/root/assets/{channel-recipient-api-CTw3ibx4.js → channel-recipient-api-DxyOH3BO.js} +1 -1
  23. package/dist/gateway/static/root/assets/channels-settings-C4vDwRil.js +1 -0
  24. package/dist/gateway/static/root/assets/channels-status-swr-B0Pgq5x2.js +1 -0
  25. package/dist/gateway/static/root/assets/connector-logo-BgANwjt-.js +1 -0
  26. package/dist/gateway/static/root/assets/connectors-page-D6JEqDEj.js +2 -0
  27. package/dist/gateway/static/root/assets/desktop-pet-BPjQbPeA.js +1 -0
  28. package/dist/gateway/static/root/assets/{desktop-pet-settings-CIeH4VyP.js → desktop-pet-settings-8CaU1Mhm.js} +1 -1
  29. package/dist/gateway/static/root/assets/{directory-picker-path-field-Ddgt6c3K.js → directory-picker-path-field-BtNRUvzM.js} +1 -1
  30. package/dist/gateway/static/root/assets/dreaming-settings-Byv-h8XZ.js +3 -0
  31. package/dist/gateway/static/root/assets/{extension-debug-page-CJGwUaQX.js → extension-debug-page-DFjTfx6f.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-page-B3zHKJAB.js → extension-page-NyEYtWWg.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-settings-page-Cj9rrSr1.js → extension-settings-page-BynTCfgf.js} +1 -1
  34. package/dist/gateway/static/root/assets/{gateway-config-api-BdmtlJRP.js → gateway-config-api-BzOWImvU.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-settings-C2RwKIsl.js → gateway-settings-DXepE_Jw.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-startup-retry-mcMq_uu_.js → gateway-startup-retry-C2JXXtwg.js} +1 -1
  37. package/dist/gateway/static/root/assets/{goal-create-dialog-5Ryd_rx4.js → goal-create-dialog-ClOZyG52.js} +1 -1
  38. package/dist/gateway/static/root/assets/goal-detail-page-UbZB77De.js +4 -0
  39. package/dist/gateway/static/root/assets/{goals-config-api-CAO1J4jn.js → goals-config-api-CU3JR9MI.js} +1 -1
  40. package/dist/gateway/static/root/assets/goals-page-GMqV8Fwv.js +2 -0
  41. package/dist/gateway/static/root/assets/{goals-settings-Boj2izKZ.js → goals-settings-DSZguLEx.js} +1 -1
  42. package/dist/gateway/static/root/assets/{heartbeat-settings-DbPC9a_y.js → heartbeat-settings-KRkYziEF.js} +1 -1
  43. package/dist/gateway/static/root/assets/{image-generation-api-DrLCLTXn.js → image-generation-api-Y-n6TaZ_.js} +1 -1
  44. package/dist/gateway/static/root/assets/index-BCkNJ5cR.css +1 -0
  45. package/dist/gateway/static/root/assets/{index-vHb2z7VS.js → index-CAZ9343h.js} +67 -67
  46. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BrxfptgY.js → keyboard-shortcuts-settings-CwrQv952.js} +1 -1
  47. package/dist/gateway/static/root/assets/{local-app-workbench-page-BP0_Ih0e.js → local-app-workbench-page-m5HEyrHT.js} +2 -2
  48. package/dist/gateway/static/root/assets/{local-apps-page-DNCRlfFs.js → local-apps-page-DtITcS4K.js} +1 -1
  49. package/dist/gateway/static/root/assets/{locale-store-CzIfXqm8.js → locale-store-Ccv7tH8B.js} +1 -1
  50. package/dist/gateway/static/root/assets/logs-page-Bf_nk75f.js +7 -0
  51. package/dist/gateway/static/root/assets/{markdown-split-CIUH9Lor.js → markdown-split-D1oZlq1m.js} +1 -1
  52. package/dist/gateway/static/root/assets/{media-plugins-DX4AgkCs.js → media-plugins-BKz5V32t.js} +1 -1
  53. package/dist/gateway/static/root/assets/{messages-CKZuaOeG.js → messages-DWrg3c4K.js} +2 -2
  54. package/dist/gateway/static/root/assets/{notes-page-D1KprtxL.js → notes-page-DLekBQPa.js} +1 -1
  55. package/dist/gateway/static/root/assets/notes-workbench-BTDmprHM.js +4 -0
  56. package/dist/gateway/static/root/assets/{page-tabs-DjZPJGf6.js → page-tabs-pT4nLfqS.js} +1 -1
  57. package/dist/gateway/static/root/assets/{preview-open-alternatives-DNiJTpwZ.js → preview-open-alternatives-OtAiaJm2.js} +1 -1
  58. package/dist/gateway/static/root/assets/{product-open-page-CNfR17-g.js → product-open-page-CfryBKD9.js} +1 -1
  59. package/dist/gateway/static/root/assets/project-detail-page-C7kntu4H.js +1 -0
  60. package/dist/gateway/static/root/assets/projects-page-3ubcbqHr.js +1 -0
  61. package/dist/gateway/static/root/assets/remote-access-hub-DoUkN3ik.js +1 -0
  62. package/dist/gateway/static/root/assets/{save-bar-controls-BGZFVO9S.js → save-bar-controls-nP1SB3Lf.js} +1 -1
  63. package/dist/gateway/static/root/assets/{schedule-field-BAZiHtds.js → schedule-field-OEQTsUNz.js} +1 -1
  64. package/dist/gateway/static/root/assets/{schema-form-CesBcwJH.js → schema-form-DIcAa7CJ.js} +1 -1
  65. package/dist/gateway/static/root/assets/sessions-page-ElAAlZ-R.js +1 -0
  66. package/dist/gateway/static/root/assets/settings-advanced-gate-CQn_KBqr.js +1 -0
  67. package/dist/gateway/static/root/assets/{settings-form-section-Bxc54BLj.js → settings-form-section-BxNcTbYO.js} +1 -1
  68. package/dist/gateway/static/root/assets/{settings-loading-skeleton-CYrho7Db.js → settings-loading-skeleton-Dpdxu4sf.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-page-C03X5fkh.js → settings-page-DwPeOm1c.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-layout-CZAJbv4E.js → settings-page-layout-CqirFmMn.js} +1 -1
  71. package/dist/gateway/static/root/assets/{setup-status-panel-Jv8_bcOD.js → setup-status-panel-DX_LdcTN.js} +1 -1
  72. package/dist/gateway/static/root/assets/{share-preview-page-DSC7tKKG.js → share-preview-page-D72gYeux.js} +1 -1
  73. package/dist/gateway/static/root/assets/shares-settings-nSfe-5xK.js +1 -0
  74. package/dist/gateway/static/root/assets/skill-reload-api-1tYpZrJf.js +1 -0
  75. package/dist/gateway/static/root/assets/skills-page-BUJl8LJG.js +2 -0
  76. package/dist/gateway/static/root/assets/{system-settings-panel-BO89zw5H.js → system-settings-panel-U0tBgW46.js} +1 -1
  77. package/dist/gateway/static/root/assets/{theme-store-1OkdVC8l.js → theme-store-DCKDVPFF.js} +1 -1
  78. package/dist/gateway/static/root/assets/time-picker-BpiBF5-d.js +1 -0
  79. package/dist/gateway/static/root/assets/{typed-models-lib-D-_vct_y.js → typed-models-lib-D0XCOCAM.js} +1 -1
  80. package/dist/gateway/static/root/assets/{use-channel-catalog-VlFtjlET.js → use-channel-catalog-mq_Inao2.js} +1 -1
  81. package/dist/gateway/static/root/assets/user-context-page-BOC6Hn19.js +1 -0
  82. package/dist/gateway/static/root/assets/{voice-api-key-field-BhDk-UV_.js → voice-api-key-field-CKaDitO6.js} +1 -1
  83. package/dist/gateway/static/root/assets/work-discovery-page-DWGYp5yV.js +1 -0
  84. package/dist/gateway/static/root/assets/work-item-detail-page-CpeWcpSp.js +1 -0
  85. package/dist/gateway/static/root/assets/work-page-MsEKzmSt.js +1 -0
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-uVw4Yoej.js → workflow-run-setup-panel-s_kS_FYA.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-ByhHaUHB.js +11 -0
  88. package/dist/gateway/static/root/index.html +7 -7
  89. package/dist/package.js +1 -1
  90. package/dist/src/agent/agent-manager.d.ts +3 -1
  91. package/dist/src/agent/agent-manager.js +4 -3
  92. package/dist/src/agent/capabilities/definitions.d.ts +2 -1
  93. package/dist/src/agent/capabilities/definitions.js +3 -1
  94. package/dist/src/agent/memory/builtin-provider.js +4 -4
  95. package/dist/src/agent/memory/manager.d.ts +4 -1
  96. package/dist/src/agent/memory/manager.js +8 -3
  97. package/dist/src/agent/memory/understanding/service.d.ts +2 -0
  98. package/dist/src/agent/memory/understanding/service.js +11 -9
  99. package/dist/src/agent/prompt/sections/tooling.js +4 -0
  100. package/dist/src/agent/service.d.ts +3 -1
  101. package/dist/src/agent/service.js +29 -0
  102. package/dist/src/agent/skills/hub-pull.js +1 -1
  103. package/dist/src/agent/skills/index.js +1 -1
  104. package/dist/src/agent/skills/install-target.js +1 -1
  105. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.d.ts +64 -0
  106. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +27 -18
  107. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +1 -1
  108. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
  109. package/dist/src/agent/skills/marketplace/search.d.ts +46 -0
  110. package/dist/src/agent/skills/marketplace/search.js +193 -0
  111. package/dist/src/agent/skills/skill-tool-gating.js +2 -1
  112. package/dist/src/agent/tools/delegate-tool.js +2 -0
  113. package/dist/src/agent/tools/factory.d.ts +4 -2
  114. package/dist/src/agent/tools/factory.js +11 -5
  115. package/dist/src/agent/tools/index.d.ts +2 -1
  116. package/dist/src/agent/tools/index.js +2 -1
  117. package/dist/src/agent/tools/skill-install-tool.d.ts +17 -0
  118. package/dist/src/agent/tools/skill-install-tool.js +76 -8
  119. package/dist/src/agent/tools/skills-marketplace-search-tool.d.ts +17 -0
  120. package/dist/src/agent/tools/skills-marketplace-search-tool.js +77 -0
  121. package/dist/src/automations/domain/validation.d.ts +8 -8
  122. package/dist/src/automations/draft/automation-draft-validator.d.ts +1 -1
  123. package/dist/src/browser/providers/cloakbrowser.js +1 -1
  124. package/dist/src/capabilities/store-connector.js +1 -1
  125. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  126. package/dist/src/config/agent-profile.js +1 -1
  127. package/dist/src/connectors/composio-sessions.d.ts +1 -0
  128. package/dist/src/connectors/composio-sessions.js +14 -5
  129. package/dist/src/connectors/composio-triggers.d.ts +1 -1
  130. package/dist/src/connectors/composio-triggers.js +4 -3
  131. package/dist/src/connectors/composio.js +1 -0
  132. package/dist/src/connectors/{connector-memory-sync.d.ts → connected-source-ingestion.d.ts} +11 -4
  133. package/dist/src/connectors/{connector-memory-sync.js → connected-source-ingestion.js} +49 -101
  134. package/dist/src/connectors/connected-source-normalizers.d.ts +15 -0
  135. package/dist/src/connectors/connected-source-normalizers.js +186 -0
  136. package/dist/src/connectors/connector-identity.d.ts +2 -0
  137. package/dist/src/connectors/connector-identity.js +29 -0
  138. package/dist/src/connectors/learning-coordinator.d.ts +25 -0
  139. package/dist/src/connectors/learning-coordinator.js +214 -0
  140. package/dist/src/connectors/learning-recipes.d.ts +22 -0
  141. package/dist/src/connectors/learning-recipes.js +121 -0
  142. package/dist/src/connectors/runtime-status.d.ts +1 -8
  143. package/dist/src/connectors/runtime-status.js +4 -29
  144. package/dist/src/extensions/api.js +1 -1
  145. package/dist/src/extensions/install.js +1 -1
  146. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  147. package/dist/src/gateway/agent-builtin-tools.js +2 -0
  148. package/dist/src/gateway/agents-admin.js +1 -1
  149. package/dist/src/gateway/heartbeat/service.js +1 -1
  150. package/dist/src/gateway/hono/routes/commands-skills.js +2 -2
  151. package/dist/src/gateway/hono/routes/connectors.js +76 -118
  152. package/dist/src/gateway/hono/routes/local-apps.js +1 -1
  153. package/dist/src/gateway/hono/routes/models.js +24 -0
  154. package/dist/src/gateway/hono/routes/public-gateway.js +3 -2
  155. package/dist/src/gateway/hono/routes/you.js +86 -5
  156. package/dist/src/gateway/service/marketplace-service.js +1 -1
  157. package/dist/src/gateway/service.d.ts +5 -2
  158. package/dist/src/gateway/service.js +18 -13
  159. package/dist/src/heartbeat/index.js +1 -1
  160. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +19 -0
  161. package/dist/src/knowledge/connected-understanding-pipeline.js +268 -0
  162. package/dist/src/knowledge/index.d.ts +1 -0
  163. package/dist/src/knowledge/index.js +2 -1
  164. package/dist/src/knowledge/ingestion-service.d.ts +6 -4
  165. package/dist/src/knowledge/ingestion-service.js +13 -10
  166. package/dist/src/knowledge/local-folder-adapter.js +1 -0
  167. package/dist/src/knowledge/people-graph.js +43 -110
  168. package/dist/src/knowledge/types.d.ts +3 -0
  169. package/dist/src/mcp/channel-bridge.js +1 -1
  170. package/dist/src/providers/xopc-cloud-account-service.d.ts +40 -0
  171. package/dist/src/providers/xopc-cloud-account-service.js +65 -0
  172. package/dist/src/storage/sqlite/connector-learning-repository.d.ts +47 -0
  173. package/dist/src/storage/sqlite/connector-learning-repository.js +110 -0
  174. package/dist/src/storage/sqlite/index.d.ts +3 -1
  175. package/dist/src/storage/sqlite/index.js +4 -2
  176. package/dist/src/storage/sqlite/knowledge-repository.d.ts +4 -2
  177. package/dist/src/storage/sqlite/knowledge-repository.js +24 -13
  178. package/dist/src/storage/sqlite/migrations/062_connector_learning_jobs.sql +27 -0
  179. package/dist/src/storage/sqlite/migrations/063_knowledge_collection_scopes.sql +14 -0
  180. package/dist/src/storage/sqlite/migrations/064_user_claims.sql +60 -0
  181. package/dist/src/storage/sqlite/migrations/065_knowledge_item_scope_identity.sql +116 -0
  182. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  183. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  184. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  185. package/dist/src/storage/sqlite/schema.js +1 -1
  186. package/dist/src/storage/sqlite/user-claims-repository.d.ts +101 -0
  187. package/dist/src/storage/sqlite/user-claims-repository.js +241 -0
  188. package/dist/src/user-context/projection.d.ts +36 -1
  189. package/dist/src/user-context/projection.js +84 -6
  190. package/dist/src/work-discovery/service.js +1 -0
  191. package/package.json +1 -1
  192. package/skills/tools/find-skills/SKILL.md +18 -428
  193. package/dist/gateway/static/root/assets/agents-ZCIC8mhO.js +0 -2
  194. package/dist/gateway/static/root/assets/apps-page-DJmgBaAm.js +0 -1
  195. package/dist/gateway/static/root/assets/automations-page-Ddot8-Md.js +0 -6
  196. package/dist/gateway/static/root/assets/block-editor-D3GIllO3.js +0 -184
  197. package/dist/gateway/static/root/assets/browser-settings-page-DvETvRcg.js +0 -8
  198. package/dist/gateway/static/root/assets/capabilities-settings-panel-ChXIYbys.js +0 -7
  199. package/dist/gateway/static/root/assets/capability-presets-settings-panel-CUekXsJy.js +0 -1
  200. package/dist/gateway/static/root/assets/channels-settings-CkhveNsQ.js +0 -1
  201. package/dist/gateway/static/root/assets/channels-status-swr-DRTb8DBk.js +0 -1
  202. package/dist/gateway/static/root/assets/connector-logo-CQznQcd4.js +0 -1
  203. package/dist/gateway/static/root/assets/connectors-page-DkSGIxWP.js +0 -2
  204. package/dist/gateway/static/root/assets/desktop-pet-BtP-xUQ9.js +0 -1
  205. package/dist/gateway/static/root/assets/dreaming-settings-gd9W6SLj.js +0 -3
  206. package/dist/gateway/static/root/assets/goal-detail-page-DizZ6Cpl.js +0 -4
  207. package/dist/gateway/static/root/assets/goals-page-Dqry_hi2.js +0 -2
  208. package/dist/gateway/static/root/assets/index-DEdyUjxM.css +0 -1
  209. package/dist/gateway/static/root/assets/logs-page-mT48mcF4.js +0 -7
  210. package/dist/gateway/static/root/assets/notes-workbench-wgt2Osyk.js +0 -4
  211. package/dist/gateway/static/root/assets/project-detail-page-CDjHvxJm.js +0 -1
  212. package/dist/gateway/static/root/assets/projects-page-kJZwQXfC.js +0 -1
  213. package/dist/gateway/static/root/assets/remote-access-hub-MJdI9ek_.js +0 -1
  214. package/dist/gateway/static/root/assets/sessions-page-BqC7GDC_.js +0 -1
  215. package/dist/gateway/static/root/assets/settings-advanced-gate-CYwz8MfF.js +0 -1
  216. package/dist/gateway/static/root/assets/shares-settings-h8tGDkA3.js +0 -1
  217. package/dist/gateway/static/root/assets/skill-reload-api-D2DGvRUn.js +0 -1
  218. package/dist/gateway/static/root/assets/skills-page-vqhjSMhZ.js +0 -2
  219. package/dist/gateway/static/root/assets/time-picker-mtD64kFB.js +0 -1
  220. package/dist/gateway/static/root/assets/user-context-page-BgF0WxjM.js +0 -1
  221. package/dist/gateway/static/root/assets/work-discovery-page-CP0Daig-.js +0 -1
  222. package/dist/gateway/static/root/assets/work-item-detail-page-NEWZPKB_.js +0 -1
  223. package/dist/gateway/static/root/assets/work-page-BkWntcQh.js +0 -1
  224. package/dist/gateway/static/root/assets/workflows-page-DRvhNQGe.js +0 -11
  225. package/dist/src/connectors/memory-sync-coordinator.d.ts +0 -28
  226. package/dist/src/connectors/memory-sync-coordinator.js +0 -162
  227. package/dist/src/connectors/memory-sync-profile.d.ts +0 -13
  228. package/dist/src/connectors/memory-sync-profile.js +0 -73
@@ -1,28 +0,0 @@
1
- import type { Config } from '../config/schema.js';
2
- import { syncComposioResultToMemory, syncLocalFolderToMemory } from './connector-memory-sync.js';
3
- export type ConnectorMemorySyncCoordinator = {
4
- runNow(options?: {
5
- toolkit?: string;
6
- force?: boolean;
7
- }): Promise<void>;
8
- stop(): void;
9
- };
10
- export declare function syncDueMemorySources(options: {
11
- config: Config;
12
- agentId: string;
13
- nowMs?: number;
14
- toolkit?: string;
15
- force?: boolean;
16
- syncLocalSource?: typeof syncLocalFolderToMemory;
17
- syncComposioSource?: typeof syncComposioResultToMemory;
18
- }): Promise<{
19
- eligible: number;
20
- synced: number;
21
- failed: number;
22
- }>;
23
- export declare function startConnectorMemorySyncCoordinator(options: {
24
- getConfig: () => Config;
25
- resolveAgentId: () => string;
26
- intervalMs?: number;
27
- initialDelayMs?: number;
28
- }): ConnectorMemorySyncCoordinator;
@@ -1,162 +0,0 @@
1
- import { createLogger } from "../utils/logger/index.js";
2
- import { init_logger } from "../utils/logger.js";
3
- import { listKnowledgeSyncRuns } from "../storage/sqlite/knowledge-repository.js";
4
- import { listConnectorConnections } from "../storage/sqlite/connector-repository.js";
5
- import "../storage/sqlite/index.js";
6
- import { getConnectorDefinition } from "./catalog.js";
7
- import { listConnectorInstances } from "./instances.js";
8
- import { syncComposioResultToMemory, syncLocalFolderToMemory } from "./connector-memory-sync.js";
9
- import { getComposioMemorySyncProfile } from "./memory-sync-profile.js";
10
- //#region src/connectors/memory-sync-coordinator.ts
11
- init_logger();
12
- const log = createLogger("ConnectorMemorySync");
13
- const DEFAULT_SYNC_INTERVAL_MINUTES = 15;
14
- async function syncDueMemorySources(options) {
15
- const nowMs = options.nowMs ?? Date.now();
16
- const syncLocalSource = options.syncLocalSource ?? syncLocalFolderToMemory;
17
- const syncComposioSource = options.syncComposioSource ?? syncComposioResultToMemory;
18
- let eligible = 0;
19
- let synced = 0;
20
- let failed = 0;
21
- for (const instance of listConnectorInstances(options.config)) {
22
- if (!instance.enabled) continue;
23
- const definition = getConnectorDefinition(instance.connectorId);
24
- if (definition?.runtime.type === "memorySource" && definition.runtime.sourceKind === "local-folder") {
25
- if (options.toolkit || instance.config?.autoSync === false) continue;
26
- eligible += 1;
27
- const configuredMinutes = Number(instance.config?.syncIntervalMinutes ?? DEFAULT_SYNC_INTERVAL_MINUTES);
28
- const intervalMinutes = Number.isFinite(configuredMinutes) ? Math.max(5, Math.min(configuredMinutes, 1440)) : DEFAULT_SYNC_INTERVAL_MINUTES;
29
- const sourceInstanceId = `local-folder:${definition.id}`;
30
- const latestRun = listKnowledgeSyncRuns({
31
- sourceInstanceId,
32
- limit: 1
33
- })[0];
34
- if (!options.force && latestRun && nowMs - Date.parse(latestRun.startedAt) < intervalMinutes * 6e4) continue;
35
- try {
36
- await syncLocalSource({
37
- config: options.config,
38
- connectorId: definition.id,
39
- agentId: options.agentId
40
- });
41
- synced += 1;
42
- } catch (err) {
43
- failed += 1;
44
- const errorMessage = err instanceof Error ? err.message : String(err);
45
- log.warn({
46
- err,
47
- connectorId: definition.id,
48
- sourceInstanceId
49
- }, `Automatic connector memory sync failed: ${errorMessage}`);
50
- }
51
- continue;
52
- }
53
- if (definition?.runtime.type !== "composio" || definition.runtime.role !== "toolkit") continue;
54
- if (options.toolkit && definition.runtime.toolkit !== options.toolkit) continue;
55
- const profile = getComposioMemorySyncProfile(options.config, definition.id);
56
- if (!profile?.enabled || options.force && options.toolkit && !profile.triggerSync) continue;
57
- eligible += 1;
58
- const activeConnections = listConnectorConnections({ connectorId: definition.id }).filter((candidate) => candidate.status === "active");
59
- const connection = profile.connectionId ? activeConnections.find((candidate) => candidate.id === profile.connectionId) : activeConnections.find((candidate) => candidate.isDefault) ?? activeConnections[0];
60
- if (!connection) continue;
61
- const sourceInstanceId = `composio:${definition.id}:${connection.id}`;
62
- const latestRun = listKnowledgeSyncRuns({
63
- sourceInstanceId,
64
- limit: 1
65
- })[0];
66
- if (!options.force && latestRun && nowMs - Date.parse(latestRun.startedAt) < profile.intervalMinutes * 6e4) continue;
67
- try {
68
- await syncComposioSource({
69
- config: options.config,
70
- connectorId: definition.id,
71
- actionId: profile.actionId,
72
- arguments: profile.arguments,
73
- agentId: profile.agentId,
74
- connectionId: connection.id
75
- });
76
- synced += 1;
77
- } catch (err) {
78
- failed += 1;
79
- const errorMessage = err instanceof Error ? err.message : String(err);
80
- log.warn({
81
- err,
82
- connectorId: definition.id,
83
- sourceInstanceId
84
- }, `Automatic Composio memory sync failed: ${errorMessage}`);
85
- }
86
- }
87
- return {
88
- eligible,
89
- synced,
90
- failed
91
- };
92
- }
93
- function startConnectorMemorySyncCoordinator(options) {
94
- const intervalMs = Math.max(1e4, Math.min(options.intervalMs ?? 6e4, 30 * 6e4));
95
- let timer = null;
96
- let running = false;
97
- let stopped = false;
98
- let pendingAll = false;
99
- let pendingForce = false;
100
- const pendingToolkits = /* @__PURE__ */ new Set();
101
- async function runNow(runOptions) {
102
- if (stopped) return;
103
- if (running) {
104
- if (runOptions?.toolkit) pendingToolkits.add(runOptions.toolkit);
105
- else pendingAll = true;
106
- pendingForce ||= runOptions?.force === true;
107
- return;
108
- }
109
- running = true;
110
- try {
111
- const result = await syncDueMemorySources({
112
- config: options.getConfig(),
113
- agentId: options.resolveAgentId(),
114
- toolkit: runOptions?.toolkit,
115
- force: runOptions?.force
116
- });
117
- if (result.synced > 0 || result.failed > 0) log.info(result, "Automatic connector memory sync cycle completed");
118
- } catch (err) {
119
- const errorMessage = err instanceof Error ? err.message : String(err);
120
- log.warn({ err }, `Automatic connector memory sync cycle failed: ${errorMessage}`);
121
- } finally {
122
- running = false;
123
- if (!stopped && (pendingAll || pendingToolkits.size > 0)) {
124
- const runAll = pendingAll;
125
- const force = pendingForce;
126
- const toolkits = [...pendingToolkits];
127
- pendingAll = false;
128
- pendingForce = false;
129
- pendingToolkits.clear();
130
- queueMicrotask(() => {
131
- if (runAll) runNow({ force });
132
- else toolkits.reduce(async (previous, toolkit) => {
133
- await previous;
134
- await runNow({
135
- toolkit,
136
- force
137
- });
138
- }, Promise.resolve());
139
- });
140
- }
141
- }
142
- }
143
- timer = setTimeout(() => {
144
- runNow();
145
- timer = setInterval(() => void runNow(), intervalMs);
146
- timer.unref?.();
147
- }, Math.max(0, options.initialDelayMs ?? 1e4));
148
- timer.unref?.();
149
- return {
150
- runNow,
151
- stop() {
152
- stopped = true;
153
- if (timer) {
154
- clearTimeout(timer);
155
- clearInterval(timer);
156
- timer = null;
157
- }
158
- }
159
- };
160
- }
161
- //#endregion
162
- export { startConnectorMemorySyncCoordinator, syncDueMemorySources };
@@ -1,13 +0,0 @@
1
- import type { Config } from '../config/schema.js';
2
- export type ComposioMemorySyncProfile = {
3
- enabled: boolean;
4
- actionId: string;
5
- arguments: Record<string, unknown>;
6
- agentId: string;
7
- connectionId?: string;
8
- intervalMinutes: number;
9
- triggerSync: boolean;
10
- updatedAt: string;
11
- };
12
- export declare function getComposioMemorySyncProfile(config: Config, connectorId: string): ComposioMemorySyncProfile | undefined;
13
- export declare function updateComposioMemorySyncProfile(config: Config, connectorId: string, input: Omit<ComposioMemorySyncProfile, 'updatedAt'>): ComposioMemorySyncProfile;
@@ -1,73 +0,0 @@
1
- import { scopeForComposioAction } from "./composio.js";
2
- import { getConnectorDefinition } from "./catalog.js";
3
- import { COMPOSIO_MEMORY_SOURCE_TOOLKITS } from "./connector-memory-sync.js";
4
- //#region src/connectors/memory-sync-profile.ts
5
- const SENSITIVE_ARGUMENT_KEY = /(?:api[-_]?key|authorization|cookie|password|secret|token)/i;
6
- function asRecord(value) {
7
- return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
8
- }
9
- function assertNoPersistedSecrets(value, depth = 0) {
10
- if (depth > 12) throw new Error("Memory sync arguments are nested too deeply.");
11
- if (Array.isArray(value)) {
12
- for (const item of value) assertNoPersistedSecrets(item, depth + 1);
13
- return;
14
- }
15
- const record = asRecord(value);
16
- if (!record) return;
17
- for (const [key, nested] of Object.entries(record)) {
18
- if (SENSITIVE_ARGUMENT_KEY.test(key)) throw new Error(`Memory sync arguments cannot persist sensitive field "${key}".`);
19
- assertNoPersistedSecrets(nested, depth + 1);
20
- }
21
- }
22
- function markerFor(config, connectorId) {
23
- return asRecord(config.connectors?.instances?.[connectorId]?.xopcConnector);
24
- }
25
- function getComposioMemorySyncProfile(config, connectorId) {
26
- const raw = asRecord(asRecord(markerFor(config, connectorId)?.config)?.memorySync);
27
- if (!raw) return void 0;
28
- const actionId = typeof raw.actionId === "string" ? raw.actionId.trim() : "";
29
- const agentId = typeof raw.agentId === "string" ? raw.agentId.trim() : "";
30
- if (!actionId || !agentId) return void 0;
31
- const interval = Number(raw.intervalMinutes);
32
- return {
33
- enabled: raw.enabled === true,
34
- actionId,
35
- arguments: asRecord(raw.arguments) ?? {},
36
- agentId,
37
- connectionId: typeof raw.connectionId === "string" && raw.connectionId.trim() ? raw.connectionId.trim() : void 0,
38
- intervalMinutes: Number.isFinite(interval) ? Math.max(5, Math.min(interval, 1440)) : 15,
39
- triggerSync: raw.triggerSync !== false,
40
- updatedAt: typeof raw.updatedAt === "string" ? raw.updatedAt : (/* @__PURE__ */ new Date(0)).toISOString()
41
- };
42
- }
43
- function updateComposioMemorySyncProfile(config, connectorId, input) {
44
- const definition = getConnectorDefinition(connectorId);
45
- if (definition?.runtime.type !== "composio" || definition.runtime.role !== "toolkit") throw new Error("Memory sync profiles require an installed Composio toolkit connector.");
46
- const toolkit = definition.runtime.toolkit;
47
- if (!COMPOSIO_MEMORY_SOURCE_TOOLKITS.has(toolkit)) throw new Error(`Memory sync is not supported for the ${toolkit} connector.`);
48
- const marker = markerFor(config, connectorId);
49
- if (!marker || marker.managed !== true || marker.enabled === false) throw new Error(`Connector is not installed and enabled: ${connectorId}`);
50
- const actionId = input.actionId.trim();
51
- const agentId = input.agentId.trim();
52
- const risk = scopeForComposioAction(actionId);
53
- if (!actionId || risk.toolkit !== toolkit || risk.scope !== "read" || !risk.curated) throw new Error("Memory sync profiles require a curated read-only action from the same toolkit.");
54
- if (!agentId) throw new Error("Memory sync profile requires an agentId.");
55
- assertNoPersistedSecrets(input.arguments);
56
- const profile = {
57
- enabled: input.enabled,
58
- actionId,
59
- arguments: structuredClone(input.arguments),
60
- agentId,
61
- connectionId: input.connectionId?.trim() || void 0,
62
- intervalMinutes: Math.max(5, Math.min(Number(input.intervalMinutes) || 15, 1440)),
63
- triggerSync: input.triggerSync,
64
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
65
- };
66
- marker.config = {
67
- ...asRecord(marker.config) ?? {},
68
- memorySync: profile
69
- };
70
- return profile;
71
- }
72
- //#endregion
73
- export { getComposioMemorySyncProfile, updateComposioMemorySyncProfile };