@xopcai/xopc 0.0.187 → 0.0.188

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 (216) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/demo-memory/src/index.js +1 -0
  3. package/dist/extensions/feishu/src/streaming/streaming-adapter.js +1 -3
  4. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
  5. package/dist/extensions/telegram/src/draft-stream.d.ts +0 -4
  6. package/dist/extensions/telegram/src/draft-stream.js +1 -53
  7. package/dist/extensions/telegram/xopc.extension.json +1 -1
  8. package/dist/gateway/static/root/assets/{activity-store-WlR2zEvA.js → activity-store--QoUGhiS.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-RedDszrG.js → agent-avatar-dicebear-B0yweLNQ.js} +1 -1
  10. package/dist/gateway/static/root/assets/{agents-Df9mTa-K.js → agents-C6OV-gMm.js} +1 -1
  11. package/dist/gateway/static/root/assets/{api-tVOllncq.js → api-5laWqfiE.js} +1 -1
  12. package/dist/gateway/static/root/assets/{app-management-settings-panel-C9hKBzaF.js → app-management-settings-panel-BXJ8Jiv_.js} +1 -1
  13. package/dist/gateway/static/root/assets/{appearance-settings-5cQvq7hd.js → appearance-settings-DG9n9D1M.js} +1 -1
  14. package/dist/gateway/static/root/assets/{apps-page-Bd3tN-k2.js → apps-page-Ci14lDeO.js} +1 -1
  15. package/dist/gateway/static/root/assets/{archive-plugin-Ct-shK4n.js → archive-plugin-Ceh5qrZf.js} +1 -1
  16. package/dist/gateway/static/root/assets/{attachment-load-CpPj3m-q.js → attachment-load-jFW7uYf7.js} +1 -1
  17. package/dist/gateway/static/root/assets/automations-page-Q1xmb4Rh.js +6 -0
  18. package/dist/gateway/static/root/assets/{binary-plugins-BpSXZBle.js → binary-plugins-XDlkI1r4.js} +1 -1
  19. package/dist/gateway/static/root/assets/{block-editor-B8hR2tXc.js → block-editor-kyKc2IhE.js} +1 -1
  20. package/dist/gateway/static/root/assets/{browser-settings-page-jb5Hf-hm.js → browser-settings-page-DbowrHXD.js} +1 -1
  21. package/dist/gateway/static/root/assets/{browser-workflow-inputs-D_LAXUrh.js → browser-workflow-inputs-BJa5Iz_v.js} +1 -1
  22. package/dist/gateway/static/root/assets/{browser-workflows-page-CPAs7-6s.js → browser-workflows-page-CTQQOsn5.js} +1 -1
  23. package/dist/gateway/static/root/assets/{capabilities-settings-panel-BjUe4raq.js → capabilities-settings-panel-DoZPFdKF.js} +1 -1
  24. package/dist/gateway/static/root/assets/{capability-presets-api-CKklVY2p.js → capability-presets-api-Dn-7MMEo.js} +1 -1
  25. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-DiWIMYRr.js → capability-presets-settings-panel-Bt8Hnx0h.js} +1 -1
  26. package/dist/gateway/static/root/assets/{channel-recipient-api-WWN-nbFL.js → channel-recipient-api-BgIkWq01.js} +1 -1
  27. package/dist/gateway/static/root/assets/{channels-settings-D8IkjMuX.js → channels-settings-Bpsebsru.js} +1 -1
  28. package/dist/gateway/static/root/assets/channels-status-swr-DFmdYRE5.js +1 -0
  29. package/dist/gateway/static/root/assets/{connector-logo-CdNkVFdB.js → connector-logo-TRr9ybf6.js} +1 -1
  30. package/dist/gateway/static/root/assets/{connectors-page-BT2ahw52.js → connectors-page-Tg5kl22i.js} +1 -1
  31. package/dist/gateway/static/root/assets/{desktop-pet-Bm_IEAf3.js → desktop-pet-CSwd00CV.js} +1 -1
  32. package/dist/gateway/static/root/assets/{desktop-pet-settings-C0Ve04-G.js → desktop-pet-settings-CuNQvHGu.js} +1 -1
  33. package/dist/gateway/static/root/assets/{directory-picker-path-field-B2cvhvAI.js → directory-picker-path-field-ct0n5Rje.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-debug-page-DNashgGu.js → extension-debug-page-BeRBuMUU.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-page-Bvo-5htX.js → extension-page-DbK-Cwao.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-settings-page-BBESdISV.js → extension-settings-page-C9ag5tb5.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-config-api-ClQvokMo.js → gateway-config-api-CC7EvEFp.js} +1 -1
  38. package/dist/gateway/static/root/assets/{gateway-settings-CIRs2QVy.js → gateway-settings-9g8uIry9.js} +1 -1
  39. package/dist/gateway/static/root/assets/{gateway-startup-retry-CntXJF6W.js → gateway-startup-retry-B2DmdlwO.js} +1 -1
  40. package/dist/gateway/static/root/assets/{heartbeat-settings-CWKcZuvc.js → heartbeat-settings-fl1oC_-5.js} +1 -1
  41. package/dist/gateway/static/root/assets/{home-page-C59f8UJw.js → home-page-Bao9jq_z.js} +1 -1
  42. package/dist/gateway/static/root/assets/{image-generation-api-DjSAQwGy.js → image-generation-api-GMTaS6eI.js} +1 -1
  43. package/dist/gateway/static/root/assets/index-Cl5n1f_U.css +1 -0
  44. package/dist/gateway/static/root/assets/index-OJgiMh07.js +223 -0
  45. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-ahKHpjoW.js → keyboard-shortcuts-settings-DhGYddbI.js} +1 -1
  46. package/dist/gateway/static/root/assets/{local-app-workbench-page-DRB4UQBE.js → local-app-workbench-page-B69NvtvH.js} +1 -1
  47. package/dist/gateway/static/root/assets/{local-apps-page-B6GKdgza.js → local-apps-page-CmnrBmWi.js} +1 -1
  48. package/dist/gateway/static/root/assets/{locale-store-Bff30u5V.js → locale-store-D6hs74o5.js} +1 -1
  49. package/dist/gateway/static/root/assets/{logs-page-CNp4XiBN.js → logs-page-Cq3cABqg.js} +1 -1
  50. package/dist/gateway/static/root/assets/{markdown-split-BeNMJm_i.js → markdown-split-CZaBPOVn.js} +1 -1
  51. package/dist/gateway/static/root/assets/{media-plugins-Bdzrj_-6.js → media-plugins-CiKvSgCv.js} +1 -1
  52. package/dist/gateway/static/root/assets/messages-D02NNLCZ.js +3 -0
  53. package/dist/gateway/static/root/assets/{notes-page-MYIi-9S9.js → notes-page-Bisbzqlz.js} +1 -1
  54. package/dist/gateway/static/root/assets/{notes-workbench-DqSkeDXX.js → notes-workbench-BOZfJFhE.js} +2 -2
  55. package/dist/gateway/static/root/assets/{page-tabs-3t88bbGx.js → page-tabs-BxlwhAbH.js} +1 -1
  56. package/dist/gateway/static/root/assets/{preview-open-alternatives-Cf_BWbeE.js → preview-open-alternatives-RM8wXxfT.js} +1 -1
  57. package/dist/gateway/static/root/assets/{product-open-page-CKq73c98.js → product-open-page-DdBlibek.js} +1 -1
  58. package/dist/gateway/static/root/assets/{project-detail-page-BrbHs4Wp.js → project-detail-page-TSKFb2tN.js} +1 -1
  59. package/dist/gateway/static/root/assets/{projects-page-B80rtkj6.js → projects-page-BokeBrTT.js} +1 -1
  60. package/dist/gateway/static/root/assets/{remote-access-hub-_Q3GEznb.js → remote-access-hub-C56anxCX.js} +1 -1
  61. package/dist/gateway/static/root/assets/{schema-form-NqOm-OG1.js → schema-form-BDKbpmXv.js} +1 -1
  62. package/dist/gateway/static/root/assets/{sessions-page-55dJOUVg.js → sessions-page-C7TQADrD.js} +1 -1
  63. package/dist/gateway/static/root/assets/settings-advanced-gate-BDOPKeAX.js +1 -0
  64. package/dist/gateway/static/root/assets/{settings-form-section-DYAS8p8z.js → settings-form-section-zxo5ZGOu.js} +1 -1
  65. package/dist/gateway/static/root/assets/{settings-loading-skeleton-DZFhxihA.js → settings-loading-skeleton-DgIp8_S6.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-page-BSIiMLi-.js → settings-page-BUPSIa9P.js} +1 -1
  67. package/dist/gateway/static/root/assets/{settings-page-layout-DfFfkdED.js → settings-page-layout-97LmwrzC.js} +1 -1
  68. package/dist/gateway/static/root/assets/{setup-status-panel-q_yE6-H1.js → setup-status-panel-BRg766eW.js} +1 -1
  69. package/dist/gateway/static/root/assets/{share-preview-page-CYtrQaZN.js → share-preview-page-BH7i3g1S.js} +1 -1
  70. package/dist/gateway/static/root/assets/{shares-settings-gYkRX9Ik.js → shares-settings-DhEAviQ_.js} +1 -1
  71. package/dist/gateway/static/root/assets/skill-reload-api-Ct7AV8ls.js +1 -0
  72. package/dist/gateway/static/root/assets/{skills-page-GZHKDFSb.js → skills-page-DoVuprZm.js} +1 -1
  73. package/dist/gateway/static/root/assets/{skills-page.utils-BBXirAjc.js → skills-page.utils-s-a5WV9j.js} +1 -1
  74. package/dist/gateway/static/root/assets/{system-settings-panel-DLf5YvFl.js → system-settings-panel-BxjeMT5k.js} +1 -1
  75. package/dist/gateway/static/root/assets/{task-detail-page-DFGkuYfl.js → task-detail-page-BahycnfW.js} +1 -1
  76. package/dist/gateway/static/root/assets/{theme-store-y7e_tvYi.js → theme-store-BRxdsmic.js} +1 -1
  77. package/dist/gateway/static/root/assets/{time-picker-5sHEZ5w5.js → time-picker-BGk_Tbsj.js} +1 -1
  78. package/dist/gateway/static/root/assets/{typed-models-lib-DR12j_dr.js → typed-models-lib-39MjwPSq.js} +1 -1
  79. package/dist/gateway/static/root/assets/{use-save-bar-registration-BsvcJgZl.js → use-save-bar-registration-5aVSjTjO.js} +1 -1
  80. package/dist/gateway/static/root/assets/{user-context-page-q5dr8JFG.js → user-context-page-B9K41qmy.js} +1 -1
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-DKADXFWD.js → voice-api-key-field-XU-7sBSg.js} +1 -1
  82. package/dist/gateway/static/root/assets/{work-discovery-overlay-BC1nExf8.js → work-discovery-overlay-CJqu8UHq.js} +1 -1
  83. package/dist/gateway/static/root/assets/{work-discovery-page-fNvSg40M.js → work-discovery-page-BBVnRHju.js} +1 -1
  84. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-C8X5W-8k.js → workflow-run-setup-panel-DXtg8Qxl.js} +1 -1
  85. package/dist/gateway/static/root/assets/{workflows-page-YJBKmPYK.js → workflows-page-Bs_tYfst.js} +1 -1
  86. package/dist/gateway/static/root/index.html +7 -7
  87. package/dist/package.js +1 -1
  88. package/dist/packages/gateway-contract/src/tool-activity.js +223 -0
  89. package/dist/src/agent/agent-manager.js +2 -8
  90. package/dist/src/agent/code-intelligence/binary.js +1 -1
  91. package/dist/src/agent/embedded/run-for-session.d.ts +0 -2
  92. package/dist/src/agent/embedded/run-for-session.js +99 -112
  93. package/dist/src/agent/external-tools/composio-provider.d.ts +29 -0
  94. package/dist/src/agent/external-tools/composio-provider.js +307 -0
  95. package/dist/src/agent/external-tools/extension-provider.d.ts +20 -0
  96. package/dist/src/agent/external-tools/extension-provider.js +68 -0
  97. package/dist/src/agent/external-tools/gateway-tools.d.ts +8 -0
  98. package/dist/src/agent/external-tools/gateway-tools.js +89 -0
  99. package/dist/src/agent/external-tools/index.d.ts +24 -0
  100. package/dist/src/agent/external-tools/index.js +40 -0
  101. package/dist/src/agent/external-tools/mcp-provider.d.ts +29 -0
  102. package/dist/src/agent/external-tools/mcp-provider.js +118 -0
  103. package/dist/src/agent/external-tools/memory-provider.d.ts +21 -0
  104. package/dist/src/agent/external-tools/memory-provider.js +56 -0
  105. package/dist/src/agent/external-tools/refs.d.ts +5 -0
  106. package/dist/src/agent/external-tools/refs.js +18 -0
  107. package/dist/src/agent/external-tools/service.d.ts +26 -0
  108. package/dist/src/agent/external-tools/service.js +117 -0
  109. package/dist/src/agent/external-tools/types.d.ts +28 -0
  110. package/dist/src/agent/external-tools/types.js +9 -0
  111. package/dist/src/agent/inbound/inbound-loop.d.ts +0 -2
  112. package/dist/src/agent/inbound/inbound-loop.js +0 -3
  113. package/dist/src/agent/mcp/{bundle-mcp-materialize.d.ts → bundle-mcp-gateway.d.ts} +1 -19
  114. package/dist/src/agent/mcp/bundle-mcp-gateway.js +60 -0
  115. package/dist/src/agent/mcp/bundle-mcp-names.d.ts +0 -8
  116. package/dist/src/agent/mcp/bundle-mcp-names.js +2 -29
  117. package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +4 -7
  118. package/dist/src/agent/mcp/bundle-mcp-policy.js +6 -20
  119. package/dist/src/agent/mcp/bundle-mcp-runtime.js +2 -2
  120. package/dist/src/agent/mcp/bundle-mcp-tools.d.ts +1 -2
  121. package/dist/src/agent/mcp/bundle-mcp-tools.js +1 -2
  122. package/dist/src/agent/mcp/bundle-mcp-types.d.ts +0 -5
  123. package/dist/src/agent/mcp/index.d.ts +0 -2
  124. package/dist/src/agent/mcp/index.js +2 -5
  125. package/dist/src/agent/mcp/mcp-stdio-transport.js +1 -1
  126. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  127. package/dist/src/agent/memory/context/planner.d.ts +1 -0
  128. package/dist/src/agent/memory/context/planner.js +22 -7
  129. package/dist/src/agent/memory/manager.d.ts +4 -1
  130. package/dist/src/agent/memory/manager.js +5 -2
  131. package/dist/src/agent/memory/types.d.ts +2 -0
  132. package/dist/src/agent/messaging/stream-manager.d.ts +2 -14
  133. package/dist/src/agent/messaging/stream-manager.js +0 -12
  134. package/dist/src/agent/orchestration/agent-event-handler.d.ts +1 -3
  135. package/dist/src/agent/orchestration/agent-event-handler.js +0 -36
  136. package/dist/src/agent/orchestration/agent-orchestrator.d.ts +0 -5
  137. package/dist/src/agent/orchestration/agent-orchestrator.js +0 -5
  138. package/dist/src/agent/prompt/sections/behavior.js +6 -4
  139. package/dist/src/agent/service.d.ts +0 -3
  140. package/dist/src/agent/service.js +0 -28
  141. package/dist/src/agent/service.types.d.ts +0 -3
  142. package/dist/src/agent/skills/hub-pull.js +1 -1
  143. package/dist/src/agent/starter-agents.js +2 -2
  144. package/dist/src/agent/tools/delegate-tool.js +5 -1
  145. package/dist/src/agent/tools/executor.js +1 -1
  146. package/dist/src/agent/tools/factory.d.ts +2 -1
  147. package/dist/src/agent/tools/factory.js +16 -22
  148. package/dist/src/agent/tools/index.d.ts +0 -1
  149. package/dist/src/agent/tools/index.js +1 -2
  150. package/dist/src/agent/workflow/workflow-child-tools.js +7 -1
  151. package/dist/src/browser/providers/cloakbrowser.js +1 -1
  152. package/dist/src/channels/channel-domain.d.ts +0 -4
  153. package/dist/src/channels/plugin-types.d.ts +0 -2
  154. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  155. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  156. package/dist/src/connectors/health.js +1 -1
  157. package/dist/src/extensions/extension-registry-impl.d.ts +3 -1
  158. package/dist/src/extensions/extension-registry-impl.js +7 -1
  159. package/dist/src/extensions/loader.js +1 -1
  160. package/dist/src/extensions/types/core.d.ts +2 -1
  161. package/dist/src/extensions/update.js +1 -1
  162. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  163. package/dist/src/gateway/agent-builtin-tools.js +5 -2
  164. package/dist/src/gateway/chat-stream/mapper.js +16 -1
  165. package/dist/src/gateway/chat-stream/protocol.d.ts +4 -0
  166. package/dist/src/gateway/file-reference-errors.d.ts +6 -0
  167. package/dist/src/gateway/file-reference-errors.js +21 -0
  168. package/dist/src/gateway/heartbeat/service.js +1 -1
  169. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  170. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  171. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  172. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  173. package/dist/src/gateway/hono/routes/projects.js +34 -13
  174. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  175. package/dist/src/gateway/hono/routes/workspace.js +34 -13
  176. package/dist/src/gateway/hono/routes/you.js +3 -3
  177. package/dist/src/gateway/service/config-coordinator.js +1 -1
  178. package/dist/src/gateway/service/run-gateway-agent.js +4 -1
  179. package/dist/src/gateway/service.js +6 -6
  180. package/dist/src/heartbeat/index.js +1 -1
  181. package/dist/src/infra/update-runner.js +1 -1
  182. package/dist/src/share/share-zip.js +1 -1
  183. package/dist/src/storage/sqlite/memory-records-repository.js +3 -1
  184. package/dist/src/storage/sqlite/migrations/108_repair_user_memory_provider.sql +18 -0
  185. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  186. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  187. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  188. package/dist/src/storage/sqlite/schema.js +1 -1
  189. package/dist/src/tui/tool-summary.d.ts +1 -2
  190. package/dist/src/tui/tool-summary.js +2 -18
  191. package/dist/src/tunnel/frpc-binary.js +1 -1
  192. package/dist/src/user-context/projection.d.ts +1 -0
  193. package/dist/src/user-context/projection.js +2 -1
  194. package/dist/src/voice/local/model-files.js +1 -1
  195. package/dist/src/work-discovery/service.js +1 -1
  196. package/package.json +1 -1
  197. package/dist/gateway/static/root/assets/automations-page-w6K9GZQ7.js +0 -6
  198. package/dist/gateway/static/root/assets/channels-status-swr-CySs1GQX.js +0 -1
  199. package/dist/gateway/static/root/assets/index-D-YfWVyS.css +0 -1
  200. package/dist/gateway/static/root/assets/index-vi5KlR5_.js +0 -222
  201. package/dist/gateway/static/root/assets/messages-CPxz48hr.js +0 -3
  202. package/dist/gateway/static/root/assets/settings-advanced-gate-CSFCZj14.js +0 -1
  203. package/dist/gateway/static/root/assets/skill-reload-api-BoNBMKW6.js +0 -1
  204. package/dist/src/agent/feedback/feedback-coordinator.d.ts +0 -73
  205. package/dist/src/agent/feedback/feedback-coordinator.js +0 -156
  206. package/dist/src/agent/feedback/index.d.ts +0 -4
  207. package/dist/src/agent/feedback/index.js +0 -2
  208. package/dist/src/agent/lifecycle/progress.d.ts +0 -90
  209. package/dist/src/agent/lifecycle/progress.js +0 -339
  210. package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -183
  211. package/dist/src/agent/mcp/mcp-tool-meta.d.ts +0 -8
  212. package/dist/src/agent/mcp/mcp-tool-meta.js +0 -13
  213. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.d.ts +0 -14
  214. package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -48
  215. package/dist/src/agent/tools/composio-tool.d.ts +0 -21
  216. package/dist/src/agent/tools/composio-tool.js +0 -261
