@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,126 @@
1
+ import { listKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
2
+ import { createHash } from "node:crypto";
3
+ //#region src/knowledge/people-graph.ts
4
+ function nonEmpty(value) {
5
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
6
+ }
7
+ function signalsFor(item) {
8
+ const structured = item.metadata.personEntities;
9
+ if (Array.isArray(structured)) {
10
+ const signals = structured.flatMap((value) => {
11
+ if (!value || typeof value !== "object" || Array.isArray(value)) return [];
12
+ const record = value;
13
+ const signal = {
14
+ role: nonEmpty(record.role),
15
+ name: nonEmpty(record.name),
16
+ email: nonEmpty(record.email),
17
+ username: nonEmpty(record.username)
18
+ };
19
+ return signal.name || signal.email || signal.username ? [signal] : [];
20
+ });
21
+ if (signals.length > 0) return signals;
22
+ }
23
+ return Array.isArray(item.metadata.people) ? item.metadata.people.flatMap((value) => {
24
+ const text = nonEmpty(value);
25
+ if (!text) return [];
26
+ return text.includes("@") ? [{ email: text }] : [{ name: text }];
27
+ }) : [];
28
+ }
29
+ function identityFor(signal) {
30
+ if (signal.email) return `email:${signal.email.toLowerCase()}`;
31
+ if (signal.username) return `username:${signal.username.toLowerCase().replace(/^@/, "")}`;
32
+ if (signal.name) return `name:${signal.name.toLocaleLowerCase()}`;
33
+ }
34
+ function personId(identity) {
35
+ return `person_${createHash("sha256").update(identity).digest("hex").slice(0, 24)}`;
36
+ }
37
+ function latest(left, right) {
38
+ return Date.parse(left) >= Date.parse(right) ? left : right;
39
+ }
40
+ function buildConnectedPeopleGraph(options = {}) {
41
+ const maxItems = 5e3;
42
+ const items = [];
43
+ for (let offset = 0; offset < maxItems; offset += 500) {
44
+ const page = listKnowledgeSourceItems({
45
+ limit: 500,
46
+ offset
47
+ });
48
+ items.push(...page);
49
+ if (page.length < 500) break;
50
+ }
51
+ const nodeByIdentity = /* @__PURE__ */ new Map();
52
+ const edgeByKey = /* @__PURE__ */ new Map();
53
+ for (const item of items) {
54
+ const observedAt = item.occurredAt ?? item.sourceUpdatedAt ?? item.updatedAt;
55
+ const observedIdentities = /* @__PURE__ */ new Set();
56
+ for (const signal of signalsFor(item)) {
57
+ const identity = identityFor(signal);
58
+ if (!identity) continue;
59
+ let aggregate = nodeByIdentity.get(identity);
60
+ if (!aggregate) {
61
+ aggregate = {
62
+ node: {
63
+ id: personId(identity),
64
+ label: signal.name ?? signal.email ?? signal.username ?? identity,
65
+ names: [],
66
+ emails: [],
67
+ usernames: [],
68
+ roles: [],
69
+ mentionCount: 0,
70
+ lastObservedAt: observedAt
71
+ },
72
+ names: /* @__PURE__ */ new Set(),
73
+ emails: /* @__PURE__ */ new Set(),
74
+ usernames: /* @__PURE__ */ new Set(),
75
+ roles: /* @__PURE__ */ new Set()
76
+ };
77
+ nodeByIdentity.set(identity, aggregate);
78
+ }
79
+ if (signal.name) aggregate.names.add(signal.name);
80
+ if (signal.email) aggregate.emails.add(signal.email.toLowerCase());
81
+ if (signal.username) aggregate.usernames.add(signal.username.replace(/^@/, ""));
82
+ if (signal.role) aggregate.roles.add(signal.role);
83
+ if (observedIdentities.has(identity)) continue;
84
+ observedIdentities.add(identity);
85
+ aggregate.node.mentionCount += 1;
86
+ aggregate.node.lastObservedAt = latest(aggregate.node.lastObservedAt, observedAt);
87
+ const edgeKey = `${aggregate.node.id}\u0000${item.sourceInstanceId}`;
88
+ const existingEdge = edgeByKey.get(edgeKey);
89
+ if (existingEdge) {
90
+ existingEdge.mentionCount += 1;
91
+ existingEdge.lastObservedAt = latest(existingEdge.lastObservedAt, observedAt);
92
+ } else edgeByKey.set(edgeKey, {
93
+ personId: aggregate.node.id,
94
+ sourceInstanceId: item.sourceInstanceId,
95
+ connectorId: nonEmpty(item.metadata.connectorId),
96
+ toolkit: nonEmpty(item.metadata.toolkit),
97
+ mentionCount: 1,
98
+ lastObservedAt: observedAt
99
+ });
100
+ }
101
+ }
102
+ const query = options.query?.trim().toLocaleLowerCase() ?? "";
103
+ const limit = Math.max(1, Math.min(options.limit ?? 100, 500));
104
+ const matchingPeople = [...nodeByIdentity.values()].map((aggregate) => ({
105
+ ...aggregate.node,
106
+ names: [...aggregate.names].toSorted(),
107
+ emails: [...aggregate.emails].toSorted(),
108
+ usernames: [...aggregate.usernames].toSorted(),
109
+ roles: [...aggregate.roles].toSorted()
110
+ })).filter((person) => !query || [
111
+ person.label,
112
+ ...person.names,
113
+ ...person.emails,
114
+ ...person.usernames
115
+ ].some((value) => value.toLocaleLowerCase().includes(query))).toSorted((left, right) => right.mentionCount - left.mentionCount || right.lastObservedAt.localeCompare(left.lastObservedAt));
116
+ const people = matchingPeople.slice(0, limit);
117
+ const included = new Set(people.map((person) => person.id));
118
+ return {
119
+ people,
120
+ sourceEdges: [...edgeByKey.values()].filter((edge) => included.has(edge.personId)),
121
+ scannedItems: items.length,
122
+ truncated: items.length >= maxItems || matchingPeople.length > limit
123
+ };
124
+ }
125
+ //#endregion
126
+ export { buildConnectedPeopleGraph };
@@ -81,6 +81,8 @@ export interface KnowledgePullResult {
81
81
  items: KnowledgeSourceItemInput[];
82
82
  nextCursor?: string;
83
83
  warnings: string[];
84
+ /** All active external ids observed during a complete source snapshot. Omit for partial/incremental-only pulls. */
85
+ snapshotExternalIds?: string[];
84
86
  }
85
87
  export interface KnowledgeSourceAdapter {
86
88
  readonly kind: string;
@@ -17,6 +17,7 @@ export declare function listConnectorApprovals(options?: {
17
17
  export declare function decideConnectorApproval(id: string, decision: 'approved' | 'denied', now?: Date): ConnectorApprovalRecord | undefined;
18
18
  export declare function consumeConnectorApproval(id: string, argumentsHash: string, now?: Date): ConnectorApprovalRecord | undefined;
19
19
  export declare function upsertConnectorCatalogEntry(input: CachedConnectorCatalogEntry): CachedConnectorCatalogEntry;
20
+ export declare function replaceConnectorCatalogEntries(provider: string, entries: CachedConnectorCatalogEntry[]): CachedConnectorCatalogEntry[];
20
21
  export declare function getCachedConnectorCatalogEntry(connectorId: string): CachedConnectorCatalogEntry | undefined;
21
22
  export declare function listCachedConnectorCatalogEntries(provider?: string): CachedConnectorCatalogEntry[];
22
23
  export declare function upsertConnectorInstallation(input: Omit<ConnectorInstallationPolicy, 'createdAt' | 'updatedAt'> & Partial<Pick<ConnectorInstallationPolicy, 'createdAt' | 'updatedAt'>>): ConnectorInstallationPolicy;
@@ -194,6 +194,17 @@ function upsertConnectorCatalogEntry(input) {
194
194
  });
195
195
  return input;
196
196
  }
197
+ function replaceConnectorCatalogEntries(provider, entries) {
198
+ runSqliteWriteTransaction((db) => {
199
+ db.prepare("DELETE FROM connector_catalog_entries WHERE provider = ?").run(provider);
200
+ const insert = db.prepare(`
201
+ INSERT INTO connector_catalog_entries (connector_id, provider, definition_json, fetched_at, expires_at)
202
+ VALUES (?, ?, ?, ?, ?)
203
+ `);
204
+ for (const entry of entries) insert.run(entry.connectorId, provider, JSON.stringify(entry.definition), entry.fetchedAt, entry.expiresAt ?? null);
205
+ });
206
+ return entries;
207
+ }
197
208
  function getCachedConnectorCatalogEntry(connectorId) {
198
209
  const row = getSqliteDatabase().prepare("SELECT * FROM connector_catalog_entries WHERE connector_id = ?").get(connectorId);
199
210
  return row ? catalogFromRow(row) : void 0;
@@ -380,4 +391,4 @@ function releaseConnectorWebhookDelivery(id, error) {
380
391
  });
381
392
  }
382
393
  //#endregion
383
- export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation };
394
+ export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation };
@@ -16,7 +16,7 @@ export { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, findLat
16
16
  export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
17
17
  export { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig, } from './config-repository.js';
18
18
  export { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent, } from './activity-repository.js';
19
- export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getConnectorConnection, getConnectorApproval, getConnectorInstallation, getCachedConnectorCatalogEntry, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, type CachedConnectorCatalogEntry, } from './connector-repository.js';
19
+ export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getConnectorConnection, getConnectorApproval, getConnectorInstallation, getCachedConnectorCatalogEntry, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, type CachedConnectorCatalogEntry, } from './connector-repository.js';
20
20
  export { getUserTrustPolicy, setUserTrustPolicy, } from './user-trust-repository.js';
