@xopcai/xopc 0.0.208 → 0.0.211

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 (316) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-D0mYZqhc.js → activity-store-BzjFoSr0.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-MWLQWL_i.js → agent-avatar-dicebear-DTfjhfVE.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-CjhgfuVJ.js +68 -0
  6. package/dist/gateway/static/root/assets/{api-DZA1yVzM.js → api-D269PnU9.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-B2X6quAF.js → app-management-settings-panel-BFpfQDWc.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-BZW-c38q.js → appearance-settings-DLxFdqhY.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-CjmlGB5V.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-CK-gsjsJ.js → archive-plugin-DPlH4dnc.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-EJGP4rCw.js → attachment-load-xqfLLd0I.js} +1 -1
  12. package/dist/gateway/static/root/assets/automations-page-4m6Ey6wG.js +6 -0
  13. package/dist/gateway/static/root/assets/{binary-plugins-Tbss_4P-.js → binary-plugins-C0tuoPXk.js} +1 -1
  14. package/dist/gateway/static/root/assets/{block-editor-C-dOWigw.js → block-editor-Deyphj1o.js} +6 -6
  15. package/dist/gateway/static/root/assets/browser-settings-page-CAGCYx8U.js +8 -0
  16. package/dist/gateway/static/root/assets/{browser-workflow-inputs-DW06Zo1N.js → browser-workflow-inputs-CYEbXyRF.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-workflows-page-B6RnRGwm.js → browser-workflows-page-Bf0tPbGi.js} +2 -2
  18. package/dist/gateway/static/root/assets/capabilities-settings-panel-CKfLsxTI.js +7 -0
  19. package/dist/gateway/static/root/assets/{capability-presets-api-Cc3BtQar.js → capability-presets-api-DPkFA_-R.js} +1 -1
  20. package/dist/gateway/static/root/assets/capability-presets-settings-panel-CpipKNqX.js +3 -0
  21. package/dist/gateway/static/root/assets/{channel-recipient-api-BvZO5FaO.js → channel-recipient-api-DqKaAcnZ.js} +1 -1
  22. package/dist/gateway/static/root/assets/channels-settings-Bvq-O4pt.js +1 -0
  23. package/dist/gateway/static/root/assets/channels-status-swr-CrMld2l7.js +1 -0
  24. package/dist/gateway/static/root/assets/chat-terminal-dock-CTDRZa7e.js +36 -0
  25. package/dist/gateway/static/root/assets/{connectors-api-CUl6_EQJ.js → connectors-api-Buu8fif8.js} +1 -1
  26. package/dist/gateway/static/root/assets/connectors-page-CSQRzaVn.js +2 -0
  27. package/dist/gateway/static/root/assets/{cron-expression-BD9MgoE_.js → cron-expression-DTLR82NB.js} +1 -1
  28. package/dist/gateway/static/root/assets/{date-picker-ChqNmoxw.js → date-picker-DyNogHQH.js} +1 -1
  29. package/dist/gateway/static/root/assets/{dependency-picker-CDUmFs6H.js → dependency-picker-BpnCuo7B.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-D61gqxaD.js → desktop-pet-CDKI4gVB.js} +1 -1
  31. package/dist/gateway/static/root/assets/{desktop-pet-settings-QvuJvIX_.js → desktop-pet-settings-DjT5C2a3.js} +1 -1
  32. package/dist/gateway/static/root/assets/{directory-picker-path-field-DvXMvDNY.js → directory-picker-path-field-DlJY90TM.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-debug-page-DMdVTAQ3.js → extension-debug-page-DWf2z7q5.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-BNzxZtaK.js → extension-page-Dorx0kf9.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-DoEfyizU.js → extension-settings-page-B1wU9ZOB.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-config-api-o7AKvthC.js → gateway-config-api-B1lG4dNr.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-config-swr-BQbkUP5X.js → gateway-config-swr-BIxuwPQi.js} +1 -1
  38. package/dist/gateway/static/root/assets/{gateway-settings-TO5YYZ9a.js → gateway-settings-DqIOqJjM.js} +1 -1
  39. package/dist/gateway/static/root/assets/{gateway-startup-retry-DIgdpHgk.js → gateway-startup-retry-BpZgd4U-.js} +1 -1
  40. package/dist/gateway/static/root/assets/heartbeat-settings-DG4Kmgkc.js +1 -0
  41. package/dist/gateway/static/root/assets/home-page-BhqItS_s.js +1 -0
  42. package/dist/gateway/static/root/assets/image-generation-api-PkhYohDa.js +1 -0
  43. package/dist/gateway/static/root/assets/index-DLhvsU9B.css +2 -0
  44. package/dist/gateway/static/root/assets/index-_cuTcWjB.js +107 -0
  45. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-4xaM3jjU.js → keyboard-shortcuts-settings-6OQT3gQF.js} +1 -1
  46. package/dist/gateway/static/root/assets/local-app-workbench-page-DWjTmzxw.js +2 -0
  47. package/dist/gateway/static/root/assets/{local-apps-page-C1xDicdr.js → local-apps-page-DfruRAmE.js} +1 -1
  48. package/dist/gateway/static/root/assets/{locale-store-pByvK12G.js → locale-store-C5MK9WcP.js} +1 -1
  49. package/dist/gateway/static/root/assets/logs-page-BA5efZ8B.js +2 -0
  50. package/dist/gateway/static/root/assets/{management-settings-D1XdHm7v.js → management-settings-L1VYkywO.js} +1 -1
  51. package/dist/gateway/static/root/assets/{markdown-split-B_Ijq1Fr.js → markdown-split-oqgHbqt-.js} +1 -1
  52. package/dist/gateway/static/root/assets/markdown-view-DD_PgVue.css +1 -0
  53. package/dist/gateway/static/root/assets/{markdown-view-CyJlGUxB.js → markdown-view-V4rcPPH0.js} +1 -1
  54. package/dist/gateway/static/root/assets/{media-plugins-CXXNRROJ.js → media-plugins-Bb6gSX2o.js} +1 -1
  55. package/dist/gateway/static/root/assets/messages-ctG2e-ix.js +3 -0
  56. package/dist/gateway/static/root/assets/{notes-page-rkePB4CB.js → notes-page-B1rOXjpT.js} +1 -1
  57. package/dist/gateway/static/root/assets/notes-workbench-CkHXVmKP.js +4 -0
  58. package/dist/gateway/static/root/assets/{page-tabs-gw-RMQCV.js → page-tabs-CBuCKeyy.js} +1 -1
  59. package/dist/gateway/static/root/assets/{preview-open-alternatives-B8aMScJ2.js → preview-open-alternatives-BQ0tLfPO.js} +1 -1
  60. package/dist/gateway/static/root/assets/{product-open-page-CjcpkWAz.js → product-open-page-DPeFn7Hu.js} +1 -1
  61. package/dist/gateway/static/root/assets/project-detail-page-DCqet9-L.js +1 -0
  62. package/dist/gateway/static/root/assets/projects-page-D0t_AjzG.js +1 -0
  63. package/dist/gateway/static/root/assets/remote-access-hub-BUWPoBvw.js +1 -0
  64. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Ch5qq86o.js → runtime-tools-settings-panel-BCfQNzjG.js} +2 -2
  65. package/dist/gateway/static/root/assets/{schema-form-DHYWYUFt.js → schema-form-Bo7YbHYN.js} +1 -1
  66. package/dist/gateway/static/root/assets/sessions-page-vLhrrM3m.js +1 -0
  67. package/dist/gateway/static/root/assets/settings-advanced-gate-OP1y0Y8M.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-form-section-DlzZx0-i.js → settings-form-section-B9dnKr3M.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-loading-skeleton-BVLhreQi.js → settings-loading-skeleton-CYDV2JtY.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-BJU-kUnN.js → settings-page-DbrIYfS9.js} +1 -1
  71. package/dist/gateway/static/root/assets/setup-status-panel-Cxc-Ejl5.js +1 -0
  72. package/dist/gateway/static/root/assets/{share-preview-page-hvIuZXMe.js → share-preview-page-olgr7LLN.js} +1 -1
  73. package/dist/gateway/static/root/assets/shares-settings-ZOqC6-aA.js +1 -0
  74. package/dist/gateway/static/root/assets/skill-reload-api-DwvC3Iuf.js +1 -0
  75. package/dist/gateway/static/root/assets/{skills-page-Dlvuh7D-.js → skills-page-PE16CNw5.js} +1 -1
  76. package/dist/gateway/static/root/assets/{skills-page.utils-B6ddOpnf.js → skills-page.utils-nXmBcBxt.js} +1 -1
  77. package/dist/gateway/static/root/assets/{system-settings-panel-BdbCAyoA.js → system-settings-panel-C3qPwAdY.js} +1 -1
  78. package/dist/gateway/static/root/assets/task-detail-page-DCRB-5q-.js +1 -0
  79. package/dist/gateway/static/root/assets/{theme-store-BtdGacMI.js → theme-store-KR5Otp5w.js} +1 -1
  80. package/dist/gateway/static/root/assets/{typed-models-lib-CL6qHYJA.js → typed-models-lib-lMZodtDF.js} +1 -1
  81. package/dist/gateway/static/root/assets/{use-autosave-DysNnqCS.js → use-autosave-CKpatP3S.js} +1 -1
  82. package/dist/gateway/static/root/assets/user-context-page-CoiedRuA.js +1 -0
  83. package/dist/gateway/static/root/assets/{voice-api-key-field-UEsO9Jr-.js → voice-api-key-field-CDcv0Wbh.js} +1 -1
  84. package/dist/gateway/static/root/assets/{work-discovery-overlay-B9disASf.js → work-discovery-overlay-CGdT22un.js} +1 -1
  85. package/dist/gateway/static/root/assets/work-discovery-page-BwaU1RqI.js +1 -0
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-A0zTQHFQ.js → workflow-run-setup-panel-BAHYNlQt.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-DHYmh9G7.js +5 -0
  88. package/dist/gateway/static/root/index.html +10 -10
  89. package/dist/package.js +1 -1
  90. package/dist/src/agent/agent-manager.js +1 -1
  91. package/dist/src/agent/background-review/coordinator.d.ts +1 -1
  92. package/dist/src/agent/background-review/coordinator.js +4 -5
  93. package/dist/src/agent/background-review/run-background-review.js +0 -1
  94. package/dist/src/agent/background-review/settings.d.ts +1 -2
  95. package/dist/src/agent/background-review/settings.js +3 -4
  96. package/dist/src/agent/external-tools/composio-provider.js +8 -4
  97. package/dist/src/agent/image/generation/providers/xopc-cloud.js +2 -1
  98. package/dist/src/agent/image/tool-model-config.js +15 -9
  99. package/dist/src/agent/memory/builtin-provider.js +1 -2
  100. package/dist/src/agent/memory/manager.js +2 -0
  101. package/dist/src/agent/memory/sensitivity.js +1 -1
  102. package/dist/src/agent/memory/understanding/service.js +43 -19
  103. package/dist/src/agent/memory/user-context-coordinator.js +1 -1
  104. package/dist/src/agent/tools/image-generate-tool.js +23 -7
  105. package/dist/src/automations/domain/validation.d.ts +7 -7
  106. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
  107. package/dist/src/capabilities/readiness/from-config.d.ts +10 -0
  108. package/dist/src/capabilities/readiness/from-config.js +128 -0
  109. package/dist/src/capabilities/readiness/index.d.ts +3 -0
  110. package/dist/src/capabilities/readiness/index.js +3 -0
  111. package/dist/src/capabilities/readiness/planner.d.ts +3 -0
  112. package/dist/src/capabilities/readiness/planner.js +56 -0
  113. package/dist/src/capabilities/readiness/types.d.ts +35 -0
  114. package/dist/src/capabilities/readiness/types.js +1 -0
  115. package/dist/src/cli/commands/agent.js +9 -0
  116. package/dist/src/cli/commands/auth.js +4 -3
  117. package/dist/src/cli/commands/connectors.js +1 -1
  118. package/dist/src/cli/commands/models.js +2 -1
  119. package/dist/src/cli/commands/onboard/model.d.ts +3 -21
  120. package/dist/src/cli/commands/onboard/model.js +10 -86
  121. package/dist/src/cli/utils/oauth-login.d.ts +2 -0
  122. package/dist/src/cli/utils/oauth-login.js +9 -1
  123. package/dist/src/config/agent-profile.js +1 -1
  124. package/dist/src/config/index.js +2 -2
  125. package/dist/src/config/paths-state.d.ts +2 -0
  126. package/dist/src/config/paths-state.js +5 -1
  127. package/dist/src/config/paths.d.ts +1 -1
  128. package/dist/src/config/paths.js +2 -2
  129. package/dist/src/config/schema.js +1 -1
  130. package/dist/src/connectors/auth-provider-registry.d.ts +2 -1
  131. package/dist/src/connectors/auth-provider-registry.js +5 -2
  132. package/dist/src/connectors/composio-sessions.d.ts +39 -0
  133. package/dist/src/connectors/composio-sessions.js +66 -7
  134. package/dist/src/connectors/composio.d.ts +4 -1
  135. package/dist/src/connectors/composio.js +34 -7
  136. package/dist/src/connectors/connected-source-cursor.d.ts +9 -0
  137. package/dist/src/connectors/connected-source-cursor.js +30 -0
  138. package/dist/src/connectors/connected-source-ingestion.js +67 -46
  139. package/dist/src/connectors/connected-source-normalizers.d.ts +1 -0
  140. package/dist/src/connectors/connected-source-normalizers.js +33 -2
  141. package/dist/src/connectors/connected-source-sanitization.d.ts +1 -0
  142. package/dist/src/connectors/connected-source-sanitization.js +21 -0
  143. package/dist/src/connectors/connector-identity.js +10 -2
  144. package/dist/src/connectors/content-enrichment.d.ts +29 -0
  145. package/dist/src/connectors/content-enrichment.js +273 -0
  146. package/dist/src/connectors/health.js +1 -1
  147. package/dist/src/connectors/learning-coordinator.js +1 -2
  148. package/dist/src/connectors/learning-recipes.js +28 -33
  149. package/dist/src/connectors/runtime-adapter-registry.js +14 -1
  150. package/dist/src/discussions/live-worker.d.ts +1 -0
  151. package/dist/src/discussions/live-worker.js +7 -1
  152. package/dist/src/discussions/repository.js +11 -1
  153. package/dist/src/discussions/sealer.d.ts +1 -1
  154. package/dist/src/discussions/sealer.js +16 -7
  155. package/dist/src/discussions/transcript.js +27 -1
  156. package/dist/src/discussions/types.d.ts +4 -0
  157. package/dist/src/gateway/agents-admin.js +1 -1
  158. package/dist/src/gateway/hono/app.js +8 -3
  159. package/dist/src/gateway/hono/middleware/strict-rate-limit.d.ts +4 -0
  160. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +8 -1
  161. package/dist/src/gateway/hono/oauth-async.d.ts +11 -5
  162. package/dist/src/gateway/hono/oauth-async.js +29 -16
  163. package/dist/src/gateway/hono/oauth.d.ts +1 -3
  164. package/dist/src/gateway/hono/oauth.js +22 -22
  165. package/dist/src/gateway/hono/routes/agent-stream.js +4 -1
  166. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  167. package/dist/src/gateway/hono/routes/connectors.js +16 -3
  168. package/dist/src/gateway/hono/routes/deps.d.ts +1 -0
  169. package/dist/src/gateway/hono/routes/discussions.js +2 -1
  170. package/dist/src/gateway/hono/routes/lazy-bundles.js +2 -1
  171. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  172. package/dist/src/gateway/hono/routes/models.js +59 -5
  173. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +60 -0
  174. package/dist/src/gateway/hono/routes/session-input-handler.js +75 -1
  175. package/dist/src/gateway/hono/routes/understanding-sources.js +29 -0
  176. package/dist/src/gateway/hono/routes/voice.d.ts +1 -2
  177. package/dist/src/gateway/hono/routes/voice.js +16 -35
  178. package/dist/src/gateway/rate-limit/buckets.d.ts +3 -0
  179. package/dist/src/gateway/rate-limit/buckets.js +12 -0
  180. package/dist/src/gateway/service/agent-runner.d.ts +9 -1
  181. package/dist/src/gateway/service/agent-runner.js +9 -0
  182. package/dist/src/gateway/service/session-input-coordinator.d.ts +12 -0
  183. package/dist/src/gateway/service/session-input-coordinator.js +63 -6
  184. package/dist/src/gateway/service.d.ts +8 -0
  185. package/dist/src/gateway/service.js +18 -0
  186. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +1 -1
  187. package/dist/src/knowledge/connected-understanding-pipeline.js +74 -25
  188. package/dist/src/knowledge/ingestion-service.js +33 -15
  189. package/dist/src/knowledge/types.d.ts +2 -0
  190. package/dist/src/media-understanding/audio-transcription-runner.d.ts +2 -0
  191. package/dist/src/media-understanding/audio-transcription-runner.js +3 -1
  192. package/dist/src/media-understanding/runner.js +3 -1
  193. package/dist/src/media-understanding/types.d.ts +2 -0
  194. package/dist/src/providers/model-catalog-persistence.d.ts +9 -0
  195. package/dist/src/providers/model-catalog-persistence.js +172 -0
  196. package/dist/src/providers/model-catalog-ranking.d.ts +2 -0
  197. package/dist/src/providers/model-catalog-ranking.js +17 -0
  198. package/dist/src/providers/model-catalog-store.d.ts +13 -3
  199. package/dist/src/providers/model-catalog-store.js +24 -5
  200. package/dist/src/providers/model-catalog-sync-service.d.ts +3 -3
  201. package/dist/src/providers/model-catalog-sync-service.js +12 -7
  202. package/dist/src/providers/provider-auth-service.d.ts +1 -0
  203. package/dist/src/providers/provider-auth-service.js +3 -0
  204. package/dist/src/providers/provider-disconnect.d.ts +11 -0
  205. package/dist/src/providers/provider-disconnect.js +33 -0
  206. package/dist/src/providers/xopc-cloud-catalog-coordinator.d.ts +56 -0
  207. package/dist/src/providers/xopc-cloud-catalog-coordinator.js +182 -0
  208. package/dist/src/providers/xopc-cloud-model-source.d.ts +6 -10
  209. package/dist/src/providers/xopc-cloud-model-source.js +49 -27
  210. package/dist/src/retrieval/audit.d.ts +1 -0
  211. package/dist/src/retrieval/audit.js +8 -0
  212. package/dist/src/retrieval/candidateFusion.d.ts +5 -0
  213. package/dist/src/retrieval/candidateFusion.js +20 -0
  214. package/dist/src/retrieval/queryProfile.d.ts +16 -0
  215. package/dist/src/retrieval/queryProfile.js +66 -0
  216. package/dist/src/retrieval/textFeatures.d.ts +5 -0
  217. package/dist/src/retrieval/textFeatures.js +71 -0
  218. package/dist/src/session/client-history.d.ts +1 -0
  219. package/dist/src/session/client-history.js +4 -0
  220. package/dist/src/session/index.js +1 -1
  221. package/dist/src/session/store.js +1 -1
  222. package/dist/src/storage/sqlite/fts.d.ts +0 -4
  223. package/dist/src/storage/sqlite/fts.js +2 -49
  224. package/dist/src/storage/sqlite/index.d.ts +3 -2
  225. package/dist/src/storage/sqlite/index.js +6 -5
  226. package/dist/src/storage/sqlite/knowledge-repository.d.ts +1 -0
  227. package/dist/src/storage/sqlite/knowledge-repository.js +4 -0
  228. package/dist/src/storage/sqlite/memory-records-repository.js +60 -38
  229. package/dist/src/storage/sqlite/row-mappers.js +2 -2
  230. package/dist/src/storage/sqlite/session-repository.js +2 -2
  231. package/dist/src/storage/sqlite/session-turn-replace-repository.d.ts +34 -0
  232. package/dist/src/storage/sqlite/session-turn-replace-repository.js +110 -0
  233. package/dist/src/storage/sqlite/transcript-repository.js +1 -1
  234. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +15 -0
  235. package/dist/src/storage/sqlite/user-context-quality-repository.js +46 -2
  236. package/dist/src/storage/sqlite/user-context-repository.d.ts +4 -0
  237. package/dist/src/storage/sqlite/user-context-repository.js +29 -3
  238. package/dist/src/tasks/home-query-service.d.ts +3 -1
  239. package/dist/src/tasks/home-query-service.js +73 -70
  240. package/dist/src/tui/backends/embedded-backend.js +12 -4
  241. package/dist/src/tui/tui-oauth-login.js +5 -0
  242. package/dist/src/tui/tui-startup-resources.js +1 -1
  243. package/dist/src/user-context/planner.d.ts +1 -0
  244. package/dist/src/user-context/planner.js +16 -29
  245. package/dist/src/user-context/retriever.d.ts +15 -0
  246. package/dist/src/user-context/retriever.js +65 -0
  247. package/dist/src/user-context/scope.d.ts +7 -0
  248. package/dist/src/user-context/scope.js +9 -0
  249. package/dist/src/user-context/sources/activity-clustering.js +30 -117
  250. package/dist/src/user-context/sources/index.d.ts +1 -0
  251. package/dist/src/user-context/sources/index.js +2 -1
  252. package/dist/src/user-context/sources/signal-clustering.d.ts +18 -0
  253. package/dist/src/user-context/sources/signal-clustering.js +131 -0
  254. package/dist/src/voice/audio/normalize.d.ts +17 -0
  255. package/dist/src/voice/audio/normalize.js +155 -0
  256. package/dist/src/voice/language-profile.d.ts +1 -4
  257. package/dist/src/voice/language-profile.js +2 -25
  258. package/dist/src/voice/local/runtime-client.d.ts +2 -0
  259. package/dist/src/voice/local/runtime-client.js +20 -1
  260. package/dist/src/voice/local/runtime-worker.js +7 -13
  261. package/dist/src/voice/local/wav.js +1 -1
  262. package/dist/src/voice/stt/availability.d.ts +1 -4
  263. package/dist/src/voice/stt/availability.js +3 -15
  264. package/dist/src/voice/stt/config.js +1 -0
  265. package/dist/src/voice/stt/factory.js +23 -0
  266. package/dist/src/voice/stt/index.d.ts +1 -0
  267. package/dist/src/voice/stt/index.js +2 -2
  268. package/dist/src/voice/stt/list-providers.js +1 -1
  269. package/dist/src/voice/stt/providers/local-transcription.js +7 -3
  270. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +3 -1
  271. package/dist/src/voice/stt/transcribe-core.d.ts +5 -1
  272. package/dist/src/voice/stt/transcribe-core.js +13 -5
  273. package/dist/src/voice/stt/types.d.ts +2 -0
  274. package/dist/src/voice/tts/factory.d.ts +1 -1
  275. package/dist/src/voice/tts/factory.js +23 -1
  276. package/dist/src/voice/tts/merge-config.js +5 -3
  277. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +3 -1
  278. package/dist/src/voice/tts/types.d.ts +2 -0
  279. package/dist/src/voice/tts/types.js +4 -2
  280. package/dist/src/work-discovery/evaluation.d.ts +23 -0
  281. package/dist/src/work-discovery/evaluation.js +18 -1
  282. package/dist/src/work-discovery/index.js +2 -2
  283. package/package.json +4 -3
  284. package/dist/gateway/static/root/assets/agents-Bl8FQZxW.js +0 -68
  285. package/dist/gateway/static/root/assets/apps-page-CRUgTO10.js +0 -1
  286. package/dist/gateway/static/root/assets/automations-page-DrSwolhG.js +0 -6
  287. package/dist/gateway/static/root/assets/browser-settings-page-NlvDyMwD.js +0 -8
  288. package/dist/gateway/static/root/assets/capabilities-settings-panel-BWXUznw5.js +0 -7
  289. package/dist/gateway/static/root/assets/capability-presets-settings-panel-D0loEbzq.js +0 -3
  290. package/dist/gateway/static/root/assets/channels-settings-CcivCw8U.js +0 -1
  291. package/dist/gateway/static/root/assets/channels-status-swr-DkHAD2Zn.js +0 -1
  292. package/dist/gateway/static/root/assets/chat-terminal-dock-DVedGAeX.js +0 -36
  293. package/dist/gateway/static/root/assets/connectors-page-DlBSlfkv.js +0 -2
  294. package/dist/gateway/static/root/assets/heartbeat-settings-UZAn1aAQ.js +0 -1
  295. package/dist/gateway/static/root/assets/home-page-CRJDpy5E.js +0 -3
  296. package/dist/gateway/static/root/assets/index-BSjP0Wsx.css +0 -2
  297. package/dist/gateway/static/root/assets/index-C2ZYFBGL.js +0 -85
  298. package/dist/gateway/static/root/assets/local-app-workbench-page-D9bguWRo.js +0 -2
  299. package/dist/gateway/static/root/assets/logs-page-Gr-nE4nW.js +0 -2
  300. package/dist/gateway/static/root/assets/markdown-view-B12xeflb.css +0 -1
  301. package/dist/gateway/static/root/assets/messages-yG5P43Q9.js +0 -3
  302. package/dist/gateway/static/root/assets/notes-workbench-CpbD4XG2.js +0 -4
  303. package/dist/gateway/static/root/assets/project-detail-page-GvSYDbjR.js +0 -1
  304. package/dist/gateway/static/root/assets/projects-page-DPRxKGbs.js +0 -1
  305. package/dist/gateway/static/root/assets/remote-access-hub-WIzeu-gB.js +0 -1
  306. package/dist/gateway/static/root/assets/sessions-page-2XEJM0YE.js +0 -1
  307. package/dist/gateway/static/root/assets/settings-advanced-gate-g1GThZ0O.js +0 -1
  308. package/dist/gateway/static/root/assets/setup-status-panel-C6qj2L-q.js +0 -1
  309. package/dist/gateway/static/root/assets/shares-settings-BBpE1bep.js +0 -1
  310. package/dist/gateway/static/root/assets/skill-reload-api-DXORBJNk.js +0 -1
  311. package/dist/gateway/static/root/assets/task-detail-page-DC0hc8hp.js +0 -1
  312. package/dist/gateway/static/root/assets/user-context-page-Bwg4KV8B.js +0 -1
  313. package/dist/gateway/static/root/assets/work-discovery-page-CmPfOfHl.js +0 -1
  314. package/dist/gateway/static/root/assets/workflows-page-DhQNh7W6.js +0 -5
  315. package/dist/src/voice/local/runtime-dispatcher.d.ts +0 -9
  316. package/dist/src/voice/local/runtime-dispatcher.js +0 -20
