@xopcai/xopc 0.0.156 → 0.0.158

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 (180) 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/action-boundary-settings-panel-2p1f4-KA.js +1 -0
  4. package/dist/gateway/static/root/assets/{activity-store-Cp7IGk68.js → activity-store-C-57rvkX.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-H8Kj8Gpi.js → agent-avatar-dicebear-BIl6X2b_.js} +1 -1
  6. package/dist/gateway/static/root/assets/agents-bnkKH9EI.js +2 -0
  7. package/dist/gateway/static/root/assets/{api-DtJCVPiu.js → api-BjcBIV2O.js} +1 -1
  8. package/dist/gateway/static/root/assets/{app-management-settings-panel-DKTEVSpf.js → app-management-settings-panel-CZxw161D.js} +1 -1
  9. package/dist/gateway/static/root/assets/{appearance-settings-BQjvBNo5.js → appearance-settings-CRXNlDhH.js} +1 -1
  10. package/dist/gateway/static/root/assets/apps-page-l4ripRNG.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-BrGMwlAE.js → archive-plugin-CpVshjXu.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-24BvpEL4.js → attachment-load-M9WqqJnQ.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automation-suggestion-card-CWWKtdDT.js → automation-suggestion-card-CYMsAsYf.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-page-Kny7tLiF.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-C1E7_cKL.js → binary-plugins-Cjn3zb4u.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-BVnHG0U5.js → block-editor-BPKdquaV.js} +31 -31
  17. package/dist/gateway/static/root/assets/browser-settings-page-vr1tXAab.js +8 -0
  18. package/dist/gateway/static/root/assets/{capability-presets-api-DyXFKny9.js → capability-presets-api-Bzkcsyzn.js} +1 -1
  19. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-luTMJl0D.js → capability-presets-settings-panel-D4rH4Dax.js} +2 -2
  20. package/dist/gateway/static/root/assets/{channel-recipient-api-Bo9KEXO4.js → channel-recipient-api-CFqrSi5K.js} +1 -1
  21. package/dist/gateway/static/root/assets/channels-settings-Tlhbi5eh.js +1 -0
  22. package/dist/gateway/static/root/assets/channels-status-swr-vooEF4lG.js +1 -0
  23. package/dist/gateway/static/root/assets/{connector-logo-B7ECwA6W.js → connector-logo-ljPKdYKh.js} +1 -1
  24. package/dist/gateway/static/root/assets/connectors-page-_XfvjXoY.js +2 -0
  25. package/dist/gateway/static/root/assets/{desktop-pet-C4J-TrDl.js → desktop-pet-DKUlAgm7.js} +1 -1
  26. package/dist/gateway/static/root/assets/{desktop-pet-settings-CsGZynhi.js → desktop-pet-settings-aWWzjdza.js} +1 -1
  27. package/dist/gateway/static/root/assets/{directory-picker-path-field-DDn1H6qY.js → directory-picker-path-field-Dmy1035j.js} +1 -1
  28. package/dist/gateway/static/root/assets/{dreaming-settings-jJjiYe0n.js → dreaming-settings-tT4WkBkd.js} +3 -3
  29. package/dist/gateway/static/root/assets/{extension-debug-page-CQVct2lF.js → extension-debug-page-CL79q8AH.js} +1 -1
  30. package/dist/gateway/static/root/assets/{extension-page-sUEY0_Yl.js → extension-page-hq80wkFI.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-settings-page-zpScIWDQ.js → extension-settings-page-BV-9GDfT.js} +1 -1
  32. package/dist/gateway/static/root/assets/{gateway-config-api-B-GwICsA.js → gateway-config-api-CFqoN2NW.js} +1 -1
  33. package/dist/gateway/static/root/assets/gateway-settings-DzR-kM91.js +1 -0
  34. package/dist/gateway/static/root/assets/{gateway-startup-retry-CJUiuchE.js → gateway-startup-retry-cxQ94qMm.js} +1 -1
  35. package/dist/gateway/static/root/assets/{goal-create-dialog-Cvd9nymX.js → goal-create-dialog-BLjHRtqe.js} +1 -1
  36. package/dist/gateway/static/root/assets/goal-detail-page-BRxeujXh.js +4 -0
  37. package/dist/gateway/static/root/assets/{goals-config-api-DKkSo21W.js → goals-config-api--qJ4qlRq.js} +1 -1
  38. package/dist/gateway/static/root/assets/goals-page-BaZ3aw4u.js +2 -0
  39. package/dist/gateway/static/root/assets/{goals-settings-CtRqc0fv.js → goals-settings-h7x9h5lb.js} +1 -1
  40. package/dist/gateway/static/root/assets/{heartbeat-settings-BT-TLTst.js → heartbeat-settings-71IhhM3s.js} +1 -1
  41. package/dist/gateway/static/root/assets/{index-Din3Cw4v.js → index-EXa_i6BT.js} +61 -64
  42. package/dist/gateway/static/root/assets/index-gpwk8Nro.css +1 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DJtVjIjb.js → keyboard-shortcuts-settings-BZGmHvLu.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-lUpd6lSo.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-BgG--iAa.js → local-apps-page-CiLqrMIh.js} +1 -1
  46. package/dist/gateway/static/root/assets/locale-store-C_M71MK9.js +1 -0
  47. package/dist/gateway/static/root/assets/logs-page-FPDTmcWe.js +7 -0
  48. package/dist/gateway/static/root/assets/{markdown-split-CYzbIIru.js → markdown-split-r1HPWfCU.js} +1 -1
  49. package/dist/gateway/static/root/assets/{media-plugins-MIPDILS2.js → media-plugins-D74kd3hn.js} +1 -1
  50. package/dist/gateway/static/root/assets/{messages-DEhbxGef.js → messages-BuT0SR1R.js} +4 -4
  51. package/dist/gateway/static/root/assets/models-hub-panel-BXrdePhv.js +2 -0
  52. package/dist/gateway/static/root/assets/{notes-page-DImgR3qC.js → notes-page-Dgu02514.js} +1 -1
  53. package/dist/gateway/static/root/assets/notes-workbench-D-EAhXv1.js +4 -0
  54. package/dist/gateway/static/root/assets/{page-tabs--KgaLen_.js → page-tabs-hinRdDy3.js} +1 -1
  55. package/dist/gateway/static/root/assets/{preview-open-alternatives-C_HbjDSi.js → preview-open-alternatives-C7fw3oGy.js} +1 -1
  56. package/dist/gateway/static/root/assets/project-detail-page-BjpB1wrp.js +1 -0
  57. package/dist/gateway/static/root/assets/{projects-page-D9Ic-jH8.js → projects-page-BxyjqOfC.js} +1 -1
  58. package/dist/gateway/static/root/assets/remote-access-hub-BFv6Upke.js +1 -0
  59. package/dist/gateway/static/root/assets/{save-bar-controls-CjZo14GS.js → save-bar-controls-C3aU8-vO.js} +1 -1
  60. package/dist/gateway/static/root/assets/{schedule-field-RXap283_.js → schedule-field-DjegExFD.js} +1 -1
  61. package/dist/gateway/static/root/assets/{schema-form-Cxma8ta1.js → schema-form-DLubnsql.js} +1 -1
  62. package/dist/gateway/static/root/assets/sessions-page-BX4DH8J7.js +1 -0
  63. package/dist/gateway/static/root/assets/settings-advanced-gate-CJ9MbRP8.js +1 -0
  64. package/dist/gateway/static/root/assets/{settings-collapsible-section-BCj-CWDz.js → settings-collapsible-section-3syQHsNR.js} +1 -1
  65. package/dist/gateway/static/root/assets/{settings-form-section-BcNg8gHj.js → settings-form-section-D4DCZzKg.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-loading-skeleton-BdebKuIQ.js → settings-loading-skeleton-c5K85ylS.js} +1 -1
  67. package/dist/gateway/static/root/assets/settings-page-DNiDlaRq.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-page-layout-CunTdv0L.js → settings-page-layout-iTRY1Hy-.js} +1 -1
  69. package/dist/gateway/static/root/assets/setup-status-panel-BH4xQKM9.js +1 -0
  70. package/dist/gateway/static/root/assets/{share-preview-page-mr4J9NTO.js → share-preview-page-B88Afrhe.js} +1 -1
  71. package/dist/gateway/static/root/assets/shares-settings-B6kKkvOb.js +1 -0
  72. package/dist/gateway/static/root/assets/skill-reload-api-DtjS-nUK.js +1 -0
  73. package/dist/gateway/static/root/assets/skills-page-CQEoPv0u.js +2 -0
  74. package/dist/gateway/static/root/assets/{system-settings-panel-DVhTcFLH.js → system-settings-panel-DtpTq837.js} +1 -1
  75. package/dist/gateway/static/root/assets/{theme-store-JwXJZwqx.js → theme-store-C8ohIHhw.js} +1 -1
  76. package/dist/gateway/static/root/assets/{typed-models-lib-DRyUSUIv.js → typed-models-lib-ndEnUP3b.js} +1 -1
  77. package/dist/gateway/static/root/assets/{use-channel-catalog-CNubDrIo.js → use-channel-catalog-BWzou5ar.js} +1 -1
  78. package/dist/gateway/static/root/assets/user-context-page-Dn2T3itn.js +1 -0
  79. package/dist/gateway/static/root/assets/voice-api-key-field-wtWc3SfN.js +1 -0
  80. package/dist/gateway/static/root/assets/work-discovery-page-Ckxhj66e.js +1 -0
  81. package/dist/gateway/static/root/assets/work-item-detail-page-_1QgGPNw.js +1 -0
  82. package/dist/gateway/static/root/assets/work-page-BPdf2iuv.js +1 -0
  83. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-KZDzIdFk.js → workflow-run-setup-panel-ukmpkj66.js} +2 -2
  84. package/dist/gateway/static/root/assets/workflows-page-DdKTx0Hs.js +11 -0
  85. package/dist/gateway/static/root/connector-icons/local-files.svg +6 -0
  86. package/dist/gateway/static/root/index.html +7 -7
  87. package/dist/package.js +1 -1
  88. package/dist/src/agent/agent-manager.js +63 -61
  89. package/dist/src/agent/embedded/xopc-auth-storage.js +1 -1
  90. package/dist/src/agent/tools/factory.js +2 -2
  91. package/dist/src/agent/tools/session-search-tool.d.ts +2 -2
  92. package/dist/src/agent/tools/session-search-tool.js +8 -19
  93. package/dist/src/config/config-surface.d.ts +0 -26
  94. package/dist/src/connectors/builtin-catalog.js +90 -248
  95. package/dist/src/connectors/catalog.js +2 -3
  96. package/dist/src/connectors/composio-catalog.d.ts +11 -1
  97. package/dist/src/connectors/composio-catalog.js +65 -8
  98. package/dist/src/connectors/composio-sessions.js +1 -1
  99. package/dist/src/connectors/composio.d.ts +1 -0
  100. package/dist/src/connectors/composio.js +10 -2
  101. package/dist/src/connectors/connector-memory-sync.d.ts +10 -0
  102. package/dist/src/connectors/connector-memory-sync.js +184 -38
  103. package/dist/src/connectors/integration-strategy.js +65 -8
  104. package/dist/src/connectors/memory-sync-coordinator.d.ts +28 -0
  105. package/dist/src/connectors/memory-sync-coordinator.js +162 -0
  106. package/dist/src/connectors/memory-sync-profile.d.ts +13 -0
  107. package/dist/src/connectors/memory-sync-profile.js +73 -0
  108. package/dist/src/connectors/runtime-adapter-registry.js +17 -4
  109. package/dist/src/connectors/runtime-status.d.ts +9 -0
  110. package/dist/src/connectors/runtime-status.js +68 -0
  111. package/dist/src/connectors/types.d.ts +2 -0
  112. package/dist/src/gateway/hono/routes/connectors.js +146 -32
  113. package/dist/src/gateway/hono/routes/public-gateway.js +1 -0
  114. package/dist/src/gateway/service.d.ts +2 -0
  115. package/dist/src/gateway/service.js +14 -0
  116. package/dist/src/knowledge/index.d.ts +2 -0
  117. package/dist/src/knowledge/index.js +3 -1
  118. package/dist/src/knowledge/ingestion-service.js +40 -3
  119. package/dist/src/knowledge/local-folder-adapter.d.ts +7 -0
  120. package/dist/src/knowledge/local-folder-adapter.js +86 -0
  121. package/dist/src/knowledge/people-graph.d.ts +28 -0
  122. package/dist/src/knowledge/people-graph.js +126 -0
  123. package/dist/src/knowledge/types.d.ts +2 -0
  124. package/dist/src/storage/sqlite/connector-repository.d.ts +1 -0
  125. package/dist/src/storage/sqlite/connector-repository.js +12 -1
  126. package/dist/src/storage/sqlite/index.d.ts +1 -1
  127. package/dist/src/storage/sqlite/index.js +2 -2
  128. package/dist/src/user-context/projection.d.ts +2 -0
  129. package/dist/src/user-context/projection.js +12 -2
  130. package/package.json +3 -3
  131. package/dist/gateway/static/root/assets/agents-D7b7yNXE.js +0 -2
  132. package/dist/gateway/static/root/assets/apps-page-DF2hU_jf.js +0 -1
  133. package/dist/gateway/static/root/assets/automations-page-D48WJ6FM.js +0 -6
  134. package/dist/gateway/static/root/assets/browser-settings-page-4oWDtsXg.js +0 -8
  135. package/dist/gateway/static/root/assets/channels-settings-QSUco4Eu.js +0 -1
  136. package/dist/gateway/static/root/assets/channels-status-swr-DsSwOeqP.js +0 -1
  137. package/dist/gateway/static/root/assets/connectors-page-CNmHHcQy.js +0 -2
  138. package/dist/gateway/static/root/assets/gateway-settings-C93_Ybce.js +0 -1
  139. package/dist/gateway/static/root/assets/goal-detail-page-YH6hr32Q.js +0 -4
  140. package/dist/gateway/static/root/assets/goals-page-BZudny4c.js +0 -2
  141. package/dist/gateway/static/root/assets/index-hESUzOFP.css +0 -1
  142. package/dist/gateway/static/root/assets/local-app-workbench-page-BAUIuHgn.js +0 -2
  143. package/dist/gateway/static/root/assets/locale-store-DKx7Iqah.js +0 -1
  144. package/dist/gateway/static/root/assets/logs-page-DsoUv7ZF.js +0 -7
  145. package/dist/gateway/static/root/assets/models-hub-panel-Be8EL_eL.js +0 -2
  146. package/dist/gateway/static/root/assets/notes-workbench-C-7KD7v9.js +0 -4
  147. package/dist/gateway/static/root/assets/project-detail-page-CZKnDVLl.js +0 -1
  148. package/dist/gateway/static/root/assets/remote-access-hub-X8McfeZv.js +0 -1
  149. package/dist/gateway/static/root/assets/sessions-page-DS1ZDVHz.js +0 -1
  150. package/dist/gateway/static/root/assets/settings-advanced-gate-CcD1GwQy.js +0 -1
  151. package/dist/gateway/static/root/assets/settings-page-D8exfzMK.js +0 -1
  152. package/dist/gateway/static/root/assets/setup-status-panel-XjT8cddX.js +0 -1
  153. package/dist/gateway/static/root/assets/shares-settings-BCMbZehJ.js +0 -1
  154. package/dist/gateway/static/root/assets/skill-reload-api-DBJyFDEb.js +0 -1
  155. package/dist/gateway/static/root/assets/skills-page-DMqHx2h0.js +0 -2
  156. package/dist/gateway/static/root/assets/user-context-page-Dz5_Hxm8.js +0 -1
  157. package/dist/gateway/static/root/assets/user-profile-fields-editor-Dd9HhS4K.js +0 -1
  158. package/dist/gateway/static/root/assets/user-profile-settings-panel-BESvOafB.js +0 -1
  159. package/dist/gateway/static/root/assets/utils-BAhKxTKq.js +0 -1
  160. package/dist/gateway/static/root/assets/voice-api-key-field-DUGVoBoX.js +0 -1
  161. package/dist/gateway/static/root/assets/work-discovery-page-B3bY5klN.js +0 -1
  162. package/dist/gateway/static/root/assets/work-item-detail-page-zQi6iH0Q.js +0 -1
  163. package/dist/gateway/static/root/assets/work-page-y0B5nTmy.js +0 -1
  164. package/dist/gateway/static/root/assets/workflows-page-C95f1Mae.js +0 -11
  165. package/dist/gateway/static/root/connector-icons/brave-search.svg +0 -1
  166. package/dist/gateway/static/root/connector-icons/fetch.svg +0 -6
  167. package/dist/gateway/static/root/connector-icons/memory.svg +0 -5
  168. package/dist/gateway/static/root/connector-icons/playwright.svg +0 -9
  169. package/dist/gateway/static/root/connector-icons/sequential-thinking.svg +0 -8
  170. package/dist/gateway/static/root/connector-icons/time.svg +0 -6
  171. package/dist/src/connectors/registries/modelscope.d.ts +0 -2
  172. package/dist/src/connectors/registries/modelscope.js +0 -228
  173. package/dist/src/connectors/registries/official-mcp.d.ts +0 -2
  174. package/dist/src/connectors/registries/official-mcp.js +0 -140
  175. package/dist/src/connectors/registries/search.d.ts +0 -12
  176. package/dist/src/connectors/registries/search.js +0 -87
  177. package/dist/src/connectors/registries/smithery.d.ts +0 -2
  178. package/dist/src/connectors/registries/smithery.js +0 -97
  179. package/dist/src/connectors/registries/types.d.ts +0 -20
  180. package/dist/src/connectors/registries/types.js +0 -1
