@xopcai/xopc 0.0.353 → 0.0.354

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 (287) 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-YogQEteU.js +1 -0
  4. package/dist/gateway/static/root/assets/activity-store-X7CG9pzB.js +1 -0
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BVIuZcCP.js → agent-avatar-dicebear-B8PS1eLP.js} +1 -1
  6. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CLBSL9hl.js +1 -0
  7. package/dist/gateway/static/root/assets/agent-plugin-dialog-BninweSg.js +1 -0
  8. package/dist/gateway/static/root/assets/agents-CcVLP_WP.js +66 -0
  9. package/dist/gateway/static/root/assets/app-chrome-BeB4KgOf.js +1 -0
  10. package/dist/gateway/static/root/assets/app-management-settings-panel-COdQOmdT.js +1 -0
  11. package/dist/gateway/static/root/assets/appearance-settings-CDNjc2yy.js +1 -0
  12. package/dist/gateway/static/root/assets/apps-page-C-kvpPj8.js +1 -0
  13. package/dist/gateway/static/root/assets/{archive-plugin-BZXXJvpX.js → archive-plugin-QfOaQPL_.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-page-C7VKkDb5.js → automations-page-87DN5nXX.js} +1 -1
  15. package/dist/gateway/static/root/assets/automations-workspace-BdZ8NO8k.js +7 -0
  16. package/dist/gateway/static/root/assets/{binary-plugins-DoT3g5SP.js → binary-plugins-BF2lVwR9.js} +1 -1
  17. package/dist/gateway/static/root/assets/{block-editor-sqqrCafh.js → block-editor-B04Kv5DU.js} +39 -39
  18. package/dist/gateway/static/root/assets/bot-DjLkhyZL.js +1 -0
  19. package/dist/gateway/static/root/assets/{browser-automation-inputs-CZOKsAaa.js → browser-automation-inputs-FW3bYZ-z.js} +1 -1
  20. package/dist/gateway/static/root/assets/{browser-automations-page-TEeTmkGP.js → browser-automations-page-Ck6Zb9aU.js} +2 -2
  21. package/dist/gateway/static/root/assets/browser-settings-page-DHlyYItE.js +3 -0
  22. package/dist/gateway/static/root/assets/{capabilities-BOrLei_L.js → capabilities-BCF_160Z.js} +1 -1
  23. package/dist/gateway/static/root/assets/capabilities-CF4-mrIa.js +1 -0
  24. package/dist/gateway/static/root/assets/capabilities-page-C-6RLFNh.js +2 -0
  25. package/dist/gateway/static/root/assets/capabilities-settings-panel-CST_HBkR.js +8 -0
  26. package/dist/gateway/static/root/assets/capability-header-actions-PBPJJsp6.js +1 -0
  27. package/dist/gateway/static/root/assets/channels-CM4sIvcP.js +1 -0
  28. package/dist/gateway/static/root/assets/{chat-terminal-dock-Q99iKyiO.js → chat-terminal-dock-DTd7mWyE.js} +2 -2
  29. package/dist/gateway/static/root/assets/chevron-right-BweFrslA.js +1 -0
  30. package/dist/gateway/static/root/assets/circle-alert-BEjgurr2.js +1 -0
  31. package/dist/gateway/static/root/assets/circle-dashed-8qMD7gHf.js +1 -0
  32. package/dist/gateway/static/root/assets/circle-dot-BAseJTrF.js +1 -0
  33. package/dist/gateway/static/root/assets/circle-pause-CN9jYH2s.js +1 -0
  34. package/dist/gateway/static/root/assets/clock-3-DnrAnuyZ.js +1 -0
  35. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +1 -0
  36. package/dist/gateway/static/root/assets/computer-settings-page--9rh1mvu.js +1 -0
  37. package/dist/gateway/static/root/assets/connector-service-page-v6Is0BOO.js +1 -0
  38. package/dist/gateway/static/root/assets/connectors-page-CryQzmEZ.js +2 -0
  39. package/dist/gateway/static/root/assets/copy-text-row-BHDs3cBa.js +1 -0
  40. package/dist/gateway/static/root/assets/date-picker-DTsMzjoZ.js +1 -0
  41. package/dist/gateway/static/root/assets/{dependency-picker-BjH8XrKb.js → dependency-picker-Y1QYCcLp.js} +1 -1
  42. package/dist/gateway/static/root/assets/{desktop-pet-DyGxNAVW.js → desktop-pet-D9dfZrOp.js} +1 -1
  43. package/dist/gateway/static/root/assets/desktop-pet-settings-BHVOHZUL.js +1 -0
  44. package/dist/gateway/static/root/assets/device-pairing-wizard-Cy5YDZ2b.js +1 -0
  45. package/dist/gateway/static/root/assets/directory-picker-path-field-DeMo9KlE.js +1 -0
  46. package/dist/gateway/static/root/assets/dist-3h6cXXhT.js +1 -0
  47. package/dist/gateway/static/root/assets/dist-Che_jiQF.js +1 -0
  48. package/dist/gateway/static/root/assets/extension-debug-page-BrGWLJg9.js +1 -0
  49. package/dist/gateway/static/root/assets/extension-page-AWrvy1Nb.js +1 -0
  50. package/dist/gateway/static/root/assets/extension-provider-CUpbXB2k.js +1 -0
  51. package/dist/gateway/static/root/assets/extension-settings-page-C5KgmhYu.js +1 -0
  52. package/dist/gateway/static/root/assets/form-field-width-DJw_jULe.js +1 -0
  53. package/dist/gateway/static/root/assets/gateway-settings-DC-lok0J.js +1 -0
  54. package/dist/gateway/static/root/assets/git-branch-Dh9uxTot.js +1 -0
  55. package/dist/gateway/static/root/assets/home-page-C29_VFAs.js +1 -0
  56. package/dist/gateway/static/root/assets/imports-page-BKVKfVMA.js +1 -0
  57. package/dist/gateway/static/root/assets/index-BJh5gU04.css +1 -0
  58. package/dist/gateway/static/root/assets/index-ByFXhQ-T.js +107 -0
  59. package/dist/gateway/static/root/assets/index.module-Cd9ENXfk.js +1 -0
  60. package/dist/gateway/static/root/assets/interaction-BdhHBbYa.js +1 -0
  61. package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +1 -0
  62. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CoYdyBRh.js → keyboard-shortcuts-settings-DiwE4gKU.js} +1 -1
  63. package/dist/gateway/static/root/assets/local-app-workbench-page-Dt3TC64L.js +1 -0
  64. package/dist/gateway/static/root/assets/{local-apps-page-CeBhXeoX.js → local-apps-page-DFPhWkxU.js} +1 -1
  65. package/dist/gateway/static/root/assets/logs-page-C4faHZHj.js +2 -0
  66. package/dist/gateway/static/root/assets/management-settings-pZLdvIiw.js +1 -0
  67. package/dist/gateway/static/root/assets/markdown-view-7tzqIp_G.js +201 -0
  68. package/dist/gateway/static/root/assets/{media-plugins-C9ya5rUH.js → media-plugins-cjgrKnne.js} +1 -1
  69. package/dist/gateway/static/root/assets/message-square-fVE7Ghj1.js +1 -0
  70. package/dist/gateway/static/root/assets/mic-CuUb7zc-.js +1 -0
  71. package/dist/gateway/static/root/assets/model-display-name-DXhO9rcM.js +1 -0
  72. package/dist/gateway/static/root/assets/models-hub-cache-HGrORbzR.js +1 -0
  73. package/dist/gateway/static/root/assets/note-detail-panel-BLnT1tYJ.js +5 -0
  74. package/dist/gateway/static/root/assets/notes-api-J0yhflxC.js +1 -0
  75. package/dist/gateway/static/root/assets/notes-page-BawArJvP.js +8 -0
  76. package/dist/gateway/static/root/assets/oauth-api-CYe61zfD.js +1 -0
  77. package/dist/gateway/static/root/assets/page-context-capture-button-CiBUm2Br.js +1 -0
  78. package/dist/gateway/static/root/assets/page-tabs-D2xpUV26.js +1 -0
  79. package/dist/gateway/static/root/assets/pause-DuPxgSxk.js +1 -0
  80. package/dist/gateway/static/root/assets/personal-page-Cng583RH.js +1 -0
  81. package/dist/gateway/static/root/assets/play-kxZvpBg8.js +1 -0
  82. package/dist/gateway/static/root/assets/popover-select-DcsFzD_i.js +1 -0
  83. package/dist/gateway/static/root/assets/preview-open-alternatives-Dvey7GwU.js +1 -0
  84. package/dist/gateway/static/root/assets/{product-open-page-DUPsiVP9.js → product-open-page-B8_w6c3J.js} +1 -1
  85. package/dist/gateway/static/root/assets/project-detail-page-CDZdKiTz.js +1 -0
  86. package/dist/gateway/static/root/assets/projects-page-BvahSrZi.js +1 -0
  87. package/dist/gateway/static/root/assets/remote-access-hub-CU_UdkuI.js +1 -0
  88. package/dist/gateway/static/root/assets/rotate-ccw-JM1TBLpp.js +1 -0
  89. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-C25xEYTK.js → runtime-tools-settings-panel-BnMS50vK.js} +2 -2
  90. package/dist/gateway/static/root/assets/scenes-page-CDR1-q25.js +2 -0
  91. package/dist/gateway/static/root/assets/schema-form-B4Xa8w8S.js +1 -0
  92. package/dist/gateway/static/root/assets/secret-input-DPl3VYM8.js +1 -0
  93. package/dist/gateway/static/root/assets/send-session-input-C7Nqy0sK.js +1 -0
  94. package/dist/gateway/static/root/assets/sessions-page-Ymyg98G-.js +1 -0
  95. package/dist/gateway/static/root/assets/settings-2-D-csvaET.js +1 -0
  96. package/dist/gateway/static/root/assets/settings-advanced-gate-wMZhxwTM.js +1 -0
  97. package/dist/gateway/static/root/assets/settings-form-draft-Dy10ldo8.js +1 -0
  98. package/dist/gateway/static/root/assets/settings-form-section-exRhP9xn.js +1 -0
  99. package/dist/gateway/static/root/assets/{settings-page-DqCJHcdG.js → settings-page-CHZdpvkT.js} +1 -1
  100. package/dist/gateway/static/root/assets/setup-status-panel-HESfALIF.js +1 -0
  101. package/dist/gateway/static/root/assets/share-link-dialog-COlX10Dc.js +1 -0
  102. package/dist/gateway/static/root/assets/share-preview-page-NtRLUieq.js +2 -0
  103. package/dist/gateway/static/root/assets/shares-api-DICV5EKH.js +1 -0
  104. package/dist/gateway/static/root/assets/shares-settings-CXEBo5YL.js +1 -0
  105. package/dist/gateway/static/root/assets/skill-api-DYgcO7y0.js +1 -0
  106. package/dist/gateway/static/root/assets/skill-api-utils-C7V4JVXM.js +1 -0
  107. package/dist/gateway/static/root/assets/skill-reload-api-CWH3Fmx4.js +1 -0
  108. package/dist/gateway/static/root/assets/skill-wire-pattern-BPpeIcCi.js +1 -0
  109. package/dist/gateway/static/root/assets/skills-page-Dx5v64jU.js +2 -0
  110. package/dist/gateway/static/root/assets/sparkles-DHlfQFAF.js +1 -0
  111. package/dist/gateway/static/root/assets/system-settings-panel-wXCBwYwE.js +1 -0
  112. package/dist/gateway/static/root/assets/task-detail-page-hoIyr7tp.js +1 -0
  113. package/dist/gateway/static/root/assets/tasks-Buv1mgPF.js +1 -0
  114. package/dist/gateway/static/root/assets/theme-store-BKgBPLH4.js +1 -0
  115. package/dist/gateway/static/root/assets/tunnel-api-C0t8y3Mi.js +1 -0
  116. package/dist/gateway/static/root/assets/usage-page-A2DZAidl.js +1 -0
  117. package/dist/gateway/static/root/assets/use-async-resource-GrnWNwMZ.js +1 -0
  118. package/dist/gateway/static/root/assets/use-autosave-Cn6hqqyM.js +1 -0
  119. package/dist/gateway/static/root/assets/use-composer-attachments-DL61XeSu.js +2 -0
  120. package/dist/gateway/static/root/assets/use-file-preview-expanded-Cl9mU32w.js +2 -0
  121. package/dist/gateway/static/root/assets/user-model-page-C1jGTwjK.js +2 -0
  122. package/dist/gateway/static/root/assets/voice-api-key-field-Bw05QB_V.js +1 -0
  123. package/dist/gateway/static/root/assets/{work-discovery-overlay-BnfD6w0k.js → work-discovery-overlay-xB0QpOFk.js} +1 -1
  124. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DSy57rBr.js → workflow-run-setup-panel-rM4U1FXc.js} +2 -2
  125. package/dist/gateway/static/root/assets/workflows-page-QKC34FzQ.js +6 -0
  126. package/dist/gateway/static/root/assets/workspace-api-BbBT75Kg.js +2 -0
  127. package/dist/gateway/static/root/index.html +61 -19
  128. package/dist/package.js +1 -1
  129. package/dist/packages/gateway-contract/src/tasks.js +19 -2
  130. package/dist/src/agent/agent-manager.js +7 -7
  131. package/dist/src/agent/background-review/run-background-review.js +1 -1
  132. package/dist/src/agent/embedded/run-turn.js +11 -1
  133. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  134. package/dist/src/agent/image/tool-model-config.js +1 -1
  135. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
  136. package/dist/src/agent/service.js +6 -3
  137. package/dist/src/agent/session/session-config-service.js +27 -1
  138. package/dist/src/agent/session/session-hydrator.js +1 -1
  139. package/dist/src/agent/skills/hub-lock.js +1 -1
  140. package/dist/src/agent/skills/index.js +1 -1
  141. package/dist/src/agent/skills/managed-store.js +1 -1
  142. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  143. package/dist/src/agent/tools/factory.js +21 -14
  144. package/dist/src/agent/tools/personal-preference-tool.d.ts +10 -0
  145. package/dist/src/agent/tools/personal-preference-tool.js +43 -0
  146. package/dist/src/agent/tools/personal-task-tool.d.ts +28 -0
  147. package/dist/src/agent/tools/personal-task-tool.js +165 -0
  148. package/dist/src/agent/tools/xopc-use-tool.js +5 -4
  149. package/dist/src/agent-catalog/capabilities.js +2 -2
  150. package/dist/src/agent-catalog/service.d.ts +1 -1
  151. package/dist/src/agent-catalog/service.js +2 -1
  152. package/dist/src/agent-config/index.js +2 -2
  153. package/dist/src/agent-config/schema.d.ts +148 -0
  154. package/dist/src/agent-config/schema.js +40 -2
  155. package/dist/src/auth/credentials.js +1 -1
  156. package/dist/src/auth/oauth-provider-lock.js +1 -1
  157. package/dist/src/auth/profiles/store.js +1 -1
  158. package/dist/src/automations/capabilities/drafts.js +1 -1
  159. package/dist/src/bootstrap/application-state.js +1 -1
  160. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  161. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  162. package/dist/src/capabilities/runtime/product.js +1 -1
  163. package/dist/src/chat-commands/builtins/thinking.js +12 -2
  164. package/dist/src/chat-commands/context.js +7 -1
  165. package/dist/src/cli/commands/agent.js +1 -1
  166. package/dist/src/cli/commands/agents.js +1 -1
  167. package/dist/src/cli/commands/auth.js +1 -1
  168. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  169. package/dist/src/cli/commands/models.js +1 -1
  170. package/dist/src/cli/commands/onboard/model.js +2 -2
  171. package/dist/src/cli/commands/providers.js +1 -1
  172. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  173. package/dist/src/config/index.js +3 -3
  174. package/dist/src/config/loader.js +1 -1
  175. package/dist/src/config/models-json.js +1 -1
  176. package/dist/src/config/schema.js +1 -1
  177. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  178. package/dist/src/extensions/lockfile.js +1 -1
  179. package/dist/src/gateway/agents-admin.js +2 -2
  180. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -0
  181. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  182. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  183. package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
  184. package/dist/src/gateway/hono/routes/models.js +1 -1
  185. package/dist/src/gateway/hono/routes/notes.js +2 -2
  186. package/dist/src/gateway/hono/routes/personal-agent.d.ts +3 -0
  187. package/dist/src/gateway/hono/routes/personal-agent.js +107 -0
  188. package/dist/src/gateway/hono/routes/projects.js +2 -2
  189. package/dist/src/gateway/hono/routes/session-input-handler.js +2 -2
  190. package/dist/src/gateway/hono/routes/sessions.js +5 -0
  191. package/dist/src/gateway/hono/routes/side-chats.js +1 -1
  192. package/dist/src/gateway/hono/routes/tasks.js +65 -2
  193. package/dist/src/gateway/hono/routes/voice.js +8 -0
  194. package/dist/src/gateway/image-generation-setup.js +2 -2
  195. package/dist/src/gateway/lock.js +1 -1
  196. package/dist/src/gateway/service/session-command-service.js +7 -1
  197. package/dist/src/gateway/service/sessions-api.js +11 -1
  198. package/dist/src/gateway/service.js +5 -5
  199. package/dist/src/gateway/session-reset-service.js +5 -0
  200. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  201. package/dist/src/local-apps/service.js +1 -1
  202. package/dist/src/personal-agent/policy.d.ts +1 -0
  203. package/dist/src/personal-agent/policy.js +13 -0
  204. package/dist/src/personal-agent/repository.d.ts +25 -0
  205. package/dist/src/personal-agent/repository.js +68 -0
  206. package/dist/src/personal-agent/service.d.ts +48 -0
  207. package/dist/src/personal-agent/service.js +222 -0
  208. package/dist/src/providers/model-catalog-persistence.js +1 -1
  209. package/dist/src/session/resolve-session.js +4 -2
  210. package/dist/src/storage/sqlite/migrations/229_task_criterion_reviews.sql +12 -0
  211. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  212. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  213. package/dist/src/storage/sqlite/schema.js +1 -1
  214. package/dist/src/storage/sqlite/schema.sql +13 -0
  215. package/dist/src/storage/sqlite/session-repository.js +6 -2
  216. package/dist/src/storage/sqlite/transcript-repository.js +2 -1
  217. package/dist/src/tasks/capabilities/read.js +5 -2
  218. package/dist/src/tasks/task-application-service.js +6 -1
  219. package/dist/src/tasks/task-criterion-review-repository.d.ts +22 -0
  220. package/dist/src/tasks/task-criterion-review-repository.js +74 -0
  221. package/dist/src/tasks/task-main-update-decision-service.js +6 -0
  222. package/dist/src/tui/backends/embedded-backend.js +2 -2
  223. package/dist/src/voice/realtime/persona-context.js +1 -1
  224. package/package.json +3 -3
  225. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CcTnphqy.js +0 -1
  226. package/dist/gateway/static/root/assets/agent-plugin-dialog-CdCzMPhC.js +0 -1
  227. package/dist/gateway/static/root/assets/agents-BiNKpndr.js +0 -66
  228. package/dist/gateway/static/root/assets/app-management-settings-panel-BvGDN5J6.js +0 -1
  229. package/dist/gateway/static/root/assets/appearance-settings-BhQYkuQj.js +0 -1
  230. package/dist/gateway/static/root/assets/apps-page-BQZJuM-C.js +0 -1
  231. package/dist/gateway/static/root/assets/automations-workspace-y4qcvlg8.js +0 -7
  232. package/dist/gateway/static/root/assets/browser-settings-page--N4P7V0l.js +0 -3
  233. package/dist/gateway/static/root/assets/capabilities-page-F7OAv-iz.js +0 -2
  234. package/dist/gateway/static/root/assets/capabilities-settings-panel-CaiIo1S1.js +0 -8
  235. package/dist/gateway/static/root/assets/capability-header-actions-CR_O9_Vr.js +0 -1
  236. package/dist/gateway/static/root/assets/channels-Bb-8c4wl.js +0 -1
  237. package/dist/gateway/static/root/assets/computer-settings-page-QuXZBfky.js +0 -1
  238. package/dist/gateway/static/root/assets/connector-service-page-BIqzVqCO.js +0 -1
  239. package/dist/gateway/static/root/assets/connectors-page-CZ24DSBJ.js +0 -2
  240. package/dist/gateway/static/root/assets/date-picker-Ck-FmYEL.js +0 -1
  241. package/dist/gateway/static/root/assets/desktop-pet-settings-C1rKgB-S.js +0 -1
  242. package/dist/gateway/static/root/assets/device-pairing-wizard-UrPcOU6Q.js +0 -1
  243. package/dist/gateway/static/root/assets/directory-picker-path-field-BYxUgMZb.js +0 -1
  244. package/dist/gateway/static/root/assets/dist-CKkafhaS.js +0 -1
  245. package/dist/gateway/static/root/assets/dist-io9jFpN72.js +0 -1
  246. package/dist/gateway/static/root/assets/extension-debug-page-CGL0jpQA.js +0 -1
  247. package/dist/gateway/static/root/assets/extension-page-DPWf-tYg.js +0 -1
  248. package/dist/gateway/static/root/assets/extension-settings-page-DZWBY39d.js +0 -1
  249. package/dist/gateway/static/root/assets/gateway-settings-D5w5aYXK.js +0 -1
  250. package/dist/gateway/static/root/assets/home-page-DPQwxBGy.js +0 -1
  251. package/dist/gateway/static/root/assets/imports-page-CnRWDtGz.js +0 -1
  252. package/dist/gateway/static/root/assets/index-B-w6Rk9Z.css +0 -1
  253. package/dist/gateway/static/root/assets/index-DU5Eb1V8.js +0 -106
  254. package/dist/gateway/static/root/assets/local-app-workbench-page-hjFeYlIq.js +0 -1
  255. package/dist/gateway/static/root/assets/logs-page-CzpZDjkA.js +0 -2
  256. package/dist/gateway/static/root/assets/management-settings-Beu_R_Rc.js +0 -1
  257. package/dist/gateway/static/root/assets/markdown-view-BlzX7Ze5.js +0 -201
  258. package/dist/gateway/static/root/assets/note-detail-panel-D8bpTGwP.js +0 -5
  259. package/dist/gateway/static/root/assets/notes-page-OmgXowUG.js +0 -8
  260. package/dist/gateway/static/root/assets/page-context-capture-button-BjjjuLkz.js +0 -1
  261. package/dist/gateway/static/root/assets/page-tabs-_DiuzxyD.js +0 -1
  262. package/dist/gateway/static/root/assets/popover-select-0p9PIHRy.js +0 -1
  263. package/dist/gateway/static/root/assets/preview-open-alternatives-BKvUadws.js +0 -1
  264. package/dist/gateway/static/root/assets/project-detail-page-CWlCg2x5.js +0 -1
  265. package/dist/gateway/static/root/assets/projects-page-NbVNo0tP.js +0 -1
  266. package/dist/gateway/static/root/assets/remote-access-hub-CD8HrqGC.js +0 -1
  267. package/dist/gateway/static/root/assets/scenes-page-DbWaemwR.js +0 -2
  268. package/dist/gateway/static/root/assets/schema-form-_3LQ4hyB.js +0 -1
  269. package/dist/gateway/static/root/assets/sessions-page-B7ZUdXlb.js +0 -1
  270. package/dist/gateway/static/root/assets/settings-advanced-gate-CpKzZMft.js +0 -1
  271. package/dist/gateway/static/root/assets/settings-form-section-DS80hVSY.js +0 -1
  272. package/dist/gateway/static/root/assets/setup-status-panel-De-kC3yJ.js +0 -1
  273. package/dist/gateway/static/root/assets/share-preview-page-T-0g_rwr.js +0 -2
  274. package/dist/gateway/static/root/assets/shares-settings-Dz33T3du.js +0 -1
  275. package/dist/gateway/static/root/assets/skill-api-Cx6GGpSY.js +0 -1
  276. package/dist/gateway/static/root/assets/skill-reload-api-DyJ-Duem.js +0 -1
  277. package/dist/gateway/static/root/assets/skills-page-B2iyN-kP.js +0 -2
  278. package/dist/gateway/static/root/assets/system-settings-panel-By3SZQR_.js +0 -1
  279. package/dist/gateway/static/root/assets/task-detail-page-4yHUTs4_.js +0 -1
  280. package/dist/gateway/static/root/assets/tasks-BH8_WMUF.js +0 -1
  281. package/dist/gateway/static/root/assets/tunnel-api-BoH0LBkw.js +0 -1
  282. package/dist/gateway/static/root/assets/usage-page-dKU5X9zT.js +0 -1
  283. package/dist/gateway/static/root/assets/use-autosave-YKCwQvqT.js +0 -1
  284. package/dist/gateway/static/root/assets/user-model-page-Uht32LPP.js +0 -2
  285. package/dist/gateway/static/root/assets/voice-api-key-field-DiqHIA8l.js +0 -1
  286. package/dist/gateway/static/root/assets/workflows-page-Cq3vRUbc.js +0 -6
  287. /package/dist/gateway/static/root/assets/{dist-CI_fqRk-2.js → dist-CI_fqRk-.js} +0 -0