@@ -11,7 +11,7 @@
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260713-1" />
12
12
  <link rel="manifest" href="/site.webmanifest?v=20260713-1" />
13
13
  <title>XOPC — Turn goals into loops. Keep what matters moving.</title>
14
- <script type="module" crossorigin src="/assets/index-C2ZYFBGL.js"></script>
14
+ <script type="module" crossorigin src="/assets/index-_cuTcWjB.js"></script>
15
15
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
@@ -24,13 +24,13 @@
24
24
  <link rel="modulepreload" crossorigin href="/assets/download-Dk-ZjtO6.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/plus-Q2yW6OE7.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/x-B_N4OPjy.js">
27
- <link rel="modulepreload" crossorigin href="/assets/messages-yG5P43Q9.js">
28
- <link rel="modulepreload" crossorigin href="/assets/locale-store-pByvK12G.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/messages-ctG2e-ix.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/locale-store-C5MK9WcP.js">
29
29
  <link rel="modulepreload" crossorigin href="/assets/cn-JdwAhgNB.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/schemas-zIBW3wiV.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/product-delivery-tRr-7IxY.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/copy-to-clipboard-HOJ79TWv.js">
33
- <link rel="modulepreload" crossorigin href="/assets/markdown-view-CyJlGUxB.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/markdown-view-V4rcPPH0.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/dist-DY4Af0fY.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/check-DUBLcKHA.js">
@@ -44,12 +44,12 @@
44
44
  <link rel="modulepreload" crossorigin href="/assets/tool-activity-R8V9l6nk.js">
