@xopcai/xopc 0.0.137 → 0.0.138

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 (234) hide show
  1. package/README.md +4 -0
  2. package/README.zh-CN.md +4 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/demo-memory/src/index.js +4 -0
  5. package/dist/extensions/demo-memory/src/index.js.map +1 -1
  6. package/dist/extensions/telegram/xopc.extension.json +1 -1
  7. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BVGEvspi.js → agent-avatar-dicebear-CIsGDJzd.js} +1 -1
  8. package/dist/gateway/static/root/assets/agents-fX97A6iN.js +2 -0
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-BmdZifqk.js → app-management-settings-panel-ByM4Bzwm.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-CI-Cony7.js → appearance-settings-BF_poRd3.js} +1 -1
  11. package/dist/gateway/static/root/assets/{apps-page-8yKgtRah.js → apps-page-BssdA5Qc.js} +1 -1
  12. package/dist/gateway/static/root/assets/{archive-plugin-hMye7wu9.js → archive-plugin-DJaYoyGn.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-qKR5CPYj.js → attachment-load-xx6dBaZU.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automation-suggestion-card-BrtqTkO2.js → automation-suggestion-card-BMvGqYob.js} +1 -1
  15. package/dist/gateway/static/root/assets/{automations-page-CTbY1_xq.js → automations-page-Dip8ZFmx.js} +1 -1
  16. package/dist/gateway/static/root/assets/{binary-plugins-DURU6npf.js → binary-plugins-CuPLWibr.js} +1 -1
  17. package/dist/gateway/static/root/assets/{block-editor-BQIHfg8Q.js → block-editor-bzfvlJnh.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-settings-page-BTlEo9yH.js → browser-settings-page-lbx_8Dku.js} +4 -4
  19. package/dist/gateway/static/root/assets/{capability-presets-api-DowJXE85.js → capability-presets-api-X4Imbf8n.js} +1 -1
  20. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-CUBsiEWT.js → capability-presets-settings-panel-v9JgKjJu.js} +1 -1
  21. package/dist/gateway/static/root/assets/{channel-recipient-api-BqbZNCJJ.js → channel-recipient-api-DllrPmp-.js} +1 -1
  22. package/dist/gateway/static/root/assets/{channels-settings-BzPicGm_.js → channels-settings-CED7Oy5Y.js} +1 -1
  23. package/dist/gateway/static/root/assets/channels-status-swr-EUwWYx8l.js +1 -0
  24. package/dist/gateway/static/root/assets/{connectors-page-BryXzajG.js → connectors-page-BMfp0jWL.js} +1 -1
  25. package/dist/gateway/static/root/assets/{desktop-pet-DxLTNBD2.js → desktop-pet-oTig6qFO.js} +1 -1
  26. package/dist/gateway/static/root/assets/{desktop-pet-settings-D_EgKbEB.js → desktop-pet-settings-DXJiPL_H.js} +1 -1
  27. package/dist/gateway/static/root/assets/{directory-picker-path-field-DmzW9Mwg.js → directory-picker-path-field-CltkXSR2.js} +1 -1
  28. package/dist/gateway/static/root/assets/{dreaming-settings-D3DNPePf.js → dreaming-settings-CYrZQxoL.js} +1 -1
  29. package/dist/gateway/static/root/assets/{extension-debug-page-hUg0oHQR.js → extension-debug-page-C-4BOy1R.js} +1 -1
  30. package/dist/gateway/static/root/assets/{extension-page-Bl1aQuV_.js → extension-page-C8nMpXqh.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-settings-page-BghvkAL8.js → extension-settings-page-CXWYOwka.js} +1 -1
  32. package/dist/gateway/static/root/assets/{fetch-hvbCiP2J.js → fetch-BID89uCH.js} +1 -1
  33. package/dist/gateway/static/root/assets/{gateway-config-api-Dk4b3f7r.js → gateway-config-api-B3TGdim5.js} +1 -1
  34. package/dist/gateway/static/root/assets/{gateway-settings-DKNhpqYg.js → gateway-settings-D7tOnGAJ.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-startup-retry-BzbrcQLJ.js → gateway-startup-retry-BkrLLlpE.js} +1 -1
  36. package/dist/gateway/static/root/assets/{goal-create-dialog-Z_oEJXTZ.js → goal-create-dialog-BL_cRshf.js} +1 -1
  37. package/dist/gateway/static/root/assets/{goal-detail-page-CIFnmZ2W.js → goal-detail-page-T1vg6Ng_.js} +1 -1
  38. package/dist/gateway/static/root/assets/{goals-config-api-DpQ3Hj8X.js → goals-config-api-D-WZWhP2.js} +1 -1
  39. package/dist/gateway/static/root/assets/{goals-page-BYWfLxSr.js → goals-page-1vzWXl5W.js} +1 -1
  40. package/dist/gateway/static/root/assets/{goals-settings-DW6d-W79.js → goals-settings-DgGwvLVC.js} +1 -1
  41. package/dist/gateway/static/root/assets/{heartbeat-settings-CSGeVzW8.js → heartbeat-settings-yh0bEIwQ.js} +1 -1
  42. package/dist/gateway/static/root/assets/index-B8s8Pq5U.css +1 -0
  43. package/dist/gateway/static/root/assets/{index-B-SGXAZ7.js → index-NwiCnzI-.js} +23 -23
  44. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Bh85DLbN.js → keyboard-shortcuts-settings-CnxRFbgA.js} +1 -1
  45. package/dist/gateway/static/root/assets/{logs-page-BYG_JKr5.js → logs-page-DebnvTpD.js} +1 -1
  46. package/dist/gateway/static/root/assets/{markdown-split-BLOUZPDJ.js → markdown-split-BU69Nof8.js} +1 -1
  47. package/dist/gateway/static/root/assets/{media-plugins-vlqpbsN0.js → media-plugins-CDs7OvWt.js} +1 -1
  48. package/dist/gateway/static/root/assets/messages-DbNQuFdA.js +3 -0
  49. package/dist/gateway/static/root/assets/{models-hub-panel-BihK16QP.js → models-hub-panel-Ca_jy26S.js} +1 -1
  50. package/dist/gateway/static/root/assets/{notes-page-DJGOihcg.js → notes-page-DTpeaI65.js} +1 -1
  51. package/dist/gateway/static/root/assets/{notes-workbench-CtdxRaAk.js → notes-workbench-uKMYsjUU.js} +2 -2
  52. package/dist/gateway/static/root/assets/{page-tabs-BOKnavua.js → page-tabs-CROo8Vgz.js} +1 -1
  53. package/dist/gateway/static/root/assets/{preview-open-alternatives-07J39ZIq.js → preview-open-alternatives-BxsS9i1G.js} +1 -1
  54. package/dist/gateway/static/root/assets/{project-detail-page-BC26Zx8C.js → project-detail-page-BWKOhshy.js} +1 -1
  55. package/dist/gateway/static/root/assets/{projects-page-kQNhzpLr.js → projects-page-CoowiCLe.js} +1 -1
  56. package/dist/gateway/static/root/assets/{remote-access-hub-CN1ioJ0X.js → remote-access-hub-CiOaX1wd.js} +1 -1
  57. package/dist/gateway/static/root/assets/{save-bar-controls-CDGmAkP7.js → save-bar-controls-B4N17dMG.js} +1 -1
  58. package/dist/gateway/static/root/assets/{schedule-field-7Cvi7W5t.js → schedule-field-ClJzQ2vz.js} +1 -1
  59. package/dist/gateway/static/root/assets/{schema-form-xobSdD8a.js → schema-form-oZvQUfDg.js} +1 -1
  60. package/dist/gateway/static/root/assets/{sessions-page-DEGTTMvU.js → sessions-page-Sx9Gc0cv.js} +1 -1
  61. package/dist/gateway/static/root/assets/settings-advanced-gate-CnbVdze4.js +1 -0
  62. package/dist/gateway/static/root/assets/{settings-collapsible-section-CnqjZAfV.js → settings-collapsible-section-B0kOLXUf.js} +1 -1
  63. package/dist/gateway/static/root/assets/{settings-form-section-DRzUUAOA.js → settings-form-section-DoVPlVFd.js} +1 -1
  64. package/dist/gateway/static/root/assets/{settings-loading-skeleton-ke39n0bn.js → settings-loading-skeleton-C7J96bLc.js} +1 -1
  65. package/dist/gateway/static/root/assets/{settings-page-BDP9GD1j.js → settings-page-CXiAByF0.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-page-layout-CIf2rF-q.js → settings-page-layout-R-6ArlMI.js} +1 -1
  67. package/dist/gateway/static/root/assets/{setup-status-panel-CiiWlcKj.js → setup-status-panel-Drz23n9l.js} +1 -1
  68. package/dist/gateway/static/root/assets/{share-preview-page-CwJ2tj2j.js → share-preview-page-Bn1umseg.js} +1 -1
  69. package/dist/gateway/static/root/assets/{shares-settings-dm7VKGsi.js → shares-settings-Bb-pcMWg.js} +1 -1
  70. package/dist/gateway/static/root/assets/skill-reload-api-DE9HCHct.js +1 -0
  71. package/dist/gateway/static/root/assets/{skills-page-Bc0rxqmf.js → skills-page-B6cDPqkk.js} +1 -1
  72. package/dist/gateway/static/root/assets/{system-settings-panel-1a3I3zIl.js → system-settings-panel-CtEddAy-.js} +1 -1
  73. package/dist/gateway/static/root/assets/{typed-models-lib-C3NCA3Nd.js → typed-models-lib-BkhSnYq7.js} +1 -1
  74. package/dist/gateway/static/root/assets/{use-channel-catalog-DUOMGhwc.js → use-channel-catalog-EA4hfbsP.js} +1 -1
  75. package/dist/gateway/static/root/assets/{user-profile-settings-panel-dKptBh4U.js → user-profile-settings-panel-BssTVOBS.js} +1 -1
  76. package/dist/gateway/static/root/assets/{utils-BqnHAm5O.js → utils-CI3ywKLT.js} +1 -1
  77. package/dist/gateway/static/root/assets/{voice-api-key-field-D4dtA6k3.js → voice-api-key-field-DXMEGw9O.js} +1 -1
  78. package/dist/gateway/static/root/assets/{work-item-detail-page-DpUYYeDf.js → work-item-detail-page-DsFqU0tK.js} +1 -1
  79. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BQ8aBXA1.js → workflow-run-setup-panel-DImBi-m6.js} +1 -1
  80. package/dist/gateway/static/root/assets/{workflow-start-dialog-jHmIHxTR.js → workflow-start-dialog-DuPpKAAc.js} +1 -1
  81. package/dist/gateway/static/root/assets/{workflows-page-DzjPClwt.js → workflows-page-DfTVzTNY.js} +1 -1
  82. package/dist/gateway/static/root/index.html +5 -5
  83. package/dist/package.js +1 -1
  84. package/dist/src/agent/agent-instance-gateway.d.ts +3 -3
  85. package/dist/src/agent/agent-manager.d.ts +7 -8
  86. package/dist/src/agent/agent-manager.js +24 -25
  87. package/dist/src/agent/agent-manager.js.map +1 -1
  88. package/dist/src/agent/background-review/coordinator.d.ts +9 -23
  89. package/dist/src/agent/background-review/coordinator.js +45 -54
  90. package/dist/src/agent/background-review/coordinator.js.map +1 -1
  91. package/dist/src/agent/background-review/prompts.d.ts +2 -4
  92. package/dist/src/agent/background-review/prompts.js +7 -19
  93. package/dist/src/agent/background-review/prompts.js.map +1 -1
  94. package/dist/src/agent/background-review/run-background-review.d.ts +0 -8
  95. package/dist/src/agent/background-review/run-background-review.js +87 -72
  96. package/dist/src/agent/background-review/run-background-review.js.map +1 -1
  97. package/dist/src/agent/background-review/settings.d.ts +4 -4
  98. package/dist/src/agent/background-review/settings.js +25 -10
  99. package/dist/src/agent/background-review/settings.js.map +1 -1
  100. package/dist/src/agent/code-intelligence/binary.d.ts +1 -0
  101. package/dist/src/agent/code-intelligence/binary.js +42 -0
  102. package/dist/src/agent/code-intelligence/binary.js.map +1 -0
  103. package/dist/src/agent/code-intelligence/index.d.ts +4 -0
  104. package/dist/src/agent/code-intelligence/index.js +4 -0
  105. package/dist/src/agent/code-intelligence/runtime.d.ts +34 -0
  106. package/dist/src/agent/code-intelligence/runtime.js +282 -0
  107. package/dist/src/agent/code-intelligence/runtime.js.map +1 -0
  108. package/dist/src/agent/code-intelligence/tools.d.ts +6 -0
  109. package/dist/src/agent/code-intelligence/tools.js +268 -0
  110. package/dist/src/agent/code-intelligence/tools.js.map +1 -0
  111. package/dist/src/agent/code-intelligence/types.d.ts +22 -0
  112. package/dist/src/agent/code-intelligence/types.js +1 -0
  113. package/dist/src/agent/memory/builtin-provider.d.ts +1 -2
  114. package/dist/src/agent/memory/builtin-provider.js +31 -12
  115. package/dist/src/agent/memory/builtin-provider.js.map +1 -1
  116. package/dist/src/agent/memory/context/planner.d.ts +11 -0
  117. package/dist/src/agent/memory/context/planner.js +163 -0
  118. package/dist/src/agent/memory/context/planner.js.map +1 -0
  119. package/dist/src/agent/memory/context/types.d.ts +19 -0
  120. package/dist/src/agent/memory/context/types.js +1 -0
  121. package/dist/src/agent/memory/context-fence.d.ts +3 -3
  122. package/dist/src/agent/memory/context-fence.js +9 -9
  123. package/dist/src/agent/memory/context-fence.js.map +1 -1
  124. package/dist/src/agent/memory/index.d.ts +6 -4
  125. package/dist/src/agent/memory/index.js +5 -5
  126. package/dist/src/agent/memory/manager.d.ts +16 -4
  127. package/dist/src/agent/memory/manager.js +32 -34
  128. package/dist/src/agent/memory/manager.js.map +1 -1
  129. package/dist/src/agent/memory/memory-config.d.ts +1 -1
  130. package/dist/src/agent/memory/memory-config.js +2 -2
  131. package/dist/src/agent/memory/memory-config.js.map +1 -1
  132. package/dist/src/agent/memory/provider.d.ts +1 -3
  133. package/dist/src/agent/memory/stub-memory-provider.d.ts +0 -1
  134. package/dist/src/agent/memory/stub-memory-provider.js +0 -5
  135. package/dist/src/agent/memory/stub-memory-provider.js.map +1 -1
  136. package/dist/src/agent/memory/types.d.ts +31 -2
  137. package/dist/src/agent/memory/understanding/correction.d.ts +3 -0
  138. package/dist/src/agent/memory/understanding/correction.js +41 -0
  139. package/dist/src/agent/memory/understanding/correction.js.map +1 -0
  140. package/dist/src/agent/memory/understanding/quality.d.ts +8 -0
  141. package/dist/src/agent/memory/understanding/quality.js +20 -0
  142. package/dist/src/agent/memory/understanding/quality.js.map +1 -0
  143. package/dist/src/agent/memory/understanding/service.d.ts +26 -0
  144. package/dist/src/agent/memory/understanding/service.js +233 -0
  145. package/dist/src/agent/memory/understanding/service.js.map +1 -0
  146. package/dist/src/agent/memory/understanding/types.d.ts +22 -0
  147. package/dist/src/agent/memory/understanding/types.js +1 -0
  148. package/dist/src/agent/memory/user-context-coordinator.d.ts +21 -0
  149. package/dist/src/agent/memory/user-context-coordinator.js +90 -0
  150. package/dist/src/agent/memory/user-context-coordinator.js.map +1 -0
  151. package/dist/src/agent/orchestration/agent-event-handler.d.ts +1 -0
  152. package/dist/src/agent/orchestration/agent-event-handler.js +1 -1
  153. package/dist/src/agent/orchestration/agent-event-handler.js.map +1 -1
  154. package/dist/src/agent/orchestration/agent-orchestrator.js +2 -2
  155. package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
  156. package/dist/src/agent/orchestration/index.d.ts +1 -1
  157. package/dist/src/agent/orchestration/index.js +2 -2
  158. package/dist/src/agent/prompt/sections/tooling.js +10 -0
  159. package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
  160. package/dist/src/agent/prompt/system-prompt.js +2 -0
  161. package/dist/src/agent/prompt/system-prompt.js.map +1 -1
  162. package/dist/src/agent/service/direct-turn-helpers.js +2 -2
  163. package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
  164. package/dist/src/agent/service.js +7 -1
  165. package/dist/src/agent/service.js.map +1 -1
  166. package/dist/src/agent/tools/factory.d.ts +3 -0
  167. package/dist/src/agent/tools/factory.js +17 -10
  168. package/dist/src/agent/tools/factory.js.map +1 -1
  169. package/dist/src/agent/tools/index.d.ts +1 -0
  170. package/dist/src/agent/tools/index.js +2 -1
  171. package/dist/src/agent/workspace-runtime/registry.d.ts +2 -0
  172. package/dist/src/agent/workspace-runtime/registry.js +11 -3
  173. package/dist/src/agent/workspace-runtime/registry.js.map +1 -1
  174. package/dist/src/agent-manifest/index.js +2 -2
  175. package/dist/src/agent-manifest/schema.d.ts +91 -0
  176. package/dist/src/agent-manifest/schema.js +27 -5
  177. package/dist/src/agent-manifest/schema.js.map +1 -1
  178. package/dist/src/agent-runtime/memory-runtime.d.ts +1 -1
  179. package/dist/src/agent-runtime/memory-runtime.js.map +1 -1
  180. package/dist/src/automations/domain/validation.d.ts +22 -22
  181. package/dist/src/automations/draft/automation-draft-validator.d.ts +4 -4
  182. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  183. package/dist/src/config/index.js +2 -2
  184. package/dist/src/config/schema.d.ts +115 -0
  185. package/dist/src/config/schema.js +53 -4
  186. package/dist/src/config/schema.js.map +1 -1
  187. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  188. package/dist/src/gateway/agent-builtin-tools.js +5 -0
  189. package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
  190. package/dist/src/gateway/hono/lib/config-payload.d.ts +18 -4
  191. package/dist/src/gateway/hono/routes/memory.js +129 -4
  192. package/dist/src/gateway/hono/routes/memory.js.map +1 -1
  193. package/dist/src/knowledge/index.d.ts +2 -0
  194. package/dist/src/knowledge/index.js +2 -0
  195. package/dist/src/knowledge/ingestion-service.d.ts +20 -0
  196. package/dist/src/knowledge/ingestion-service.js +75 -0
  197. package/dist/src/knowledge/ingestion-service.js.map +1 -0
  198. package/dist/src/knowledge/types.d.ts +70 -0
  199. package/dist/src/knowledge/types.js +1 -0
  200. package/dist/src/providers/presentation.js +1 -1
  201. package/dist/src/providers/presentation.js.map +1 -1
  202. package/dist/src/storage/sqlite/index.d.ts +2 -1
  203. package/dist/src/storage/sqlite/index.js +3 -2
  204. package/dist/src/storage/sqlite/knowledge-repository.d.ts +50 -0
  205. package/dist/src/storage/sqlite/knowledge-repository.js +237 -0
  206. package/dist/src/storage/sqlite/knowledge-repository.js.map +1 -0
  207. package/dist/src/storage/sqlite/memory-records-repository.d.ts +80 -2
  208. package/dist/src/storage/sqlite/memory-records-repository.js +271 -9
  209. package/dist/src/storage/sqlite/memory-records-repository.js.map +1 -1
  210. package/dist/src/storage/sqlite/migrations/029_user_understanding.sql +133 -0
  211. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  212. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  213. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  214. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  215. package/dist/src/storage/sqlite/schema.js +1 -1
  216. package/package.json +2 -1
  217. package/dist/gateway/static/root/assets/agents-Bmfl5l9o.js +0 -2
  218. package/dist/gateway/static/root/assets/channels-status-swr-BCkcagDP.js +0 -1
  219. package/dist/gateway/static/root/assets/index-CPwVzi9x.css +0 -1
  220. package/dist/gateway/static/root/assets/messages-CD-qhazm.js +0 -3
  221. package/dist/gateway/static/root/assets/settings-advanced-gate-DgMxVBrX.js +0 -1
  222. package/dist/gateway/static/root/assets/skill-reload-api-ZzOv59qM.js +0 -1
  223. package/dist/src/agent/memory/candidate-extractor.d.ts +0 -6
  224. package/dist/src/agent/memory/candidate-extractor.js +0 -60
  225. package/dist/src/agent/memory/candidate-extractor.js.map +0 -1
  226. package/dist/src/agent/memory/context-assembler.d.ts +0 -10
  227. package/dist/src/agent/memory/context-assembler.js +0 -26
  228. package/dist/src/agent/memory/context-assembler.js.map +0 -1
  229. package/dist/src/agent/memory/inject-prefetch.d.ts +0 -6
  230. package/dist/src/agent/memory/inject-prefetch.js +0 -48
  231. package/dist/src/agent/memory/inject-prefetch.js.map +0 -1
  232. package/dist/src/agent/memory/prefetch-coordinator.d.ts +0 -37
  233. package/dist/src/agent/memory/prefetch-coordinator.js +0 -45
  234. package/dist/src/agent/memory/prefetch-coordinator.js.map +0 -1
