@xopcai/xopc 0.0.161 → 0.0.163

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 (334) hide show
  1. package/README.md +4 -2
  2. package/README.zh-CN.md +4 -2
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{activity-store-o7GRljfD.js → activity-store-Xj95LzTv.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-9R3szLMc.js → agent-avatar-dicebear-C-QeUFwU.js} +1 -1
  7. package/dist/gateway/static/root/assets/agents-DVKlWKJE.js +2 -0
  8. package/dist/gateway/static/root/assets/{api-jSTqFMq9.js → api-BTLmAm1_.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-D81cyE76.js → app-management-settings-panel-zc6Gf-S5.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-Ct6bZQCV.js → appearance-settings-0fMLnOWn.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-BZXEJDIV.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-CfD7AZKn.js → archive-plugin-DOiR_E21.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-CP_Gaxt3.js → attachment-load-BxmYl1D1.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automation-suggestion-card-BGKM_NDZ.js → automation-suggestion-card-BhZOirad.js} +1 -1
  15. package/dist/gateway/static/root/assets/automations-page-B8CnkoXv.js +6 -0
  16. package/dist/gateway/static/root/assets/{binary-plugins-IPr2EVnS.js → binary-plugins-DTTKsvgk.js} +1 -1
  17. package/dist/gateway/static/root/assets/{block-editor-B6aHEGA6.js → block-editor-C7se7iqg.js} +46 -46
  18. package/dist/gateway/static/root/assets/browser-settings-page-BCPWKI9V.js +8 -0
  19. package/dist/gateway/static/root/assets/browser-workflow-inputs-kxmStCcv.js +1 -0
  20. package/dist/gateway/static/root/assets/browser-workflows-page-CwYf9OM_.js +3 -0
  21. package/dist/gateway/static/root/assets/capabilities-settings-panel-C7lr_mX2.js +2 -0
  22. package/dist/gateway/static/root/assets/{capability-presets-api-CCX9-LjU.js → capability-presets-api-BZKh2cWX.js} +1 -1
  23. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Ble9kHRu.js +2 -0
  24. package/dist/gateway/static/root/assets/{channel-recipient-api-MmLMLDWf.js → channel-recipient-api-r7tdbnJE.js} +1 -1
  25. package/dist/gateway/static/root/assets/channels-settings-CtQQQHrv.js +1 -0
  26. package/dist/gateway/static/root/assets/channels-status-swr-_VirfMKW.js +1 -0
  27. package/dist/gateway/static/root/assets/{connector-logo-BbjzIs87.js → connector-logo-BpnQYAxA.js} +1 -1
  28. package/dist/gateway/static/root/assets/connectors-page-BXWJSJeY.js +2 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-CYH5ZSXy.js → desktop-pet-B86W4a5c.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-DQLqGLc0.js → desktop-pet-settings-uv8Grtgk.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-ClsiXhmz.js → directory-picker-path-field-C4TTvf7p.js} +1 -1
  32. package/dist/gateway/static/root/assets/{dreaming-settings-CjMPPdzg.js → dreaming-settings-CzJAUPvM.js} +3 -3
  33. package/dist/gateway/static/root/assets/{extension-debug-page-57eizjhB.js → extension-debug-page-Ci2mOYUt.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-CsbSb3u1.js → extension-page-DeXdmhXQ.js} +1 -1
  35. package/dist/gateway/static/root/assets/extension-settings-page-C93vaOsU.js +1 -0
  36. package/dist/gateway/static/root/assets/{gateway-config-api-DIPJuzBZ.js → gateway-config-api-C31Hlblp.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-settings-CDLqAQY7.js → gateway-settings-D3zS6RZh.js} +1 -1
  38. package/dist/gateway/static/root/assets/{gateway-startup-retry-DrfSJtvT.js → gateway-startup-retry-CSRvCqxh.js} +1 -1
  39. package/dist/gateway/static/root/assets/goal-create-dialog-CWp2b7__.js +1 -0
  40. package/dist/gateway/static/root/assets/goal-detail-page-Dtm29FxD.js +4 -0
  41. package/dist/gateway/static/root/assets/{goals-config-api-lGC10UkU.js → goals-config-api-D4wYNRrf.js} +1 -1
  42. package/dist/gateway/static/root/assets/goals-page-jMzBJs6e.js +2 -0
  43. package/dist/gateway/static/root/assets/{goals-settings-BWq0pdrA.js → goals-settings-Bx2jVvhQ.js} +1 -1
  44. package/dist/gateway/static/root/assets/{heartbeat-settings-D4o8BJVv.js → heartbeat-settings-BEIF1eXy.js} +1 -1
  45. package/dist/gateway/static/root/assets/index-BXtJvaQl.css +1 -0
  46. package/dist/gateway/static/root/assets/index-HZdBKfk_.js +199 -0
  47. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-6T2QYehS.js → keyboard-shortcuts-settings-DOEDpvTM.js} +1 -1
  48. package/dist/gateway/static/root/assets/local-app-workbench-page-CseW9jD3.js +2 -0
  49. package/dist/gateway/static/root/assets/{local-apps-page-DCjg2K9f.js → local-apps-page-B0OpGpxv.js} +1 -1
  50. package/dist/gateway/static/root/assets/{locale-store-Dar-xqQr.js → locale-store-Ys6RP7Be.js} +1 -1
  51. package/dist/gateway/static/root/assets/logs-page-DVqPbth5.js +7 -0
  52. package/dist/gateway/static/root/assets/{markdown-split-rt1XO43g.js → markdown-split-CEZwysCH.js} +1 -1
  53. package/dist/gateway/static/root/assets/{media-plugins-Bwo8CJuh.js → media-plugins-CpGKE7B0.js} +1 -1
  54. package/dist/gateway/static/root/assets/messages-BzI9Wx30.js +5 -0
  55. package/dist/gateway/static/root/assets/{notes-page-Dp-pkX7d.js → notes-page-CdiuDZ5a.js} +1 -1
  56. package/dist/gateway/static/root/assets/notes-workbench-mrc3xtpn.js +4 -0
  57. package/dist/gateway/static/root/assets/{page-tabs-CzZ4iKOb.js → page-tabs-BkH5AVV2.js} +1 -1
  58. package/dist/gateway/static/root/assets/{preview-open-alternatives-3E_Qa-58.js → preview-open-alternatives-CQai8f9D.js} +1 -1
  59. package/dist/gateway/static/root/assets/{product-open-page-B2T48Sbt.js → product-open-page-B2kSdB2b.js} +1 -1
  60. package/dist/gateway/static/root/assets/project-detail-page-CfhPJLkH.js +1 -0
  61. package/dist/gateway/static/root/assets/projects-page-BfMoKjdm.js +1 -0
  62. package/dist/gateway/static/root/assets/remote-access-hub-CrDtcsZ9.js +1 -0
  63. package/dist/gateway/static/root/assets/save-bar-controls-NGYnO7n7.js +1 -0
  64. package/dist/gateway/static/root/assets/schedule-field-nLOphnv3.js +1 -0
  65. package/dist/gateway/static/root/assets/{schema-form-DC-iU5IG.js → schema-form-D0e90ndE.js} +1 -1
  66. package/dist/gateway/static/root/assets/sessions-page-D3DbF3dV.js +1 -0
  67. package/dist/gateway/static/root/assets/settings-advanced-gate-BZp0O2dH.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-form-section-CNqF6IwY.js → settings-form-section-X2Sl-EAk.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-loading-skeleton-DkvwitK_.js → settings-loading-skeleton-DOnUabm7.js} +1 -1
  70. package/dist/gateway/static/root/assets/settings-page-C4UUNi1n.js +1 -0
  71. package/dist/gateway/static/root/assets/{settings-page-layout-DWvNgISx.js → settings-page-layout-C1yYqbT6.js} +1 -1
  72. package/dist/gateway/static/root/assets/setup-status-panel-84iao4DZ.js +1 -0
  73. package/dist/gateway/static/root/assets/{share-preview-page-DGpSPW-n.js → share-preview-page-Cfy_pH7V.js} +1 -1
  74. package/dist/gateway/static/root/assets/shares-settings-DtcwQvRG.js +1 -0
  75. package/dist/gateway/static/root/assets/skill-reload-api-L7j5Gc8Z.js +1 -0
  76. package/dist/gateway/static/root/assets/skills-page-1Ps8PjsP.js +2 -0
  77. package/dist/gateway/static/root/assets/{system-settings-panel-8TxxSbUw.js → system-settings-panel-Da81RJ6G.js} +1 -1
  78. package/dist/gateway/static/root/assets/{theme-store-B5FzMWOx.js → theme-store-DflSp9o4.js} +1 -1
  79. package/dist/gateway/static/root/assets/time-picker-BIkOW-2L.js +1 -0
  80. package/dist/gateway/static/root/assets/{typed-models-lib-DEGtSA5h.js → typed-models-lib--HptwFcD.js} +1 -1
  81. package/dist/gateway/static/root/assets/{use-channel-catalog-BDU6FneG.js → use-channel-catalog-CMHY4ZfW.js} +1 -1
  82. package/dist/gateway/static/root/assets/user-context-page-BYAAs2iW.js +1 -0
  83. package/dist/gateway/static/root/assets/voice-api-key-field-nvIZerol.js +1 -0
  84. package/dist/gateway/static/root/assets/work-discovery-page-J35JkJ7_.js +1 -0
  85. package/dist/gateway/static/root/assets/work-item-detail-page-C4wYDYqV.js +1 -0
  86. package/dist/gateway/static/root/assets/work-page-DMvitV6c.js +1 -0
  87. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Cwi8Pz7n.js → workflow-run-setup-panel-D96MHABy.js} +2 -2
  88. package/dist/gateway/static/root/assets/workflows-page-JMN0nMbM.js +11 -0
  89. package/dist/gateway/static/root/index.html +7 -7
  90. package/dist/package.js +1 -1
  91. package/dist/src/agent/agent-manager.d.ts +1 -0
  92. package/dist/src/agent/agent-manager.js +1 -0
  93. package/dist/src/agent/client-error-format.d.ts +1 -1
  94. package/dist/src/agent/client-error-format.js +9 -5
  95. package/dist/src/agent/embedded/run-for-session.js +38 -31
  96. package/dist/src/agent/embedded/session-runner.d.ts +1 -0
  97. package/dist/src/agent/embedded/session-runner.js +12 -4
  98. package/dist/src/agent/failover-error.d.ts +1 -1
  99. package/dist/src/agent/image/generation/openai-compatible-image-provider.d.ts +2 -6
  100. package/dist/src/agent/image/generation/openai-compatible-image-provider.js +1 -3
  101. package/dist/src/agent/image/generation/provider-registry.d.ts +5 -46
  102. package/dist/src/agent/image/generation/provider-registry.js +24 -73
  103. package/dist/{extensions/dashscope/src/image-generation-provider.d.ts → src/agent/image/generation/providers/dashscope.d.ts} +3 -6
  104. package/dist/{extensions/dashscope/src/image-generation-provider.js → src/agent/image/generation/providers/dashscope.js} +36 -59
  105. package/dist/{extensions/fal/src/image-generation-provider.d.ts → src/agent/image/generation/providers/fal.d.ts} +1 -1
  106. package/dist/{extensions/fal/src/image-generation-provider.js → src/agent/image/generation/providers/fal.js} +19 -29
  107. package/dist/{extensions/google/src/image-generation-provider.d.ts → src/agent/image/generation/providers/google.d.ts} +2 -2
  108. package/dist/{extensions/google/src/image-generation-provider.js → src/agent/image/generation/providers/google.js} +23 -30
  109. package/dist/{extensions/minimax/src/image-generation-provider.d.ts → src/agent/image/generation/providers/minimax.d.ts} +2 -5
  110. package/dist/{extensions/minimax/src/image-generation-provider.js → src/agent/image/generation/providers/minimax.js} +35 -51
  111. package/dist/{extensions/openai/src/image-generation-provider.d.ts → src/agent/image/generation/providers/openai.d.ts} +2 -2
  112. package/dist/{extensions/openai/src/image-generation-provider.js → src/agent/image/generation/providers/openai.js} +13 -38
  113. package/dist/src/agent/image/generation/runtime-types.d.ts +1 -0
  114. package/dist/src/agent/image/generation/runtime.d.ts +1 -3
  115. package/dist/src/agent/image/generation/runtime.js +6 -6
  116. package/dist/src/agent/image/generation/types.d.ts +23 -3
  117. package/dist/src/agent/image/index.d.ts +1 -1
  118. package/dist/src/agent/image/index.js +2 -2
  119. package/dist/src/agent/media-generation/runtime-shared.d.ts +2 -0
  120. package/dist/src/agent/media-generation/runtime-shared.js +1 -0
  121. package/dist/src/agent/outcomes/task-evaluation.d.ts +20 -0
  122. package/dist/src/agent/outcomes/task-evaluation.js +48 -0
  123. package/dist/src/agent/outcomes/task-verifier.d.ts +29 -0
  124. package/dist/src/agent/outcomes/task-verifier.js +71 -0
  125. package/dist/src/agent/prompt/memory/index.js +1 -1
  126. package/dist/src/agent/prompt/service-prompt-builder.js +32 -1
  127. package/dist/src/agent/service.js +1 -0
  128. package/dist/src/agent/service.types.d.ts +1 -0
  129. package/dist/src/agent/tools/browser/tool/browser-use-tool.d.ts +1 -7
  130. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +2 -73
  131. package/dist/src/agent/tools/browser/tool/schemas.d.ts +1 -13
  132. package/dist/src/agent/tools/browser/tool/schemas.js +1 -9
  133. package/dist/src/agent/tools/browser-recipe-tool.d.ts +12 -0
  134. package/dist/src/agent/tools/browser-recipe-tool.js +113 -0
  135. package/dist/src/agent/tools/factory.d.ts +2 -0
  136. package/dist/src/agent/tools/factory.js +6 -1
  137. package/dist/src/agent/tools/image-generate-tool.d.ts +2 -0
  138. package/dist/src/agent/tools/image-generate-tool.js +14 -7
  139. package/dist/src/agent/tools/index.d.ts +1 -0
  140. package/dist/src/agent/tools/index.js +2 -1
  141. package/dist/src/auth/sync-provider-auth.d.ts +3 -0
  142. package/dist/src/auth/sync-provider-auth.js +12 -1
  143. package/dist/src/automations/domain/types.d.ts +13 -0
  144. package/dist/src/automations/domain/validation.d.ts +44 -24
  145. package/dist/src/automations/domain/validation.js +27 -18
  146. package/dist/src/automations/draft/automation-draft-validator.d.ts +6 -1
  147. package/dist/src/automations/draft/automation-draft-validator.js +1 -0
  148. package/dist/src/automations/service/action-executor.d.ts +1 -0
  149. package/dist/src/automations/service/action-executor.js +22 -0
  150. package/dist/src/browser/index.d.ts +0 -1
  151. package/dist/src/browser/index.js +1 -2
  152. package/dist/src/browser/pipeline/runner.d.ts +9 -2
  153. package/dist/src/browser/pipeline/runner.js +151 -105
  154. package/dist/src/browser/pipeline/schema.d.ts +21 -15
  155. package/dist/src/browser/pipeline/schema.js +93 -99
  156. package/dist/src/browser/recipes/index.d.ts +3 -0
  157. package/dist/src/browser/recipes/index.js +3 -0
  158. package/dist/src/browser/recipes/repository.d.ts +13 -0
  159. package/dist/src/browser/recipes/repository.js +81 -0
  160. package/dist/src/browser/recipes/runtime-service.d.ts +6 -0
  161. package/dist/src/browser/recipes/runtime-service.js +30 -0
  162. package/dist/src/browser/recipes/service.d.ts +36 -0
  163. package/dist/src/browser/recipes/service.js +186 -0
  164. package/dist/src/browser/recipes/types.d.ts +36 -0
  165. package/dist/src/cli/commands/browser-cli-helpers.js +6 -12
  166. package/dist/src/cli/commands/browser.js +4 -3
  167. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  168. package/dist/src/cli/commands/models.js +2 -5
  169. package/dist/src/cli/commands/onboard/model.js +3 -2
  170. package/dist/src/cli/commands/setup-shared/types.d.ts +1 -1
  171. package/dist/src/config/agent-profile.js +1 -1
  172. package/dist/src/config/index.js +2 -2
  173. package/dist/src/config/models-json.d.ts +6 -0
  174. package/dist/src/config/models-json.js +2 -6
  175. package/dist/src/config/schema.d.ts +29 -18
  176. package/dist/src/config/schema.js +44 -33
  177. package/dist/src/gateway/agents-admin.js +1 -1
  178. package/dist/src/gateway/hono/app.js +12 -6
  179. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -1
  180. package/dist/src/gateway/hono/lib/safe-providers-config.d.ts +0 -3
  181. package/dist/src/gateway/hono/lib/safe-providers-config.js +1 -3
  182. package/dist/src/gateway/hono/middleware/strict-rate-limit.d.ts +4 -0
  183. package/dist/src/gateway/hono/middleware/strict-rate-limit.js +8 -1
  184. package/dist/src/gateway/hono/routes/browser-workflows.d.ts +3 -0
  185. package/dist/src/gateway/hono/routes/browser-workflows.js +78 -0
  186. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -11
  187. package/dist/src/gateway/hono/routes/deps.d.ts +1 -0
  188. package/dist/src/gateway/hono/routes/home.js +1 -0
  189. package/dist/src/gateway/hono/routes/index.js +4 -0
  190. package/dist/src/gateway/hono/routes/interaction-state.d.ts +3 -0
  191. package/dist/src/gateway/hono/routes/interaction-state.js +45 -0
  192. package/dist/src/gateway/hono/routes/lazy-bundles.js +17 -2
  193. package/dist/src/gateway/hono/routes/memory.js +33 -4
  194. package/dist/src/gateway/hono/routes/models.js +151 -129
  195. package/dist/src/gateway/hono/routes/task-outcomes.d.ts +3 -0
  196. package/dist/src/gateway/hono/routes/task-outcomes.js +109 -0
  197. package/dist/src/gateway/hono/routes/you.d.ts +10 -2
  198. package/dist/src/gateway/hono/routes/you.js +184 -28
  199. package/dist/src/gateway/image-generation-setup.d.ts +40 -0
  200. package/dist/src/gateway/image-generation-setup.js +130 -0
  201. package/dist/src/gateway/rate-limit/buckets.d.ts +3 -0
  202. package/dist/src/gateway/rate-limit/buckets.js +12 -0
  203. package/dist/src/gateway/service/run-gateway-agent.js +84 -0
  204. package/dist/src/gateway/service.d.ts +6 -0
  205. package/dist/src/gateway/service.js +24 -0
  206. package/dist/src/media-shared/http/private-network.d.ts +1 -1
  207. package/dist/src/media-shared/http/private-network.js +1 -1
  208. package/dist/src/proactive/insight-repository.d.ts +2 -0
  209. package/dist/src/proactive/insight-repository.js +5 -2
  210. package/dist/src/proactive/run-processor.js +22 -1
  211. package/dist/src/proactive/types.d.ts +2 -0
  212. package/dist/src/proactive/value-score.d.ts +13 -0
  213. package/dist/src/proactive/value-score.js +30 -0
  214. package/dist/src/providers/auth-runtime/resolve-api-key.d.ts +2 -4
  215. package/dist/src/providers/auth-runtime/resolve-api-key.js +2 -4
  216. package/dist/src/providers/auth-runtime/resolve-auth.d.ts +3 -4
  217. package/dist/src/providers/auth-runtime/resolve-auth.js +18 -18
  218. package/dist/src/providers/domestic-presets.d.ts +22 -0
  219. package/dist/src/providers/domestic-presets.js +25 -0
  220. package/dist/src/providers/model-catalog-store.d.ts +71 -0
  221. package/dist/src/providers/model-catalog-store.js +102 -0
  222. package/dist/src/providers/model-catalog-sync-service.d.ts +41 -0
  223. package/dist/src/providers/model-catalog-sync-service.js +142 -0
  224. package/dist/src/providers/model-reference-auditor.d.ts +14 -0
  225. package/dist/src/providers/model-reference-auditor.js +71 -0
  226. package/dist/src/providers/model-registry.d.ts +4 -1
  227. package/dist/src/providers/model-registry.js +35 -2
  228. package/dist/src/providers/presentation.js +2 -0
  229. package/dist/src/providers/xopc-cloud-connection.d.ts +51 -0
  230. package/dist/src/providers/xopc-cloud-connection.js +196 -0
  231. package/dist/src/session/index.d.ts +1 -1
  232. package/dist/src/session/index.js +2 -2
  233. package/dist/src/session/session-title.d.ts +2 -0
  234. package/dist/src/session/session-title.js +24 -3
  235. package/dist/src/share/share-types.js +5 -5
  236. package/dist/src/share/site-share-types.d.ts +1 -1
  237. package/dist/src/share/site-share-types.js +5 -5
  238. package/dist/src/storage/sqlite/index.d.ts +3 -0
  239. package/dist/src/storage/sqlite/index.js +4 -1
  240. package/dist/src/storage/sqlite/interaction-state-repository.d.ts +17 -0
  241. package/dist/src/storage/sqlite/interaction-state-repository.js +60 -0
  242. package/dist/src/storage/sqlite/memory-records-repository.js +1 -1
  243. package/dist/src/storage/sqlite/migrations/053_browser_recipes.sql +45 -0
  244. package/dist/src/storage/sqlite/migrations/054_task_outcomes.sql +24 -0
  245. package/dist/src/storage/sqlite/migrations/055_relationship_settings.sql +14 -0
  246. package/dist/src/storage/sqlite/migrations/056_task_verification.sql +6 -0
  247. package/dist/src/storage/sqlite/migrations/057_interaction_states.sql +11 -0
  248. package/dist/src/storage/sqlite/migrations/058_proactive_value.sql +3 -0
  249. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  250. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  251. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  252. package/dist/src/storage/sqlite/relationship-settings-repository.d.ts +17 -0
  253. package/dist/src/storage/sqlite/relationship-settings-repository.js +64 -0
  254. package/dist/src/storage/sqlite/schema.js +1 -1
  255. package/dist/src/storage/sqlite/schema.sql +46 -0
  256. package/dist/src/storage/sqlite/task-outcome-repository.d.ts +90 -0
  257. package/dist/src/storage/sqlite/task-outcome-repository.js +138 -0
  258. package/dist/src/user-context/interaction-state.d.ts +13 -0
  259. package/dist/src/user-context/interaction-state.js +69 -0
  260. package/dist/src/user-context/memory-use-audit.d.ts +10 -0
  261. package/dist/src/user-context/memory-use-audit.js +25 -0
  262. package/dist/src/user-context/personal-playbook.d.ts +11 -0
  263. package/dist/src/user-context/personal-playbook.js +41 -0
  264. package/dist/src/user-context/projection.d.ts +4 -0
  265. package/dist/src/user-context/projection.js +5 -1
  266. package/dist/src/user-context/relationship-continuity.d.ts +14 -0
  267. package/dist/src/user-context/relationship-continuity.js +51 -0
  268. package/package.json +5 -7
  269. package/dist/extensions/dashscope/src/index.d.ts +0 -4
  270. package/dist/extensions/dashscope/src/index.js +0 -2
  271. package/dist/extensions/dashscope/xopc.extension.json +0 -15
  272. package/dist/extensions/fal/src/index.d.ts +0 -4
  273. package/dist/extensions/fal/src/index.js +0 -2
  274. package/dist/extensions/fal/xopc.extension.json +0 -14
  275. package/dist/extensions/google/src/index.d.ts +0 -4
  276. package/dist/extensions/google/src/index.js +0 -2
  277. package/dist/extensions/google/xopc.extension.json +0 -14
  278. package/dist/extensions/minimax/src/index.d.ts +0 -4
  279. package/dist/extensions/minimax/src/index.js +0 -2
  280. package/dist/extensions/minimax/xopc.extension.json +0 -15
  281. package/dist/extensions/openai/src/index.d.ts +0 -4
  282. package/dist/extensions/openai/src/index.js +0 -2
  283. package/dist/extensions/openai/xopc.extension.json +0 -14
  284. package/dist/gateway/static/root/assets/action-boundary-settings-panel-BIVBUiNT.js +0 -1
  285. package/dist/gateway/static/root/assets/agents-_qbUaYbs.js +0 -2
  286. package/dist/gateway/static/root/assets/apps-page-0sPqD0FK.js +0 -1
  287. package/dist/gateway/static/root/assets/automations-page-BxWBuBsE.js +0 -6
  288. package/dist/gateway/static/root/assets/browser-settings-page-C499b9AH.js +0 -8
  289. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Dva9SiPK.js +0 -2
  290. package/dist/gateway/static/root/assets/channels-settings-DNAU7u9o.js +0 -1
  291. package/dist/gateway/static/root/assets/channels-status-swr-CIOH7tgn.js +0 -1
  292. package/dist/gateway/static/root/assets/connectors-page-TwiBp8vY.js +0 -2
  293. package/dist/gateway/static/root/assets/extension-settings-page-DKA9-lyP.js +0 -1
  294. package/dist/gateway/static/root/assets/goal-create-dialog-Q3B0E-0s.js +0 -1
  295. package/dist/gateway/static/root/assets/goal-detail-page-C5VAK04G.js +0 -4
  296. package/dist/gateway/static/root/assets/goals-page-BJb-5IYw.js +0 -2
  297. package/dist/gateway/static/root/assets/index-CkUHH170.css +0 -1
  298. package/dist/gateway/static/root/assets/index-vq_cJZJC.js +0 -199
  299. package/dist/gateway/static/root/assets/local-app-workbench-page-euH17Kvb.js +0 -2
  300. package/dist/gateway/static/root/assets/logs-page-CyYCBqym.js +0 -7
  301. package/dist/gateway/static/root/assets/messages-CxySDn9d.js +0 -5
  302. package/dist/gateway/static/root/assets/models-hub-panel-DObxxjc9.js +0 -2
  303. package/dist/gateway/static/root/assets/notes-workbench-CCb4RXcZ.js +0 -4
  304. package/dist/gateway/static/root/assets/project-detail-page-BvEcriRC.js +0 -1
  305. package/dist/gateway/static/root/assets/projects-page-B_e79MRJ.js +0 -1
  306. package/dist/gateway/static/root/assets/remote-access-hub-DGcqnYfR.js +0 -1
  307. package/dist/gateway/static/root/assets/save-bar-controls-CkeKasGm.js +0 -1
  308. package/dist/gateway/static/root/assets/schedule-field-TkqUL3wm.js +0 -1
  309. package/dist/gateway/static/root/assets/sessions-page-DQZhrDJ8.js +0 -1
  310. package/dist/gateway/static/root/assets/settings-advanced-gate-BkdeN99Y.js +0 -1
  311. package/dist/gateway/static/root/assets/settings-collapsible-section-Dpqth3oA.js +0 -1
  312. package/dist/gateway/static/root/assets/settings-page-qPG7I2zd.js +0 -1
  313. package/dist/gateway/static/root/assets/setup-status-panel-lwRAh9aw.js +0 -1
  314. package/dist/gateway/static/root/assets/shares-settings-BGj9IVUr.js +0 -1
  315. package/dist/gateway/static/root/assets/skill-reload-api-B2UBAs5U.js +0 -1
  316. package/dist/gateway/static/root/assets/skills-page-DdjzFZ8I.js +0 -2
  317. package/dist/gateway/static/root/assets/user-context-page-BTTZpAGV.js +0 -1
  318. package/dist/gateway/static/root/assets/voice-api-key-field-DuDQd-WU.js +0 -1
  319. package/dist/gateway/static/root/assets/work-discovery-page-BUVkVCsW.js +0 -1
  320. package/dist/gateway/static/root/assets/work-item-detail-page-DeEPPu4n.js +0 -1
  321. package/dist/gateway/static/root/assets/work-page-DQNUyTUq.js +0 -1
  322. package/dist/gateway/static/root/assets/workflows-page-BIy4wrzO.js +0 -11
  323. package/dist/src/agent/image/generation/bundled-registry.d.ts +0 -18
  324. package/dist/src/agent/image/generation/bundled-registry.js +0 -35
  325. package/dist/src/agent/image/generation/bundled.d.ts +0 -10
  326. package/dist/src/agent/image/generation/bundled.js +0 -15
  327. package/dist/src/agent/image/generation/image-provider-ui.d.ts +0 -20
  328. package/dist/src/browser/pipeline/source.d.ts +0 -9
  329. package/dist/src/browser/pipeline/source.js +0 -77
  330. package/dist/src/gateway/image-capabilities.d.ts +0 -28
  331. package/dist/src/gateway/image-capabilities.js +0 -78
  332. package/dist/src/generated/bundled-image-generation-providers.d.ts +0 -14
  333. package/dist/src/generated/bundled-image-generation-providers.js +0 -17
  334. /package/dist/src/{agent/image/generation/image-provider-ui.js → browser/recipes/types.js} +0 -0