@@ -0,0 +1,9 @@
1
+ import type { ConnectorConnection, ConnectorInstance } from './types.js';
2
+ export type ComposioRuntimeProbe = {
3
+ connectorId: string;
4
+ checkedAt: string;
5
+ toolCount?: number;
6
+ error?: string;
7
+ connectionError?: boolean;
8
+ };
9
+ export declare function projectComposioRuntimeStatus(instances: ConnectorInstance[], connections: ConnectorConnection[], probes: ComposioRuntimeProbe[]): ConnectorInstance[];
@@ -0,0 +1,68 @@
1
+ //#region src/connectors/runtime-status.ts
2
+ function projectComposioRuntimeStatus(instances, connections, probes) {
3
+ const probeByConnectorId = new Map(probes.map((probe) => [probe.connectorId, probe]));
4
+ return instances.map((instance) => {
5
+ if (instance.materialized.type !== "composio" || instance.materialized.role !== "toolkit" || !instance.enabled) return instance;
6
+ const relevant = connections.filter((connection) => connection.provider === "composio" && connection.connectorId === instance.connectorId && connection.status !== "revoked");
7
+ const active = relevant.filter((connection) => connection.status === "active");
8
+ const probe = probeByConnectorId.get(instance.connectorId);
9
+ const lastConnectedAt = active.flatMap((connection) => connection.connectedAt ? [connection.connectedAt] : []).sort().at(-1) ?? instance.lastConnectedAt;
10
+ if (active.length > 0 && probe && !probe.error && (probe.toolCount ?? 0) > 0) return {
11
+ ...instance,
12
+ status: "connected",
13
+ connectionStatus: "connected",
14
+ authStatus: "connected",
15
+ lastConnectedAt,
16
+ lastError: void 0,
17
+ usage: {
18
+ ...instance.usage,
19
+ lastHealthCheckAt: probe.checkedAt,
20
+ lastHealthStatus: "ok",
21
+ lastToolCount: probe.toolCount
22
+ }
23
+ };
24
+ if (active.length > 0 && probe) {
25
+ const error = probe.error ?? "The connection did not expose any usable tools.";
26
+ return {
27
+ ...instance,
28
+ status: "degraded",
29
+ connectionStatus: probe.connectionError ? "error" : "connected",
30
+ authStatus: "connected",
31
+ lastConnectedAt,
32
+ lastError: error,
33
+ usage: {
34
+ ...instance.usage,
35
+ lastHealthCheckAt: probe.checkedAt,
36
+ lastHealthStatus: probe.connectionError ? "network_failed" : "tools_list_failed",
37
+ lastToolCount: probe.toolCount ?? 0
38
+ }
39
+ };
40
+ }
41
+ if (relevant.some((connection) => connection.status === "pending")) return {
42
+ ...instance,
43
+ status: "connecting",
44
+ connectionStatus: "connecting",
45
+ authStatus: "unknown"
46
+ };
47
+ if (relevant.some((connection) => connection.status === "expired")) return {
48
+ ...instance,
49
+ status: "unauthorized",
50
+ connectionStatus: "unauthorized",
51
+ authStatus: "expired"
52
+ };
53
+ if (relevant.some((connection) => connection.status === "failed")) return {
54
+ ...instance,
55
+ status: "failed",
56
+ connectionStatus: "error",
57
+ authStatus: "unauthorized"
58
+ };
59
+ return {
60
+ ...instance,
61
+ status: "not_configured",
62
+ connectionStatus: "disconnected",
63
+ authStatus: "missing"
64
+ };
65
+ });
66
+ }
67
+ //#endregion
68
+ export { projectComposioRuntimeStatus };
@@ -12,6 +12,7 @@ export type ConnectorAuthDefinition = {
12
12
  };