package/README.md CHANGED
@@ -155,6 +155,7 @@ Windows git install: `& ([scriptblock]::Create((irm https://xopc.ai/install.ps1)
155
155
  - 🏠 **Runs in your environment** — Config and local state live under **`~/.xopc/`** by default; you choose deployment, backups, and remote access.
156
156
  - 🔑 **Bring your own keys** — OpenAI, Anthropic, Google, DeepSeek, Ollama, LM Studio, vLLM, and **20+** providers. Mix cloud and local models.
157
157
  - ⚙️ **Executes and triggers work** — Tools and workflows perform tasks; scheduled, manual, and webhook automations run agents or workflows later.
158
+ - 🧭 **Graph-backed code intelligence** — The `coder` agent gets managed, local repository indexing for symbol search, source grounding, call tracing, change impact, and architecture mapping, with direct-source fallback when graph coverage is incomplete.
158
159
  - 📡 **One runtime, many surfaces** — Desktop, terminal, web, mobile, and messengers share agents, sessions, and project state.
159
160
  - 🧩 **Explicit capability boundaries** — Each agent can have its own identity, model roles, workspace, tool policy, skills, memory, and boundaries, then grow through extensions.
160
161
 
@@ -238,6 +239,7 @@ Full reference: **[Configuration](https://xopcai.github.io/xopc/configuration)**
238
239
  | [CLI](https://xopcai.github.io/xopc/cli) | Commands and flags |
239
240
  | [Channels](https://xopcai.github.io/xopc/channels) | Telegram, WeChat, Feishu |
240
241
  | [Architecture](https://xopcai.github.io/xopc/architecture) | How pieces fit together |
242
+ | [Code intelligence](https://xopcai.github.io/xopc/code-intelligence) | Managed local repository graph for the `coder` agent |
241
243
  | [Workflows](https://xopcai.github.io/xopc/workflows) | Fan-out subagents, board UI, scripts |
242
244
 
243
245
  Also: [Tools](https://xopcai.github.io/xopc/tools) · [Mobile app](https://xopcai.github.io/xopc/mobile-app) · [Voice](https://xopcai.github.io/xopc/voice) · [Remote access](https://xopcai.github.io/xopc/remote-access)
@@ -284,6 +286,8 @@ pnpm run build && pnpm test && pnpm run lint
284
286
  ## Credits
285
287
 
286
288
  - LLM layer: [@earendil-works/pi-ai](https://github.com/earendil-works/pi-mono) · Agent runtime: [@earendil-works/pi-agent-core](https://github.com/earendil-works/pi-mono)
289
+ - Code intelligence: [codebase-memory-mcp](https://github.com/DeusData/codebase-memory-mcp), integrated as a managed local knowledge graph for repository understanding
290
+ - User understanding: inspired by [OpenWiki](https://github.com/langchain-ai/openwiki)'s evidence-to-knowledge approach, reimplemented as a native XOPC capability with governed synthesis and per-turn context planning — see [User understanding](./docs/user-understanding.md)
287
291
  - Inspired by [openclaw/openclaw](https://github.com/openclaw/openclaw) and [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
288
292
 
289
293
  ---
package/README.zh-CN.md CHANGED
@@ -155,6 +155,7 @@ Windows 源码安装:`& ([scriptblock]::Create((irm https://xopc.ai/install.ps
155
155
  - 🏠 **运行在你的环境里** — 配置与本地状态默认在 **`~/.xopc/`**;你决定如何部署、备份和远程访问。
156
156
  - 🔑 **使用自己的密钥** — OpenAI、Anthropic、Google、DeepSeek、Ollama、LM Studio、vLLM 等 **20+** 厂商;云端和本地模型可混用。
157
157
  - ⚙️ **能执行,也能主动触发** — 工具和工作流负责执行;自动化用定时、手动或 webhook 触发 Agent 与工作流。
158
+ - 🧭 **代码图谱增强编码** — `coder` agent 使用托管的本地代码库索引完成符号搜索、源码确认、调用追踪、变更影响与架构分析;图覆盖不足时回退到直接读取源码。
158
159
  - 📡 **同一个运行时,多种入口** — 桌面、终端、网页、手机与 IM 共享 Agent、会话和项目状态。
159
160
  - 🧩 **能力边界可配置** — 每个 Agent 可以拥有独立的身份、模型角色、工作区、工具策略、技能、记忆与边界,并通过扩展继续增加能力。
160
161
 
@@ -238,6 +239,7 @@ xopc extensions dev ./my-extension
238
239
  | [CLI](https://xopcai.github.io/xopc/zh/cli) | 命令与参数 |
239
240
  | [频道](https://xopcai.github.io/xopc/zh/channels) | Telegram、微信、飞书 |
240
241
  | [架构](https://xopcai.github.io/xopc/zh/architecture) | 整体结构 |
242
+ | [代码智能](https://xopcai.github.io/xopc/zh/code-intelligence) | `coder` agent 的托管本地代码知识图 |
241
243
  | [工作流](https://xopcai.github.io/xopc/zh/workflows) | 扇出子 Agent、看板、脚本 |
242
244
 
243
245
  更多:[工具](https://xopcai.github.io/xopc/zh/tools) · [移动端 App](https://xopcai.github.io/xopc/zh/mobile-app) · [语音](https://xopcai.github.io/xopc/zh/voice) · [远程访问](https://xopcai.github.io/xopc/zh/remote-access)
@@ -285,6 +287,8 @@ pnpm run build && pnpm test && pnpm run lint
285
287
  ## 致谢
286
288
 
287
289
  - 大模型接入:[@earendil-works/pi-ai](https://github.com/earendil-works/pi-mono) · 运行时:[@earendil-works/pi-agent-core](https://github.com/earendil-works/pi-mono)
290
+ - 代码智能:[codebase-memory-mcp](https://github.com/DeusData/codebase-memory-mcp),作为托管的本地知识图集成,用于理解代码库
291
+ - 用户理解:受 [OpenWiki](https://github.com/langchain-ai/openwiki) 从证据沉淀知识的思想启发,在 XOPC 中重新实现为带治理合成和逐轮上下文规划的原生能力,详见[用户理解](./docs/user-understanding.md)
288
292
  - 灵感来自 [openclaw/openclaw](https://github.com/openclaw/openclaw) 与 [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
289
293
 
290
294
  ---
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "xopc Browser Bridge",
4
- "version": "0.0.137",
4
+ "version": "0.0.138",
5
5
  "description": "Browser automation bridge for xopc — executes commands in Chrome via the local xopc daemon.",
6
6
  "permissions": [
7
7
  "debugger",
@@ -111,6 +111,10 @@ var DemoMemoryProvider = class {
111
111
  },
112
112
  content: request.content,
113
113
  source: request.source ?? { provider: this.id },
114
+ explicitness: request.explicitness ?? "inferred",
115
+ durability: request.durability ?? "durable",
116
+ importance: request.importance ?? .5,
117
+ disclosurePolicy: request.disclosurePolicy ?? "referenceable",
114
118
  createdAt: now,
115
119
  updatedAt: now,
116
120
  ...request.tags ? { tags: request.tags } : {}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../extensions/demo-memory/src/index.ts"],"sourcesContent":["import type { MemoryProvider, MemoryProviderInitOptions } from '../../../src/agent/memory/provider.js';\nimport type {\n MemoryCapabilities,\n MemoryListRequest,\n MemoryProviderManifest,\n MemoryReadRequest,\n MemoryReadResult,\n MemoryRecord,\n MemoryScope,\n MemorySearchRequest,\n MemorySearchResult,\n MemorySyncEvent,\n MemoryWriteRequest,\n MemoryWriteResult,\n} from '../../../src/agent/memory/types.js';\n\nexport const manifest: MemoryProviderManifest = {\n type: 'memory-provider',\n id: 'demo-memory',\n displayName: 'Demo Memory Provider',\n entry: './src/index.js',\n capabilities: {\n search: true,\n read: true,\n write: true,\n update: false,\n delete: false,\n keywordSearch: true,\n citations: true,\n sync: true,\n },\n};\n\nexport const description = 'In-memory provider used to verify extension-backed memory providers.';\n\nexport function isAvailable(): boolean {\n return process.env.XOPC_DEMO_MEMORY_DISABLED !== '1';\n}\n\nexport function createMemoryProvider(): MemoryProvider {\n return new DemoMemoryProvider();\n}\n\nclass DemoMemoryProvider implements MemoryProvider {\n readonly id = manifest.id;\n readonly displayName = manifest.displayName;\n readonly manifest = manifest;\n readonly capabilities: MemoryCapabilities = {\n search: true,\n read: true,\n write: true,\n update: false,\n delete: false,\n keywordSearch: true,\n semanticSearch: false,\n hybridSearch: false,\n citations: true,\n sync: true,\n };\n\n private records = new Map<string, MemoryRecord>();\n private sequence = 0;\n private scope: MemoryScope = { agentId: 'main' };\n\n isAvailable(): boolean {\n return isAvailable();\n }\n\n initialize(_sessionId: string, options?: MemoryProviderInitOptions): void {\n const agentId = typeof options?.config?.agentId === 'string' ? options.config.agentId : 'main';\n const workspaceId = typeof options?.workspace === 'string' ? options.workspace : undefined;\n this.scope = workspaceId ? { agentId, workspaceId } : { agentId };\n }\n\n async write(request: MemoryWriteRequest): Promise<MemoryWriteResult> {\n const record = this.createRecord(request);\n return { success: true, record, message: `Demo memory stored ${record.id}` };\n }\n\n async search(request: MemorySearchRequest): Promise<MemorySearchResult[]> {\n const query = request.query.trim().toLocaleLowerCase();\n const kinds = request.kinds ? new Set(request.kinds) : null;\n const maxResults = request.maxResults ?? 5;\n return [...this.records.values()]\n .filter((record) => !kinds || kinds.has(record.kind))\n .filter((record) => !query || record.content.toLocaleLowerCase().includes(query))\n .map((record) => ({\n record,\n score: scoreRecord(record, query),\n snippet: record.content,\n citation: {\n providerId: this.id,\n recordId: record.id,\n title: this.displayName,\n createdAt: record.createdAt,\n },\n }))\n .sort((a, b) => b.score - a.score)\n .slice(0, maxResults);\n }\n\n async read(request: MemoryReadRequest): Promise<MemoryReadResult | null> {\n if (!request.id) return null;\n const record = this.records.get(request.id);\n return record ? { record } : null;\n }\n\n async get(id: string): Promise<MemoryRecord | null> {\n return this.records.get(id) ?? null;\n }\n\n async list(request: MemoryListRequest): Promise<MemoryRecord[]> {\n return [...this.records.values()].filter((record) => !request.kind || record.kind === request.kind);\n }\n\n sync(event: MemorySyncEvent): void {\n if (event.type !== 'signal' || !event.signal.content) return;\n this.createRecord({\n kind: 'derived_insight',\n content: event.signal.content,\n source: { provider: event.signal.source },\n tags: ['signal', event.signal.source],\n });\n }\n\n shutdown(): void {\n this.records.clear();\n }\n\n private createRecord(request: MemoryWriteRequest): MemoryRecord {\n const now = new Date().toISOString();\n const id = `demo-memory-${++this.sequence}`;\n const record: MemoryRecord = {\n id,\n kind: request.kind,\n scope: { ...this.scope, ...request.scope },\n content: request.content,\n source: request.source ?? { provider: this.id },\n createdAt: now,\n updatedAt: now,\n ...(request.tags ? { tags: request.tags } : {}),\n };\n this.records.set(id, record);\n return record;\n }\n}\n\nfunction scoreRecord(record: MemoryRecord, query: string): number {\n if (!query) return 0.5;\n const text = record.content.toLocaleLowerCase();\n if (text === query) return 1;\n if (text.includes(query)) return 0.8;\n return 0.1;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../extensions/demo-memory/src/index.ts"],"sourcesContent":["import type { MemoryProvider, MemoryProviderInitOptions } from '../../../src/agent/memory/provider.js';\nimport type {\n MemoryCapabilities,\n MemoryListRequest,\n MemoryProviderManifest,\n MemoryReadRequest,\n MemoryReadResult,\n MemoryRecord,\n MemoryScope,\n MemorySearchRequest,\n MemorySearchResult,\n MemorySyncEvent,\n MemoryWriteRequest,\n MemoryWriteResult,\n} from '../../../src/agent/memory/types.js';\n\nexport const manifest: MemoryProviderManifest = {\n type: 'memory-provider',\n id: 'demo-memory',\n displayName: 'Demo Memory Provider',\n entry: './src/index.js',\n capabilities: {\n search: true,\n read: true,\n write: true,\n update: false,\n delete: false,\n keywordSearch: true,\n citations: true,\n sync: true,\n },\n};\n\nexport const description = 'In-memory provider used to verify extension-backed memory providers.';\n\nexport function isAvailable(): boolean {\n return process.env.XOPC_DEMO_MEMORY_DISABLED !== '1';\n}\n\nexport function createMemoryProvider(): MemoryProvider {\n return new DemoMemoryProvider();\n}\n\nclass DemoMemoryProvider implements MemoryProvider {\n readonly id = manifest.id;\n readonly displayName = manifest.displayName;\n readonly manifest = manifest;\n readonly capabilities: MemoryCapabilities = {\n search: true,\n read: true,\n write: true,\n update: false,\n delete: false,\n keywordSearch: true,\n semanticSearch: false,\n hybridSearch: false,\n citations: true,\n sync: true,\n };\n\n private records = new Map<string, MemoryRecord>();\n private sequence = 0;\n private scope: MemoryScope = { agentId: 'main' };\n\n isAvailable(): boolean {\n return isAvailable();\n }\n\n initialize(_sessionId: string, options?: MemoryProviderInitOptions): void {\n const agentId = typeof options?.config?.agentId === 'string' ? options.config.agentId : 'main';\n const workspaceId = typeof options?.workspace === 'string' ? options.workspace : undefined;\n this.scope = workspaceId ? { agentId, workspaceId } : { agentId };\n }\n\n async write(request: MemoryWriteRequest): Promise<MemoryWriteResult> {\n const record = this.createRecord(request);\n return { success: true, record, message: `Demo memory stored ${record.id}` };\n }\n\n async search(request: MemorySearchRequest): Promise<MemorySearchResult[]> {\n const query = request.query.trim().toLocaleLowerCase();\n const kinds = request.kinds ? new Set(request.kinds) : null;\n const maxResults = request.maxResults ?? 5;\n return [...this.records.values()]\n .filter((record) => !kinds || kinds.has(record.kind))\n .filter((record) => !query || record.content.toLocaleLowerCase().includes(query))\n .map((record) => ({\n record,\n score: scoreRecord(record, query),\n snippet: record.content,\n citation: {\n providerId: this.id,\n recordId: record.id,\n title: this.displayName,\n createdAt: record.createdAt,\n },\n }))\n .sort((a, b) => b.score - a.score)\n .slice(0, maxResults);\n }\n\n async read(request: MemoryReadRequest): Promise<MemoryReadResult | null> {\n if (!request.id) return null;\n const record = this.records.get(request.id);\n return record ? { record } : null;\n }\n\n async get(id: string): Promise<MemoryRecord | null> {\n return this.records.get(id) ?? null;\n }\n\n async list(request: MemoryListRequest): Promise<MemoryRecord[]> {\n return [...this.records.values()].filter((record) => !request.kind || record.kind === request.kind);\n }\n\n sync(event: MemorySyncEvent): void {\n if (event.type !== 'signal' || !event.signal.content) return;\n this.createRecord({\n kind: 'derived_insight',\n content: event.signal.content,\n source: { provider: event.signal.source },\n tags: ['signal', event.signal.source],\n });\n }\n\n shutdown(): void {\n this.records.clear();\n }\n\n private createRecord(request: MemoryWriteRequest): MemoryRecord {\n const now = new Date().toISOString();\n const id = `demo-memory-${++this.sequence}`;\n const record: MemoryRecord = {\n id,\n kind: request.kind,\n scope: { ...this.scope, ...request.scope },\n content: request.content,\n source: request.source ?? { provider: this.id },\n explicitness: request.explicitness ?? 'inferred',\n durability: request.durability ?? 'durable',\n importance: request.importance ?? 0.5,\n disclosurePolicy: request.disclosurePolicy ?? 'referenceable',\n createdAt: now,\n updatedAt: now,\n ...(request.tags ? { tags: request.tags } : {}),\n };\n this.records.set(id, record);\n return record;\n }\n}\n\nfunction scoreRecord(record: MemoryRecord, query: string): number {\n if (!query) return 0.5;\n const text = record.content.toLocaleLowerCase();\n if (text === query) return 1;\n if (text.includes(query)) return 0.8;\n return 0.1;\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  "id": "telegram",
3
3
  "name": "Telegram Channel",
4
4
  "description": "Bundled Telegram Bot channel (private workspace sources; ships inside @xopcai/xopc dist/)",
5
- "version": "0.0.137",
5
+ "version": "0.0.138",
6
6
  "kind": "channel",
7
7
  "main": "src/index.js",
8
8
  "channels": [