@@ -8,7 +8,7 @@ function verifiedTaskCriteria(receipt) {
8
8
  const evidence = new Set(receipt?.evidence.filter((item) => item.strength === "verified").map((item) => item.title));
9
9
  return new Set(receipt?.verification.checks.filter((check) => check.status === "passed" && check.evidenceTitles.some((title) => evidence.has(title))).map((check) => check.criterion));
10
10
  }
11
- var TaskPrioritySchema, TaskChangedFieldSchema, TaskAcceptancePolicySchema, ActorRefSchema, TaskContractSchema, TaskSchema, TaskContextRoleSchema, TaskContextEdgeSchema, TaskAuthorityGrantSchema, TaskDependencySummarySchema, TaskEvidenceSchema, TaskJudgmentSchema, TaskRunReceiptSchema, TaskExecutorSelectionSchema, TaskContractInputSchema, TaskContextInputSchema, TaskCreateRequestSchema, TaskPatchRequestSchema, TaskWaitInputSchema, TaskCommandSchema, TaskCommandRequestSchema, TaskDependencyUpdateRequestSchema, TaskBoardPositionRequestSchema, TaskListResponseSchema, TaskConversationStateSchema, TaskSessionLinkSchema, TaskHandoffRequestSchema, TaskDetailResponseSchema;
11
+ var TaskPrioritySchema, TaskChangedFieldSchema, TaskAcceptancePolicySchema, ActorRefSchema, TaskContractSchema, TaskSchema, TaskContextRoleSchema, TaskContextEdgeSchema, TaskAuthorityGrantSchema, TaskDependencySummarySchema, TaskEvidenceSchema, TaskJudgmentSchema, TaskRunReceiptSchema, TaskCriterionReviewSchema, TaskCriterionReviewInputSchema, TaskExecutorSelectionSchema, TaskContractInputSchema, TaskContextInputSchema, TaskCreateRequestSchema, TaskPatchRequestSchema, TaskWaitInputSchema, TaskCommandSchema, TaskCommandRequestSchema, TaskDependencyUpdateRequestSchema, TaskBoardPositionRequestSchema, TaskListResponseSchema, TaskConversationStateSchema, TaskSessionLinkSchema, TaskHandoffRequestSchema, TaskDetailResponseSchema;
12
12
  var init_tasks = __esmMin((() => {
13
13
  init_task_lifecycle();
14
14
  init_task_runs();
@@ -36,6 +36,7 @@ var init_tasks = __esmMin((() => {
36
36
  "context",
37
37
  "runs",
38
38
  "receipts",
39
+ "acceptance",
39
40
  "feedback",
40
41
  "attention",
41
42
  "conversation"
@@ -236,6 +237,21 @@ var init_tasks = __esmMin((() => {
236
237
  contextTraceId: z.string().optional(),
237
238
  finalizedAt: z.number().int().nonnegative()
238
239
  });
240
+ TaskCriterionReviewSchema = z.object({
241
+ contractVersion: z.number().int().positive(),
242
+ criterionIndex: z.number().int().nonnegative(),
243
+ criterionText: z.string(),
244
+ status: z.enum(["passed", "failed"]),
245
+ note: z.string().optional(),
246
+ reviewedBy: ActorRefSchema,
247
+ reviewedAt: z.number().int().nonnegative()
248
+ });
249
+ TaskCriterionReviewInputSchema = z.object({
250
+ expectedVersion: z.number().int().positive(),
251
+ contractVersion: z.number().int().positive(),
252
+ status: z.enum(["passed", "failed"]),
253
+ note: z.string().trim().max(2e3).optional()
254
+ }).strict();
239
255
  TaskExecutorSelectionSchema = z.discriminatedUnion("kind", [
240
256
  z.object({
241
257
  kind: z.literal("agent"),
@@ -448,6 +464,7 @@ var init_tasks = __esmMin((() => {
448
464
  waits: z.array(TaskWaitSchema),
449
465
  runs: z.array(TaskRunSchema),
450
466
  receipts: z.array(TaskRunReceiptSchema),
467
+ criterionReviews: z.array(TaskCriterionReviewSchema),
451
468
  context: z.array(TaskContextEdgeSchema),
452
469
  conversation: TaskConversationStateSchema,
453
470
  sessions: z.array(TaskSessionLinkSchema),
@@ -463,4 +480,4 @@ var init_tasks = __esmMin((() => {
463
480
  }));
464
481
  //#endregion
465
482
  init_tasks();
466
- export { ActorRefSchema, TaskAcceptancePolicySchema, TaskAuthorityGrantSchema, TaskBoardPositionRequestSchema, TaskChangedFieldSchema, TaskCommandRequestSchema, TaskCommandSchema, TaskContextEdgeSchema, TaskContextInputSchema, TaskContextRoleSchema, TaskContractInputSchema, TaskContractSchema, TaskConversationStateSchema, TaskCreateRequestSchema, TaskDependencySummarySchema, TaskDependencyUpdateRequestSchema, TaskDetailResponseSchema, TaskEvidenceSchema, TaskExecutorSelectionSchema, TaskHandoffRequestSchema, TaskJudgmentSchema, TaskListResponseSchema, TaskPatchRequestSchema, TaskPrioritySchema, TaskRunReceiptSchema, TaskSchema, TaskSessionLinkSchema, init_tasks, verifiedTaskCriteria };
483
+ export { ActorRefSchema, TaskAcceptancePolicySchema, TaskAuthorityGrantSchema, TaskBoardPositionRequestSchema, TaskChangedFieldSchema, TaskCommandRequestSchema, TaskCommandSchema, TaskContextEdgeSchema, TaskContextInputSchema, TaskContextRoleSchema, TaskContractInputSchema, TaskContractSchema, TaskConversationStateSchema, TaskCreateRequestSchema, TaskCriterionReviewInputSchema, TaskCriterionReviewSchema, TaskDependencySummarySchema, TaskDependencyUpdateRequestSchema, TaskDetailResponseSchema, TaskEvidenceSchema, TaskExecutorSelectionSchema, TaskHandoffRequestSchema, TaskJudgmentSchema, TaskListResponseSchema, TaskPatchRequestSchema, TaskPrioritySchema, TaskRunReceiptSchema, TaskSchema, TaskSessionLinkSchema, init_tasks, verifiedTaskCriteria };
@@ -6,11 +6,10 @@ import { consumeClarificationApproval, init_clarification_wait_repository } from
6
6
  import { getInteractionState } from "../storage/sqlite/interaction-state-repository.js";
7
7
  import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js";
8
8
  import { init_sqlite } from "../storage/sqlite/index.js";
9
- import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
10
- import { init_agent_scope, listAgentEntries, resolveAgentProfileDir } from "./agent-scope.js";
11
- import { extractTextContent } from "./context/workspace.js";
12
9
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
13
10
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
11
+ import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
12
+ import { init_agent_scope, listAgentEntries, resolveAgentProfileDir } from "./agent-scope.js";
14
13
  import { resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
15
14
  import { init_paths, resolveBundledSkillsDir } from "../config/paths.js";
16
15
  import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
@@ -18,6 +17,7 @@ import { CredentialResolver, init_credentials } from "../auth/credentials.js";
18
17
  import { getApiKeySync, getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
19
18
  import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
20
19
  import { continuesAfterTool, trackAiUsageStream } from "../usage/recorder.js";
20
+ import { extractTextContent } from "./context/workspace.js";
21
21
  import { buildExecutionScopeContextForPrompt } from "./context/execution-scope.js";
22
22
  import { clearBootstrapSnapshot } from "./bootstrap/bootstrap-cache.js";
23
23
  import { resolveBootstrapContextSync } from "./bootstrap/bootstrap-files.js";
@@ -686,7 +686,7 @@ var AgentManager = class {
686
686
  conversationId: instance.conversationId,
687
687
  modelRef: instance.effectiveProfile.primaryModelRef?.trim() || this.defaultModel,
688
688
  agentId: instance.effectiveProfile.agentId,
689
- thinkingLevel: this.config.thinkingLevel ?? "medium",
689
+ thinkingLevel: instance.effectiveProfile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium",
690
690
  activeProjectContext: instance.activeProjectContext
691
691
  });
692
692
  replaceAgentSystemPrompt(instance.agent, newPrompt);
@@ -761,7 +761,7 @@ var AgentManager = class {
761
761
  conversationId: instance.conversationId,
762
762
  modelRef: instance.effectiveProfile.primaryModelRef?.trim() || this.defaultModel,
763
763
  agentId: instance.effectiveProfile.agentId,
764
- thinkingLevel: this.config.thinkingLevel ?? "medium",
764
+ thinkingLevel: instance.effectiveProfile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium",
765
765
  activeProjectContext: instance.activeProjectContext
766
766
  });
767
767
  replaceAgentSystemPrompt(instance.agent, newPrompt);
@@ -887,7 +887,7 @@ var AgentManager = class {
887
887
  const rt = this.workspaceRuntimes.getOrCreate(resolvedWorkspacePath, instance.effectiveProfile.agentId);
888
888
  const contextFiles = this.resolveContextFilesForSession(conversationId, instance.effectiveProfile);
889
889
  const modelRef = instance.effectiveProfile.primaryModelRef?.trim() || this.defaultModel;
890
- const thinkingLevel = this.config.thinkingLevel ?? "medium";
890
+ const thinkingLevel = instance.effectiveProfile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium";
891
891
  const activeProjectContext = this.buildExecutionScopeContext(conversationId);
892
892
  replaceAgentSystemPrompt(instance.agent, rt.systemPromptBuilder.build(contextFiles, {
893
893
  externalMemoryInstructions: this.buildExternalMemoryInstructions(conversationId, rt),
@@ -1006,7 +1006,7 @@ var AgentManager = class {
1006
1006
  getSkillManager: () => rt.skillManager
1007
1007
  });
1008
1008
  const registeredToolNames = tools.map((t) => t.name);
1009
- const thinkingLevel = this.config.thinkingLevel ?? "medium";
1009
+ const thinkingLevel = profile.config.runtime.thinkingLevel ?? this.config.thinkingLevel ?? "medium";
1010
1010
  const turnPolicy = this.buildAgentTurnPolicy(conversationId, profile);
1011
1011
  const providerStreamFn = createExtensionAwareStreamFn();
1012
1012
  agent = new Agent({
@@ -4,12 +4,12 @@ import { finishContextExtractionRun } from "../../storage/sqlite/context-extract
4
4
  import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
5
5
  import { loadCompactionSourceSnapshot } from "../../storage/sqlite/transcript-repository.js";
6
6
  import { init_sqlite } from "../../storage/sqlite/index.js";
7
- import { extractTextContent } from "../context/workspace.js";
8
7
  import { extractProfileAgentId } from "../../config/agent-profile.js";
9
8
  import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
10
9
  import { getApiKeySync, init_providers, resolveModel } from "../../providers/index.js";
11
10
  import { createExtensionAwareStreamFn } from "../../providers/extension-stream-bridge.js";
12
11
  import { trackAiUsageStream } from "../../usage/recorder.js";
12
+ import { extractTextContent } from "../context/workspace.js";
13
13
  import { getAssertionSlot, listUserAssertions } from "../../user-model/repository.js";
14
14
  import { readAgentMessageContent } from "../memory/agent-message-access.js";
15
15
  import { isAssistantTurnAborted, isAssistantTurnFailed } from "../orchestration/llm-turn-retry.js";
@@ -1,7 +1,12 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { isXopcDatabaseOpen } from "../../storage/sqlite/connection.js";
3
4
  import { getClarification, getClarificationResumeInput, init_clarification_wait_repository, isClarificationSuspended } from "../../storage/sqlite/clarification-wait-repository.js";
4
5
  import { getConnectionResumeInput, init_connection_wait_repository, isConnectionSuspended } from "../../storage/sqlite/connection-wait-repository.js";
6
+ import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
7
+ import { init_session_repository } from "../../storage/sqlite/session-repository.js";
8
+ import { init_sqlite } from "../../storage/sqlite/index.js";
9
+ import { resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
5
10
  import { continuesAfterTool, trackAiUsageStream } from "../../usage/recorder.js";
6
11
  import { runWithEmbeddedExecutionSession } from "./execution-context.js";
7
12
  import { isComputerControlActive, isComputerLeaseTool, stopComputerControl } from "../../computer/control-guard.js";
@@ -26,11 +31,14 @@ import { markTurnToolResult } from "../memory/turn-provenance.js";
26
31
  import { RepositoryInstructions } from "../coding/repository-instructions.js";
27
32
  import { RunVerification } from "../coding/run-verification.js";
28
33
  import { withDelegationScope } from "../orchestration/delegation-scope.js";
34
+ import { getModelThinking } from "../../providers/model-thinking.js";
29
35
  import { createAssistantMessageEventStream, getCurrentSystemPrompt, getCurrentTools, isRecoverableLength } from "@earendil-works/pi-ai";
30
36
  //#region src/agent/embedded/run-turn.ts
31
37
  init_connection_wait_repository();
32
38
  init_clarification_wait_repository();
33
39
  init_logger();
40
+ init_sqlite();
41
+ init_session_repository();
34
42
  const log = createLogger("EmbeddedRun");
35
43
  const LOG_PREVIEW_MAX_CHARS = 300;
36
44
  function truncateForLog(value, maxChars = LOG_PREVIEW_MAX_CHARS) {
@@ -234,6 +242,8 @@ async function runXopcEmbeddedTurn(params) {
234
242
  const { conversationId, runId, userMessage, model, tools, systemPrompt, thinkingLevel, workspaceDir, sessionStore, onEvent } = params;
235
243
  const timeoutMs = params.timeoutMs || resolveAgentTurnTimeoutMs();
236
244
  const resolvedModel = requireEmbeddedModel(model, params.modelRef);
245
+ const configuredThinking = isXopcDatabaseOpen() && getSessionMetadata(conversationId) ? resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel : void 0;
246
+ if (configuredThinking && !getModelThinking(resolvedModel).options.includes(configuredThinking)) throw new Error(`Agent requires a model that supports thinking ${configuredThinking}`);
237
247
  const promptCachePolicy = resolvePromptCachePolicy(params.promptCachePolicy);
238
248
  const compactionPolicy = params.compactionPolicy ?? resolveCompactionPolicy();
239
249
  const transcriptRuntime = params.transcriptRuntime ?? (sessionStore ? await createSqliteTranscriptRuntime({
@@ -263,7 +273,7 @@ async function runXopcEmbeddedTurn(params) {
263
273
  modelRef: params.modelRef,
264
274
  tools,
265
275
  systemPrompt: [systemPrompt, rootInstructions].filter(Boolean).join("\n\n"),
266
- thinkingLevel: thinkingLevel ?? "medium",
276
+ thinkingLevel: configuredThinking ?? thinkingLevel ?? "medium",
267
277
  transcriptRuntime
268
278
  });
269
279
  const { session, reused } = runner;
@@ -1,7 +1,7 @@
1
- import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
2
- import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
3
1
  import { COMPUTER_CONTROL_TOOL, init_src } from "../../../packages/computer-control-contract/src/index.js";
4
2
  import { BROWSER_CONTROL_ENDPOINT_TOOL_NAME } from "../../../packages/browser-control-contract/src/index.js";
3
+ import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
4
+ import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
5
5
  import { externalToolRef, parseExternalToolRef } from "./refs.js";
6
6
  import { createHash } from "node:crypto";
7
7
  //#region src/agent/external-tools/endpoint-provider.ts
@@ -1,5 +1,5 @@
1
- import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
2
1
  import { getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef } from "../../config/schema.js";
2
+ import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
3
3
  import { resolveEffectiveAgentConfigForAgent } 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";
@@ -1,5 +1,5 @@
1
- import { init_write_file_atomic, writeTextAtomic } from "../../../infra/write-file-atomic.js";
2
1
  import { init_paths, resolveMcpOAuthPath } from "../../../config/paths.js";
2
+ import { init_write_file_atomic, writeTextAtomic } from "../../../infra/write-file-atomic.js";
3
3
  import { dirname, join } from "node:path";
4
4
  import { createHash } from "node:crypto";
5
5
  import { readFile, rm } from "node:fs/promises";
@@ -1,13 +1,13 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { init_attachment_ref, parseNoteAttachmentTarget } from "../notes/attachment-ref.js";
4
- import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "./agent-scope.js";
5
- import { extractTextContent } from "./context/workspace.js";
6
4
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
7
5
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
6
+ import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "./agent-scope.js";
8
7
  import { init_agent_session_key, resolveAgentIdFromConversationId } from "../routing/agent-session-key.js";
9
- import { extractProfileAgentId } from "../config/agent-profile.js";
8
+ import { extractProfileAgentId, resolveEffectiveAgentConfigForSession } from "../config/agent-profile.js";
10
9
  import { init_providers, resolveModel } from "../providers/index.js";
10
+ import { extractTextContent } from "./context/workspace.js";
11
11
  import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
12
12
  import { getProjectForSession } from "../projects/workspace.js";
13
13
  import { runWithEmbeddedExecutionSession } from "./embedded/execution-context.js";
@@ -22,6 +22,7 @@ import { onSessionTranscriptUpdate } from "../session/transcript-events.js";
22
22
  import { persistInboundAttachments } from "../channels/attachments/inbound-persist.js";
23
23
  import { buildTranscriptUserMessage, hydrateUserTurnForLlm } from "./inbound/attachment-pipeline.js";
24
24
  import { resolveCompactionPolicy } from "./memory/compaction-policy.js";
25
+ import { getModelThinking } from "../providers/model-thinking.js";
25
26
  import { runXopcEmbeddedTurn } from "./embedded/run-turn.js";
26
27
  import { resolveResponseLanguageForSession } from "./prompt/response-language.js";
27
28
  import { normalizeSkillInstallTarget } from "./skills/install-target.js";
@@ -629,6 +630,8 @@ var AgentService = class {
629
630
  }), params.runId);
630
631
  }
631
632
  async switchModelForSession(conversationId, modelId) {
633
+ const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
634
+ if (configuredThinking && !getModelThinking(resolveModel(modelId)).options.includes(configuredThinking)) return false;
632
635
  if (!await this.modelManager.switchModelForSession(conversationId, modelId)) return false;
633
636
  await this.sessionConfigStore.update(conversationId, { modelOverride: modelId });
634
637
  if (this.agentManager.setModelForSession(conversationId, modelId)) this.sessionTracker.touchSession(conversationId);
@@ -3,11 +3,12 @@ import { init_logger } from "../../utils/logger.js";
3
3
  import { chooseModelThinking } from "../../../packages/gateway-contract/src/model-selection.js";
4
4
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
5
5
  import { ResponseLanguageSchema, init_response_language } from "../../i18n/response-language.js";
6
+ import { resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
6
7
  import { normalizeWorkingDirectoryInput } from "../../session/session-workspace.js";
7
8
  import { getProjectWorkspacePathForSession } from "../../projects/workspace.js";
9
+ import { getModelThinking } from "../../providers/model-thinking.js";
8
10
  import { normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel } from "../transcript/thinking-types.js";
9
11
  import "../../session/index.js";
10
- import { getModelThinking } from "../../providers/model-thinking.js";
11
12
  import { mkdir } from "node:fs/promises";
12
13
  //#region src/agent/session/session-config-service.ts
13
14
  init_src();
@@ -25,6 +26,16 @@ var SessionConfigService = class {
25
26
  * invalid field. Model and thinking are validated together and committed in one write.
26
27
  */
27
28
  async patch(conversationId, partial) {
29
+ const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
30
+ if (configuredThinking && partial.thinkingLevel !== void 0 && partial.thinkingLevel !== configuredThinking) return {
31
+ ok: false,
32
+ code: "INVALID_THINKING",
33
+ error: `This agent uses thinking ${configuredThinking}`
34
+ };
35
+ if (configuredThinking && (partial.model !== void 0 || partial.thinkingLevel !== void 0)) partial = {
36
+ ...partial,
37
+ thinkingLevel: configuredThinking
38
+ };
28
39
  if (partial.model !== void 0 || partial.thinkingLevel !== void 0 || partial.fixedModel) {
29
40
  const existing = await this.opts.sessionConfigStore.get(conversationId);
30
41
  if (partial.configVersion !== void 0 && partial.configVersion !== (existing?.updatedAt ?? 0)) return {
@@ -134,6 +145,13 @@ var SessionConfigService = class {
134
145
  }
135
146
  /** Materialize a restored/new chat choice; unavailable identities stay visible for repair. */
136
147
  async initializeModelSelection(conversationId, modelRef, thinkingLevel, configVersion) {
148
+ const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
149
+ if (configuredThinking && thinkingLevel !== void 0 && thinkingLevel !== configuredThinking) return {
150
+ ok: false,
151
+ code: "INVALID_THINKING",
152
+ error: `This agent uses thinking ${configuredThinking}`
153
+ };
154
+ if (configuredThinking) thinkingLevel = configuredThinking;
137
155
  const existing = await this.opts.sessionConfigStore.get(conversationId);
138
156
  if (configVersion !== void 0 && configVersion !== (existing?.updatedAt ?? 0)) return {
139
157
  ok: false,
@@ -147,6 +165,11 @@ var SessionConfigService = class {
147
165
  fixedModel: true,
148
166
  configVersion
149
167
  });
168
+ if (configuredThinking) return {
169
+ ok: false,
170
+ code: "INVALID_MODEL",
171
+ error: `Select an available model that supports thinking ${configuredThinking}`
172
+ };
150
173
  if (!modelRef.trim() || !modelRef.includes("/")) return {
151
174
  ok: false,
152
175
  code: "INVALID_MODEL",
@@ -192,6 +215,9 @@ var SessionConfigService = class {
192
215
  */
193
216
  async applyAutomationModelOverride(conversationId, model) {
194
217
  const raw = model?.trim();
218
+ const configuredThinking = resolveEffectiveAgentConfigForSession(conversationId).config.runtime.thinkingLevel;
219
+ const selectedModel = raw ? this.opts.modelManager.findByRef(raw) : void 0;
220
+ if (configuredThinking && (!selectedModel || !getModelThinking(selectedModel).options.includes(configuredThinking))) return false;
195
221
  if (!raw) {
196
222
  await this.clearModelOverride(conversationId);
197
223
  return true;
@@ -3,9 +3,9 @@ import { init_logger } from "../../utils/logger.js";
3
3
  import { getExecutionEnvironmentForSession } from "../../execution-environments/subject.js";
4
4
  import { effectiveWorkspacePathForSession, normalizeWorkingDirectoryInput, projectWorkspacePath } from "../../session/session-workspace.js";
5
5
  import { getProjectForSession } from "../../projects/workspace.js";
6
+ import { getModelThinking } from "../../providers/model-thinking.js";
6
7
  import { resolveEffectiveThinkingLevel } from "../../session/thinking-resolve.js";
7
8
  import "../../session/index.js";
8
- import { getModelThinking } from "../../providers/model-thinking.js";
9
9
  import { mkdir, stat } from "node:fs/promises";
10
10
  //#region src/agent/session/session-hydrator.ts
11
11
  /**
@@ -1,5 +1,5 @@
1
- import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
2
1
  import { init_paths, resolveSkillsLockPath } from "../../config/paths.js";
2
+ import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  //#region src/agent/skills/hub-lock.ts
5
5
  /**
@@ -1,8 +1,8 @@
1
1
  import { resolveStateDir } from "../../config/paths-state.js";
2
2
  import { createLogger } from "../../utils/logger/index.js";
3
3
  import { init_logger } from "../../utils/logger.js";
4
- import { parseFrontmatter } from "../../markdown/frontmatter.js";
5
4
  import { init_paths } from "../../config/paths.js";
5
+ import { parseFrontmatter } from "../../markdown/frontmatter.js";
6
6
  import { findInstallSpec, hasBinary, installSkill } from "./installer.js";
7
7
  import { applySkillEnvOverrides, createSkillConfigManager, getSkillEnvironment, isSkillEnabled, resolveSkillConfig, validateSkillConfig } from "./config.js";
8
8
  import { parseSkillToolConditions } from "./skill-tool-gating.js";
@@ -1,5 +1,5 @@
1
- import { parseFrontmatter } from "../../markdown/frontmatter.js";
2
1
  import { init_paths, resolveSkillsDir } from "../../config/paths.js";
2
+ import { parseFrontmatter } from "../../markdown/frontmatter.js";
3
3
  import { loadSkillsLock } from "./hub-lock.js";
4
4
  import { dirname, join, resolve, sep } from "node:path";
5
5
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
@@ -1,5 +1,5 @@
1
- import { parseFrontmatter } from "../../markdown/frontmatter.js";
2
1
  import { init_paths, resolveSkillsDir } from "../../config/paths.js";
2
+ import { parseFrontmatter } from "../../markdown/frontmatter.js";
3
3
  import { resolveWorkspaceSkillsDir } from "./workspace-skills-dir.js";
4
4
  import { formatScanSummary, scanSkillDirectory } from "./scanner.js";
5
5
  import { fuzzyFindText, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings } from "../tools/edit-diff.js";
@@ -61,6 +61,8 @@ import { createManagedJobTool } from "./managed-job-tool.js";
61
61
  import { createImageTool } from "./image-tool.js";
62
62
  import { createImageGenerateTool } from "./image-generate-tool.js";
63
63
  import "./index.js";
64
+ import { createPersonalTaskTool } from "./personal-task-tool.js";
65
+ import { createPersonalPreferenceTool } from "./personal-preference-tool.js";
64
66
  import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
65
67
  import { createBrowserUseTool } from "./browser/tool/browser-use-tool.js";
66
68
  import { ComputerRuntime } from "../../computer/runtime.js";
@@ -210,6 +212,7 @@ var AgentToolsFactory = class AgentToolsFactory {
210
212
  const getSkillMgr = options?.getSkillManager;
211
213
  const disabled = options?.disabledTools;
212
214
  const allowed = options?.toolAllowlist ? new Set(options.toolAllowlist) : void 0;
215
+ const personalToolsConfigured = Boolean(allowed?.has("personal_task") || allowed?.has("personal_preference"));
213
216
  const primary = getPrimary?.();
214
217
  const modelHasVision = primary?.input?.includes("image") ?? false;
215
218
  const cfg = this.deps.getConfig?.();
@@ -261,6 +264,22 @@ var AgentToolsFactory = class AgentToolsFactory {
261
264
  const listDir = createListDirTool(workspace);
262
265
  const grep = createGrepTool(workspace);
263
266
  const find = createFindTool(workspace);
267
+ const productToolDeps = {
268
+ getWorkspace: () => this.deps.workspace,
269
+ getConfig: () => this.deps.getConfig?.(),
270
+ getCurrentAgentId: () => options?.agentId,
271
+ getCurrentConversationId: () => this.deps.getCurrentContext()?.conversationId,
272
+ getAutomationService: this.deps.getAutomationService,
273
+ getSceneAccess: this.deps.getSceneAccess,
274
+ getNotesService: this.deps.getNotesService,
275
+ getProjectService: this.deps.getProjectService,
276
+ getWorkDiscovery: this.deps.getWorkDiscovery,
277
+ getLocalAppService: this.deps.getLocalAppService,
278
+ getChatPreviewService: this.deps.getChatPreviewService,
279
+ dispatchTaskEvents: this.deps.dispatchTaskEvents,
280
+ dispatchTaskRuns: this.deps.dispatchTaskRuns,
281
+ onAgentCatalogMutate: this.deps.onAgentCatalogMutate
282
+ };
264
283
  const core = [
265
284
  createSessionStatusTool(),
266
285
  createMemoryMaintenanceTool({ getConfig: () => this.deps.getConfig?.() }),
@@ -432,22 +451,10 @@ var AgentToolsFactory = class AgentToolsFactory {
432
451
  getProjectService: this.deps.getProjectService
433
452
  })] : [],
434
453
  ...browserEnabled && this.deps.getBrowserAutomationService ? [createBrowserAutomationTool({ getBrowserAutomationService: this.deps.getBrowserAutomationService })] : [],
435
- ...this.deps.getAutomationService || this.deps.getSceneAccess || this.deps.getProjectService || this.deps.getNotesService || this.deps.getLocalAppService || this.deps.getChatPreviewService || this.deps.dispatchTaskEvents || this.deps.dispatchTaskRuns ? [createXopcUseTool({
436
- getWorkspace: () => this.deps.workspace,
437
- getConfig: () => this.deps.getConfig?.(),
438
- getCurrentAgentId: () => options.agentId,
454
+ ...this.deps.getAutomationService || this.deps.getSceneAccess || this.deps.getProjectService || this.deps.getNotesService || this.deps.getLocalAppService || this.deps.getChatPreviewService || this.deps.dispatchTaskEvents || this.deps.dispatchTaskRuns ? [createXopcUseTool(productToolDeps), ...personalToolsConfigured ? [createPersonalTaskTool(productToolDeps), createPersonalPreferenceTool({
439
455
  getCurrentConversationId: () => this.deps.getCurrentContext()?.conversationId,
440
- getAutomationService: this.deps.getAutomationService,
441
- getSceneAccess: this.deps.getSceneAccess,
442
- getNotesService: this.deps.getNotesService,
443
- getProjectService: this.deps.getProjectService,
444
- getWorkDiscovery: this.deps.getWorkDiscovery,
445
- getLocalAppService: this.deps.getLocalAppService,
446
- getChatPreviewService: this.deps.getChatPreviewService,
447
- dispatchTaskEvents: this.deps.dispatchTaskEvents,
448
- dispatchTaskRuns: this.deps.dispatchTaskRuns,
449
456
  onAgentCatalogMutate: this.deps.onAgentCatalogMutate
450
- })] : [],
457
+ })] : []] : [],
451
458
  ...cfg?.computer.enabled && this.deps.endpointTools ? [createComputerUseTool({
452
459
  runtime: this.ensureComputerRuntime(),
453
460
  context: () => {
@@ -0,0 +1,10 @@
1
+ import type { AgentTool } from '@earendil-works/pi-agent-core';
2
+ declare const PreferenceSchema: import("@sinclair/typebox").TObject<{
3
+ field: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"addressAs">, import("@sinclair/typebox").TLiteral<"warmth">, import("@sinclair/typebox").TLiteral<"humor">, import("@sinclair/typebox").TLiteral<"supportMode">, import("@sinclair/typebox").TLiteral<"detailLevel">, import("@sinclair/typebox").TLiteral<"proactivity">]>;
4
+ value: import("@sinclair/typebox").TString;
5
+ }>;
6
+ export declare function createPersonalPreferenceTool(deps: {
7
+ getCurrentConversationId: () => string | undefined;
8
+ onAgentCatalogMutate?: () => void;
9
+ }): AgentTool<typeof PreferenceSchema, Record<string, never>>;
10
+ export {};
@@ -0,0 +1,43 @@
1
+ import { getPersonalAgentByConversation } from "../../personal-agent/repository.js";
2
+ import { PersonalPreferencesSchema, updatePersonalProfileRecord } from "../../personal-agent/service.js";
3
+ import { Type } from "@sinclair/typebox";
4
+ //#region src/agent/tools/personal-preference-tool.ts
5
+ const PreferenceSchema = Type.Object({
6
+ field: Type.Union([
7
+ Type.Literal("addressAs"),
8
+ Type.Literal("warmth"),
9
+ Type.Literal("humor"),
10
+ Type.Literal("supportMode"),
11
+ Type.Literal("detailLevel"),
12
+ Type.Literal("proactivity")
13
+ ]),
14
+ value: Type.String({ description: "Use the exact enum for the field: warmth=reserved|balanced|gentle; humor=none|occasional|playful; supportMode=listen|untangle|solutions; detailLevel=brief|balanced|detailed; proactivity=decisions|important|open. addressAs is free text. Save only explicitly requested lasting preferences." })
15
+ });
16
+ function createPersonalPreferenceTool(deps) {
17
+ return {
18
+ name: "personal_preference",
19
+ label: "Personal Preference",
20
+ description: "Save how the user explicitly wants you to respond in future conversations. Do not save guesses, a temporary mood, or a one-time instruction.",
21
+ parameters: PreferenceSchema,
22
+ async execute(_toolCallId, input) {
23
+ const conversationId = deps.getCurrentConversationId();
24
+ const personal = conversationId ? getPersonalAgentByConversation(conversationId) : null;
25
+ if (!personal || personal.state !== "ready") throw new Error("Personal AI conversation is unavailable");
26
+ const next = PersonalPreferencesSchema.parse({
27
+ ...personal.preferences,
28
+ [input.field]: input.value.trim()
29
+ });
30
+ if (!await updatePersonalProfileRecord(personal.ownerId, personal.revision, personal.displayName, next, personal.appearance)) throw new Error("Preference changed concurrently; read the current profile and try again");
31
+ deps.onAgentCatalogMutate?.();
32
+ return {
33
+ content: [{
34
+ type: "text",
35
+ text: `Saved ${input.field} as an explicit preference. It takes effect on the next reply.`
36
+ }],
37
+ details: {}
38
+ };
39
+ }
40
+ };
41
+ }
42
+ //#endregion
43
+ export { createPersonalPreferenceTool };
@@ -0,0 +1,28 @@
1
+ import type { AgentTool } from '@earendil-works/pi-agent-core';
2
+ import { type XopcUseToolDeps } from './xopc-use-tool.js';
3
+ declare const PersonalTaskSchema: import("@sinclair/typebox").TObject<{
4
+ command: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"agents">, import("@sinclair/typebox").TLiteral<"create">, import("@sinclair/typebox").TLiteral<"list">, import("@sinclair/typebox").TLiteral<"get">, import("@sinclair/typebox").TLiteral<"instruct">]>;
5
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
6
+ objective: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ agentId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
+ taskId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
10
+ instruction: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
+ expectedOutputs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
12
+ acceptanceCriteria: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
13
+ constraints: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
14
+ requiredTools: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
15
+ idempotencyKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ }>;
17
+ export declare function buildPersonalTaskBrief(input: {
18
+ title?: string;
19
+ objective: string;
20
+ description?: string;
21
+ }): {
22
+ title: string;
23
+ objective: string;
24
+ body?: string;
25
+ };
26
+ /** A narrow Task surface for the fast personal conversation. */
27
+ export declare function createPersonalTaskTool(deps: XopcUseToolDeps): AgentTool<typeof PersonalTaskSchema, Record<string, never>>;
28
+ export {};