@@ -3,6 +3,7 @@ import { validateWritePath } from "../../../agent/sandbox/path-policy.js";
3
3
  import { isPathUnderWorkspace, resolveWorkspaceSafePath, toWorkspaceRelativePosix } from "../../workspace-editor-path.js";
4
4
  import { getWorkspacePath } from "../../../config/workspace-path-helpers.js";
5
5
  import { buildFilePathClassifierContext, classifyFileLocation, displayNameForPath, fileRefSessionKeysMatch, resolveFileReferenceCandidate } from "../../file-path-classifier.js";
6
+ import { classifyFileReferenceFsError } from "../../file-reference-errors.js";
6
7
  import { fileReferenceRegistry } from "../../file-reference-registry.js";
7
8
  import { resolveHeartbeatMdPath } from "../../workspace-heartbeat-path.js";
8
9
  import { createGatewayRouteLogger } from "../lib/route-logger.js";
@@ -407,23 +408,43 @@ function registerWorkspaceRoutes(authenticated, deps) {
407
408
  }
408
409
  });
409
410
  let st = null;
411
+ let statError = null;
410
412
  try {
411
413
  st = await stat(candidate);
412
- } catch {
413
- st = null;
414
+ } catch (err) {
415
+ statError = err;
414
416
  }
415
- if (!st) return c.json({
416
- ok: true,
417
- payload: {
418
- inputPath: rawPath,
419
- displayName,
420
- scope: "missing",
421
- exists: false,
422
- absolutePath: candidate,
423
- capabilities: fileReferenceCapabilities("missing", false),
424
- errorCode: "FILE_NOT_FOUND"
417
+ if (!st) {
418
+ const failure = classifyFileReferenceFsError(statError);
419
+ if (failure.code !== "FILE_NOT_FOUND") {
420
+ log.warn({
421
+ err: statError,
422
+ sessionKey,
423
+ workspaceRoot,
424
+ candidate,
425
+ errorCode: failure.code
426
+ }, `Workspace file reference access failed: ${failure.message}`);
427
+ return c.json({
428
+ ok: false,
429
+ error: {
430
+ code: failure.code,
431
+ message: failure.message
432
+ }
433
+ }, failure.status === 403 ? 403 : 500);
425
434
  }
426
- });
435
+ return c.json({
436
+ ok: true,
437
+ payload: {
438
+ inputPath: rawPath,
439
+ displayName,
440
+ scope: "missing",
441
+ exists: false,
442
+ absolutePath: candidate,
443
+ capabilities: fileReferenceCapabilities("missing", false),
444
+ errorCode: "FILE_NOT_FOUND"
445
+ }
446
+ });
447
+ }
427
448
  const { scope, locationKind, manageRoute } = classifyFileLocation(candidate, classifierCtx);
428
449
  const inWorkspace = scope === "workspace";
429
450
  const isDirectory = st.isDirectory();
@@ -25,8 +25,8 @@ import { TaskApplicationService } from "../../../tasks/task-application-service.
25
25
  import { defineTaskContract } from "../../../tasks/task-contract-definition.js";
26
26
  import "../../../tasks/index.js";
27
27
  import { nextMemoryReviewAt, resolveMemoryStability } from "../../../agent/memory/lifecycle.js";
28
- import { PERSONAL_PLAYBOOK_DISABLED_TAG, PERSONAL_PLAYBOOK_ORDER_PREFIX, PERSONAL_PLAYBOOK_RULE_TAG, patchPersonalPlaybookContextTags, personalPlaybookContext } from "../../../user-context/personal-playbook.js";
29
28
  import { isUserContextMemoryKind, isUserContextRecord, projectPersonalContextSources, projectUserContextRecord, recordsDerivedFromPersonalContextSource } from "../../../user-context/projection.js";
29
+ import { PERSONAL_PLAYBOOK_DISABLED_TAG, PERSONAL_PLAYBOOK_ORDER_PREFIX, PERSONAL_PLAYBOOK_RULE_TAG, patchPersonalPlaybookContextTags, personalPlaybookContext } from "../../../user-context/personal-playbook.js";
30
30
  import { createManualUnderstanding } from "../../../user-context/manual-understanding.js";
31
31
  import { resolveDreamingAgentScope } from "../../../agent/memory/dreaming/scope.js";
32
32
  import { runDreamingPhase } from "../../../agent/memory/dreaming/runner.js";
@@ -270,7 +270,7 @@ function editableRecord(recordId) {
270
270
  }
271
271
  function memoryRecordInput(record) {
272
272
  return {
273
- providerId: record.source.provider ?? "local",
273
+ providerId: record.providerId,
274
274
  kind: record.kind,
275
275
  userId: record.scope.userId,
276
276
  sourceAgentId: record.provenance.sourceAgentId,
@@ -599,7 +599,7 @@ function registerYouRoutes(authenticated, deps) {
599
599
  const candidate = renderUserClaim(updated);
600
600
  const evidence = listUserClaimEvidence(updated.id);
601
601
  const record = upsertMemoryRecord({
602
- providerId: "connected-understanding",
602
+ providerId: "local",
603
603
  kind: candidate.kind,
604
604
  sourceAgentId: updated.agentId,
605
605
  content: candidate.content,
@@ -3,9 +3,9 @@ import { init_logger } from "../../utils/logger.js";
3
3
  import { loadConfig, saveConfig } from "../../config/loader.js";
4
4
  import { getModelRegistry } from "../../providers/model-registry.js";
5
5
  import { init_providers } from "../../providers/index.js";
6
+ import { disposeAllSessionMcpRuntimes } from "../../agent/mcp/bundle-mcp-runtime.js";
6
7
  import { sanitizeTunnelConfig } from "../../tunnel/tunnel-config.js";
7
8
  import { reloadImageGenerationProviders } from "../../agent/image/generation/provider-registry.js";
8
- import { disposeAllSessionMcpRuntimes } from "../../agent/mcp/bundle-mcp-runtime.js";
9
9
  import "../../agent/mcp/bundle-mcp-tools.js";
10
10
  import { ConfigHotReloader } from "../../config/reload.js";
11
11
  import "../../config/index.js";
@@ -242,7 +242,10 @@ async function* runGatewayAgent(deps, message, channel, chatId, attachments, thi
242
242
  runId,
243
243
  sessionKey: streamSessionKey,
244
244
  timestamp: Date.now(),
245
- payload: { messageId }
245
+ payload: {
246
+ messageId,
247
+ presentation: "answer"
248
+ }
246
249
  }]);
247
250
  yield* emitAndYield(mapper.end("success", "Message processed"));
248
251
  taskRunStatus = "succeeded";
@@ -18,6 +18,7 @@ import { loadConfig, saveConfig } from "../config/loader.js";
18
18
  import { prewarmModelRegistry } from "../providers/model-registry.js";
19
19
  import { init_providers, providers_exports } from "../providers/index.js";
20
20
  import { TaskRepository } from "../tasks/task-repository.js";
21
+ import { disposeAllSessionMcpRuntimes } from "../agent/mcp/bundle-mcp-runtime.js";
21
22
  import { resolveEffectiveGatewayPort } from "./host.js";
22
23
  import { AutomationService } from "../automations/service/automation-service.js";
23
24
  import { onAutomationProductEvent, publishAutomationProductEvent } from "../automations/product-events.js";
@@ -36,7 +37,6 @@ import { TaskOutboxDispatcher } from "../tasks/task-outbox-dispatcher.js";
36
37
  import { TaskRunDispatcher } from "../tasks/task-run-dispatcher.js";
37
38
  import { TaskSignalService } from "../tasks/task-signal-service.js";
38
39
  import "../tasks/index.js";
39
- import { disposeAllSessionMcpRuntimes } from "../agent/mcp/bundle-mcp-runtime.js";
40
40
  import "../agent/mcp/bundle-mcp-tools.js";
41
41
  import { onSessionTranscriptUpdate } from "../session/transcript-events.js";
42
42
  import { SessionIndex } from "../session/manager.js";
@@ -52,17 +52,17 @@ import { registerClarifyBridge } from "./clarify-runtime.js";
52
52
  import { ChannelManager } from "../channels/manager.js";
53
53
  import { getWorkspacePath } from "../config/workspace-path-helpers.js";
54
54
  import "../config/index.js";
55
- import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
56
- import "../knowledge/index.js";
57
- import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
58
- import { ConnectedSourceChangePublisher } from "../connectors/source-change-publisher.js";
59
- import { startConnectorSupervisor } from "../connectors/supervisor.js";
60
55
  import { DiscussionService } from "../discussions/service.js";
61
56
  import { DiscussionOrganizer } from "../discussions/organizer.js";
62
57
  import { DiscussionLiveWorker } from "../discussions/live-worker.js";
63
58
  import { DiscussionOrganizerWorker } from "../discussions/organizer-worker.js";
64
59
  import { DiscussionSealer } from "../discussions/sealer.js";
65
60
  import "../discussions/index.js";
61
+ import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
62
+ import "../knowledge/index.js";
63
+ import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
64
+ import { ConnectedSourceChangePublisher } from "../connectors/source-change-publisher.js";
65
+ import { startConnectorSupervisor } from "../connectors/supervisor.js";
66
66
  import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
67
67
  import { reconcileDreamingAutomations } from "./dreaming-automation-reconciler.js";
68
68
  import { NotesStore } from "../notes/store.js";
@@ -1,6 +1,6 @@
1
1
  import { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, shouldSilence, stripHeartbeatToken } from "./tokens.js";
2
- import { appendCronEventLines } from "./event-prompt.js";
3
2
  import { isWithinActiveHours } from "./active-hours.js";
4
3
  import { isHeartbeatContentEmpty } from "./content-check.js";
4
+ import { appendCronEventLines } from "./event-prompt.js";
5
5
  import { createHeartbeatWake } from "./wake.js";
6
6
  export { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, appendCronEventLines, createHeartbeatWake, isHeartbeatContentEmpty, isWithinActiveHours, shouldSilence, stripHeartbeatToken };
@@ -1,6 +1,6 @@
1
- import { runPostUpdateExtensionSync } from "../extensions/update.js";
2
1
  import "./update-channels.js";
3
2
  import { compareSemver, resolveNpmChannelTag } from "./update-check.js";
3
+ import { runPostUpdateExtensionSync } from "../extensions/update.js";
4
4
  import { readPackageName, readPackageVersion } from "./package-json.js";
5
5
  import { createDefaultCommandRunner, runCommandWithTimeout } from "./run-command.js";
6
6
  import { XOPC_PACKAGE_NAME, cleanupGlobalRenameDirs, createGlobalInstallEnv, detectGlobalInstallManagerForRoot, resolveGlobalInstallSpec, resolveGlobalInstallTarget } from "./update-global.js";
@@ -2,8 +2,8 @@ import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
2
2
  import { relative, resolve } from "node:path";
3
3
  import { createReadStream } from "node:fs";
4
4
  import { lstat, readdir, realpath, stat } from "node:fs/promises";
5
- import { pipeline } from "node:stream/promises";
6
5
  import { Readable, Transform } from "node:stream";
6
+ import { pipeline } from "node:stream/promises";
7
7
  import { crc32, createDeflateRaw } from "node:zlib";
8
8
  //#region src/share/share-zip.ts
9
9
  const SIG_LOCAL = 67324752;
@@ -79,6 +79,7 @@ function parseSource(json) {
79
79
  function rowToRecord(row) {
80
80
  return {
81
81
  id: row.record_id,
82
+ providerId: row.provider_id,
82
83
  kind: row.kind,
83
84
  status: row.status,
84
85
  ...row.canonical_key ? { canonicalKey: row.canonical_key } : {},
@@ -191,6 +192,7 @@ function upsertMemoryRecord(input) {
191
192
  });
192
193
  return {
193
194
  id,
195
+ providerId: input.providerId,
194
196
  kind: input.kind,
195
197
  status,
196
198
  ...input.canonicalKey ? { canonicalKey: input.canonicalKey } : {},
@@ -351,7 +353,7 @@ function searchMemoryRecords(options) {
351
353
  score: memoryLexicalSimilarity(options.query, record.content),
352
354
  snippet: record.content,
353
355
  citation: {
354
- providerId: record.source.provider ?? options.providerId ?? "local",
356
+ providerId: record.providerId,
355
357
  recordId: record.id,
356
358
  path: record.source.path,
357
359
  lineStart: record.source.lineStart,
@@ -0,0 +1,18 @@
1
+ UPDATE memory_records
2
+ SET provider_id = 'local'
3
+ WHERE provider_id IN ('personal-context', 'connected-understanding')
4
+ AND EXISTS (
5
+ SELECT 1
6
+ FROM json_each(memory_records.tags_json)
7
+ WHERE json_each.value = 'user-understanding'
8
+ );
9
+
10
+ DELETE FROM memory_records_fts;
11
+
12
+ INSERT INTO memory_records_fts (
13
+ content, record_id, provider_id, kind, user_id, source_agent_id, workspace_id
14
+ )
15
+ SELECT
16
+ content, record_id, provider_id, kind, user_id, source_agent_id, workspace_id
17
+ FROM memory_records
18
+ WHERE trim(content) <> '';
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 107;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 108;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
12
12
  /** Baseline schema version applied from schema.sql on first open. */
13
13
  const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
14
14
  /** Latest schema version this release supports (increment when adding migrations). */
15
- const XOPC_DB_SCHEMA_VERSION = 107;
15
+ const XOPC_DB_SCHEMA_VERSION = 108;
16
16
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
17
17
  function backupBeforeTaskCutover(db, databasePath) {
18
18
  db.exec("PRAGMA wal_checkpoint(FULL)");
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration) {
57
57
  * Each step runs in its own transaction and updates schema_meta on success.
58
58
  */
59
59
  function applyPendingMigrations(db, options = {}) {
60
- const targetVersion = options.targetVersion ?? 107;
60
+ const targetVersion = options.targetVersion ?? 108;
61
61
  let currentVersion = readSchemaVersion(db);
62
62
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
63
63
  if (currentVersion >= targetVersion) return currentVersion;
@@ -94,7 +94,7 @@ function applyPendingMigrations(db, options = {}) {
94
94
  }
95
95
  /** Inspect schema version without mutating the database. */
96
96
  function inspectSchemaMigrationStatus(db, options = {}) {
97
- const appVersion = options.targetVersion ?? 107;
97
+ const appVersion = options.targetVersion ?? 108;
98
98
  const dbVersion = readSchemaVersion(db);
99
99
  if (dbVersion > appVersion) return {
100
100
  dbVersion,
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
19
19
  export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
20
20
 
21
21
  /** Latest schema version this release supports (increment when adding migrations). */
22
- export const XOPC_DB_SCHEMA_VERSION = 107;
22
+ export const XOPC_DB_SCHEMA_VERSION = 108;
23
23
 
24
24
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
25
25
 
@@ -32,7 +32,7 @@ function ensureXopcDatabaseSchema(db, options = {}) {
32
32
  currentVersion = 11;
33
33
  }
34
34
  applyPendingMigrations(db, {
35
- targetVersion: 107,
35
+ targetVersion: 108,
36
36
  databasePath: options.databasePath
37
37
  });
38
38
  }
@@ -1,5 +1,5 @@
1
1
  import type { TuiToolContentBlock } from './tui-tool-result.js';
2
- export type ToolSummaryKind = 'read' | 'search' | 'exec' | 'mcp' | 'generic';
2
+ export type ToolSummaryKind = 'read' | 'search' | 'exec' | 'generic';
3
3
  export interface ToolSummaryContext {
4
4
  toolName: string;
5
5
  args: unknown;
@@ -14,7 +14,6 @@ export declare function getToolSummaryKind(toolName: string): ToolSummaryKind;
14
14
  export declare function isReadStyleTool(toolName: string): boolean;
15
15
  export declare function isSearchStyleTool(toolName: string): boolean;
16
16
  export declare function isExecStyleTool(toolName: string): boolean;
17
- export declare function isMcpStyleTool(toolName: string): boolean;
18
17
  export declare function displayToolName(toolName: string): string;
19
18
  export declare function compactPath(path: string, maxLength?: number): string;
20
19
  export declare function formatCollapsedToolSummary(ctx: ToolSummaryContext): string;
@@ -20,7 +20,6 @@ function getToolSummaryKind(toolName) {
20
20
  if (isReadStyleTool(toolName)) return "read";
21
21
  if (isSearchStyleTool(toolName)) return "search";
22
22
  if (isExecStyleTool(toolName)) return "exec";
23
- if (isMcpStyleTool(toolName)) return "mcp";
24
23
  return "generic";
25
24
  }
26
25
  function isReadStyleTool(toolName) {
@@ -60,12 +59,7 @@ function isExecStyleTool(toolName) {
60
59
  "terminal"
61
60
  ].includes(base);
62
61
  }
63
- function isMcpStyleTool(toolName) {
64
- return toolName.includes("__");
65
- }
66
62
  function displayToolName(toolName) {
67
- const parts = toolName.split("__");
68
- if (parts.length === 2 && parts[0] && parts[1]) return `${parts[0]}.${parts[1]}`;
69
63
  return toolName;
70
64
  }
71
65
  function compactPath(path, maxLength = MAX_PATH_LABEL_LENGTH) {
@@ -89,7 +83,6 @@ function formatCollapsedToolSummary(ctx) {
89
83
  }
90
84
  case "search": return formatSearchSummary(ctx.output, ctx.expandKey);
91
85
  case "exec": return formatExecSummary(ctx.output, ctx.details, ctx.isError, ctx.expandKey);
92
- case "mcp": return formatMcpSummary(ctx.output, ctx.content, ctx.expandKey);
93
86
  case "generic": return "";
94
87
  }
95
88
  }
@@ -132,7 +125,7 @@ function commandFromArgs(args) {
132
125
  return null;
133
126
  }
134
127
  function baseToolName(toolName) {
135
- return toolName.split(/__|\./).pop()?.toLowerCase() ?? toolName.toLowerCase();
128
+ return toolName.split(".").pop()?.toLowerCase() ?? toolName.toLowerCase();
136
129
  }
137
130
  function firstFiniteNumber(...values) {
138
131
  for (const value of values) {
@@ -176,15 +169,6 @@ function formatExecSummary(output, details, isError, expandKey) {
176
169
  const rows = nonBlankLines([parsed.stdout, parsed.stderr].filter(Boolean).join("\n") || output).length;
177
170
  return `${parsed.exitCode === void 0 ? isError ? "failed" : "completed" : `exit ${parsed.exitCode}`}; ${rows === 1 ? "1 output line" : `${rows} output lines`}; ${expandKey} to expand`;
178
171
  }
179
- function formatMcpSummary(output, content, expandKey) {
180
- if (content?.length) {
181
- const counts = /* @__PURE__ */ new Map();
182
- for (const block of content) counts.set(block.type, (counts.get(block.type) ?? 0) + 1);
183
- return `${[...counts.entries()].map(([type, count]) => `${count} ${type}`).join(", ")}; ${expandKey} to expand`;
184
- }
185
- const rows = nonBlankLines(output).length;
186
- return `${rows === 1 ? "1 result line" : `${rows} result lines`}; ${expandKey} to expand`;
187
- }
188
172
  function parseExecDetails(details) {
189
173
  if (!details || typeof details !== "object") return {};
190
174
  const record = details;
@@ -213,4 +197,4 @@ function extractResultPath(line) {
213
197
  return null;
214
198
  }
215
199
  //#endregion
216
- export { compactPath, displayToolName, extractExitCode, formatArgsSummary, formatCollapsedToolSummary, formatExecExpandedOutput, getToolSummaryKind, isExecStyleTool, isMcpStyleTool, isReadStyleTool, isSearchStyleTool };
200
+ export { compactPath, displayToolName, extractExitCode, formatArgsSummary, formatCollapsedToolSummary, formatExecExpandedOutput, getToolSummaryKind, isExecStyleTool, isReadStyleTool, isSearchStyleTool };
@@ -6,8 +6,8 @@ import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
7
7
  import { chmodSync, createWriteStream, existsSync, mkdirSync, rmSync } from "node:fs";
8
8
  import { randomBytes } from "node:crypto";
9
- import { pipeline } from "node:stream/promises";
10
9
  import { Readable } from "node:stream";
10
+ import { pipeline } from "node:stream/promises";
11
11
  //#region src/tunnel/frpc-binary.ts
12
12
  init_paths();
13
13
  init_logger();
@@ -4,6 +4,7 @@ import type { KnowledgeSourceItem, KnowledgeSyncRun } from '../knowledge/types.j
4
4
  import type { ConnectorLearningJob } from '../storage/sqlite/index.js';
5
5
  export type UserContextFacet = 'basics' | 'collaboration' | 'boundaries' | 'priorities' | 'people' | 'current';
6
6
  export type UserContextOrigin = 'told_by_you' | 'observed' | 'inferred' | 'connected_source';
7
+ export declare const USER_CONTEXT_MEMORY_KINDS: readonly MemoryKind[];
7
8
  export declare function isUserContextRecord(record: MemoryRecord): boolean;
8
9
  export declare function isUserContextMemoryKind(value: unknown): value is MemoryKind;
9
10
  export declare function facetForMemoryKind(kind: MemoryKind): UserContextFacet;
@@ -20,6 +20,7 @@ const CONTEXTUAL_USER_KINDS = new Set([
20
20
  "derived_insight",
21
21
  "task_lesson"
22
22
  ]);
23
+ const USER_CONTEXT_MEMORY_KINDS = [...ALWAYS_PERSONAL_KINDS, ...CONTEXTUAL_USER_KINDS];
23
24
  function isUserContextRecord(record) {
24
25
  if (ALWAYS_PERSONAL_KINDS.has(record.kind)) return true;
25
26
  return CONTEXTUAL_USER_KINDS.has(record.kind) && record.tags?.includes("user-understanding") === true;
@@ -258,4 +259,4 @@ function projectPersonalContextSources(definitions, instances, knowledge = {}) {
258
259
  });
259
260
  }
260
261
  //#endregion
261
- export { facetForMemoryKind, isPersonalContextConnector, isUserContextMemoryKind, isUserContextRecord, originForMemoryRecord, projectPersonalContextSources, projectUserContextRecord, recordsDerivedFromPersonalContextSource };
262
+ export { USER_CONTEXT_MEMORY_KINDS, facetForMemoryKind, isPersonalContextConnector, isUserContextMemoryKind, isUserContextRecord, originForMemoryRecord, projectPersonalContextSources, projectUserContextRecord, recordsDerivedFromPersonalContextSource };
@@ -2,8 +2,8 @@ import { dirname, join } from "node:path";
2
2
  import { createReadStream, createWriteStream } from "node:fs";
3
3
  import { createHash } from "node:crypto";
4
4
  import { mkdir, rm, stat } from "node:fs/promises";
5
- import { pipeline } from "node:stream/promises";
6
5
  import { Readable } from "node:stream";
6
+ import { pipeline } from "node:stream/promises";
7
7
  //#region src/voice/local/model-files.ts
8
8
  function resolveModelFileUrl(remoteHost, model, file) {
9
9
  const base = remoteHost.endsWith("/") ? remoteHost : `${remoteHost}/`;
@@ -801,7 +801,7 @@ var WorkDiscoveryService = class {
801
801
  preserveMemoryRecord(record, patch) {
802
802
  return upsertMemoryRecord({
803
803
  id: record.id,
804
- providerId: "local",
804
+ providerId: record.providerId,
805
805
  kind: record.kind,
806
806
  sourceAgentId: record.provenance.sourceAgentId,
807
807
  workspaceId: record.scope.workspaceId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.187",
3
+ "version": "0.0.188",
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",