13
13
  export type ConnectorScope = 'read' | 'write' | 'admin';
14
14
  export type ConnectorVerificationLevel = 'verified' | 'beta' | 'experimental';
15
+ export type ConnectorBenefit = 'understand' | 'act' | 'reach';
15
16
  export type ConnectorBranding = {
16
17
  logoUrl?: string;
17
18
  source?: 'builtin' | 'composio-catalog' | 'registry' | 'extension' | 'custom';
@@ -88,6 +89,7 @@ export type ConnectorDefinition = {
88
89
  kind: ConnectorKind;
89
90
  source: 'builtin' | 'extension' | 'custom' | 'registry' | 'store';
90
91
  capabilities: ConnectorCapability[];
92
+ benefits?: ConnectorBenefit[];
91
93
  tags?: string[];
92
94
  branding?: ConnectorBranding;
93
95
  verificationLevel?: ConnectorVerificationLevel;
@@ -1,8 +1,10 @@
1
- import { decideConnectorApproval, getConnectorApproval, listConnectorApprovals } from "../../../storage/sqlite/connector-repository.js";
1
+ import { decideConnectorApproval, getConnectorApproval, listConnectorApprovals, listConnectorConnections } from "../../../storage/sqlite/connector-repository.js";
2
2
  import "../../../storage/sqlite/index.js";
3
+ import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
4
+ import { resolveComposioApiKey } from "../../../connectors/composio-sessions.js";
3
5
  import { listComposioConnectorCatalog } from "../../../connectors/composio-catalog.js";
4
6
  import { createConnectorSetupSecretRequest, submitConnectorSetupSecret } from "../../../connectors/setup-secrets.js";
5
- import { executeComposioTool, getComposioInstallationPolicy, getComposioToolkitScope, inspectComposioConnectorHealth, listComposioConnections, listComposioTools, refreshComposioConnection, revokeComposioConnection, setComposioToolkitScope, updateComposioConnection, updateComposioInstallationPolicy } from "../../../connectors/composio.js";
7
+ import { configureComposioApiKey, executeComposioTool, getComposioInstallationPolicy, getComposioToolkitScope, inspectComposioConnectorHealth, listComposioConnections, listComposioTools, refreshComposioConnection, revokeComposioConnection, setComposioToolkitScope, updateComposioConnection, updateComposioInstallationPolicy } from "../../../connectors/composio.js";
6
8
  import { listConnectorProviders } from "../../../connectors/providers.js";
7
9
  import { getConnectorDefinition, listConnectorCatalog } from "../../../connectors/catalog.js";
8
10
  import { recordConnectorHealthUsage } from "../../../connectors/usage.js";
@@ -11,11 +13,15 @@ import { installConnector, installConnectorDefinition, uninstallConnector, updat
11
13
  import { startConnectorAuthorization } from "../../../connectors/auth-provider-registry.js";
12
14
  import { composioLogoResponse } from "../../../connectors/composio-logo.js";
13
15
  import { appendComposioTriggerEvent, listComposioTriggerEvents } from "../../../connectors/composio-triggers.js";
14
- import { syncComposioResultToMemory } from "../../../connectors/connector-memory-sync.js";
16
+ import { buildConnectedPeopleGraph } from "../../../knowledge/people-graph.js";
17
+ import "../../../knowledge/index.js";
18
+ import { syncComposioResultToMemory, syncLocalFolderToMemory } from "../../../connectors/connector-memory-sync.js";
15
19
  import { previewConnectorDefinition, testConnectorInstance } from "../../../connectors/health.js";
16
20
  import { setConnectorEnabled } from "../../../connectors/lifecycle.js";
17
- import { isConnectorRegistrySource, listConnectorRegistries, searchConnectorRegistries } from "../../../connectors/registries/search.js";
21
+ import { getComposioMemorySyncProfile, updateComposioMemorySyncProfile } from "../../../connectors/memory-sync-profile.js";
22
+ import { projectComposioRuntimeStatus } from "../../../connectors/runtime-status.js";
18
23
  //#region src/gateway/hono/routes/connectors.ts
24
+ init_agent_scope();
19
25
  function errorMessage(error) {
20
26
  return error instanceof Error ? error.message : String(error);
21
27
  }
@@ -29,34 +35,49 @@ function registerConnectorRoutes(authenticated, deps) {
29
35
  providers: listConnectorProviders().map((provider) => ({
30
36
  id: provider.id,
31
37
  displayName: provider.displayName
32
- })),
33
- registries: listConnectorRegistries()
38
+ }))
34
39
  }