45
45
  <link rel="modulepreload" crossorigin href="/assets/button-CSEbl4zT.js">
46
46
  <link rel="modulepreload" crossorigin href="/assets/config-reload-event-Bjh2zoKp.js">
47
- <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-BQbkUP5X.js">
48
- <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-DIgdpHgk.js">
49
- <link rel="modulepreload" crossorigin href="/assets/activity-store-D0mYZqhc.js">
50
- <link rel="modulepreload" crossorigin href="/assets/theme-store-BtdGacMI.js">
51
- <link rel="stylesheet" crossorigin href="/assets/markdown-view-B12xeflb.css">
52
- <link rel="stylesheet" crossorigin href="/assets/index-BSjP0Wsx.css">
47
+ <link rel="modulepreload" crossorigin href="/assets/gateway-config-swr-BIxuwPQi.js">
48
+ <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-BpZgd4U-.js">
49
+ <link rel="modulepreload" crossorigin href="/assets/activity-store-BzjFoSr0.js">
50
+ <link rel="modulepreload" crossorigin href="/assets/theme-store-KR5Otp5w.js">
51
+ <link rel="stylesheet" crossorigin href="/assets/markdown-view-DD_PgVue.css">
52
+ <link rel="stylesheet" crossorigin href="/assets/index-DLhvsU9B.css">
53
53
  </head>