21
21
  export { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent, type MemoryReferenceConsent, type MemoryReferenceGrantScope, } from './memory-reference-consent-repository.js';
22
22
  export { getUserProfilePromptState, setUserProfilePromptState, } from './user-profile-setup-repository.js';
@@ -17,8 +17,8 @@ import { USER_UNDERSTANDING_REMEDIATION_POLICY, appendMemorySignal, appendMemory
17
17
  import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
18
18
  import { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig } from "./config-repository.js";
19
19
  import { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent } from "./activity-repository.js";
20
- import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation } from "./connector-repository.js";
20
+ import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation } from "./connector-repository.js";
21
21
  import { getUserTrustPolicy, setUserTrustPolicy } from "./user-trust-repository.js";
22
22
  import { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent } from "./memory-reference-consent-repository.js";
23
23
  import { getUserProfilePromptState, setUserProfilePromptState } from "./user-profile-setup-repository.js";
24
- export { DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, USER_UNDERSTANDING_REMEDIATION_POLICY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, captureCompactionCheckpoint, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, classifyStoredRow, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findLatestMemoryInjectTrace, findSessionKeyBySessionId, finishKnowledgeSyncRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getCompactionCheckpointDetail, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getCurrentSessionId, getGlobalSessionStats, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getNoteAgentContextRecord, getNoteRecord, getSessionConfig, getSessionMetadata, getSessionPersistedLevels, getSqliteDatabase, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, inspectSchemaMigrationStatus, isXopcDatabaseOpen, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionCheckpoints, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, loadCheckpointRows, loadLlmMessagesForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, readSchemaVersion, readSchemaVersionForTest, recordActivityEvent, releaseConnectorWebhookDelivery, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreCompactionCheckpoint, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryIndex, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, setSessionConfig, setUserProfilePromptState, setUserTrustPolicy, startKnowledgeSyncRun, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, syncMemoryIndex, transcriptEntryRowToStoredRow, updateSessionConfig, updateSessionStats, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
24
+ export { DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, USER_UNDERSTANDING_REMEDIATION_POLICY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, captureCompactionCheckpoint, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, classifyStoredRow, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findLatestMemoryInjectTrace, findSessionKeyBySessionId, finishKnowledgeSyncRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getCompactionCheckpointDetail, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getCurrentSessionId, getGlobalSessionStats, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getNoteAgentContextRecord, getNoteRecord, getSessionConfig, getSessionMetadata, getSessionPersistedLevels, getSqliteDatabase, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, inspectSchemaMigrationStatus, isXopcDatabaseOpen, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionCheckpoints, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, loadCheckpointRows, loadLlmMessagesForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, readSchemaVersion, readSchemaVersionForTest, recordActivityEvent, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreCompactionCheckpoint, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryIndex, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, setSessionConfig, setUserProfilePromptState, setUserTrustPolicy, startKnowledgeSyncRun, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, syncMemoryIndex, transcriptEntryRowToStoredRow, updateSessionConfig, updateSessionStats, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
@@ -60,6 +60,8 @@ export declare function projectPersonalContextSources(definitions: ConnectorDefi
60
60
  branding?: import("../connectors/types.js").ConnectorBranding;
61
61
  id: string;
62
62
  accountLabel: any;
63
+ accountOrdinal: any;
64
+ accountCount: any;
63
65
  displayName: string;
64
66
  description: string;
65
67
  }[];
@@ -79,11 +79,15 @@ function projectPersonalContextSources(definitions, instances, records = [], kno
79
79
  }
80
80
  return definitions.filter(isPersonalContextConnector).flatMap((definition) => {
81
81
  const connected = instanceByConnector.get(definition.id) ?? [];
82
- const accounts = (knowledge.connections ?? []).filter((connection) => connection.provider === "composio" && connection.connectorId === definition.id && connection.status !== "revoked");
83
- return (accounts.length > 0 ? accounts.map((connection) => ({
82
+ const accounts = (knowledge.connections ?? []).filter((connection) => connection.provider === "composio" && connection.connectorId === definition.id && connection.status !== "revoked").sort((left, right) => {
83
+ return (left.connectedAt ?? left.createdAt).localeCompare(right.connectedAt ?? right.createdAt) || left.id.localeCompare(right.id);
84
+ });
85
+ return (accounts.length > 0 ? accounts.map((connection, index) => ({
84
86
  instanceId: connection.id,
85
87
  sourceInstanceId: `composio:${definition.id}:${connection.id}`,
86
88
  accountLabel: connection.alias ?? (typeof connection.identity.email === "string" ? connection.identity.email : void 0) ?? (typeof connection.identity.username === "string" ? connection.identity.username : void 0),
89
+ accountOrdinal: index + 1,
90
+ accountCount: accounts.length,
87
91
  enabled: connection.status === "active",
88
92
  status: connection.status,
89
93
  lastConnectedAt: connection.connectedAt,
@@ -92,6 +96,8 @@ function projectPersonalContextSources(definitions, instances, records = [], kno
92
96
  instanceId: instance.instanceId,
93
97
  sourceInstanceId: instance.instanceId,
94
98
  accountLabel: void 0,
99
+ accountOrdinal: void 0,
100
+ accountCount: void 0,
95
101
  enabled: instance.enabled,
96
102
  status: instance.status,
97
103
  lastConnectedAt: instance.lastConnectedAt,
@@ -100,6 +106,8 @@ function projectPersonalContextSources(definitions, instances, records = [], kno
100
106
  instanceId: void 0,
101
107
  sourceInstanceId: void 0,
102
108
  accountLabel: void 0,
109
+ accountOrdinal: void 0,
110
+ accountCount: void 0,
103
111
  enabled: false,
104
112
  status: "not_installed",
105
113
  lastConnectedAt: void 0,
@@ -114,6 +122,8 @@ function projectPersonalContextSources(definitions, instances, records = [], kno
114
122
  return {
115
123
  id: definition.id,
116
124
  accountLabel: row.accountLabel,
125
+ accountOrdinal: row.accountOrdinal,
126
+ accountCount: row.accountCount,
117
127
  displayName: definition.displayName,
118
128
  description: definition.description,
119
129
  ...definition.branding ? { branding: definition.branding } : {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.156",
3
+ "version": "0.0.158",
4
4
  "description": "Local-first AI system that remembers context, coordinates AI, and sustains long-term progress.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -106,7 +106,7 @@
106
106
  "zod": "^4.4.3"
107
107
  },
108
108
  "peerDependencies": {
109
- "@composio/core": "0.14.0",
109
+ "@composio/core": "0.14.1",
110
110
  "@composio/experimental": "0.2.0",
111
111
  "@huggingface/transformers": "3.8.1",
112
112
  "@larksuiteoapi/node-sdk": "^1.66.0",
@@ -134,7 +134,7 @@
134
134
  }
135
135
  },
136
136
  "devDependencies": {
137
- "@composio/core": "0.14.0",
137
+ "@composio/core": "0.14.1",
138
138
  "@composio/experimental": "0.2.0",
139
139
  "@huggingface/transformers": "3.8.1",
140
140
  "@larksuiteoapi/node-sdk": "^1.66.0",