35
40
  });
36
41
  });
37
- authenticated.get("/api/connectors/installed", (c) => {
42
+ authenticated.get("/api/connectors/installed", async (c) => {
38
43
  const config = service.currentConfig;
39
- return c.json({
44
+ const instances = listConnectorInstances(config);
45
+ const composioInstances = instances.filter((instance) => instance.materialized.type === "composio" && instance.materialized.role === "toolkit");
46
+ if (composioInstances.length === 0) return c.json({
40
47
  ok: true,
41
- payload: { instances: listConnectorInstances(config) }
42
- });
43
- });
44
- authenticated.get("/api/connectors/registry/search", async (c) => {
45
- const query = c.req.query("q") ?? c.req.query("query") ?? "";
46
- const sourceParam = c.req.query("source") ?? "all";
47
- const results = await searchConnectorRegistries({
48
- query,
49
- source: sourceParam !== "all" && isConnectorRegistrySource(sourceParam) ? sourceParam : "all",
50
- page: Number(c.req.query("page") ?? "1"),
51
- pageSize: Number(c.req.query("pageSize") ?? "24"),
52
- browse: c.req.query("browse") === "1" || c.req.query("browse") === "true"
48
+ payload: { instances }
53
49
  });
50
+ const checkedAt = (/* @__PURE__ */ new Date()).toISOString();
51
+ let connectionError;
52
+ try {
53
+ await listComposioConnections();
54
+ } catch (error) {
55
+ connectionError = errorMessage(error);
56
+ }
57
+ const probes = await Promise.all([...new Map(composioInstances.map((instance) => [instance.connectorId, instance])).values()].map(async (instance) => {
58
+ try {
59
+ const tools = await listComposioTools(instance.materialized.type === "composio" ? instance.materialized.toolkit : "", config);
60
+ return {
61
+ connectorId: instance.connectorId,
62
+ checkedAt,
63
+ toolCount: tools.length,
64
+ ...connectionError ? {
65
+ error: connectionError,
66
+ connectionError: true
67
+ } : {}
68
+ };
69
+ } catch (error) {
70
+ return {
71
+ connectorId: instance.connectorId,
72
+ checkedAt,
73
+ error: errorMessage(error)
74
+ };
75
+ }
76
+ }));
77
+ const connections = listConnectorConnections({ principalId: "local-owner" });
54
78
  return c.json({
55
79
  ok: true,
56
- payload: {
57
- results,
58
- connectors: results.flatMap((result) => result.connectors)
59
- }
80
+ payload: { instances: projectComposioRuntimeStatus(instances, connections, probes) }
60
81
  });
61
82
  });
62
83
  authenticated.post("/api/connectors/setup/request-secret", strictRateLimitMiddleware, async (c) => {
@@ -147,9 +168,17 @@ function registerConnectorRoutes(authenticated, deps) {
147
168
  authenticated.get("/api/connectors/composio/catalog", async (c) => {
148
169
  try {
149
170
  const refresh = c.req.query("refresh") === "1" || c.req.query("refresh") === "true";
171
+ const verificationParam = c.req.query("verification");
172
+ const verification = verificationParam === "verified" || verificationParam === "experimental" ? verificationParam : "all";
150
173
  return c.json({
151
174
  ok: true,
152
- payload: await listComposioConnectorCatalog({ refresh })
175
+ payload: await listComposioConnectorCatalog({
176
+ refresh,
177
+ verification,
178
+ query: c.req.query("q") ?? "",
179
+ page: Number(c.req.query("page") ?? "1"),
180
+ pageSize: Number(c.req.query("pageSize") ?? "24")
181
+ })
153
182
  });
154
183
  } catch (error) {
155
184
  return c.json({
@@ -246,6 +275,7 @@ function registerConnectorRoutes(authenticated, deps) {
246
275
  const body = await c.req.json().catch(() => ({}));
247
276
  try {
248
277
  const event = await appendComposioTriggerEvent(service.currentConfig, body);
278
+ service.requestConnectorMemorySync(event.toolkit);
249
279
  return c.json({
250
280
  ok: true,
251
281
  payload: { event }
@@ -272,6 +302,54 @@ function registerConnectorRoutes(authenticated, deps) {
272
302
  }, 400);
273
303
  }
274
304
  });
305
+ authenticated.get("/api/connectors/people", (c) => {
306
+ const query = c.req.query("q") ?? "";
307
+ const limit = Number(c.req.query("limit") ?? "100");
308
+ return c.json({
309
+ ok: true,
310
+ payload: buildConnectedPeopleGraph({
311
+ query,
312
+ limit
313
+ })
314
+ });
315
+ });
316
+ authenticated.get("/api/connectors/:id/memory-sync-profile", (c) => {
317
+ const profile = getComposioMemorySyncProfile(service.currentConfig, c.req.param("id"));
318
+ return c.json({
319
+ ok: true,
320
+ payload: { profile: profile ?? null }
321
+ });
322
+ });
323
+ authenticated.patch("/api/connectors/:id/memory-sync-profile", strictRateLimitMiddleware, async (c) => {
324
+ const body = await c.req.json().catch(() => ({}));
325
+ const row = body && typeof body === "object" && !Array.isArray(body) ? body : {};
326
+ try {
327
+ const config = service.currentConfig;
328
+ const profile = updateComposioMemorySyncProfile(config, c.req.param("id"), {
329
+ enabled: row.enabled === true,
330
+ actionId: typeof row.actionId === "string" ? row.actionId : "",
331
+ arguments: row.arguments && typeof row.arguments === "object" && !Array.isArray(row.arguments) ? row.arguments : {},
332
+ agentId: typeof row.agentId === "string" ? row.agentId : "",
333
+ connectionId: typeof row.connectionId === "string" ? row.connectionId : void 0,
334
+ intervalMinutes: Number(row.intervalMinutes),
335
+ triggerSync: row.triggerSync !== false
336
+ });
337
+ const saved = await service.saveConfig(config);
338
+ if (!saved.saved) return c.json({
339
+ ok: false,
340
+ error: saved.error
341
+ }, 500);
342
+ return c.json({
343
+ ok: true,
344
+ payload: { profile }
345
+ });
346
+ } catch (error) {
347
+ return c.json({
348
+ ok: false,
349
+ error: errorMessage(error)
350
+ }, 400);
351
+ }
352
+ });
275
353
  authenticated.get("/api/connectors/:id", (c) => {
276
354
  const connectorId = c.req.param("id");
277
355
  const connector = getConnectorDefinition(connectorId);
@@ -321,15 +399,28 @@ function registerConnectorRoutes(authenticated, deps) {
321
399
  const body = await c.req.json().catch(() => ({}));
322
400
  const row = body && typeof body === "object" && !Array.isArray(body) ? body : {};
323
401
  const actionId = typeof row.actionId === "string" ? row.actionId.trim() : "";
324
- const agentId = typeof row.agentId === "string" ? row.agentId.trim() : "";
325
- if (!actionId || !agentId) return c.json({
326
- ok: false,
327
- error: "actionId and agentId are required."
328
- }, 400);
402
+ const config = service.currentConfig;
403
+ const agentId = typeof row.agentId === "string" && row.agentId.trim() ? row.agentId.trim() : resolveDefaultAgentId(config);
329
404
  try {
405
+ const connectorId = c.req.param("id");
406
+ if (getConnectorDefinition(connectorId)?.runtime.type === "memorySource") {
407
+ const result = await syncLocalFolderToMemory({
408
+ config,
409
+ connectorId,
410
+ agentId
411
+ });
412
+ return c.json({
413
+ ok: true,
414
+ payload: result
415
+ });
416
+ }
417
+ if (!actionId) return c.json({
418
+ ok: false,
419
+ error: "actionId is required for Composio memory sync."
420
+ }, 400);
330
421
  const result = await syncComposioResultToMemory({
331
- config: service.currentConfig,
332
- connectorId: c.req.param("id"),
422
+ config,
423
+ connectorId,
333
424
  actionId,
334
425
  agentId,
335
426
  connectionId: typeof row.connectionId === "string" ? row.connectionId : void 0,
@@ -463,6 +554,29 @@ function registerConnectorRoutes(authenticated, deps) {
463
554
  }, 400);
464
555
  }
465
556
  });
557
+ authenticated.get("/api/connectors/composio/setup-status", async (c) => {
558
+ const configured = Boolean(await resolveComposioApiKey());
559
+ return c.json({
560
+ ok: true,
561
+ payload: { configured }
562
+ });
563
+ });
564
+ authenticated.post("/api/connectors/composio/setup", strictRateLimitMiddleware, async (c) => {
565
+ const body = await c.req.json().catch(() => ({}));
566
+ const apiKey = body && typeof body === "object" && !Array.isArray(body) ? String(body.apiKey ?? "") : "";
567
+ try {
568
+ await configureComposioApiKey(apiKey);
569
+ return c.json({
570
+ ok: true,
571
+ payload: { configured: true }
572
+ });
573
+ } catch (error) {
574
+ return c.json({
575
+ ok: false,
576
+ error: errorMessage(error)
577
+ }, 400);
578
+ }
579
+ });
466
580
  authenticated.post("/api/connectors/:id/install", strictRateLimitMiddleware, async (c) => {
467
581
  const connectorId = c.req.param("id");
468
582
  const body = await c.req.json().catch(() => ({}));
@@ -70,6 +70,7 @@ function registerPublicGatewayRoutes(app, service) {
70
70
  const normalized = normalizeComposioTriggerPayload(archivedPayload, webhookId);
71
71
  applyComposioConnectionLifecycleEvent(archivedPayload);
72
72
  const event = await appendComposioTriggerEvent(service.currentConfig, archivedPayload);
73
+ service.requestConnectorMemorySync(normalized.toolkit);
73
74
  const runs = await service.automationServiceInstance.triggerEvent({
74
75
  type: `connector.${normalized.trigger ?? normalized.type}`,
75
76
  source: normalized.toolkit ? `composio:${normalized.toolkit}` : "composio",
@@ -57,6 +57,7 @@ export declare class GatewayService {
57
57
  private goalNotifications;
58
58
  private mobileNotifications;
59
59
  private connectorSupervisor;
60
+ private connectorMemorySyncCoordinator;
60
61
  private connectedKnowledgeCoordinator;
61
62
  private stopAutomationProductEventBridge;
62
63
  private stopSessionTranscriptAutomationEvents;
@@ -199,6 +200,7 @@ export declare class GatewayService {
199
200
  requestHeartbeatNow(opts?: {
200
201
  reason?: string;
201
202
  }): void;
203
+ requestConnectorMemorySync(toolkit?: string): void;
202
204
  /**
203
205
  * Register graceful shutdown used after spawning a replacement gateway process (foreground CLI server).
204
206
  */
@@ -44,6 +44,7 @@ import { getWorkspacePath } from "../config/workspace-path-helpers.js";
44
44
  import "../config/index.js";
45
45
  import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
46
46
  import "../knowledge/index.js";
47
+ import { startConnectorMemorySyncCoordinator } from "../connectors/memory-sync-coordinator.js";
47
48
  import { startConnectorSupervisor } from "../connectors/supervisor.js";
48
49
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
49
50
  import { reconcileDreamingAutomations } from "./dreaming-automation-reconciler.js";
@@ -136,6 +137,7 @@ var GatewayService = class {
136
137
  goalNotifications = null;
137
138
  mobileNotifications = null;
138
139
  connectorSupervisor = null;
140
+ connectorMemorySyncCoordinator = null;
139
141
  connectedKnowledgeCoordinator = null;
140
142
  stopAutomationProductEventBridge = null;
141
143
  stopSessionTranscriptAutomationEvents = null;
@@ -683,6 +685,10 @@ var GatewayService = class {
683
685
  getConfig: () => this.config,
684
686
  saveConfig: (cfg) => this.saveConfig(cfg)
685
687
  });
688
+ this.connectorMemorySyncCoordinator = startConnectorMemorySyncCoordinator({
689
+ getConfig: () => this.config,
690
+ resolveAgentId: () => resolveDefaultAgentId(this.config)
691
+ });
686
692
  this.connectedKnowledgeCoordinator = startConnectedKnowledgeCoordinator({ resolvePipelineOptions: () => ({
687
693
  agentId: resolveDefaultAgentId(this.config),
688
694
  workspaceId: this.currentWorkspacePath
@@ -806,6 +812,8 @@ var GatewayService = class {
806
812
  this.heartbeatService?.stop();
807
813
  this.connectorSupervisor?.stop();
808
814
  this.connectorSupervisor = null;
815
+ this.connectorMemorySyncCoordinator?.stop();
816
+ this.connectorMemorySyncCoordinator = null;
809
817
  this.connectedKnowledgeCoordinator?.stop();
810
818
  this.connectedKnowledgeCoordinator = null;
811
819
  if (this.browserExtensionRelease) {
@@ -1045,6 +1053,12 @@ var GatewayService = class {
1045
1053
  requestHeartbeatNow(opts) {
1046
1054
  this.heartbeatService?.requestNow({ reason: opts?.reason ?? "manual" });
1047
1055
  }
1056
+ requestConnectorMemorySync(toolkit) {
1057
+ this.connectorMemorySyncCoordinator?.runNow({
1058
+ toolkit,
1059
+ force: true
1060
+ });
1061
+ }
1048
1062
  /**
1049
1063
  * Register graceful shutdown used after spawning a replacement gateway process (foreground CLI server).
1050
1064
  */
@@ -2,3 +2,5 @@ export * from './types.js';
2
2
  export * from './ingestion-service.js';
3
3
  export * from './connected-knowledge-pipeline.js';
4
4
  export * from './coordinator.js';
5
+ export * from './local-folder-adapter.js';
6
+ export * from './people-graph.js';
@@ -1,4 +1,6 @@
1
1
  import { KnowledgeIngestionService, SqliteKnowledgeSourceStateStore } from "./ingestion-service.js";
2
2
  import { ConnectedKnowledgePipeline } from "./connected-knowledge-pipeline.js";
3
3
  import { startConnectedKnowledgeCoordinator } from "./coordinator.js";
4
- export { ConnectedKnowledgePipeline, KnowledgeIngestionService, SqliteKnowledgeSourceStateStore, startConnectedKnowledgeCoordinator };
4
+ import { LocalFolderKnowledgeSourceAdapter } from "./local-folder-adapter.js";
5
+ import { buildConnectedPeopleGraph } from "./people-graph.js";
6
+ export { ConnectedKnowledgePipeline, KnowledgeIngestionService, LocalFolderKnowledgeSourceAdapter, SqliteKnowledgeSourceStateStore, buildConnectedPeopleGraph, startConnectedKnowledgeCoordinator };
@@ -1,9 +1,44 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
- import { finishKnowledgeSyncRun, getKnowledgeSourceCursor, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
3
+ import { finishKnowledgeSyncRun, getKnowledgeSourceCursor, listKnowledgeSourceItems, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
4
4
  //#region src/knowledge/ingestion-service.ts
5
5
  init_logger();
6
6
  const log = createLogger("KnowledgeIngestion");
7
+ function deletionInputs(instanceId, snapshotExternalIds) {
8
+ if (!snapshotExternalIds) return [];
9
+ const seen = new Set(snapshotExternalIds);
10
+ const deletedAt = (/* @__PURE__ */ new Date()).toISOString();
11
+ const missing = [];
12
+ for (let offset = 0;; offset += 500) {
13
+ const page = listKnowledgeSourceItems({
14
+ sourceInstanceId: instanceId,
15
+ limit: 500,
16
+ offset
17
+ });
18
+ for (const item of page) {
19
+ if (seen.has(item.externalId)) continue;
20
+ missing.push({
21
+ id: item.id,
22
+ sourceInstanceId: item.sourceInstanceId,
23
+ externalId: item.externalId,
24
+ itemType: item.itemType,
25
+ authorRole: item.authorRole,
26
+ occurredAt: item.occurredAt,
27
+ sourceUpdatedAt: item.sourceUpdatedAt,
28
+ contentHash: item.contentHash,
29
+ normalizedText: item.normalizedText,
30
+ payloadRef: item.payloadRef,
31
+ metadata: item.metadata,
32
+ sensitivity: item.sensitivity,
33
+ retentionClass: item.retentionClass,
34
+ synthesisPipeline: item.synthesisPipeline,
35
+ deletedAt
36
+ });
37
+ }
38
+ if (page.length < 500) break;
39
+ }
40
+ return missing;
41
+ }
7
42
  var SqliteKnowledgeSourceStateStore = class {
8
43
  getCursor(instanceId) {
9
44
  return getKnowledgeSourceCursor(instanceId);
@@ -62,7 +97,8 @@ var KnowledgeIngestionService = class {
62
97
  windowStart: params.windowStart,
63
98
  signal
64
99
  });
65
- const stored = upsertKnowledgeSourceItems(pulled.items);
100
+ const tombstones = deletionInputs(params.instanceId, pulled.snapshotExternalIds);
101
+ const stored = upsertKnowledgeSourceItems([...pulled.items, ...tombstones]);
66
102
  this.state.setCursor(params.instanceId, pulled.nextCursor);
67
103
  const completed = finishKnowledgeSyncRun({
68
104
  runId: run.id,
@@ -78,7 +114,8 @@ var KnowledgeIngestionService = class {
78
114
  sourceInstanceId: params.instanceId,
79
115
  itemsSeen: pulled.items.length,
80
116
  itemsCreated: stored.created,
81
- itemsUpdated: stored.updated
117
+ itemsUpdated: stored.updated,
118
+ itemsDeleted: tombstones.length
82
119
  }, "Knowledge source sync completed");
83
120
  return completed;
84
121
  } catch (err) {
@@ -0,0 +1,7 @@
1
+ import type { KnowledgePullInput, KnowledgePullResult, KnowledgeSourceAdapter } from './types.js';
2
+ export declare class LocalFolderKnowledgeSourceAdapter implements KnowledgeSourceAdapter {
3
+ private readonly rootPath;
4
+ readonly kind = "local-folder";
5
+ constructor(rootPath: string);
6
+ pull(input: KnowledgePullInput): Promise<KnowledgePullResult>;
7
+ }
@@ -0,0 +1,86 @@
1
+ import { extname, relative, resolve, sep } from "node:path";
2
+ import { createHash } from "node:crypto";
3
+ import { readFile, readdir, realpath, stat } from "node:fs/promises";
4
+ //#region src/knowledge/local-folder-adapter.ts
5
+ const SUPPORTED_EXTENSIONS = new Set([
6
+ ".md",
7
+ ".mdx",
8
+ ".txt",
9
+ ".json",
10
+ ".yaml",
11
+ ".yml",
12
+ ".csv",
13
+ ".tsv"
14
+ ]);
15
+ const IGNORED_DIRECTORIES = new Set([
16
+ ".git",
17
+ ".svn",
18
+ "node_modules"
19
+ ]);
20
+ const MAX_FILES = 2e3;
21
+ const MAX_FILE_BYTES = 2 * 1024 * 1024;
22
+ var LocalFolderKnowledgeSourceAdapter = class {
23
+ kind = "local-folder";
24
+ constructor(rootPath) {
25
+ this.rootPath = rootPath;
26
+ }
27
+ async pull(input) {
28
+ const scanStartedAt = (/* @__PURE__ */ new Date()).toISOString();
29
+ const root = await realpath(resolve(this.rootPath));
30
+ if (!(await stat(root)).isDirectory()) throw new Error(`Local knowledge source is not a directory: ${root}`);
31
+ const cursorMs = input.cursor ? Date.parse(input.cursor) : NaN;
32
+ const windowMs = input.windowStart ? Date.parse(input.windowStart) : NaN;
33
+ const changedAfter = Math.max(Number.isFinite(cursorMs) ? cursorMs : 0, Number.isFinite(windowMs) ? windowMs : 0);
34
+ const paths = [];
35
+ const warnings = [];
36
+ const walk = async (directory) => {
37
+ if (input.signal.aborted) throw input.signal.reason ?? /* @__PURE__ */ new Error("Local folder sync aborted.");
38
+ for (const entry of await readdir(directory, { withFileTypes: true })) {
39
+ if (paths.length >= MAX_FILES) return;
40
+ if (entry.isSymbolicLink()) continue;
41
+ const path = resolve(directory, entry.name);
42
+ if (entry.isDirectory()) {
43
+ if (!IGNORED_DIRECTORIES.has(entry.name)) await walk(path);
44
+ continue;
45
+ }
46
+ if (entry.isFile() && SUPPORTED_EXTENSIONS.has(extname(entry.name).toLowerCase())) paths.push(path);
47
+ }
48
+ };
49
+ await walk(root);
50
+ if (paths.length >= MAX_FILES) warnings.push(`Local folder sync was limited to ${MAX_FILES} files.`);
51
+ const items = [];
52
+ for (const path of paths) {
53
+ if (input.signal.aborted) throw input.signal.reason ?? /* @__PURE__ */ new Error("Local folder sync aborted.");
54
+ const fileStat = await stat(path);
55
+ if (fileStat.size > MAX_FILE_BYTES || fileStat.mtimeMs <= changedAfter) continue;
56
+ const canonicalPath = await realpath(path);
57
+ if (canonicalPath !== root && !canonicalPath.startsWith(`${root}${sep}`)) continue;
58
+ const normalizedText = await readFile(canonicalPath, "utf8");
59
+ const externalId = relative(root, canonicalPath).split(sep).join("/");
60
+ items.push({
61
+ sourceInstanceId: input.instanceId,
62
+ externalId,
63
+ itemType: "local_file",
64
+ authorRole: "user",
65
+ sourceUpdatedAt: fileStat.mtime.toISOString(),
66
+ contentHash: createHash("sha256").update(normalizedText).digest("hex"),
67
+ normalizedText,
68
+ metadata: {
69
+ path: externalId,
70
+ rootPath: root
71
+ },
72
+ sensitivity: "personal",
73
+ retentionClass: "durable",
74
+ synthesisPipeline: "connected_knowledge"
75
+ });
76
+ }
77
+ return {
78
+ items,
79
+ nextCursor: scanStartedAt,
80
+ warnings,
81
+ snapshotExternalIds: paths.length < MAX_FILES ? paths.map((path) => relative(root, path).split(sep).join("/")) : void 0
82
+ };
83
+ }
84
+ };
85
+ //#endregion
86
+ export { LocalFolderKnowledgeSourceAdapter };
@@ -0,0 +1,28 @@
1
+ export type ConnectedPersonNode = {
2
+ id: string;
3
+ label: string;
4
+ names: string[];
5
+ emails: string[];
6
+ usernames: string[];
7
+ roles: string[];
8
+ mentionCount: number;
9
+ lastObservedAt: string;
10
+ };
11
+ export type ConnectedPersonSourceEdge = {
12
+ personId: string;
13
+ sourceInstanceId: string;
14
+ connectorId?: string;
15
+ toolkit?: string;
16
+ mentionCount: number;
17
+ lastObservedAt: string;
18
+ };
19
+ export type ConnectedPeopleGraph = {
20
+ people: ConnectedPersonNode[];
21
+ sourceEdges: ConnectedPersonSourceEdge[];
22
+ scannedItems: number;
23
+ truncated: boolean;
24
+ };
25
+ export declare function buildConnectedPeopleGraph(options?: {
26
+ query?: string;
27
+ limit?: number;
28
+ }): ConnectedPeopleGraph;