54
54
  <body>
55
55
  <div id="root"></div>
package/dist/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  //#region package.json
2
- var version = "0.0.208";
2
+ var version = "0.0.211";
3
3
  //#endregion
4
4
  export { version };
@@ -149,7 +149,7 @@ var AgentManager = class {
149
149
  });
150
150
  }
151
151
  isUserContextEnabledForSession(sessionKey) {
152
- return Boolean(this.config.config?.userContext.enabled && getSessionConfig(sessionKey)?.userContextMode !== "off");
152
+ return Boolean(this.config.config?.userContext.enabled && this.config.config.userContext.understanding.enabled && getSessionConfig(sessionKey)?.userContextMode !== "off");
153
153
  }
154
154
  computeBaseWorkspacePath() {
155
155
  const cfg = this.config.config;
@@ -27,7 +27,7 @@ export declare class BackgroundReviewCoordinator {
27
27
  private readonly states;
28
28
  constructor(opts: BackgroundReviewCoordinatorOptions);
29
29
  /**
30
- * Called before the main `agent.prompt` for a user turn — bumps the memory
30
+ * Called before the main `agent.prompt` for a user turn — bumps the review
31
31
  * counter and arms a review when the cadence interval is hit.
32
32
  */
33
33
  beginUserTurn(sessionKey: string): void;
@@ -16,11 +16,11 @@ var BackgroundReviewCoordinator = class {
16
16
  this.opts = opts;
17
17
  }
18
18
  /**
19
- * Called before the main `agent.prompt` for a user turn — bumps the memory
19
+ * Called before the main `agent.prompt` for a user turn — bumps the review
20
20
  * counter and arms a review when the cadence interval is hit.
21
21
  */
22
22
  beginUserTurn(sessionKey) {
23
- const cfg = resolveBackgroundReviewSettings(this.opts.getConfig(), sessionKey);
23
+ const cfg = resolveBackgroundReviewSettings(this.opts.getConfig());
24
24
  if (!cfg.enabled) return;
25
25
  const state = this.ensureState(sessionKey);
26
26
  const intervalTurns = this.resolveReviewInterval(cfg, state);
@@ -62,7 +62,7 @@ var BackgroundReviewCoordinator = class {
62
62
  return state;
63
63
  }
64
64
  resolveReviewInterval(settings, state) {
65
- if (!settings.adaptiveCadence || !settings.agentId) return settings.reviewIntervalTurns;
65
+ if (!settings.adaptiveCadence) return settings.reviewIntervalTurns;
66
66
  const now = Date.now();
67
67
  if (state.adaptiveIntervalTurns != null && (state.adaptiveIntervalExpiresAt ?? 0) > now) return state.adaptiveIntervalTurns;
68
68
  try {
@@ -74,7 +74,6 @@ var BackgroundReviewCoordinator = class {
74
74
  state.adaptiveIntervalTurns = decision.effectiveIntervalTurns;
75
75
  state.adaptiveIntervalExpiresAt = now + 5 * 6e4;
76
76
  if (decision.slowed) log.debug({
77
- agentId: settings.agentId,
78
77
  baseIntervalTurns: decision.baseIntervalTurns,
79
78
  effectiveIntervalTurns: decision.effectiveIntervalTurns,
80
79
  reasons: decision.reasons
@@ -87,7 +86,7 @@ var BackgroundReviewCoordinator = class {
87
86
  async runReviewIfNeeded(ctx) {
88
87
  const state = this.states.get(ctx.sessionKey);
89
88
  if (!state) return;
90
- const settings = resolveBackgroundReviewSettings(this.opts.getConfig(), ctx.sessionKey);
89
+ const settings = resolveBackgroundReviewSettings(this.opts.getConfig());
91
90
  if (!settings.enabled) return;
92
91
  if (isAssistantTurnAborted(ctx.agent) || isAssistantTurnFailed(ctx.agent)) return;
93
92
  if (!ctx.lastAssistantText?.trim()) return;
@@ -110,7 +110,6 @@ async function runUnderstandingReview(params) {
110
110
  const candidates = parseUnderstandingCandidates(lastAssistantText(reviewAgent));
111
111
  const projectId = getSessionMetadata(sessionKey)?.projectId;
112
112
  await memoryManager.applyUnderstandingCandidates(candidates, {
113
- agentId: settings.agentId,
114
113
  sessionKey,
115
114
  ...projectId ? { projectId } : {},
116
115
  sourceText: "Background review of the current session transcript",
@@ -1,10 +1,9 @@
1
1
  import type { Config } from '../../config/schema.js';
2
2
  export interface BackgroundReviewSettings {
3
3
  enabled: boolean;
4
- agentId?: string;
5
4
  adaptiveCadence: boolean;
6
5
  reviewIntervalTurns: number;
7
6
  maxHistoryMessages: number;
8
7
  maxDurationMs: number;
9
8
  }
10
- export declare function resolveBackgroundReviewSettings(config: Config | undefined, _sessionKey?: string): BackgroundReviewSettings;
9
+ export declare function resolveBackgroundReviewSettings(config: Config | undefined): BackgroundReviewSettings;
@@ -6,12 +6,11 @@ const DEFAULT_SETTINGS = {
6
6
  maxHistoryMessages: 80,
7
7
  maxDurationMs: 12e4
8
8
  };
9
- function resolveBackgroundReviewSettings(config, _sessionKey) {
9
+ function resolveBackgroundReviewSettings(config) {
10
10
  if (!config) return DEFAULT_SETTINGS;
11
- const { memory, understanding } = config.userContext;
12
- const writeCapable = memory.mode === "confirmWrite" || memory.mode === "auto";
11
+ const { understanding } = config.userContext;
13
12
  return {
14
- enabled: config.userContext.enabled && writeCapable && understanding.enabled,
13
+ enabled: config.userContext.enabled && understanding.enabled,
15
14
  adaptiveCadence: understanding.adaptiveCadence,
16
15
  reviewIntervalTurns: understanding.reviewIntervalTurns,
17
16
  maxHistoryMessages: understanding.maxHistoryMessages,
@@ -3,7 +3,7 @@ import "../../storage/sqlite/index.js";
3
3
  import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
4
4
  import { connectorArgumentsHash, connectorArgumentsPreview } from "../../connectors/approval.js";
5
5
  import { ComposioSessionsAdapter } from "../../connectors/composio-sessions.js";
6
- import { getComposioToolkitScope, isComposioActionAllowedByCatalog, scopeForComposioAction } from "../../connectors/composio.js";
6
+ import { getComposioToolkitScope, getConfiguredComposioAuthConfigs, isComposioActionAllowedByCatalog, scopeForComposioAction } from "../../connectors/composio.js";
7
7
  import { getConnectorDefinition } from "../../connectors/catalog.js";
8
8
  import { externalToolRef, parseExternalToolRef } from "./refs.js";
9
9
  //#region src/agent/external-tools/composio-provider.ts
@@ -43,7 +43,8 @@ function installedConfigToolkits(config) {
43
43
  if (typeof markerRecord?.connectorId !== "string" || !runtime || typeof runtime !== "object" || Array.isArray(runtime) || runtime.type !== "composio" || runtime.role !== "toolkit" || typeof runtime.toolkit !== "string") return [];
44
44
  return [{
45
45
  connectorId: markerRecord.connectorId,
46
- toolkit: runtime.toolkit
46
+ toolkit: runtime.toolkit,
47
+ ...markerRecord.config && typeof markerRecord.config === "object" && !Array.isArray(markerRecord.config) && typeof markerRecord.config.authConfigId === "string" && markerRecord.config.authConfigId.trim() ? { authConfigId: markerRecord.config.authConfigId.trim() } : {}
47
48
  }];
48
49
  });
49
50
  }
@@ -128,7 +129,8 @@ var ComposioToolProvider = class {
128
129
  if (toolkits.length === 0) return [];
129
130
  const result = await (await this.adapter.createSession({
130
131
  principalId: available.principalId,
131
- toolkits
132
+ toolkits,
133
+ authConfigs: getConfiguredComposioAuthConfigs(this.deps.getConfig(), toolkits)
132
134
  })).search({
133
135
  query,
134
136
  toolkits
@@ -212,6 +214,7 @@ var ComposioToolProvider = class {
212
214
  const authorization = await this.adapter.authorize({
213
215
  principalId: available.principalId,
214
216
  toolkit,
217
+ authConfigId: installedConfigToolkits(this.deps.getConfig()).find((item) => item.connectorId === resolved.installation.connectorId)?.authConfigId,
215
218
  installationId: resolved.installation.id,
216
219
  alias: typeof executionArgs.alias === "string" ? executionArgs.alias : void 0
217
220
  });
@@ -245,7 +248,8 @@ var ComposioToolProvider = class {
245
248
  const result = await this.adapter.executeWithPolicy({
246
249
  context: {
247
250
  principalId: available.principalId,
248
- toolkits: [toolkit]
251
+ toolkits: [toolkit],
252
+ authConfigs: getConfiguredComposioAuthConfigs(this.deps.getConfig(), [toolkit])
249
253
  },
250
254
  installation: resolved.installation,
251
255
  connection,
@@ -1,6 +1,7 @@
1
1
  import { getModelCatalogStore, init_model_catalog_store } from "../../../../providers/model-catalog-store.js";
2
2
  import { init_xopc_cloud_config, resolveXopcModelRouterUrl } from "../../../../providers/xopc-cloud-config.js";
3
3
  import { getProviderAuthService, init_provider_auth_service } from "../../../../providers/provider-auth-service.js";
4
+ import { compareCatalogModels } from "../../../../providers/model-catalog-ranking.js";
4
5
  import { createOpenAiImagesProvider } from "../openai-images-provider.js";
5
6
  //#region src/agent/image/generation/providers/xopc-cloud.ts
6
7
  init_model_catalog_store();
@@ -8,7 +9,7 @@ init_provider_auth_service();
8
9
  init_xopc_cloud_config();
9
10
  function buildXopcCloudImageGenerationProvider() {
10
11
  const source = getModelCatalogStore().getSource("xopc-cloud");
11
- const models = source?.models.filter((model) => model.availability === "available" && model.kind === "image" && model.operations.includes("images.generate")) ?? [];
12
+ const models = source?.models.filter((model) => model.availability === "available" && model.kind === "image" && model.operations.includes("images.generate")).sort((left, right) => compareCatalogModels(left, right, source.recommended?.["image-generation"])) ?? [];
12
13
  if (models.length === 0) return void 0;
13
14
  const modelCapabilities = Object.fromEntries(models.map((model) => [model.id, toProviderCapabilities(model)]));
14
15
  const defaultModel = models[0].id;
@@ -3,6 +3,8 @@ import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
3
3
  import { resolveEffectiveAgentManifestForAgent } from "../../config/agent-profile.js";
4
4
  import { getDefaultModelSync, getModelsByProvider, init_providers, isProviderConfiguredSync, resolveModel } from "../../providers/index.js";
5
5
  import { resolveAgentModelFallbackValues, resolveAgentModelPrimaryValue } from "../../config/model-input.js";
6
+ import { buildCapabilityPlansForConfig } from "../../capabilities/readiness/from-config.js";
7
+ import "../../capabilities/readiness/index.js";
6
8
  //#region src/agent/image/tool-model-config.ts
7
9
  init_schema();
8
10
  init_agent_scope();
@@ -124,10 +126,16 @@ function firstVisionModelRef(provider) {
124
126
  */
125
127
  function resolveEffectiveImageModelConfig(params) {
126
128
  const explicit = resolveConfiguredImageModelConfig(params);
127
- if (hasToolModelConfig(explicit)) return {
128
- ...explicit,
129
- source: "explicit"
130
- };
129
+ if (hasToolModelConfig(explicit)) {
130
+ const managed = params.cfg ? buildCapabilityPlansForConfig(params.cfg).vision : void 0;
131
+ const managedRefs = managed?.primary ? [managed.primary, ...managed.fallbacks].map((candidate) => `${candidate.provider}/${candidate.model}`) : [];
132
+ const fallbacks = [...new Set([...explicit.fallbacks ?? [], ...managedRefs])].filter((ref) => ref !== explicit.primary);
133
+ return {
134
+ ...explicit,
135
+ ...fallbacks.length > 0 ? { fallbacks } : {},
136
+ source: "explicit"
137
+ };
138
+ }
131
139
  const roleCandidates = collectRoleImageModelCandidates(params);
132
140
  if (roleCandidates.length > 0) {
133
141
  const [first, ...rest] = roleCandidates;
@@ -143,13 +151,11 @@ function resolveEffectiveImageModelConfig(params) {
143
151
  const primaryCandidates = [];
144
152
  const vision = firstVisionModelRef(primary.provider);
145
153
  if (vision) primaryCandidates.push(vision);
154
+ const managed = params.cfg ? buildCapabilityPlansForConfig(params.cfg).vision : void 0;
155
+ const managedRefs = managed?.primary ? [managed.primary, ...managed.fallbacks].map((candidate) => `${candidate.provider}/${candidate.model}`) : [];
146
156
  return buildToolModelConfigFromCandidates({
147
157
  explicit,
148
- candidates: [
149
- ...primaryCandidates,
150
- firstVisionModelRef("openai"),
151
- firstVisionModelRef("anthropic")
152
- ],
158
+ candidates: [...primaryCandidates, ...managedRefs],
153
159
  source: "auto-provider"
154
160
  });
155
161
  }
@@ -16,7 +16,7 @@ var BuiltinMemoryProvider = class {
16
16
  update: true,
17
17
  delete: true,
18
18
  keywordSearch: true,
19
- semanticSearch: true,
19
+ semanticSearch: false,
20
20
  hybridSearch: true,
21
21
  citations: true,
22
22
  sync: false,
@@ -42,7 +42,6 @@ var BuiltinMemoryProvider = class {
42
42
  unscopedProjectOnly: request.scope?.projectId == null,
43
43
  visibleToWorkspaceId: request.scope?.workspaceId,
44
44
  unscopedWorkspaceOnly: request.scope?.workspaceId == null,
45
- providerId: this.id,
46
45
  kinds: request.kinds,
47
46
  maxResults: request.maxResults,
48
47
  minScore: request.minScore
@@ -1,5 +1,6 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { retrievalQueryAuditValue } from "../../retrieval/audit.js";
3
4
  import { setKnowledgeSourceItemSynthesisStatus } from "../../storage/sqlite/knowledge-repository.js";
4
5
  import { appendMemoryTraceEvent } from "../../storage/sqlite/memory-records-repository.js";
5
6
  import "../../storage/sqlite/index.js";
@@ -475,6 +476,7 @@ function writeTargetForRecord(request) {
475
476
  function sanitizeTraceRequest(request) {
476
477
  if (!request || typeof request !== "object") return request;
477
478
  const copy = { ...request };
479
+ if (typeof copy.query === "string") copy.query = retrievalQueryAuditValue(copy.query);
478
480
  if (typeof copy.content === "string" && copy.content.length > 500) copy.content = `${copy.content.slice(0, 500)}…`;
479
481
  return copy;
480
482
  }
@@ -5,7 +5,7 @@ function inferMemorySensitivity(content) {
5
5
  return /家庭|住址|生日|健康|关系|family|address|birthday|health/i.test(content) ? "personal" : "normal";
6
6
  }
7
7
  function redactSensitiveMemoryText(content) {
8
- return content.replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g, "[REDACTED PRIVATE KEY]").replace(/\b(api[_-]?key|access[_-]?key|token|password|secret|credential|private[_-]?key|bearer)\b\s*[:=]?\s*[^\s,;]+/gi, "$1=[REDACTED]").replace(/(密钥|密码|令牌|私钥)\s*[::=]?\s*[^\s,;]+/g, "$1=[REDACTED]").replace(/\b(?:sk|gh[opsu]|xox[abprs])-[a-z0-9_-]{8,}\b/gi, "[REDACTED TOKEN]").replace(/\bAKIA[A-Z0-9]{12,}\b/g, "[REDACTED ACCESS KEY]");
8
+ return content.replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g, "[REDACTED PRIVATE KEY]").replace(/\b(api[_-]?key|access[_-]?key|token|password|secret|credential|private[_-]?key|bearer)\b\s*[:=]?\s*[^\s,;]+/gi, "$1=[REDACTED]").replace(/(密钥|密码|令牌|私钥)\s*[::=]?\s*[^\s,;]+/g, "$1=[REDACTED]").replace(/\b(?:sk|gh[opsu]|xox[abprs])-[a-z0-9_-]{8,}\b/gi, "[REDACTED TOKEN]").replace(/\bAKIA[A-Z0-9]{12,}\b/g, "[REDACTED ACCESS KEY]").replace(/\b(ssn|social security|bank account|credit card|medical record)\b(?:\s+(?:is|number))?\s*[:=]?\s*[^\s,;]+/gi, "$1=[REDACTED]").replace(/(身份证|银行卡|信用卡|医疗记录)\s*(?:是|号码)?\s*[::=]?\s*[^\s,;]+/g, "$1=[REDACTED]");
9
9
  }
10
10
  //#endregion
11
11
  export { inferMemorySensitivity, redactSensitiveMemoryText };
@@ -103,31 +103,63 @@ var UserUnderstandingService = class {
103
103
  rejected: 0,
104
104
  createdRecords: []
105
105
  };
106
+ const safeCandidates = candidates.filter((candidate) => {
107
+ const content = normalizeContent(candidate.content);
108
+ const sensitivity = effectiveSensitivity(candidate.sensitivity, content);
109
+ return sensitivity !== "secret" && sensitivity !== "regulated";
110
+ });
111
+ if (!safeCandidates.length) return {
112
+ proposed: candidates.length,
113
+ created: 0,
114
+ deduplicated: 0,
115
+ rejected: candidates.length,
116
+ createdRecords: []
117
+ };
106
118
  const evidence = createContextEvidence({
107
119
  sourceType: "conversation",
108
120
  sourceRef: params.sessionKey ? `session:${params.sessionKey}:turn:${params.turnId ?? "unknown"}` : `turn:${params.turnId ?? "unknown"}`,
109
- redactedExcerpt: redactSensitiveMemoryText(params.userContent).slice(0, MAX_CANDIDATE_CHARS),
121
+ redactedExcerpt: redactSensitiveMemoryText(safeCandidates.map((candidate) => candidate.content).join("\n")).slice(0, MAX_CANDIDATE_CHARS),
110
122
  trustLevel: "owner",
111
123
  observedAt: Date.now()
112
124
  });
125
+ const result = await this.applyCandidates(safeCandidates, {
126
+ sessionKey: params.sessionKey,
127
+ workspaceId: params.workspaceId,
128
+ projectId: params.projectId,
129
+ evidenceIds: [evidence.id],
130
+ reviewSource: "turn",
131
+ supersedesRecordIds: params.correctionTargetRecordIds
132
+ });
113
133
  return {
114
- ...await this.applyCandidates(candidates, {
115
- sessionKey: params.sessionKey,
116
- workspaceId: params.workspaceId,
117
- projectId: params.projectId,
118
- evidenceIds: [evidence.id],
119
- reviewSource: "turn",
120
- supersedesRecordIds: params.correctionTargetRecordIds
121
- }),
134
+ ...result,
135
+ proposed: candidates.length,
136
+ rejected: result.rejected + candidates.length - safeCandidates.length,
122
137
  sourceItemId: evidence.id
123
138
  };
124
139
  }
125
140
  async applyCandidates(candidates, context) {
126
141
  let created = 0;
127
142
  let deduplicated = 0;
128
- let rejected = 0;
129
143
  const createdRecords = [];
130
144
  const correctionTarget = context.supersedesRecordIds?.length === 1 ? context.supersedesRecordIds[0] : void 0;
145
+ const eligible = candidates.slice(0, 10).map((candidate) => {
146
+ const content = normalizeContent(candidate.content);
147
+ return {
148
+ candidate,
149
+ content,
150
+ sensitivity: effectiveSensitivity(candidate.sensitivity, content),
151
+ scope: scopeForCandidate(candidate, context),
152
+ key: candidate.canonicalKey ?? canonicalUnderstandingKey(candidate.kind, content)
153
+ };
154
+ }).filter(({ candidate, content, sensitivity, scope, key }) => content.length >= 4 && candidate.confidence >= .55 && sensitivity !== "secret" && sensitivity !== "regulated" && !isUnderstandingSuppressed(key, scope));
155
+ let rejected = candidates.length - eligible.length;
156
+ if (!eligible.length) return {
157
+ proposed: candidates.length,
158
+ created,
159
+ deduplicated,
160
+ rejected,
161
+ createdRecords
162
+ };
131
163
  const evidenceIds = [...new Set(context.evidenceIds ?? [])];
132
164
  const sourceItemIds = [context.sourceItemId, ...context.sourceItemIds ?? []].filter((value) => Boolean(value));
133
165
  for (const sourceItemId of [...new Set(sourceItemIds)]) {
@@ -141,15 +173,7 @@ var UserUnderstandingService = class {
141
173
  });
142
174
  evidenceIds.push(evidence.id);
143
175
  }
144
- for (const candidate of candidates.slice(0, 10)) {
145
- const content = normalizeContent(candidate.content);
146
- const sensitivity = effectiveSensitivity(candidate.sensitivity, content);
147
- const scope = scopeForCandidate(candidate, context);
148
- const key = candidate.canonicalKey ?? canonicalUnderstandingKey(candidate.kind, content);
149
- if (content.length < 4 || candidate.confidence < .55 || sensitivity === "secret" || sensitivity === "regulated" || isUnderstandingSuppressed(key, scope)) {
150
- rejected += 1;
151
- continue;
152
- }
176
+ for (const { candidate, content, sensitivity, scope, key } of eligible) {
153
177
  const duplicate = findDuplicateUnderstanding(listUnderstandings(), {
154
178
  kind: candidate.kind,
155
179
  statement: content,
@@ -43,8 +43,8 @@ var UserContextCoordinator = class {
43
43
  consentRequests: [],
44
44
  estimatedTokens: 0
45
45
  });
46
- const config = this.options.getConfig();
47
46
  if (!this.options.isEnabledForSession(sessionKey)) return empty();
47
+ const config = this.options.getConfig();
48
48
  if (!isPrivateSession(sessionKey)) return empty();
49
49
  const userQuery = extractAgentUserPlainText(userMessage);
50
50
  const taskContext = assembleTaskContext(sessionKey, userQuery);
@@ -1,6 +1,8 @@
1
1
  import { getAgentDefaultImageGenerationModelConfig, init_schema } from "../../config/schema.js";
2
2
  import { imageAssetFromDataUrl, imageFileExtensionForMimeType, mimeTypeFromFileName, parseImageDataUrl, sniffImageMimeType } from "../image/generation/image-assets.js";
3
3
  import { persistToolMedia } from "./tool-media.js";
4
+ import { buildCapabilityPlansForConfig } from "../../capabilities/readiness/from-config.js";
5
+ import "../../capabilities/readiness/index.js";
4
6
  import { applyImageGenerationModelConfigDefaults } from "../image/image-helpers.js";
5
7
  import { isFailoverError } from "../failover-error.js";
6
8
  import { getImageGenerationProvider } from "../image/generation/provider-registry.js";
@@ -127,14 +129,28 @@ async function loadInputImages(params) {
127
129
  }
128
130
  function resolveImageGenerationModelConfigForTool(params) {
129
131
  const explicit = params.cfg ? getAgentDefaultImageGenerationModelConfig(params.cfg, params.agentId) : void 0;
130
- if (explicit?.primary?.trim()) return {
131
- primary: explicit.primary.trim(),
132
- ...explicit.fallbacks?.length ? { fallbacks: explicit.fallbacks } : {},
133
- ...explicit.timeoutMs ? { timeoutMs: explicit.timeoutMs } : {},
134
- ...explicit.autoProviderFallback ? { autoProviderFallback: true } : {}
135
- };
132
+ if (explicit?.primary?.trim()) {
133
+ const plan = buildCapabilityPlansForConfig(params.cfg)["image-generation"];
134
+ const primarySlash = explicit.primary.indexOf("/");
135
+ const primaryProvider = primarySlash > 0 ? explicit.primary.slice(0, primarySlash) : "";
136
+ const managed = plan.primary ? [plan.primary, ...plan.fallbacks].filter((candidate) => explicit.autoProviderFallback || candidate.provider === primaryProvider).map((candidate) => `${candidate.provider}/${candidate.model}`) : [];
137
+ const fallbacks = [...new Set([...explicit.fallbacks ?? [], ...managed])].filter((ref) => ref !== explicit.primary);
138
+ return {
139
+ primary: explicit.primary.trim(),
140
+ ...fallbacks.length ? { fallbacks } : {},
141
+ ...explicit.timeoutMs ? { timeoutMs: explicit.timeoutMs } : {},
142
+ ...explicit.autoProviderFallback ? { autoProviderFallback: true } : {}
143
+ };
144
+ }
145
+ let planned;
146
+ if (params.cfg) try {
147
+ planned = buildCapabilityPlansForConfig(params.cfg)["image-generation"];
148
+ } catch {
149
+ planned = void 0;
150
+ }
151
+ const plannedRefs = planned?.primary ? [planned.primary, ...planned.fallbacks].map((candidate) => `${candidate.provider}/${candidate.model}`) : [];
136
152
  const providers = listImageGenerationProvidersSummary();
137
- const candidates = [];
153
+ const candidates = [...plannedRefs];
138
154
  for (const providerSummary of providers) {
139
155
  const provider = getImageGenerationProvider(providerSummary.id);
140
156
  let configured = false;
@@ -117,8 +117,8 @@ export declare const AutomationActionSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
117
117
  type: z.ZodLiteral<"add_wait">;
118
118
  wait: z.ZodObject<{
119
119
  kind: z.ZodEnum<{
120
- paused: "paused";
121
120
  approval: "approval";
121
+ paused: "paused";
122
122
  dependency: "dependency";
123
123
  user_input: "user_input";
124
124
  external_event: "external_event";
@@ -294,8 +294,8 @@ export declare const AutomationSchema: z.ZodObject<{
294
294
  type: z.ZodLiteral<"add_wait">;
295
295
  wait: z.ZodObject<{
296
296
  kind: z.ZodEnum<{
297
- paused: "paused";
298
297
  approval: "approval";
298
+ paused: "paused";
299
299
  dependency: "dependency";
300
300
  user_input: "user_input";
301
301
  external_event: "external_event";
@@ -341,8 +341,8 @@ export declare const AutomationSchema: z.ZodObject<{
341
341
  continuous: "continuous";
342
342
  }>>;
343
343
  notificationPolicy: z.ZodDefault<z.ZodEnum<{
344
- none: "none";
345
344
  all: "all";
345
+ none: "none";
346
346
  attention: "attention";
347
347
  }>>;
348
348
  completionWebhookUrl: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
@@ -456,8 +456,8 @@ export declare const CreateAutomationSchema: z.ZodObject<{
456
456
  type: z.ZodLiteral<"add_wait">;
457
457
  wait: z.ZodObject<{
458
458
  kind: z.ZodEnum<{
459
- paused: "paused";
460
459
  approval: "approval";
460
+ paused: "paused";
461
461
  dependency: "dependency";
462
462
  user_input: "user_input";
463
463
  external_event: "external_event";
@@ -536,8 +536,8 @@ export declare const CreateAutomationSchema: z.ZodObject<{
536
536
  continuous: "continuous";
537
537
  }>>;
538
538
  notificationPolicy: z.ZodDefault<z.ZodEnum<{
539
- none: "none";
540
539
  all: "all";
540
+ none: "none";
541
541
  attention: "attention";
542
542
  }>>;
543
543
  completionWebhookUrl: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
@@ -645,8 +645,8 @@ export declare const UpdateAutomationSchema: z.ZodObject<{
645
645
  type: z.ZodLiteral<"add_wait">;
646
646
  wait: z.ZodObject<{
647
647
  kind: z.ZodEnum<{
648
- paused: "paused";
649
648
  approval: "approval";
649
+ paused: "paused";
650
650
  dependency: "dependency";
651
651
  user_input: "user_input";
652
652
  external_event: "external_event";
@@ -741,8 +741,8 @@ export declare const UpdateAutomationSchema: z.ZodObject<{
741
741
  continuous: "continuous";
742
742
  }>>>;
743
743
  notificationPolicy: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
744
- none: "none";
745
744
  all: "all";
745
+ none: "none";
746
746
  attention: "attention";
747
747
  }>>>;
748
748
  completionWebhookUrl: z.ZodOptional<z.ZodPreprocess<z.ZodOptional<z.ZodString>>>;
@@ -12,7 +12,7 @@ export declare function buildAutomationDraftResponse(draft: GeneratedAutomationD
12
12
  automation: {
13
13
  name: string;
14
14
  conversationMode: "new_session" | "continuous";
15
- notificationPolicy: "none" | "all" | "attention";
15
+ notificationPolicy: "all" | "none" | "attention";
16
16
  projectId?: string;
17
17
  action?: {
18
18
  kind: "agent";
@@ -79,7 +79,7 @@ export declare function buildAutomationDraftResponse(draft: GeneratedAutomationD
79
79
  } | {
80
80
  type: "add_wait";
81
81
  wait: {
82
- kind: "paused" | "approval" | "dependency" | "user_input" | "external_event" | "scheduled_time" | "retry_backoff";
82
+ kind: "approval" | "paused" | "dependency" | "user_input" | "external_event" | "scheduled_time" | "retry_backoff";
83
83
  reason: string;
84
84
  condition: Record<string, unknown>;
85
85
  resumeAt?: number;
@@ -0,0 +1,10 @@
1
+ import type { Config } from '../../config/schema.js';
2
+ import { type ModelCatalogSnapshot } from '../../providers/model-catalog-store.js';
3
+ import type { CapabilityId, CapabilityPlan } from './types.js';
4
+ interface BuildPlansOptions {
5
+ catalog?: ModelCatalogSnapshot;
6
+ providerReady?: (providerId: string) => boolean;
7
+ localSttReady?: boolean;
8
+ }
9
+ export declare function buildCapabilityPlansForConfig(config: Config, options?: BuildPlansOptions): Record<CapabilityId, CapabilityPlan>;
10
+ export {};