@@ -7,7 +7,6 @@ import "../../media-generation/index.js";
7
7
  import { parseImageGenerationModelRef } from "./model-ref.js";
8
8
  import { resolveImageGenerationOverrides } from "./normalization.js";
9
9
  import { getImageGenerationProvider, listImageGenerationProviders, listImageGenerationProvidersSummary as listImageGenerationProvidersSummary$1 } from "./provider-registry.js";
10
- import "./bundled.js";
11
10
  //#region src/agent/image/generation/runtime.ts
12
11
  init_env_keys();
13
12
  init_logger();
@@ -24,6 +23,7 @@ async function generateImage(params, deps = {}) {
24
23
  modelConfig: params.modelConfig,
25
24
  modelOverride: params.modelOverride,
26
25
  parseModelRef: parseImageGenerationModelRef,
26
+ agentId: params.agentId,
27
27
  agentDir: params.agentDir,
28
28
  listProviders: (cfg) => listProviders(cfg).map(toCapabilityCandidate),
29
29
  autoProviderFallback: params.autoProviderFallback
@@ -119,8 +119,8 @@ async function generateImage(params, deps = {}) {
119
119
  lastError
120
120
  });
121
121
  }
122
- function listImageGenerationProvidersSummary(cfg) {
123
- return listImageGenerationProvidersSummary$1(cfg);
122
+ function listImageGenerationProvidersSummary() {
123
+ return listImageGenerationProvidersSummary$1();
124
124
  }
125
125
  function buildProviderRequest(input) {
126
126
  const { provider, candidate, params, sanitized } = input;
@@ -130,6 +130,7 @@ function buildProviderRequest(input) {
130
130
  model: candidate.model,
131
131
  prompt: params.prompt,
132
132
  ...params.cfg ? { cfg: params.cfg } : {},
133
+ ...params.agentId ? { agentId: params.agentId } : {},
133
134
  ...params.agentDir ? { agentDir: params.agentDir } : {},
134
135
  ...params.authStore ? { authStore: params.authStore } : {},
135
136
  ...typeof params.timeoutMs === "number" ? { timeoutMs: params.timeoutMs } : {},
@@ -156,9 +157,8 @@ function cloneInputImages(images) {
156
157
  function toCapabilityCandidate(provider) {
157
158
  return {
158
159
  id: provider.id,
159
- ...provider.aliases ? { aliases: provider.aliases } : {},
160
- defaultModel: provider.defaultModel ?? null,
161
- models: provider.models ?? [],
160
+ defaultModel: provider.defaultModel,
161
+ models: provider.models,
162
162
  isConfigured: provider.isConfigured
163
163
  };
164
164
  }
@@ -1,8 +1,6 @@
1
1
  import type { Config } from '../../../config/schema.js';
2
2
  import type { AuthProfileStore } from '../../../providers/auth-runtime/index.js';
3
3
  import type { MediaNormalizationEntry } from '../../media-generation/normalization.types.js';
4
- export type { ImageGenerationProvider, ImageGenerationProviderConfiguredContext, ImageGenerationProviderSummary, } from './provider-registry.js';
5
- export type { ImageProviderUiBaseUrlPreset, ImageProviderUiMetadata, ImageProviderUiPresetKind, ImageProviderUiRegionOption, } from './image-provider-ui.js';
6
4
  export type ImageGenerationResolution = '1K' | '2K' | '4K';
7
5
  export type ImageGenerationQuality = 'low' | 'medium' | 'high' | 'auto';
8
6
  export type ImageGenerationOutputFormat = 'png' | 'jpeg' | 'webp';
@@ -45,6 +43,27 @@ export interface ImageGenerationProviderCapabilities {
45
43
  geometry?: ImageGenerationGeometryCapability;
46
44
  output?: ImageGenerationOutputCapability;
47
45
  }
46
+ export interface ImageGenerationProviderConfiguredContext {
47
+ cfg?: Config;
48
+ agentId?: string;
49
+ agentDir?: string;
50
+ }
51
+ export interface ImageGenerationProvider {
52
+ id: string;
53
+ label: string;
54
+ defaultModel: string;
55
+ models: string[];
56
+ capabilities: ImageGenerationProviderCapabilities;
57
+ isConfigured(ctx: ImageGenerationProviderConfiguredContext): boolean;
58
+ generateImage(req: ImageGenerationRequest): Promise<ImageGenerationResult>;
59
+ }
60
+ export interface ImageGenerationProviderSummary {
61
+ id: string;
62
+ label: string;
63
+ defaultModel: string;
64
+ models: string[];
65
+ capabilities: ImageGenerationProviderCapabilities;
66
+ }
48
67
  export interface ImageGenerationOpenAIOptions {
49
68
  background?: ImageGenerationBackground;
50
69
  moderation?: 'low' | 'auto';
@@ -58,7 +77,7 @@ export interface GeneratedImageAsset {
58
77
  buffer: Buffer;
59
78
  mimeType: string;
60
79
  fileName?: string;
61
- /** Provider-side prompt rewrite (e.g. OpenAI dall-e-3 / gpt-image-1). */
80
+ /** Provider-side prompt rewrite. */
62
81
  revisedPrompt?: string;
63
82
  /** Vendor-private metadata. Not surfaced to the LLM context directly. */
64
83
  metadata?: Record<string, unknown>;
@@ -84,6 +103,7 @@ export interface ImageGenerationRequest {
84
103
  model: string;
85
104
  prompt: string;
86
105
  cfg?: Config;
106
+ agentId?: string;
87
107
  agentDir?: string;
88
108
  authStore?: AuthProfileStore;
89
109
  timeoutMs?: number;
@@ -12,6 +12,6 @@ export type { ImageAttempt } from './image-model-fallback.js';
12
12
  export type { ToolModelConfig } from './tool-model-config.js';
13
13
  export { resolveImageModelConfigForTool } from './tool-model-config.js';
14
14
  export { generateImage, listImageGenerationProvidersSummary, type GenerateImageParams, type GenerateImageRuntimeResult, } from './generation/runtime.js';
15
- export { registerImageGenerationProvider, getImageGenerationProvider, listImageGenerationProviders, type ImageGenerationProvider, } from './generation/provider-registry.js';
15
+ export { getImageGenerationProvider, listImageGenerationProviders, type ImageGenerationProvider, } from './generation/provider-registry.js';
16
16
  export type { ImageGenerationSourceImage, ImageGenerationProviderCapabilities, } from './generation/types.js';
17
17
  export { modelSupportsVision, resolveImageHandlingStrategy, type ImageHandlingStrategy, } from './vision-detection.js';
@@ -3,7 +3,7 @@ import { resolveImageModelConfigForTool } from "./tool-model-config.js";
3
3
  import { describeImages, describeImagesWithFallback } from "./understanding/runtime.js";
4
4
  import { runWithImageModelFallback } from "./image-model-fallback.js";
5
5
  import { loadImageForToolInput } from "./load-image-media.js";
6
- import { getImageGenerationProvider, listImageGenerationProviders, registerImageGenerationProvider } from "./generation/provider-registry.js";
6
+ import { getImageGenerationProvider, listImageGenerationProviders } from "./generation/provider-registry.js";
7
7
  import { generateImage, listImageGenerationProvidersSummary } from "./generation/runtime.js";
8
8
  import { modelSupportsVision, resolveImageHandlingStrategy } from "./vision-detection.js";
9
- export { describeImages, describeImagesWithFallback, generateImage, getImageGenerationProvider, getImageUnderstandingProvider, listImageGenerationProviders, listImageGenerationProvidersSummary, listImageUnderstandingProviders, loadImageForToolInput, modelSupportsVision, registerImageGenerationProvider, registerImageUnderstandingProvider, resolveImageHandlingStrategy, resolveImageModelConfigForTool, runWithImageModelFallback };
9
+ export { describeImages, describeImagesWithFallback, generateImage, getImageGenerationProvider, getImageUnderstandingProvider, listImageGenerationProviders, listImageGenerationProvidersSummary, listImageUnderstandingProviders, loadImageForToolInput, modelSupportsVision, registerImageUnderstandingProvider, resolveImageHandlingStrategy, resolveImageModelConfigForTool, runWithImageModelFallback };
@@ -18,6 +18,7 @@ export interface CapabilityProviderCandidate {
18
18
  models?: readonly string[];
19
19
  isConfigured?: (ctx: {
20
20
  cfg?: Config;
21
+ agentId?: string;
21
22
  agentDir?: string;
22
23
  }) => boolean;
23
24
  }
@@ -32,6 +33,7 @@ export interface ResolveCapabilityModelCandidatesParams {
32
33
  modelOverride?: string;
33
34
  /** Optional ref parser; defaults to {@link parseCapabilityModelRef}. */
34
35
  parseModelRef?: (raw: string | undefined) => ParsedCapabilityModelRef | null;
36
+ agentId?: string;
35
37
  agentDir?: string;
36
38
  /** Snapshot of registered providers used to enumerate fallbacks. */
37
39
  listProviders: (cfg?: Config) => CapabilityProviderCandidate[];
@@ -37,6 +37,7 @@ function resolveCapabilityModelCandidates(params) {
37
37
  try {
38
38
  configured = provider.isConfigured?.({
39
39
  cfg: params.cfg,
40
+ agentId: params.agentId,
40
41
  agentDir: params.agentDir
41
42
  }) ?? true;
42
43
  } catch {
@@ -0,0 +1,20 @@
1
+ import type { TaskOutcome } from '../../storage/sqlite/task-outcome-repository.js';
2
+ export interface TaskEvaluationReplay {
3
+ total: number;
4
+ falseCompletions: number;
5
+ verificationDrift: number;
6
+ supportMismatches: number;
7
+ channelConsistencyGap: number;
8
+ byChannel: Record<string, {
9
+ total: number;
10
+ verified: number;
11
+ helpful: number;
12
+ rated: number;
13
+ }>;
14
+ cases: Array<{
15
+ runId: string;
16
+ storedVerification: string;
17
+ replayedVerification: string;
18
+ }>;
19
+ }
20
+ export declare function replayTaskEvaluation(outcomes: TaskOutcome[]): TaskEvaluationReplay;
@@ -0,0 +1,48 @@
1
+ import { verifyTaskCompletion } from "./task-verifier.js";
2
+ //#region src/agent/outcomes/task-evaluation.ts
3
+ function replayTaskEvaluation(outcomes) {
4
+ const completed = outcomes.filter((outcome) => outcome.status !== "running");
5
+ const byChannel = {};
6
+ const cases = [];
7
+ let falseCompletions = 0;
8
+ let supportMismatches = 0;
9
+ for (const outcome of completed) {
10
+ const replayed = verifyTaskCompletion({
11
+ status: outcome.status,
12
+ acceptanceCriteria: outcome.contract?.acceptanceCriteria ?? [],
13
+ evidence: outcome.evidence
14
+ });
15
+ if (replayed.status !== outcome.verification.status) cases.push({
16
+ runId: outcome.runId,
17
+ storedVerification: outcome.verification.status,
18
+ replayedVerification: replayed.status
19
+ });
20
+ if (outcome.status === "succeeded" && replayed.status !== "passed") falseCompletions += 1;
21
+ if (outcome.feedback?.supportFit === false) supportMismatches += 1;
22
+ const channel = byChannel[outcome.channel] ?? {
23
+ total: 0,
24
+ verified: 0,
25
+ helpful: 0,
26
+ rated: 0
27
+ };
28
+ channel.total += 1;
29
+ if (replayed.status === "passed") channel.verified += 1;
30
+ if (outcome.feedback) {
31
+ channel.rated += 1;
32
+ if (outcome.feedback.outcome === "helpful") channel.helpful += 1;
33
+ }
34
+ byChannel[outcome.channel] = channel;
35
+ }
36
+ const verificationRates = Object.values(byChannel).filter((item) => item.total > 0).map((item) => item.verified / item.total);
37
+ return {
38
+ total: completed.length,
39
+ falseCompletions,
40
+ verificationDrift: cases.length,
41
+ supportMismatches,
42
+ channelConsistencyGap: verificationRates.length > 1 ? Math.max(...verificationRates) - Math.min(...verificationRates) : 0,
43
+ byChannel,
44
+ cases
45
+ };
46
+ }
47
+ //#endregion
48
+ export { replayTaskEvaluation };
@@ -0,0 +1,29 @@
1
+ export type TaskVerificationStatus = 'passed' | 'failed' | 'unverified';
2
+ export type TaskFailurePhase = 'planning' | 'execution' | 'verification' | 'approval' | 'runtime';
3
+ export type TaskFailureCode = 'cancelled' | 'timeout' | 'tool_failed' | 'verification_failed' | 'approval_required' | 'conflict' | 'model_failed' | 'unknown';
4
+ export type TaskRecoveryAction = 'replan' | 'retry_with_changed_strategy' | 'request_user_input' | 'none';
5
+ export interface TaskVerification {
6
+ status: TaskVerificationStatus;
7
+ checks: Array<{
8
+ criterion: string;
9
+ status: TaskVerificationStatus;
10
+ evidenceTitles: string[];
11
+ }>;
12
+ }
13
+ export interface TaskFailureDiagnosis {
14
+ code: TaskFailureCode;
15
+ phase: TaskFailurePhase;
16
+ recoveryAction: TaskRecoveryAction;
17
+ }
18
+ export declare function verifyTaskCompletion(input: {
19
+ status: 'succeeded' | 'failed' | 'cancelled';
20
+ acceptanceCriteria: string[];
21
+ evidence: Array<{
22
+ title: string;
23
+ verifies?: string[];
24
+ }>;
25
+ }): TaskVerification;
26
+ export declare function diagnoseTaskFailure(input: {
27
+ status: 'failed' | 'cancelled';
28
+ summary: string;
29
+ }): TaskFailureDiagnosis;
@@ -0,0 +1,71 @@
1
+ //#region src/agent/outcomes/task-verifier.ts
2
+ function verifyTaskCompletion(input) {
3
+ const checks = input.acceptanceCriteria.map((criterion) => {
4
+ const evidenceTitles = input.evidence.filter((evidence) => evidence.verifies?.includes(criterion)).map((evidence) => evidence.title);
5
+ return {
6
+ criterion,
7
+ status: evidenceTitles.length > 0 ? "passed" : "unverified",
8
+ evidenceTitles
9
+ };
10
+ });
11
+ if (input.status === "failed" || input.status === "cancelled") return {
12
+ status: "failed",
13
+ checks: checks.map((check) => ({
14
+ ...check,
15
+ status: "failed"
16
+ }))
17
+ };
18
+ if (checks.length === 0 || checks.some((check) => check.status !== "passed")) return {
19
+ status: "unverified",
20
+ checks
21
+ };
22
+ return {
23
+ status: "passed",
24
+ checks
25
+ };
26
+ }
27
+ function diagnoseTaskFailure(input) {
28
+ const text = input.summary.toLocaleLowerCase();
29
+ if (input.status === "cancelled") return {
30
+ code: "cancelled",
31
+ phase: "runtime",
32
+ recoveryAction: "none"
33
+ };
34
+ if (/timeout|timed out|deadline exceeded/.test(text)) return {
35
+ code: "timeout",
36
+ phase: "runtime",
37
+ recoveryAction: "retry_with_changed_strategy"
38
+ };
39
+ if (/approval|permission|authorization|forbidden/.test(text)) return {
40
+ code: "approval_required",
41
+ phase: "approval",
42
+ recoveryAction: "request_user_input"
43
+ };
44
+ if (/test|typecheck|lint|build|verification|acceptance/.test(text)) return {
45
+ code: "verification_failed",
46
+ phase: "verification",
47
+ recoveryAction: "replan"
48
+ };
49
+ if (/already processing|conflict|locked|concurrent/.test(text)) return {
50
+ code: "conflict",
51
+ phase: "execution",
52
+ recoveryAction: "retry_with_changed_strategy"
53
+ };
54
+ if (/tool|command|exit code|enoent|not found/.test(text)) return {
55
+ code: "tool_failed",
56
+ phase: "execution",
57
+ recoveryAction: "replan"
58
+ };
59
+ if (/model|provider|rate limit|context length/.test(text)) return {
60
+ code: "model_failed",
61
+ phase: "runtime",
62
+ recoveryAction: "retry_with_changed_strategy"
63
+ };
64
+ return {
65
+ code: "unknown",
66
+ phase: "execution",
67
+ recoveryAction: "replan"
68
+ };
69
+ }
70
+ //#endregion
71
+ export { diagnoseTaskFailure, verifyTaskCompletion };
@@ -1,8 +1,8 @@
1
1
  import { createLogger } from "../../../utils/logger/index.js";
2
2
  import { init_logger } from "../../../utils/logger.js";
3
3
  import { requireXopcDatabase } from "../../../storage/sqlite/connection.js";
4
- import { searchMemoryIndex, syncMemoryIndex } from "../../../storage/sqlite/memory-index-repository.js";
5
4
  import { LOCAL_USER_ID } from "../../../user-context/owner.js";
5
+ import { searchMemoryIndex, syncMemoryIndex } from "../../../storage/sqlite/memory-index-repository.js";
6
6
  import "../../../storage/sqlite/index.js";
7
7
  import { join, relative } from "path";
8
8
  import { existsSync, readFileSync } from "fs";
@@ -1,14 +1,22 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { isXopcDatabaseOpen } from "../../storage/sqlite/connection.js";
4
+ import { buildInteractionStatePrompt } from "../../user-context/interaction-state.js";
5
+ import { getInteractionState } from "../../storage/sqlite/interaction-state-repository.js";
6
+ import { buildRelationshipPrompt, getRelationshipSettings } from "../../storage/sqlite/relationship-settings-repository.js";
7
+ import { listMemoryRecords } from "../../storage/sqlite/memory-records-repository.js";
4
8
  import { DEFAULT_USER_TRUST_LEVEL, buildActionTrustPrompt } from "../../user-context/trust-policy.js";
5
9
  import { getUserTrustPolicy } from "../../storage/sqlite/user-trust-repository.js";
6
10
  import "../../storage/sqlite/index.js";
11
+ import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
7
12
  import { resolveSystemPromptBuildParams } from "./system-prompt-params.js";
8
13
  import { buildSystemPrompt } from "./system-prompt.js";
9
14
  import { buildTtsSystemPromptHint } from "../../voice/tts/directives.js";
10
15
  import { mergeTtsConfigFromAppConfig } from "../../voice/tts/merge-config.js";
16
+ import { buildPersonalPlaybookPrompt } from "../../user-context/personal-playbook.js";
17
+ import { buildRelationshipContinuityPrompt } from "../../user-context/relationship-continuity.js";
11
18
  //#region src/agent/prompt/service-prompt-builder.ts
19
+ init_session_key();
12
20
  init_logger();
13
21
  const log = createLogger("SystemPromptBuilder");
14
22
  var SystemPromptBuilder = class {
@@ -23,6 +31,19 @@ var SystemPromptBuilder = class {
23
31
  build(contextFiles, options) {
24
32
  const ws = options.workspaceOverride ?? this.workspace;
25
33
  const actionTrustLevel = isXopcDatabaseOpen() ? getUserTrustPolicy().defaultActionLevel : DEFAULT_USER_TRUST_LEVEL;
34
+ const relationshipPrompt = isXopcDatabaseOpen() ? buildRelationshipPrompt(getRelationshipSettings()) : "";
35
+ const interactionState = isXopcDatabaseOpen() && options.sessionKey ? getInteractionState(options.sessionKey) : void 0;
36
+ const session = parseSessionKey(options.sessionKey);
37
+ const activeMemories = isXopcDatabaseOpen() ? listMemoryRecords({
38
+ status: "active",
39
+ limit: 500
40
+ }) : [];
41
+ const playbookPrompt = isXopcDatabaseOpen() ? buildPersonalPlaybookPrompt(activeMemories, {
42
+ ...session ? { channel: session.source } : {},
43
+ ...interactionState ? { supportNeed: interactionState.supportNeed } : {}
44
+ }) : "";
45
+ const continuityPrompt = buildRelationshipContinuityPrompt(activeMemories);
46
+ const interactionPrompt = interactionState ? buildInteractionStatePrompt(interactionState) : "";
26
47
  if (options.systemPromptOverride?.trim()) {
27
48
  const skillPrompt = options.skillPromptText !== void 0 ? options.skillPromptText : this.skillManager.getPromptForSkillAllowlist(options.skillAllowlist, options.registeredToolNames);
28
49
  const trimmed = options.systemPromptOverride.trim();
@@ -38,6 +59,10 @@ var SystemPromptBuilder = class {
38
59
  });
39
60
  if (ttsHint?.trim()) fullPrompt = `${fullPrompt}\n\n## Voice (TTS)\n\n${ttsHint.trim()}`;
40
61
  fullPrompt = `${fullPrompt}\n\n${buildActionTrustPrompt(actionTrustLevel)}`;
62
+ if (relationshipPrompt) fullPrompt = `${fullPrompt}\n\n${relationshipPrompt}`;
63
+ if (playbookPrompt) fullPrompt = `${fullPrompt}\n\n${playbookPrompt}`;
64
+ if (interactionPrompt) fullPrompt = `${fullPrompt}\n\n${interactionPrompt}`;
65
+ if (continuityPrompt) fullPrompt = `${fullPrompt}\n\n${continuityPrompt}`;
41
66
  log.debug({
42
67
  baseLength: trimmed.length,
43
68
  skillLength: skillPrompt.length,
@@ -65,7 +90,13 @@ var SystemPromptBuilder = class {
65
90
  externalMemoryInstructions: options.externalMemoryInstructions,
66
91
  heartbeatEnabled,
67
92
  ttsSystemHint,
68
- extraSystemPrompt: options.extraSystemPrompt,
93
+ extraSystemPrompt: [
94
+ options.extraSystemPrompt,
95
+ relationshipPrompt,
96
+ playbookPrompt,
97
+ interactionPrompt,
98
+ continuityPrompt
99
+ ].filter(Boolean).join("\n\n"),
69
100
  activeProjectContext: options.activeProjectContext,
70
101
  modelRef: options.modelRef,
71
102
  agentId: options.agentId,
@@ -228,6 +228,7 @@ var AgentService = class {
228
228
  verboseLevel: config.verboseLevel,
229
229
  gatewayClarify: config.gatewayClarify,
230
230
  getAutomationService: config.getAutomationService,
231
+ getBrowserRecipeService: config.getBrowserRecipeService,
231
232
  getNotesService: config.getNotesService,
232
233
  getProjectService: config.getProjectService,
233
234
  getWorkItemService: config.getWorkItemService,
@@ -28,6 +28,7 @@ export interface AgentServiceConfig {
28
28
  requestClarification: GatewayClarifyRequestFn;
29
29
  };
30
30
  getAutomationService?: () => AutomationService | undefined;
31
+ getBrowserRecipeService?: () => import('../browser/recipes/index.js').BrowserRecipeService | undefined;
31
32
  /** Gateway: exposes first-class xopc product objects for the `xopc_use` tool. */
32
33
  getNotesService?: () => NotesService | undefined;
33
34
  getProjectService?: () => ProjectService | undefined;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * browser_use — unified browser AgentTool.
3
3
  *
4
- * Modes: command | pipeline | inspect | close.
4
+ * Modes: command | inspect | close.
5
5
  * Replaces the 14 fine-grained browser_* tools with a single entry point.
6
6
  */
7
7
  import type { AgentTool } from '@earendil-works/pi-agent-core';
@@ -9,7 +9,6 @@ import type { Config } from '../../../../config/schema.js';
9
9
  import type { BrowserManager } from '../../../../browser/manager.js';
10
10
  import type { CdpSupervisor } from '../../../../browser/cdp-supervisor.js';
11
11
  import type { Page } from 'playwright-core';
12
- import type { BrowserActionContext, BrowserActionResult } from '../../../../browser/actions/types.js';
13
12
  import type { BrowserNotReadyError } from '../../../../browser/readiness.js';
14
13
  export interface CreateBrowserUseToolDeps {
15
14
  getManager: () => BrowserManager;
@@ -24,10 +23,5 @@ export interface CreateBrowserUseToolDeps {
24
23
  * card. Cache the result upstream (~30s) so back-to-back calls don't reprobe.
25
24
  */
26
25
  getReadiness?: () => Promise<BrowserNotReadyError | null>;
27
- /** Pipeline runner (injected to avoid circular deps; lazy-loaded if not provided). */
28
- runPipeline?: (yaml: string, args: Record<string, unknown>, ctx: BrowserActionContext, options: {
29
- dryRun?: boolean;
30
- sourceLocation?: string;
31
- }) => Promise<BrowserActionResult>;
32
26
  }
33
27
  export declare function createBrowserUseTool(deps: CreateBrowserUseToolDeps): AgentTool<any, any>;
@@ -1,7 +1,6 @@
1
1
  import { createLogger } from "../../../../utils/logger/index.js";
2
2
  import { init_logger } from "../../../../utils/logger.js";
3
3
  import { createBrowserActionRegistry } from "../../../../browser/actions/registry.js";
4
- import { loadBrowserPipelineSource } from "../../../../browser/pipeline/source.js";
5
4
  import { BrowserUseSchema } from "./schemas.js";
6
5
  //#region src/agent/tools/browser/tool/browser-use-tool.ts
7
6
  init_logger();
@@ -85,10 +84,10 @@ function createBrowserUseTool(deps) {
85
84
  return {
86
85
  name: "browser_use",
87
86
  label: "🌐 Browser",
88
- description: "Use a persistent browser for web navigation, page inspection, interaction, screenshots, network capture, and scripted browser pipelines. For non-trivial browser tasks, load the built-in manual first with tool_manual({ tool: \"browser_use\" }).",
87
+ description: "Use a persistent browser for navigation, inspection, interaction, screenshots, and network capture. Use browser_recipe for saved repeatable browser work.",
89
88
  parameters: BrowserUseSchema,
90
89
  async execute(_toolCallId, params, signal, _onUpdate) {
91
- const { mode, command, args: cmdArgs, pipeline: pipelineParams, options: _options } = params;
90
+ const { mode, command, args: cmdArgs, options: _options } = params;
92
91
  if (deps.getReadiness) try {
93
92
  const notReady = await deps.getReadiness();
94
93
  if (notReady) return formatNotReady(notReady.hint);
@@ -173,76 +172,6 @@ function createBrowserUseTool(deps) {
173
172
  const args = cmdArgs ?? {};
174
173
  return formatResult(await registry.execute(command, ctx, args));
175
174
  }
176
- if (mode === "pipeline") {
177
- if (!pipelineParams) return {
178
- content: [{
179
- type: "text",
180
- text: "Missing `pipeline` parameter for pipeline mode."
181
- }],
182
- details: {
183
- ok: false,
184
- mode: "pipeline"
185
- }
186
- };
187
- let yamlSource = pipelineParams.yaml ?? "";
188
- let sourceLocation;
189
- if (!yamlSource && pipelineParams.path) try {
190
- const loaded = await loadBrowserPipelineSource(pipelineParams.path);
191
- yamlSource = loaded.source;
192
- sourceLocation = loaded.location;
193
- } catch (e) {
194
- const msg = e instanceof Error ? e.message : String(e);
195
- return {
196
- content: [{
197
- type: "text",
198
- text: `Failed to read pipeline source: ${msg}`
199
- }],
200
- details: {
201
- ok: false,
202
- mode: "pipeline",
203
- error: msg
204
- }
205
- };
206
- }
207
- if (!yamlSource) return {
208
- content: [{
209
- type: "text",
210
- text: "Pipeline mode requires `yaml`, `script`, or `path`."
211
- }],
212
- details: {
213
- ok: false,
214
- mode: "pipeline"
215
- }
216
- };
217
- const pipelineArgs = pipelineParams.args ?? {};
218
- const dryRun = pipelineParams.dryRun === true;
219
- const ctx = buildContext(await deps.getPageForTask(), signal);
220
- if (deps.runPipeline) return formatResult(await deps.runPipeline(yamlSource, pipelineArgs, ctx, {
221
- dryRun,
222
- sourceLocation
223
- }));
224
- try {
225
- const { runBrowserPipeline } = await import("../../../../browser/pipeline/runner.js");
226
- return formatResult(await runBrowserPipeline(yamlSource, pipelineArgs, ctx, registry, {
227
- dryRun,
228
- sourceLocation
229
- }));
230
- } catch (e) {
231
- const msg = e instanceof Error ? e.message : String(e);
232
- log.error({ err: e }, `Pipeline execution failed: ${msg}`);
233
- return {
234
- content: [{
235
- type: "text",
236
- text: `Pipeline failed: ${msg}`
237
- }],
238
- details: {
239
- ok: false,
240
- mode: "pipeline",
241
- error: msg
242
- }
243
- };
244
- }
245
- }
246
175
  return {
247
176
  content: [{
248
177
  type: "text",
@@ -1,26 +1,14 @@
1
1
  /**
2
2
  * BrowserUseSchema — Typebox schema for the unified `browser_use` AgentTool.
3
3
  */
4
- export declare const BrowserUsePipelineSchema: import("@sinclair/typebox").TObject<{
5
- yaml: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
6
- path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
- args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
8
- dryRun: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
9
- }>;
10
4
  export declare const BrowserUseOptionsSchema: import("@sinclair/typebox").TObject<{
11
5
  timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
12
6
  headless: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
13
7
  }>;
14
8
  export declare const BrowserUseSchema: import("@sinclair/typebox").TObject<{
15
- mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"command">, import("@sinclair/typebox").TLiteral<"pipeline">, import("@sinclair/typebox").TLiteral<"inspect">, import("@sinclair/typebox").TLiteral<"close">]>;
9
+ mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"command">, import("@sinclair/typebox").TLiteral<"inspect">, import("@sinclair/typebox").TLiteral<"close">]>;
16
10
  command: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
17
11
  args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
18
- pipeline: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
19
- yaml: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
- path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
21
- args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
22
- dryRun: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
23
- }>>;
24
12
  options: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
25
13
  timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
26
14
  headless: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
@@ -3,12 +3,6 @@ import { Type } from "@sinclair/typebox";
3
3
  /**
4
4
  * BrowserUseSchema — Typebox schema for the unified `browser_use` AgentTool.
5
5
  */
6
- const BrowserUsePipelineSchema = Type.Object({
7
- yaml: Type.Optional(Type.String({ description: "Inline YAML browser pipeline." })),
8
- path: Type.Optional(Type.String({ description: "Path or http(s) URL to a .yaml pipeline file." })),
9
- args: Type.Optional(Type.Record(Type.String(), Type.Unknown(), { description: "Override pipeline arg defaults." })),
10
- dryRun: Type.Optional(Type.Boolean({ description: "Only parse & validate, do not execute." }))
11
- });
12
6
  const BrowserUseOptionsSchema = Type.Object({
13
7
  timeout: Type.Optional(Type.Number({ description: "Action timeout override (ms)." })),
14
8
  headless: Type.Optional(Type.Boolean({ description: "Override headless mode for this call." }))
@@ -16,14 +10,12 @@ const BrowserUseOptionsSchema = Type.Object({
16
10
  const BrowserUseSchema = Type.Object({
17
11
  mode: Type.Union([
18
12
  Type.Literal("command"),
19
- Type.Literal("pipeline"),
20
13
  Type.Literal("inspect"),
21
14
  Type.Literal("close")
22
15
  ], { description: "Execution mode." }),
23
16
  command: Type.Optional(Type.String({ description: "Browser action name (command mode). E.g. open, click, type, screenshot." })),
24
17
  args: Type.Optional(Type.Record(Type.String(), Type.Unknown(), { description: "Action arguments (command mode)." })),
25
- pipeline: Type.Optional(BrowserUsePipelineSchema),
26
18
  options: Type.Optional(BrowserUseOptionsSchema)
27
19
  });
28
20
  //#endregion
29
- export { BrowserUseOptionsSchema, BrowserUsePipelineSchema, BrowserUseSchema };
21
+ export { BrowserUseOptionsSchema, BrowserUseSchema };
@@ -0,0 +1,12 @@
1
+ import type { AgentTool } from '@earendil-works/pi-agent-core';
2
+ import type { BrowserRecipeService } from '../../browser/recipes/index.js';
3
+ declare const BrowserRecipeToolSchema: import("@sinclair/typebox").TObject<{
4
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"get">, import("@sinclair/typebox").TLiteral<"save">, import("@sinclair/typebox").TLiteral<"enable">, import("@sinclair/typebox").TLiteral<"disable">, import("@sinclair/typebox").TLiteral<"delete">, import("@sinclair/typebox").TLiteral<"run">]>;
5
+ recipeId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
6
+ yaml: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
8
+ }>;
9
+ export declare function createBrowserRecipeTool(deps: {
10
+ getBrowserRecipeService: () => BrowserRecipeService | undefined;
11
+ }): AgentTool<typeof BrowserRecipeToolSchema, Record<string, unknown>>;
12
+ export {};