@xopcai/xopc 0.0.144 → 0.0.145

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 (353) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  3. package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
  4. package/dist/extensions/telegram/src/inbound-processor.js +1 -1
  5. package/dist/extensions/telegram/src/plugin.js +1 -1
  6. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  7. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  8. package/dist/extensions/telegram/xopc.extension.json +1 -1
  9. package/dist/extensions/weixin/src/api/api.js +1 -1
  10. package/dist/extensions/weixin/src/plugin.js +1 -1
  11. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  12. package/dist/gateway/static/root/assets/Combination-DolwnuKi.js +41 -0
  13. package/dist/gateway/static/root/assets/{activity-center-store-jITiX2vJ.js → activity-center-store-3l9ahUqb.js} +1 -1
  14. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-EAVnrCAs.js → agent-avatar-dicebear-BEUxdhZx.js} +1 -1
  15. package/dist/gateway/static/root/assets/agents-1bpT0xRO.js +2 -0
  16. package/dist/gateway/static/root/assets/app-management-settings-panel-CRHSZJWi.js +1 -0
  17. package/dist/gateway/static/root/assets/{appearance-settings-DSkm9bp_.js → appearance-settings-BunADYJb.js} +1 -1
  18. package/dist/gateway/static/root/assets/apps-page-Cc4JgVUQ.js +1 -0
  19. package/dist/gateway/static/root/assets/{archive-plugin-C99N0vV6.js → archive-plugin-B6vTkH2A.js} +1 -1
  20. package/dist/gateway/static/root/assets/{attachment-load-CHTDqME5.js → attachment-load-BjZXzaNv.js} +1 -1
  21. package/dist/gateway/static/root/assets/{automation-suggestion-card-CBt6U3-S.js → automation-suggestion-card-ZDA-Stg1.js} +1 -1
  22. package/dist/gateway/static/root/assets/automations-page-mb0fdVpq.js +6 -0
  23. package/dist/gateway/static/root/assets/{binary-plugins-BRtxOLlM.js → binary-plugins-DYZfLvPz.js} +1 -1
  24. package/dist/gateway/static/root/assets/{block-editor-CUlXfgXd.js → block-editor-C3MUlYC9.js} +46 -46
  25. package/dist/gateway/static/root/assets/browser-settings-page-Bb0xhaMN.js +8 -0
  26. package/dist/gateway/static/root/assets/capability-presets-api-BV76yN9a.js +1 -0
  27. package/dist/gateway/static/root/assets/capability-presets-settings-panel-CUcGKZqC.js +2 -0
  28. package/dist/gateway/static/root/assets/channel-recipient-api-fTlTnWB4.js +1 -0
  29. package/dist/gateway/static/root/assets/channels-settings-BlSDMGdy.js +1 -0
  30. package/dist/gateway/static/root/assets/channels-status-swr-CJauF1CW.js +1 -0
  31. package/dist/gateway/static/root/assets/{code-editor--tMO38Tr.js → code-editor-D4_k-6QN.js} +1 -1
  32. package/dist/gateway/static/root/assets/connector-logo-BVFNT2zW.js +1 -0
  33. package/dist/gateway/static/root/assets/connectors-page-CMgAFGvb.js +2 -0
  34. package/dist/gateway/static/root/assets/copy-to-clipboard-HOJ79TWv.js +1 -0
  35. package/dist/gateway/static/root/assets/{desktop-pet-C-Drhqyk.js → desktop-pet-_jUmoXd3.js} +1 -1
  36. package/dist/gateway/static/root/assets/{desktop-pet-settings-CRGiolqF.js → desktop-pet-settings-DwGOy4AQ.js} +1 -1
  37. package/dist/gateway/static/root/assets/{directory-picker-path-field-Dw1L3M84.js → directory-picker-path-field-akvF0F-u.js} +1 -1
  38. package/dist/gateway/static/root/assets/{dist-SwiI0Xu3.js → dist-C99RGfAH.js} +1 -1
  39. package/dist/gateway/static/root/assets/dreaming-settings-BLetQiYY.js +3 -0
  40. package/dist/gateway/static/root/assets/{extension-debug-page-Dcl8LJG_.js → extension-debug-page-Cof2ncxE.js} +1 -1
  41. package/dist/gateway/static/root/assets/{extension-page-i_BXmO_x.js → extension-page-CwWktRNz.js} +1 -1
  42. package/dist/gateway/static/root/assets/extension-settings-page-CuggWOIl.js +1 -0
  43. package/dist/gateway/static/root/assets/gateway-config-api-B7sxIbza.js +1 -0
  44. package/dist/gateway/static/root/assets/gateway-settings-DIv0eKMf.js +1 -0
  45. package/dist/gateway/static/root/assets/gateway-startup-retry-DtoLihQE.js +1 -0
  46. package/dist/gateway/static/root/assets/goal-create-dialog-C4Kw0mfS.js +1 -0
  47. package/dist/gateway/static/root/assets/goal-detail-page-BMmzYpZL.js +4 -0
  48. package/dist/gateway/static/root/assets/goals-config-api-B0jm5JaA.js +1 -0
  49. package/dist/gateway/static/root/assets/goals-page-CGeT77PC.js +2 -0
  50. package/dist/gateway/static/root/assets/goals-settings-N5_iL7es.js +1 -0
  51. package/dist/gateway/static/root/assets/heartbeat-settings-XzH3lbRR.js +1 -0
  52. package/dist/gateway/static/root/assets/{html-workspace-editor-COqmtESs.js → html-workspace-editor-C3DKAkMc.js} +1 -1
  53. package/dist/gateway/static/root/assets/index-CSLF84-Q.css +1 -0
  54. package/dist/gateway/static/root/assets/index-I-ZCenVw.js +259 -0
  55. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-x_v0nrIi.js +1 -0
  56. package/dist/gateway/static/root/assets/locale-store-CiM-D9jA.js +1 -0
  57. package/dist/gateway/static/root/assets/logs-page-BSh1t8cD.js +7 -0
  58. package/dist/gateway/static/root/assets/markdown-editor-BvUebh3C.js +2 -0
  59. package/dist/gateway/static/root/assets/{markdown-split-BTRFTK0w.js → markdown-split-5rJx5flj.js} +1 -1
  60. package/dist/gateway/static/root/assets/{media-plugins-BABfIZPU.js → media-plugins-DYXccwAd.js} +1 -1
  61. package/dist/gateway/static/root/assets/messages-Cb1VMeqP.js +5 -0
  62. package/dist/gateway/static/root/assets/models-hub-panel-BNpTenAI.js +2 -0
  63. package/dist/gateway/static/root/assets/{notes-page-88QBHW9a.js → notes-page-BgLyndCO.js} +1 -1
  64. package/dist/gateway/static/root/assets/notes-workbench-teklkhcE.js +4 -0
  65. package/dist/gateway/static/root/assets/{page-tabs-je95DZOf.js → page-tabs-6Al9_sGz.js} +1 -1
  66. package/dist/gateway/static/root/assets/{preview-open-alternatives-BJbwi7Rc.js → preview-open-alternatives-Cm3G72Hv.js} +1 -1
  67. package/dist/gateway/static/root/assets/project-detail-page-CCB_dKoh.js +1 -0
  68. package/dist/gateway/static/root/assets/projects-page-VOAFAHYj.js +1 -0
  69. package/dist/gateway/static/root/assets/remote-access-hub-USYu64Ru.js +1 -0
  70. package/dist/gateway/static/root/assets/{save-bar-controls-qWMQ9mod.js → save-bar-controls-BYtfzu_F.js} +1 -1
  71. package/dist/gateway/static/root/assets/{schedule-field-kxd270Gs.js → schedule-field-CvIRc6yK.js} +1 -1
  72. package/dist/gateway/static/root/assets/{schema-form-DLnD-MuD.js → schema-form-CQuKx0n7.js} +1 -1
  73. package/dist/gateway/static/root/assets/sessions-page-oGC8O5h_.js +1 -0
  74. package/dist/gateway/static/root/assets/settings-advanced-gate-D4rP66R1.js +1 -0
  75. package/dist/gateway/static/root/assets/{settings-collapsible-section-DQprvu5J.js → settings-collapsible-section-CF3HHM-t.js} +1 -1
  76. package/dist/gateway/static/root/assets/{settings-form-section-Cqq7Y98y.js → settings-form-section-CwWjoRN6.js} +1 -1
  77. package/dist/gateway/static/root/assets/{settings-loading-skeleton-b6rXULL5.js → settings-loading-skeleton-aUFmJa13.js} +1 -1
  78. package/dist/gateway/static/root/assets/{settings-page-BtBVz3cX.js → settings-page-B2UUU9TF.js} +1 -1
  79. package/dist/gateway/static/root/assets/{settings-page-layout-BNJbtklV.js → settings-page-layout-DqpbTWqI.js} +1 -1
  80. package/dist/gateway/static/root/assets/setup-status-panel-Ck9keROI.js +1 -0
  81. package/dist/gateway/static/root/assets/share-preview-page-BOhlPsS1.js +2 -0
  82. package/dist/gateway/static/root/assets/shares-settings-BYLsCuqj.js +1 -0
  83. package/dist/gateway/static/root/assets/skill-reload-api-BNHUyVML.js +1 -0
  84. package/dist/gateway/static/root/assets/skills-page-CpXbQH4n.js +2 -0
  85. package/dist/gateway/static/root/assets/{system-settings-panel-Cq9J7i7v.js → system-settings-panel-CWxSvuwD.js} +1 -1
  86. package/dist/gateway/static/root/assets/{theme-store-Bt6vAkSB.js → theme-store-C9Dxcppm.js} +1 -1
  87. package/dist/gateway/static/root/assets/{typed-models-lib-CdSwi1gT.js → typed-models-lib-qROAvqTw.js} +1 -1
  88. package/dist/gateway/static/root/assets/use-channel-catalog-DE9cpn4G.js +1 -0
  89. package/dist/gateway/static/root/assets/user-context-page-DbNEK4Yp.js +1 -0
  90. package/dist/gateway/static/root/assets/user-profile-fields-editor-CWxc0ghP.js +1 -0
  91. package/dist/gateway/static/root/assets/{user-profile-settings-panel-B8hlamVB.js → user-profile-settings-panel-DW-Up6vt.js} +1 -1
  92. package/dist/gateway/static/root/assets/{utils-Dx01V8qF.js → utils-D53uRXVr.js} +1 -1
  93. package/dist/gateway/static/root/assets/{vendor-codemirror-C1WKjCk5.js → vendor-codemirror--gTq3YAI.js} +17 -17
  94. package/dist/gateway/static/root/assets/voice-api-key-field-Cs7MOrg0.js +1 -0
  95. package/dist/gateway/static/root/assets/work-item-detail-page-D1ziG1Pp.js +1 -0
  96. package/dist/gateway/static/root/assets/workflow-run-setup-panel-D_x9ELJp.js +3 -0
  97. package/dist/gateway/static/root/assets/workflows-page-DHGV_n6i.js +11 -0
  98. package/dist/gateway/static/root/index.html +10 -10
  99. package/dist/package.js +1 -1
  100. package/dist/src/activity/emitter.js +1 -1
  101. package/dist/src/agent/agent-manager.js +4 -4
  102. package/dist/src/agent/code-intelligence/binary.js +1 -1
  103. package/dist/src/agent/context/project-context.js +2 -2
  104. package/dist/src/agent/context/workspace-seed.js +2 -2
  105. package/dist/src/agent/embedded/run-for-session.js +1 -1
  106. package/dist/src/agent/embedded/session-runner.js +3 -3
  107. package/dist/src/agent/embedded/session-runner.js.map +1 -1
  108. package/dist/src/agent/embedded/xopc-auth-storage.d.ts +3 -1
  109. package/dist/src/agent/embedded/xopc-auth-storage.js +11 -1
  110. package/dist/src/agent/embedded/xopc-auth-storage.js.map +1 -1
  111. package/dist/src/agent/goals/post-turn.js +2 -2
  112. package/dist/src/agent/ipc/bus.js +1 -1
  113. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  114. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  115. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  116. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  117. package/dist/src/agent/memory/dreaming/config.js +1 -1
  118. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  119. package/dist/src/agent/models/manager.js +1 -1
  120. package/dist/src/agent/orchestration/agent-orchestrator.js +1 -1
  121. package/dist/src/agent/service.js +3 -3
  122. package/dist/src/agent/session/session-inspector.js +2 -2
  123. package/dist/src/agent/skills/hub-pull.js +1 -1
  124. package/dist/src/agent/tools/composio-tool.js +1 -1
  125. package/dist/src/agent/tools/goal-tool.js +2 -2
  126. package/dist/src/agent/tools/workflow-tool.js +1 -1
  127. package/dist/src/agent/tools/xopc-use-tool.js +1 -1
  128. package/dist/src/agent/workspace-runtime/registry.js +2 -2
  129. package/dist/src/agent-runtime/index.js +1 -1
  130. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  131. package/dist/src/automations/api/routes.js +1 -1
  132. package/dist/src/automations/service/action-executor.js +2 -2
  133. package/dist/src/browser/cdp-local-launcher.js +1 -1
  134. package/dist/src/browser/providers/browser-ext-install.js +3 -3
  135. package/dist/src/browser/providers/cloakbrowser.js +2 -2
  136. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  137. package/dist/src/browser/stealth.js +1 -1
  138. package/dist/src/capabilities/store-connector.js +1 -1
  139. package/dist/src/chat-commands/agent-edit.js +1 -1
  140. package/dist/src/chat-commands/builtins/config.js +1 -1
  141. package/dist/src/chat-commands/builtins/goal.js +2 -2
  142. package/dist/src/chat-commands/context.js +1 -1
  143. package/dist/src/cli/commands/agent.js +1 -1
  144. package/dist/src/cli/commands/doctor/checks/database-schema.js +2 -2
  145. package/dist/src/cli/commands/doctor/checks/session-integrity.js +1 -1
  146. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  147. package/dist/src/cli/commands/extension-pack.js +1 -1
  148. package/dist/src/cli/commands/goal.js +2 -2
  149. package/dist/src/cli/commands/init.js +1 -1
  150. package/dist/src/cli/commands/project.js +3 -3
  151. package/dist/src/config/agent-profile.js +1 -1
  152. package/dist/src/config/gateway-bind.js +1 -1
  153. package/dist/src/config/index.js +3 -3
  154. package/dist/src/config/loader.js +1 -1
  155. package/dist/src/config/models-json.js +1 -1
  156. package/dist/src/config/schema.d.ts +60 -5
  157. package/dist/src/config/schema.js +30 -9
  158. package/dist/src/config/schema.js.map +1 -1
  159. package/dist/src/connectors/composio-catalog.js +11 -2
  160. package/dist/src/connectors/composio-catalog.js.map +1 -1
  161. package/dist/src/connectors/composio-sessions.js +1 -1
  162. package/dist/src/connectors/composio.js +1 -1
  163. package/dist/src/connectors/connector-memory-sync.js +135 -26
  164. package/dist/src/connectors/connector-memory-sync.js.map +1 -1
  165. package/dist/src/daemon/launchd.js +1 -1
  166. package/dist/src/daemon/systemd.js +1 -1
  167. package/dist/src/extensions/discover-extensions.js +1 -1
  168. package/dist/src/extensions/loader.js +2 -2
  169. package/dist/src/gateway/agents-admin.js +1 -1
  170. package/dist/src/gateway/heartbeat/service.js +1 -1
  171. package/dist/src/gateway/hono/app.js +1 -1
  172. package/dist/src/gateway/hono/app.js.map +1 -1
  173. package/dist/src/gateway/hono/lib/config-payload.d.ts +11 -0
  174. package/dist/src/gateway/hono/lib/config-payload.js +1 -0
  175. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  176. package/dist/src/gateway/hono/lib/static-ui.js +1 -1
  177. package/dist/src/gateway/hono/routes/config-patch/misc.js +6 -1
  178. package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
  179. package/dist/src/gateway/hono/routes/home.js +2 -2
  180. package/dist/src/gateway/hono/routes/memory.js +13 -3
  181. package/dist/src/gateway/hono/routes/memory.js.map +1 -1
  182. package/dist/src/gateway/hono/routes/projects.js +5 -5
  183. package/dist/src/gateway/hono/routes/status.js +3 -0
  184. package/dist/src/gateway/hono/routes/status.js.map +1 -1
  185. package/dist/src/gateway/hono/routes/voice.d.ts +5 -5
  186. package/dist/src/gateway/hono/routes/voice.js +288 -62
  187. package/dist/src/gateway/hono/routes/voice.js.map +1 -1
  188. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  189. package/dist/src/gateway/hono/routes/you.js +11 -7
  190. package/dist/src/gateway/hono/routes/you.js.map +1 -1
  191. package/dist/src/gateway/lock.js +1 -1
  192. package/dist/src/gateway/ports.js +1 -1
  193. package/dist/src/gateway/service.d.ts +8 -0
  194. package/dist/src/gateway/service.js +47 -17
  195. package/dist/src/gateway/service.js.map +1 -1
  196. package/dist/src/goals/goal-workflow-judge.js +1 -1
  197. package/dist/src/heartbeat/index.js +1 -1
  198. package/dist/src/infra/ports.js +1 -1
  199. package/dist/src/infra/ssh-tunnel.js +1 -1
  200. package/dist/src/infra/update-check.js +1 -1
  201. package/dist/src/knowledge/connected-knowledge-pipeline.d.ts +21 -0
  202. package/dist/src/knowledge/connected-knowledge-pipeline.js +267 -0
  203. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +1 -0
  204. package/dist/src/knowledge/coordinator.d.ts +10 -0
  205. package/dist/src/knowledge/coordinator.js +52 -0
  206. package/dist/src/knowledge/coordinator.js.map +1 -0
  207. package/dist/src/knowledge/index.d.ts +2 -0
  208. package/dist/src/knowledge/index.js +3 -1
  209. package/dist/src/knowledge/ingestion-service.d.ts +7 -1
  210. package/dist/src/knowledge/ingestion-service.js +28 -0
  211. package/dist/src/knowledge/ingestion-service.js.map +1 -1
  212. package/dist/src/knowledge/types.d.ts +18 -0
  213. package/dist/src/media-understanding/audio-transcription-runner.js +5 -3
  214. package/dist/src/media-understanding/audio-transcription-runner.js.map +1 -1
  215. package/dist/src/media-understanding/runner.js +8 -3
  216. package/dist/src/media-understanding/runner.js.map +1 -1
  217. package/dist/src/media-understanding/types.d.ts +7 -0
  218. package/dist/src/migrations/runner.js +1 -1
  219. package/dist/src/notes/service.js +3 -3
  220. package/dist/src/notes/store.js +1 -1
  221. package/dist/src/projects/project-service.js +1 -1
  222. package/dist/src/projects/workspace.js +1 -1
  223. package/dist/src/routing/agent-session-key.js +1 -1
  224. package/dist/src/routing/resolve-route.js +1 -1
  225. package/dist/src/routing/resolve-tui-session-key.js +1 -1
  226. package/dist/src/session/init-session-turn.js +1 -1
  227. package/dist/src/session/resolve-session.js +1 -1
  228. package/dist/src/session/session-title.js +2 -2
  229. package/dist/src/session/store.js +1 -1
  230. package/dist/src/storage/sqlite/connection.js +1 -1
  231. package/dist/src/storage/sqlite/index.d.ts +1 -1
  232. package/dist/src/storage/sqlite/index.js +2 -2
  233. package/dist/src/storage/sqlite/knowledge-repository.d.ts +26 -1
  234. package/dist/src/storage/sqlite/knowledge-repository.js +120 -6
  235. package/dist/src/storage/sqlite/knowledge-repository.js.map +1 -1
  236. package/dist/src/storage/sqlite/migrations/037_connected_knowledge_pipeline.sql +47 -0
  237. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  238. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  239. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  240. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  241. package/dist/src/storage/sqlite/row-mappers.js +1 -1
  242. package/dist/src/storage/sqlite/schema.js +1 -1
  243. package/dist/src/tui/backends/embedded-backend.js +4 -4
  244. package/dist/src/tui/clipboard-image.js +1 -1
  245. package/dist/src/tui/tui-command-formatters.js +2 -2
  246. package/dist/src/tui/tui-commands.js +3 -3
  247. package/dist/src/tui/tui.js +1 -1
  248. package/dist/src/user-context/projection.d.ts +13 -4
  249. package/dist/src/user-context/projection.js +19 -7
  250. package/dist/src/user-context/projection.js.map +1 -1
  251. package/dist/src/utils/index.js +1 -1
  252. package/dist/src/utils/logger/index.js +1 -1
  253. package/dist/src/utils/logger.js +1 -1
  254. package/dist/src/voice/language-profile.d.ts +20 -0
  255. package/dist/src/voice/language-profile.js +156 -0
  256. package/dist/src/voice/language-profile.js.map +1 -0
  257. package/dist/src/voice/local/model-files.d.ts +14 -0
  258. package/dist/src/voice/local/model-files.js +94 -0
  259. package/dist/src/voice/local/model-files.js.map +1 -0
  260. package/dist/src/voice/local/model-manager.d.ts +18 -0
  261. package/dist/src/voice/local/model-manager.js +135 -0
  262. package/dist/src/voice/local/model-manager.js.map +1 -0
  263. package/dist/src/voice/local/models.d.ts +28 -0
  264. package/dist/src/voice/local/models.js +101 -0
  265. package/dist/src/voice/local/models.js.map +1 -0
  266. package/dist/src/voice/local/runtime-client.d.ts +26 -0
  267. package/dist/src/voice/local/runtime-client.js +166 -0
  268. package/dist/src/voice/local/runtime-client.js.map +1 -0
  269. package/dist/src/voice/local/runtime-dispatcher.d.ts +9 -0
  270. package/dist/src/voice/local/runtime-dispatcher.js +22 -0
  271. package/dist/src/voice/local/runtime-dispatcher.js.map +1 -0
  272. package/dist/src/voice/local/runtime-worker.d.ts +1 -0
  273. package/dist/src/voice/local/runtime-worker.js +249 -0
  274. package/dist/src/voice/local/runtime-worker.js.map +1 -0
  275. package/dist/src/voice/local/wav.d.ts +6 -0
  276. package/dist/src/voice/local/wav.js +69 -0
  277. package/dist/src/voice/local/wav.js.map +1 -0
  278. package/dist/src/voice/metadata/builtin.js +46 -0
  279. package/dist/src/voice/metadata/builtin.js.map +1 -1
  280. package/dist/src/voice/stt/factory.js +8 -2
  281. package/dist/src/voice/stt/factory.js.map +1 -1
  282. package/dist/src/voice/stt/providers/alibaba-transcription.js +14 -8
  283. package/dist/src/voice/stt/providers/alibaba-transcription.js.map +1 -1
  284. package/dist/src/voice/stt/providers/index.d.ts +1 -0
  285. package/dist/src/voice/stt/providers/index.js +2 -1
  286. package/dist/src/voice/stt/providers/local-transcription.d.ts +2 -0
  287. package/dist/src/voice/stt/providers/local-transcription.js +51 -0
  288. package/dist/src/voice/stt/providers/local-transcription.js.map +1 -0
  289. package/dist/src/voice/stt/providers/openai-transcription.js +5 -3
  290. package/dist/src/voice/stt/providers/openai-transcription.js.map +1 -1
  291. package/dist/src/voice/stt/transcribe-core.js +5 -4
  292. package/dist/src/voice/stt/transcribe-core.js.map +1 -1
  293. package/dist/src/voice/stt/types.d.ts +4 -0
  294. package/dist/src/voice/stt/types.js +5 -4
  295. package/dist/src/voice/stt/types.js.map +1 -1
  296. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  297. package/dist/src/voice/tts/providers/edge-speech.js.map +1 -1
  298. package/dist/src/voice/tts/types.js +3 -3
  299. package/dist/src/voice/tts/types.js.map +1 -1
  300. package/dist/src/work-items/work-item-service.js +1 -1
  301. package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
  302. package/dist/src/workflows/service/workflow-session-bridge.js +3 -3
  303. package/package.json +3 -1
  304. package/dist/gateway/static/root/assets/Combination-HAlzriaz.js +0 -41
  305. package/dist/gateway/static/root/assets/agents-5rTuJOtT.js +0 -2
  306. package/dist/gateway/static/root/assets/app-management-settings-panel-Bu568NpC.js +0 -1
  307. package/dist/gateway/static/root/assets/apps-page-DWetalKp.js +0 -1
  308. package/dist/gateway/static/root/assets/automations-page-ICUfxeOz.js +0 -4
  309. package/dist/gateway/static/root/assets/browser-settings-page-D7Bj4MKi.js +0 -8
  310. package/dist/gateway/static/root/assets/capability-presets-api-Bg1ntFSD.js +0 -1
  311. package/dist/gateway/static/root/assets/capability-presets-settings-panel-C-8I-Ktn.js +0 -2
  312. package/dist/gateway/static/root/assets/channel-recipient-api-DuulnhIj.js +0 -1
  313. package/dist/gateway/static/root/assets/channels-settings-Dm5EqQyK.js +0 -1
  314. package/dist/gateway/static/root/assets/channels-status-swr-B5lVrUsN.js +0 -1
  315. package/dist/gateway/static/root/assets/connectors-page-BOzjh-OK.js +0 -2
  316. package/dist/gateway/static/root/assets/dreaming-settings-CF21cbjo.js +0 -3
  317. package/dist/gateway/static/root/assets/extension-settings-page-CWIi7xsn.js +0 -1
  318. package/dist/gateway/static/root/assets/fetch-8QNN25Sh.js +0 -1
  319. package/dist/gateway/static/root/assets/gateway-config-api-2sLP2kkA.js +0 -1
  320. package/dist/gateway/static/root/assets/gateway-settings-DMHiZc-2.js +0 -1
  321. package/dist/gateway/static/root/assets/gateway-startup-retry-5YBnS9Fj.js +0 -1
  322. package/dist/gateway/static/root/assets/goal-create-dialog-CAODVDiA.js +0 -1
  323. package/dist/gateway/static/root/assets/goal-detail-page-_d4DjmeX.js +0 -4
  324. package/dist/gateway/static/root/assets/goals-config-api-B4qeLKQS.js +0 -1
  325. package/dist/gateway/static/root/assets/goals-page-lgsop664.js +0 -2
  326. package/dist/gateway/static/root/assets/goals-settings-Dx_1ZNgb.js +0 -1
  327. package/dist/gateway/static/root/assets/heartbeat-settings-DeTseEk_.js +0 -1
  328. package/dist/gateway/static/root/assets/index-CphxClbs.css +0 -1
  329. package/dist/gateway/static/root/assets/index-VWvztcst.js +0 -257
  330. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BpwpMmlk.js +0 -1
  331. package/dist/gateway/static/root/assets/locale-store-Ba72bFmP.js +0 -1
  332. package/dist/gateway/static/root/assets/logs-page-9_hbTg3j.js +0 -7
  333. package/dist/gateway/static/root/assets/markdown-editor-jD1LPiP-.js +0 -2
  334. package/dist/gateway/static/root/assets/messages-CzKxM6I4.js +0 -5
  335. package/dist/gateway/static/root/assets/models-hub-panel-B1CUvZxh.js +0 -2
  336. package/dist/gateway/static/root/assets/notes-workbench-CerZOeLW.js +0 -2
  337. package/dist/gateway/static/root/assets/project-detail-page-BmrApldl.js +0 -1
  338. package/dist/gateway/static/root/assets/projects-page-tTn-k76N.js +0 -1
  339. package/dist/gateway/static/root/assets/remote-access-hub-DeA2-pOi.js +0 -1
  340. package/dist/gateway/static/root/assets/sessions-page-D4kvvcL1.js +0 -1
  341. package/dist/gateway/static/root/assets/settings-advanced-gate-CI1OG4gq.js +0 -1
  342. package/dist/gateway/static/root/assets/setup-status-panel-cmclUJzS.js +0 -1
  343. package/dist/gateway/static/root/assets/share-preview-page--zO-A1W1.js +0 -2
  344. package/dist/gateway/static/root/assets/shares-settings-DNJvqA67.js +0 -1
  345. package/dist/gateway/static/root/assets/skill-reload-api-DWr_0Xgn.js +0 -1
  346. package/dist/gateway/static/root/assets/skills-page-DEGsTbJx.js +0 -2
  347. package/dist/gateway/static/root/assets/use-channel-catalog-COXIfXcl.js +0 -1
  348. package/dist/gateway/static/root/assets/user-context-page-C-V73ZaJ.js +0 -1
  349. package/dist/gateway/static/root/assets/user-profile-fields-editor-B1cxoGkh.js +0 -1
  350. package/dist/gateway/static/root/assets/voice-api-key-field-DGpIUelZ.js +0 -1
  351. package/dist/gateway/static/root/assets/work-item-detail-page-fzWTxF26.js +0 -1
  352. package/dist/gateway/static/root/assets/workflow-run-setup-panel-Dt_x8LGg.js +0 -3
  353. package/dist/gateway/static/root/assets/workflows-page-Bg02zEUh.js +0 -11
@@ -11,26 +11,26 @@
11
11
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260713-1" />
12
12
  <link rel="manifest" href="/site.webmanifest?v=20260713-1" />
13
13
  <title>xopc</title>
14
- <script type="module" crossorigin src="/assets/index-VWvztcst.js"></script>
14
+ <script type="module" crossorigin src="/assets/index-I-ZCenVw.js"></script>
15
15
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
18
- <link rel="modulepreload" crossorigin href="/assets/Combination-HAlzriaz.js">
19
- <link rel="modulepreload" crossorigin href="/assets/dist-SwiI0Xu3.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/Combination-DolwnuKi.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/dist-C99RGfAH.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/chunk-QUQL4437-DXsxWP7r.js">
21
21
  <link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/cn-BQ_8x0bT.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/check-BODqo66o.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/circle-alert-RzVebuX2.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/middleware-Pd0e8Igk.js">
26
- <link rel="modulepreload" crossorigin href="/assets/locale-store-Ba72bFmP.js">
26
+ <link rel="modulepreload" crossorigin href="/assets/messages-Cb1VMeqP.js">
27
+ <link rel="modulepreload" crossorigin href="/assets/locale-store-CiM-D9jA.js">
27
28
  <link rel="modulepreload" crossorigin href="/assets/config-reload-event-Bjh2zoKp.js">
28
- <link rel="modulepreload" crossorigin href="/assets/messages-CzKxM6I4.js">
29
- <link rel="modulepreload" crossorigin href="/assets/fetch-8QNN25Sh.js">
30
- <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-5YBnS9Fj.js">
31
- <link rel="modulepreload" crossorigin href="/assets/activity-center-store-jITiX2vJ.js">
32
- <link rel="modulepreload" crossorigin href="/assets/theme-store-Bt6vAkSB.js">
33
- <link rel="stylesheet" crossorigin href="/assets/index-CphxClbs.css">
29
+ <link rel="modulepreload" crossorigin href="/assets/copy-to-clipboard-HOJ79TWv.js">
30
+ <link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-DtoLihQE.js">
31
+ <link rel="modulepreload" crossorigin href="/assets/activity-center-store-3l9ahUqb.js">
32
+ <link rel="modulepreload" crossorigin href="/assets/theme-store-C9Dxcppm.js">
33
+ <link rel="stylesheet" crossorigin href="/assets/index-CSLF84-Q.css">
34
34
  </head>
35
35
  <body>
36
36
  <div id="root"></div>
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.0.144";
2
+ var version = "0.0.145";
3
3
  //#endregion
4
4
  export { version };
5
5
 
@@ -1,8 +1,8 @@
1
+ import { currentActivityActor, currentActivityInitiator, currentActivitySource } from "./context.js";
1
2
  import { createLogger } from "../utils/logger/index.js";
2
3
  import { init_logger } from "../utils/logger.js";
3
4
  import { isXopcDatabaseOpen } from "../storage/sqlite/connection.js";
4
5
  import "../storage/sqlite/index.js";
5
- import { currentActivityActor, currentActivityInitiator, currentActivitySource } from "./context.js";
6
6
  import { ActivityService } from "./service.js";
7
7
  //#region src/activity/emitter.ts
8
8
  init_logger();
@@ -1,11 +1,11 @@
1
+ import { resolveStateDir } from "../config/paths-state.js";
2
+ import { createLogger } from "../utils/logger/index.js";
3
+ import { init_logger } from "../utils/logger.js";
1
4
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
2
5
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
3
- import { resolveStateDir } from "../config/paths-state.js";
4
6
  import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
5
7
  import { init_agent_scope, resolveAgentHomeDir, resolveAgentProfileDir } from "./agent-scope.js";
6
8
  import { resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
7
- import { createLogger } from "../utils/logger/index.js";
8
- import { init_logger } from "../utils/logger.js";
9
9
  import { init_paths, resolveBundledSkillsDir, resolveUserProfilePath } from "../config/paths.js";
10
10
  import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
11
11
  import { CredentialResolver, init_credentials } from "../auth/credentials.js";
@@ -35,8 +35,8 @@ import { BackgroundReviewCoordinator } from "./background-review/coordinator.js"
35
35
  import { maybeRequestChannelExecApproval } from "../channels/exec-approval-runtime.js";
36
36
  import { SkillFilesystemWatcher } from "./skills/filesystem-watcher.js";
37
37
  import { ProjectTrustStore, hasTrustRequiringProjectResources } from "../project-trust/trust-store.js";
38
- import { Agent } from "@earendil-works/pi-agent-core";
39
38
  import { basename, join, resolve, sep } from "node:path";
39
+ import { Agent } from "@earendil-works/pi-agent-core";
40
40
  //#region src/agent/agent-manager.ts
41
41
  /**
42
42
  * Agent Manager - Manages Agent instances per session
@@ -6,8 +6,8 @@ import { createRequire } from "node:module";
6
6
  import { tmpdir } from "node:os";
7
7
  import { dirname, join, resolve } from "node:path";
8
8
  import { accessSync, chmodSync, constants, copyFileSync, createReadStream, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
9
- import { createHash, randomBytes } from "node:crypto";
10
9
  import { execFile } from "node:child_process";
10
+ import { createHash, randomBytes } from "node:crypto";
11
11
  import { promisify } from "node:util";
12
12
  import { Readable } from "node:stream";
13
13
  import lockfile from "proper-lockfile";
@@ -1,7 +1,7 @@
1
- import { GoalService } from "../../goals/goal-service.js";
2
- import "../../goals/index.js";
3
1
  import { listMemoryRecords } from "../../storage/sqlite/memory-records-repository.js";
4
2
  import "../../storage/sqlite/index.js";
3
+ import { GoalService } from "../../goals/goal-service.js";
4
+ import "../../goals/index.js";
5
5
  import { ProjectStore } from "../../projects/project-store.js";
6
6
  import { getProjectForSession, getProjectWorkspacePathForSession } from "../../projects/workspace.js";
7
7
  import { sanitizeForPromptLiteral } from "../prompt/sanitize-for-prompt.js";
@@ -1,12 +1,12 @@
1
- import { init_agent_scope, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent-scope.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_agent_scope, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent-scope.js";
4
4
  import { WORKSPACE_FILES, init_paths } from "../../config/paths.js";
5
5
  import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES } from "./workspace.js";
6
6
  import { dirname, join } from "node:path";
7
7
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8
- import { execFileSync } from "node:child_process";
9
8
  import { fileURLToPath } from "node:url";
9
+ import { execFileSync } from "node:child_process";
10
10
  //#region src/agent/context/workspace-seed.ts
11
11
  /**
12
12
  * Seed profile Markdown files into `agents/<agentId>/profile/` (and optionally `git init` the Markdown workspace).
@@ -1,6 +1,6 @@
1
- import { resolveEffectiveAgentManifestForSession } from "../../config/agent-profile.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { resolveEffectiveAgentManifestForSession } from "../../config/agent-profile.js";
4
4
  import { init_providers, resolveModel } from "../../providers/index.js";
5
5
  import { resolveAgentTurnTimeoutMs } from "../orchestration/run-agent-turn-with-timeout.js";
6
6
  import { runXopcEmbeddedTurn } from "./run-turn.js";
@@ -3,11 +3,11 @@ import { init_logger } from "../../utils/logger.js";
3
3
  import { guardSessionManager } from "./session-tool-result-guard.js";
4
4
  import { transformUserMessageForPersistence } from "../inbound/attachment-pipeline.js";
5
5
  import { openSqliteHydratingSessionManager } from "./sqlite-hydrating-session-manager.js";
6
- import { applyXopcProviderApiKey, createEmbeddedCredentialStore } from "./xopc-auth-storage.js";
6
+ import { applyXopcProviderApiKey, createEmbeddedModelRuntime } from "./xopc-auth-storage.js";
7
7
  import { wrapStreamFnForXopcExtensions } from "./xopc-stream-bridge.js";
8
8
  import { xopcToolsToDefinitions } from "./xopc-tools-bridge.js";
9
9
  import { applySystemPromptOverrideToSession } from "./system-prompt-override.js";
10
- import { DefaultResourceLoader, ModelRuntime, SettingsManager, createAgentSession, getAgentDir } from "@earendil-works/pi-coding-agent";
10
+ import { DefaultResourceLoader, SettingsManager, createAgentSession, getAgentDir } from "@earendil-works/pi-coding-agent";
11
11
  //#region src/agent/embedded/session-runner.ts
12
12
  init_logger();
13
13
  const log = createLogger("EmbeddedSessionRunner");
@@ -167,7 +167,7 @@ var EmbeddedSessionRunnerPool = class {
167
167
  });
168
168
  const toolDefs = xopcToolsToDefinitions(tools);
169
169
  const toolNames = tools.map((t) => t.name);
170
- const modelRuntime = await ModelRuntime.create({ credentials: createEmbeddedCredentialStore() });
170
+ const modelRuntime = await createEmbeddedModelRuntime();
171
171
  await applyXopcProviderApiKey(modelRuntime, model.provider);
172
172
  const resourceLoader = new DefaultResourceLoader({
173
173
  cwd: workspaceDir,
@@ -1 +1 @@
1
- {"version":3,"file":"session-runner.js","names":[],"sources":["../../../../src/agent/embedded/session-runner.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ThinkingLevel } from '@earendil-works/pi-agent-core';\nimport {\n createAgentSession,\n DefaultResourceLoader,\n getAgentDir,\n ModelRuntime,\n SettingsManager,\n type AgentSession,\n} from '@earendil-works/pi-coding-agent';\nimport type { Model, Api } from '@earendil-works/pi-ai';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { guardSessionManager, type GuardedPiTranscriptManager } from './session-tool-result-guard.js';\nimport { transformUserMessageForPersistence } from '../inbound/attachment-pipeline.js';\nimport { openSqliteHydratingSessionManager } from './sqlite-hydrating-session-manager.js';\nimport { applyXopcProviderApiKey, createEmbeddedCredentialStore } from './xopc-auth-storage.js';\nimport { wrapStreamFnForXopcExtensions } from './xopc-stream-bridge.js';\nimport { xopcToolsToDefinitions } from './xopc-tools-bridge.js';\nimport { applySystemPromptOverrideToSession } from './system-prompt-override.js';\n\nconst log = createLogger('EmbeddedSessionRunner');\n\nconst DEFAULT_IDLE_TTL_MS = 5 * 60_000;\n\nexport type EmbeddedRunnerFingerprintInput = {\n sessionId: string;\n workspaceDir: string;\n modelRef: string;\n toolNames: readonly string[];\n systemPrompt: string;\n thinkingLevel: string;\n};\n\nexport function buildEmbeddedRunnerFingerprint(input: EmbeddedRunnerFingerprintInput): string {\n const tools = [...input.toolNames].sort().join('\\0');\n const promptMarker = `${input.systemPrompt.length}:${input.systemPrompt.slice(0, 128)}`;\n return [\n input.sessionId,\n input.workspaceDir,\n input.modelRef,\n tools,\n promptMarker,\n input.thinkingLevel,\n ].join('\u001f');\n}\n\ntype PooledRunner = {\n sessionKey: string;\n fingerprint: string;\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n settingsManager: SettingsManager;\n baseStreamFn: AgentSession['agent']['streamFn'];\n lastUsedAt: number;\n idleTimer: ReturnType<typeof setTimeout> | null;\n};\n\nexport type AcquireEmbeddedSessionRunnerParams = {\n sessionKey: string;\n sessionId: string;\n workspaceDir: string;\n model: Model<Api>;\n modelRef: string;\n tools: AgentTool[];\n systemPrompt: string;\n thinkingLevel: ThinkingLevel;\n};\n\nexport type AcquiredEmbeddedSessionRunner = {\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n reused: boolean;\n release: () => void;\n};\n\nexport interface EmbeddedSessionRunnerPoolStats {\n acquires: number;\n reuses: number;\n creates: number;\n evictions: number;\n pooled: number;\n}\n\nexport function isEmbeddedSessionRunnerEnabled(): boolean {\n const raw = process.env.XOPC_SESSION_RUNNER?.trim().toLowerCase();\n if (raw === '0' || raw === 'false' || raw === 'off') {\n return false;\n }\n return true;\n}\n\nexport function getEmbeddedSessionRunnerIdleTtlMs(): number {\n const raw = process.env.XOPC_SESSION_RUNNER_TTL_MS?.trim();\n if (!raw) {\n return DEFAULT_IDLE_TTL_MS;\n }\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_IDLE_TTL_MS;\n}\n\nfunction createEmbeddedSettingsManager(cwd: string): SettingsManager {\n const sm = SettingsManager.inMemory({ compaction: { enabled: false } });\n sm.setCompactionEnabled(false);\n void cwd;\n return sm;\n}\n\nexport interface EmbeddedSessionRunnerPoolOptions {\n /** Override for the env-driven enable flag (testing). */\n isEnabled?: () => boolean;\n /** Override for the env-driven idle TTL (testing). */\n getIdleTtlMs?: () => number;\n}\n\n/**\n * Owns the per-session pool of pi `AgentSession` runners. The class is the supported,\n * injectable owner; {@link defaultEmbeddedSessionRunnerPool} keeps the historic\n * module-level free functions working until every caller is migrated to DI.\n */\nexport class EmbeddedSessionRunnerPool {\n private readonly pool = new Map<string, PooledRunner>();\n private readonly isEnabledFn: () => boolean;\n private readonly getIdleTtlMsFn: () => number;\n\n private stats: Omit<EmbeddedSessionRunnerPoolStats, 'pooled'> = {\n acquires: 0,\n reuses: 0,\n creates: 0,\n evictions: 0,\n };\n\n constructor(opts: EmbeddedSessionRunnerPoolOptions = {}) {\n this.isEnabledFn = opts.isEnabled ?? isEmbeddedSessionRunnerEnabled;\n this.getIdleTtlMsFn = opts.getIdleTtlMs ?? getEmbeddedSessionRunnerIdleTtlMs;\n }\n\n getStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return { ...this.stats, pooled: this.pool.size };\n }\n\n resetForTest(): void {\n for (const entry of this.pool.values()) {\n this.clearIdleTimer(entry);\n }\n this.pool.clear();\n this.stats = { acquires: 0, reuses: 0, creates: 0, evictions: 0 };\n }\n\n evict(sessionKey: string, reason = 'explicit'): void {\n const entry = this.pool.get(sessionKey);\n if (!entry) {\n return;\n }\n this.disposePooledRunner(sessionKey, entry, reason);\n }\n\n evictAll(reason = 'dispose_all'): void {\n for (const sessionKey of [...this.pool.keys()]) {\n this.evict(sessionKey, reason);\n }\n }\n\n async acquire(params: AcquireEmbeddedSessionRunnerParams): Promise<AcquiredEmbeddedSessionRunner> {\n this.stats.acquires += 1;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId: params.sessionId,\n workspaceDir: params.workspaceDir,\n modelRef: params.modelRef,\n toolNames: params.tools.map((t) => t.name),\n systemPrompt: params.systemPrompt,\n thinkingLevel: params.thinkingLevel ?? 'medium',\n });\n\n const reuseEnabled = this.isEnabledFn();\n const existing = this.pool.get(params.sessionKey);\n\n let entry: PooledRunner;\n let reused = false;\n\n if (reuseEnabled && existing && existing.fingerprint === fingerprint) {\n this.clearIdleTimer(existing);\n entry = existing;\n entry.lastUsedAt = Date.now();\n reused = true;\n this.stats.reuses += 1;\n applySystemPromptOverrideToSession(entry.session, params.systemPrompt);\n entry.session.agent.streamFn = entry.baseStreamFn;\n log.debug({ sessionKey: params.sessionKey }, 'Reusing pooled embedded session runner');\n } else {\n if (existing) {\n this.disposePooledRunner(params.sessionKey, existing, 'fingerprint_mismatch');\n }\n entry = await this.createPooledRunner(params);\n this.pool.set(params.sessionKey, entry);\n this.stats.creates += 1;\n log.debug({ sessionKey: params.sessionKey }, 'Created embedded session runner');\n }\n\n return {\n session: entry.session,\n piSm: entry.piSm,\n reused,\n release: () => {\n if (!this.isEnabledFn()) {\n this.disposePooledRunner(params.sessionKey, entry, 'runner_disabled');\n return;\n }\n entry.lastUsedAt = Date.now();\n this.scheduleIdleEviction(params.sessionKey, entry);\n },\n };\n }\n\n private clearIdleTimer(entry: PooledRunner): void {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = null;\n }\n }\n\n private scheduleIdleEviction(sessionKey: string, entry: PooledRunner): void {\n this.clearIdleTimer(entry);\n const ttlMs = this.getIdleTtlMsFn();\n entry.idleTimer = setTimeout(() => {\n const current = this.pool.get(sessionKey);\n if (current === entry) {\n this.disposePooledRunner(sessionKey, entry, 'idle_ttl');\n }\n }, ttlMs);\n entry.idleTimer.unref?.();\n }\n\n private disposePooledRunner(sessionKey: string, entry: PooledRunner, reason: string): void {\n this.clearIdleTimer(entry);\n this.pool.delete(sessionKey);\n this.stats.evictions += 1;\n try {\n entry.piSm.flushPendingToolResults?.();\n } catch {\n /* ignore */\n }\n log.debug({ sessionKey, reason }, 'Embedded session runner evicted');\n }\n\n private async createPooledRunner(params: AcquireEmbeddedSessionRunnerParams): Promise<PooledRunner> {\n const { sessionKey, sessionId, workspaceDir, model, thinkingLevel, tools, systemPrompt } = params;\n\n const settingsManager = createEmbeddedSettingsManager(workspaceDir);\n\n const piSm = guardSessionManager(\n openSqliteHydratingSessionManager({\n sessionKey,\n sessionId,\n cwd: workspaceDir,\n }),\n {\n sessionKey,\n contextWindowTokens: model.contextWindow ?? 128_000,\n transformMessageForPersistence: (message) =>\n transformUserMessageForPersistence(sessionKey, message),\n },\n );\n\n const toolDefs = xopcToolsToDefinitions(tools);\n const toolNames = tools.map((t) => t.name);\n\n const modelRuntime = await ModelRuntime.create({\n credentials: createEmbeddedCredentialStore(),\n });\n await applyXopcProviderApiKey(modelRuntime, model.provider);\n\n const resourceLoader = new DefaultResourceLoader({\n cwd: workspaceDir,\n agentDir: getAgentDir(),\n settingsManager,\n noContextFiles: true,\n });\n await resourceLoader.reload();\n\n const { session } = await createAgentSession({\n cwd: workspaceDir,\n model,\n thinkingLevel: thinkingLevel ?? 'medium',\n sessionManager: piSm,\n settingsManager,\n modelRuntime,\n resourceLoader,\n noTools: 'builtin',\n customTools: toolDefs,\n tools: toolNames,\n });\n\n applySystemPromptOverrideToSession(session, systemPrompt);\n const baseStreamFn = wrapStreamFnForXopcExtensions(session.agent.streamFn);\n session.agent.streamFn = baseStreamFn;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId,\n workspaceDir,\n modelRef: params.modelRef,\n toolNames,\n systemPrompt,\n thinkingLevel: thinkingLevel ?? 'medium',\n });\n\n return {\n sessionKey,\n fingerprint,\n session,\n piSm,\n settingsManager,\n baseStreamFn,\n lastUsedAt: Date.now(),\n idleTimer: null,\n };\n }\n}\n\nexport const defaultEmbeddedSessionRunnerPool = new EmbeddedSessionRunnerPool();\n\nexport function getEmbeddedSessionRunnerStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return defaultEmbeddedSessionRunnerPool.getStats();\n}\n\nexport function resetEmbeddedSessionRunnerForTest(): void {\n defaultEmbeddedSessionRunnerPool.resetForTest();\n}\n\nexport function evictEmbeddedSessionRunner(sessionKey: string, reason = 'explicit'): void {\n defaultEmbeddedSessionRunnerPool.evict(sessionKey, reason);\n}\n\nexport function evictAllEmbeddedSessionRunners(reason = 'dispose_all'): void {\n defaultEmbeddedSessionRunnerPool.evictAll(reason);\n}\n\nexport function acquireEmbeddedSessionRunner(\n params: AcquireEmbeddedSessionRunnerParams,\n): Promise<AcquiredEmbeddedSessionRunner> {\n return defaultEmbeddedSessionRunnerPool.acquire(params);\n}\n\n/** Resolve session identity used by embedded runner acquire and turn execution. */\nexport async function resolveEmbeddedTranscriptInputs(\n sessionStore: import('../../session/store.js').SessionStore,\n sessionKey: string,\n): Promise<{\n sessionId: string;\n sessionKey: string;\n}> {\n return sessionStore.resolveTranscriptPath(sessionKey);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"session-runner.js","names":[],"sources":["../../../../src/agent/embedded/session-runner.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ThinkingLevel } from '@earendil-works/pi-agent-core';\nimport {\n createAgentSession,\n DefaultResourceLoader,\n getAgentDir,\n SettingsManager,\n type AgentSession,\n} from '@earendil-works/pi-coding-agent';\nimport type { Model, Api } from '@earendil-works/pi-ai';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { guardSessionManager, type GuardedPiTranscriptManager } from './session-tool-result-guard.js';\nimport { transformUserMessageForPersistence } from '../inbound/attachment-pipeline.js';\nimport { openSqliteHydratingSessionManager } from './sqlite-hydrating-session-manager.js';\nimport { applyXopcProviderApiKey, createEmbeddedModelRuntime } from './xopc-auth-storage.js';\nimport { wrapStreamFnForXopcExtensions } from './xopc-stream-bridge.js';\nimport { xopcToolsToDefinitions } from './xopc-tools-bridge.js';\nimport { applySystemPromptOverrideToSession } from './system-prompt-override.js';\n\nconst log = createLogger('EmbeddedSessionRunner');\n\nconst DEFAULT_IDLE_TTL_MS = 5 * 60_000;\n\nexport type EmbeddedRunnerFingerprintInput = {\n sessionId: string;\n workspaceDir: string;\n modelRef: string;\n toolNames: readonly string[];\n systemPrompt: string;\n thinkingLevel: string;\n};\n\nexport function buildEmbeddedRunnerFingerprint(input: EmbeddedRunnerFingerprintInput): string {\n const tools = [...input.toolNames].sort().join('\\0');\n const promptMarker = `${input.systemPrompt.length}:${input.systemPrompt.slice(0, 128)}`;\n return [\n input.sessionId,\n input.workspaceDir,\n input.modelRef,\n tools,\n promptMarker,\n input.thinkingLevel,\n ].join('\u001f');\n}\n\ntype PooledRunner = {\n sessionKey: string;\n fingerprint: string;\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n settingsManager: SettingsManager;\n baseStreamFn: AgentSession['agent']['streamFn'];\n lastUsedAt: number;\n idleTimer: ReturnType<typeof setTimeout> | null;\n};\n\nexport type AcquireEmbeddedSessionRunnerParams = {\n sessionKey: string;\n sessionId: string;\n workspaceDir: string;\n model: Model<Api>;\n modelRef: string;\n tools: AgentTool[];\n systemPrompt: string;\n thinkingLevel: ThinkingLevel;\n};\n\nexport type AcquiredEmbeddedSessionRunner = {\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n reused: boolean;\n release: () => void;\n};\n\nexport interface EmbeddedSessionRunnerPoolStats {\n acquires: number;\n reuses: number;\n creates: number;\n evictions: number;\n pooled: number;\n}\n\nexport function isEmbeddedSessionRunnerEnabled(): boolean {\n const raw = process.env.XOPC_SESSION_RUNNER?.trim().toLowerCase();\n if (raw === '0' || raw === 'false' || raw === 'off') {\n return false;\n }\n return true;\n}\n\nexport function getEmbeddedSessionRunnerIdleTtlMs(): number {\n const raw = process.env.XOPC_SESSION_RUNNER_TTL_MS?.trim();\n if (!raw) {\n return DEFAULT_IDLE_TTL_MS;\n }\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_IDLE_TTL_MS;\n}\n\nfunction createEmbeddedSettingsManager(cwd: string): SettingsManager {\n const sm = SettingsManager.inMemory({ compaction: { enabled: false } });\n sm.setCompactionEnabled(false);\n void cwd;\n return sm;\n}\n\nexport interface EmbeddedSessionRunnerPoolOptions {\n /** Override for the env-driven enable flag (testing). */\n isEnabled?: () => boolean;\n /** Override for the env-driven idle TTL (testing). */\n getIdleTtlMs?: () => number;\n}\n\n/**\n * Owns the per-session pool of pi `AgentSession` runners. The class is the supported,\n * injectable owner; {@link defaultEmbeddedSessionRunnerPool} keeps the historic\n * module-level free functions working until every caller is migrated to DI.\n */\nexport class EmbeddedSessionRunnerPool {\n private readonly pool = new Map<string, PooledRunner>();\n private readonly isEnabledFn: () => boolean;\n private readonly getIdleTtlMsFn: () => number;\n\n private stats: Omit<EmbeddedSessionRunnerPoolStats, 'pooled'> = {\n acquires: 0,\n reuses: 0,\n creates: 0,\n evictions: 0,\n };\n\n constructor(opts: EmbeddedSessionRunnerPoolOptions = {}) {\n this.isEnabledFn = opts.isEnabled ?? isEmbeddedSessionRunnerEnabled;\n this.getIdleTtlMsFn = opts.getIdleTtlMs ?? getEmbeddedSessionRunnerIdleTtlMs;\n }\n\n getStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return { ...this.stats, pooled: this.pool.size };\n }\n\n resetForTest(): void {\n for (const entry of this.pool.values()) {\n this.clearIdleTimer(entry);\n }\n this.pool.clear();\n this.stats = { acquires: 0, reuses: 0, creates: 0, evictions: 0 };\n }\n\n evict(sessionKey: string, reason = 'explicit'): void {\n const entry = this.pool.get(sessionKey);\n if (!entry) {\n return;\n }\n this.disposePooledRunner(sessionKey, entry, reason);\n }\n\n evictAll(reason = 'dispose_all'): void {\n for (const sessionKey of [...this.pool.keys()]) {\n this.evict(sessionKey, reason);\n }\n }\n\n async acquire(params: AcquireEmbeddedSessionRunnerParams): Promise<AcquiredEmbeddedSessionRunner> {\n this.stats.acquires += 1;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId: params.sessionId,\n workspaceDir: params.workspaceDir,\n modelRef: params.modelRef,\n toolNames: params.tools.map((t) => t.name),\n systemPrompt: params.systemPrompt,\n thinkingLevel: params.thinkingLevel ?? 'medium',\n });\n\n const reuseEnabled = this.isEnabledFn();\n const existing = this.pool.get(params.sessionKey);\n\n let entry: PooledRunner;\n let reused = false;\n\n if (reuseEnabled && existing && existing.fingerprint === fingerprint) {\n this.clearIdleTimer(existing);\n entry = existing;\n entry.lastUsedAt = Date.now();\n reused = true;\n this.stats.reuses += 1;\n applySystemPromptOverrideToSession(entry.session, params.systemPrompt);\n entry.session.agent.streamFn = entry.baseStreamFn;\n log.debug({ sessionKey: params.sessionKey }, 'Reusing pooled embedded session runner');\n } else {\n if (existing) {\n this.disposePooledRunner(params.sessionKey, existing, 'fingerprint_mismatch');\n }\n entry = await this.createPooledRunner(params);\n this.pool.set(params.sessionKey, entry);\n this.stats.creates += 1;\n log.debug({ sessionKey: params.sessionKey }, 'Created embedded session runner');\n }\n\n return {\n session: entry.session,\n piSm: entry.piSm,\n reused,\n release: () => {\n if (!this.isEnabledFn()) {\n this.disposePooledRunner(params.sessionKey, entry, 'runner_disabled');\n return;\n }\n entry.lastUsedAt = Date.now();\n this.scheduleIdleEviction(params.sessionKey, entry);\n },\n };\n }\n\n private clearIdleTimer(entry: PooledRunner): void {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = null;\n }\n }\n\n private scheduleIdleEviction(sessionKey: string, entry: PooledRunner): void {\n this.clearIdleTimer(entry);\n const ttlMs = this.getIdleTtlMsFn();\n entry.idleTimer = setTimeout(() => {\n const current = this.pool.get(sessionKey);\n if (current === entry) {\n this.disposePooledRunner(sessionKey, entry, 'idle_ttl');\n }\n }, ttlMs);\n entry.idleTimer.unref?.();\n }\n\n private disposePooledRunner(sessionKey: string, entry: PooledRunner, reason: string): void {\n this.clearIdleTimer(entry);\n this.pool.delete(sessionKey);\n this.stats.evictions += 1;\n try {\n entry.piSm.flushPendingToolResults?.();\n } catch {\n /* ignore */\n }\n log.debug({ sessionKey, reason }, 'Embedded session runner evicted');\n }\n\n private async createPooledRunner(params: AcquireEmbeddedSessionRunnerParams): Promise<PooledRunner> {\n const { sessionKey, sessionId, workspaceDir, model, thinkingLevel, tools, systemPrompt } = params;\n\n const settingsManager = createEmbeddedSettingsManager(workspaceDir);\n\n const piSm = guardSessionManager(\n openSqliteHydratingSessionManager({\n sessionKey,\n sessionId,\n cwd: workspaceDir,\n }),\n {\n sessionKey,\n contextWindowTokens: model.contextWindow ?? 128_000,\n transformMessageForPersistence: (message) =>\n transformUserMessageForPersistence(sessionKey, message),\n },\n );\n\n const toolDefs = xopcToolsToDefinitions(tools);\n const toolNames = tools.map((t) => t.name);\n\n const modelRuntime = await createEmbeddedModelRuntime();\n await applyXopcProviderApiKey(modelRuntime, model.provider);\n\n const resourceLoader = new DefaultResourceLoader({\n cwd: workspaceDir,\n agentDir: getAgentDir(),\n settingsManager,\n noContextFiles: true,\n });\n await resourceLoader.reload();\n\n const { session } = await createAgentSession({\n cwd: workspaceDir,\n model,\n thinkingLevel: thinkingLevel ?? 'medium',\n sessionManager: piSm,\n settingsManager,\n modelRuntime,\n resourceLoader,\n noTools: 'builtin',\n customTools: toolDefs,\n tools: toolNames,\n });\n\n applySystemPromptOverrideToSession(session, systemPrompt);\n const baseStreamFn = wrapStreamFnForXopcExtensions(session.agent.streamFn);\n session.agent.streamFn = baseStreamFn;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId,\n workspaceDir,\n modelRef: params.modelRef,\n toolNames,\n systemPrompt,\n thinkingLevel: thinkingLevel ?? 'medium',\n });\n\n return {\n sessionKey,\n fingerprint,\n session,\n piSm,\n settingsManager,\n baseStreamFn,\n lastUsedAt: Date.now(),\n idleTimer: null,\n };\n }\n}\n\nexport const defaultEmbeddedSessionRunnerPool = new EmbeddedSessionRunnerPool();\n\nexport function getEmbeddedSessionRunnerStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return defaultEmbeddedSessionRunnerPool.getStats();\n}\n\nexport function resetEmbeddedSessionRunnerForTest(): void {\n defaultEmbeddedSessionRunnerPool.resetForTest();\n}\n\nexport function evictEmbeddedSessionRunner(sessionKey: string, reason = 'explicit'): void {\n defaultEmbeddedSessionRunnerPool.evict(sessionKey, reason);\n}\n\nexport function evictAllEmbeddedSessionRunners(reason = 'dispose_all'): void {\n defaultEmbeddedSessionRunnerPool.evictAll(reason);\n}\n\nexport function acquireEmbeddedSessionRunner(\n params: AcquireEmbeddedSessionRunnerParams,\n): Promise<AcquiredEmbeddedSessionRunner> {\n return defaultEmbeddedSessionRunnerPool.acquire(params);\n}\n\n/** Resolve session identity used by embedded runner acquire and turn execution. */\nexport async function resolveEmbeddedTranscriptInputs(\n sessionStore: import('../../session/store.js').SessionStore,\n sessionKey: string,\n): Promise<{\n sessionId: string;\n sessionKey: string;\n}> {\n return sessionStore.resolveTranscriptPath(sessionKey);\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { InMemoryCredentialStore } from '@earendil-works/pi-ai';
2
- import type { ModelRuntime } from '@earendil-works/pi-coding-agent';
2
+ import { ModelRuntime } from '@earendil-works/pi-coding-agent';
3
3
  /**
4
4
  * Resolve API keys the same way as {@link AgentManager} / gateway settings:
5
5
  * auth-profiles (agent + global), OAuth files, models.json, then env.
@@ -10,6 +10,8 @@ export declare function resolveXopcProviderApiKey(providerId: string): string |
10
10
  * Gateway / webchat turns inject xopc credentials through {@link applyXopcProviderApiKey}.
11
11
  */
12
12
  export declare function createEmbeddedCredentialStore(): InMemoryCredentialStore;
13
+ /** Create the pi model runtime used by embedded gateway / channel turns. */
14
+ export declare function createEmbeddedModelRuntime(): Promise<ModelRuntime>;
13
15
  /**
14
16
  * Inject the resolved key as a runtime override (highest-priority, in-memory only) before
15
17
  * the session starts so request-time auth resolution finds it.
@@ -1,8 +1,11 @@
1
+ import { init_paths, resolveModelsJsonPath } from "../../config/paths.js";
1
2
  import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
2
3
  import { getApiKeySync, init_providers } from "../../providers/index.js";
4
+ import { ModelRuntime } from "@earendil-works/pi-coding-agent";
3
5
  import { InMemoryCredentialStore } from "@earendil-works/pi-ai";
4
6
  //#region src/agent/embedded/xopc-auth-storage.ts
5
7
  init_sync_provider_auth();
8
+ init_paths();
6
9
  init_providers();
7
10
  /**
8
11
  * Resolve API keys the same way as {@link AgentManager} / gateway settings:
@@ -18,6 +21,13 @@ function resolveXopcProviderApiKey(providerId) {
18
21
  function createEmbeddedCredentialStore() {
19
22
  return new InMemoryCredentialStore();
20
23
  }
24
+ /** Create the pi model runtime used by embedded gateway / channel turns. */
25
+ function createEmbeddedModelRuntime() {
26
+ return ModelRuntime.create({
27
+ credentials: createEmbeddedCredentialStore(),
28
+ modelsPath: resolveModelsJsonPath()
29
+ });
30
+ }
21
31
  /**
22
32
  * Inject the resolved key as a runtime override (highest-priority, in-memory only) before
23
33
  * the session starts so request-time auth resolution finds it.
@@ -27,6 +37,6 @@ async function applyXopcProviderApiKey(modelRuntime, providerId) {
27
37
  if (key && key !== "extension-managed") await modelRuntime.setRuntimeApiKey(providerId, key);
28
38
  }
29
39
  //#endregion
30
- export { applyXopcProviderApiKey, createEmbeddedCredentialStore, resolveXopcProviderApiKey };
40
+ export { applyXopcProviderApiKey, createEmbeddedCredentialStore, createEmbeddedModelRuntime, resolveXopcProviderApiKey };
31
41
 
32
42
  //# sourceMappingURL=xopc-auth-storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xopc-auth-storage.js","names":[],"sources":["../../../../src/agent/embedded/xopc-auth-storage.ts"],"sourcesContent":["import { InMemoryCredentialStore } from '@earendil-works/pi-ai';\nimport type { ModelRuntime } from '@earendil-works/pi-coding-agent';\n\nimport { resolveProviderApiKeySync } from '../../auth/sync-provider-auth.js';\nimport { getApiKeySync } from '../../providers/index.js';\n\n/**\n * Resolve API keys the same way as {@link AgentManager} / gateway settings:\n * auth-profiles (agent + global), OAuth files, models.json, then env.\n */\nexport function resolveXopcProviderApiKey(providerId: string): string | undefined {\n return resolveProviderApiKeySync(providerId) ?? getApiKeySync(providerId);\n}\n\n/**\n * pi-coding-agent {@link createAgentSession} defaults to `~/.pi/agent/auth.json` and env.\n * Gateway / webchat turns inject xopc credentials through {@link applyXopcProviderApiKey}.\n */\nexport function createEmbeddedCredentialStore(): InMemoryCredentialStore {\n return new InMemoryCredentialStore();\n}\n\n/**\n * Inject the resolved key as a runtime override (highest-priority, in-memory only) before\n * the session starts so request-time auth resolution finds it.\n */\nexport async function applyXopcProviderApiKey(\n modelRuntime: Pick<ModelRuntime, 'setRuntimeApiKey'>,\n providerId: string,\n): Promise<void> {\n const key = resolveXopcProviderApiKey(providerId);\n if (key && key !== 'extension-managed') {\n await modelRuntime.setRuntimeApiKey(providerId, key);\n }\n}\n"],"mappings":";;;;yBAG6E;gBACpB;;;;;AAMzD,SAAgB,0BAA0B,YAAwC;AAChF,QAAO,0BAA0B,WAAW,IAAI,cAAc,WAAW;;;;;;AAO3E,SAAgB,gCAAyD;AACvE,QAAO,IAAI,yBAAyB;;;;;;AAOtC,eAAsB,wBACpB,cACA,YACe;CACf,MAAM,MAAM,0BAA0B,WAAW;AACjD,KAAI,OAAO,QAAQ,oBACjB,OAAM,aAAa,iBAAiB,YAAY,IAAI"}
1
+ {"version":3,"file":"xopc-auth-storage.js","names":[],"sources":["../../../../src/agent/embedded/xopc-auth-storage.ts"],"sourcesContent":["import { InMemoryCredentialStore } from '@earendil-works/pi-ai';\nimport { ModelRuntime } from '@earendil-works/pi-coding-agent';\n\nimport { resolveProviderApiKeySync } from '../../auth/sync-provider-auth.js';\nimport { resolveModelsJsonPath } from '../../config/paths.js';\nimport { getApiKeySync } from '../../providers/index.js';\n\n/**\n * Resolve API keys the same way as {@link AgentManager} / gateway settings:\n * auth-profiles (agent + global), OAuth files, models.json, then env.\n */\nexport function resolveXopcProviderApiKey(providerId: string): string | undefined {\n return resolveProviderApiKeySync(providerId) ?? getApiKeySync(providerId);\n}\n\n/**\n * pi-coding-agent {@link createAgentSession} defaults to `~/.pi/agent/auth.json` and env.\n * Gateway / webchat turns inject xopc credentials through {@link applyXopcProviderApiKey}.\n */\nexport function createEmbeddedCredentialStore(): InMemoryCredentialStore {\n return new InMemoryCredentialStore();\n}\n\n/** Create the pi model runtime used by embedded gateway / channel turns. */\nexport function createEmbeddedModelRuntime(): Promise<ModelRuntime> {\n return ModelRuntime.create({\n credentials: createEmbeddedCredentialStore(),\n modelsPath: resolveModelsJsonPath(),\n });\n}\n\n/**\n * Inject the resolved key as a runtime override (highest-priority, in-memory only) before\n * the session starts so request-time auth resolution finds it.\n */\nexport async function applyXopcProviderApiKey(\n modelRuntime: Pick<ModelRuntime, 'setRuntimeApiKey'>,\n providerId: string,\n): Promise<void> {\n const key = resolveXopcProviderApiKey(providerId);\n if (key && key !== 'extension-managed') {\n await modelRuntime.setRuntimeApiKey(providerId, key);\n }\n}\n"],"mappings":";;;;;;yBAG6E;YACf;gBACL;;;;;AAMzD,SAAgB,0BAA0B,YAAwC;AAChF,QAAO,0BAA0B,WAAW,IAAI,cAAc,WAAW;;;;;;AAO3E,SAAgB,gCAAyD;AACvE,QAAO,IAAI,yBAAyB;;;AAItC,SAAgB,6BAAoD;AAClE,QAAO,aAAa,OAAO;EACzB,aAAa,+BAA+B;EAC5C,YAAY,uBAAuB;EACpC,CAAC;;;;;;AAOJ,eAAsB,wBACpB,cACA,YACe;CACf,MAAM,MAAM,0BAA0B,WAAW;AACjD,KAAI,OAAO,QAAQ,oBACjB,OAAM,aAAa,iBAAiB,YAAY,IAAI"}
@@ -1,7 +1,7 @@
1
- import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
2
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
1
  import { createLogger } from "../../utils/logger/index.js";
4
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
4
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
5
5
  import { GoalService } from "../../goals/goal-service.js";
6
6
  import { resolveGoalUiLocale } from "./goal-locale.js";
7
7
  import { evaluateAfterTurnHermesLike } from "./evaluate-turn.js";
@@ -1,6 +1,6 @@
1
- import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
4
4
  import { createResponseMessage, createSignalMessage, createTaskMessage } from "./types.js";
5
5
  import { AgentInbox } from "./inbox.js";
6
6
  //#region src/agent/ipc/bus.ts
@@ -1,6 +1,6 @@
1
- import { init_string_coerce, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_string_coerce, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "../../utils/string-coerce.js";
4
4
  import { buildSafeToolName, normalizeReservedToolNames } from "./bundle-mcp-names.js";
5
5
  import { setPluginToolMeta } from "./mcp-tool-meta.js";
6
6
  import crypto from "node:crypto";
@@ -1,7 +1,7 @@
1
- import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
4
3
  import { resolveGlobalSingleton } from "../../utils/global-singleton.js";
4
+ import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
5
5
  import { sanitizeServerName } from "./bundle-mcp-names.js";
6
6
  import { redactSensitiveUrlLikeString } from "../../utils/redact-sensitive-url.js";
7
7
  import { loadEmbeddedMcpConfig } from "./embedded-mcp.js";
@@ -1,6 +1,6 @@
1
- import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../../utils/string-coerce.js";
4
4
  import { resolveXopcMcpTransportAlias } from "../../config/mcp-config-normalize.js";
5
5
  import { sanitizeForLog } from "../../utils/sanitize-log.js";
6
6
  import { describeHttpMcpServerLaunchConfig, resolveHttpMcpServerLaunchConfig } from "./mcp-http.js";
@@ -1,6 +1,6 @@
1
- import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
4
4
  import { XopcStdioClientTransport } from "./mcp-stdio-transport.js";
5
5
  import { resolveMcpTransportConfig } from "./mcp-transport-config.js";
6
6
  import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
@@ -1,7 +1,7 @@
1
+ import { buildMemoryRuntime } from "../../../agent-runtime/memory-runtime.js";
1
2
  import { init_agent_scope, resolveDefaultAgentId } from "../../agent-scope.js";
2
3
  import { resolveEffectiveAgentManifestForAgent } from "../../../config/agent-profile.js";
3
4
  import { DEFAULT_DEEP_CRON, DEFAULT_LIGHT_CRON, DEFAULT_REM_CRON } from "./constants.js";
4
- import { buildMemoryRuntime } from "../../../agent-runtime/memory-runtime.js";
5
5
  //#region src/agent/memory/dreaming/config.ts
6
6
  init_agent_scope();
7
7
  function clampScore(value, fallback) {
@@ -1,7 +1,7 @@
1
1
  import { discoverExtensionsFromDisk, init_discover_extensions } from "../../extensions/discover-extensions.js";
2
2
  import { isAbsolute, join } from "node:path";
3
- import { stat } from "node:fs/promises";
4
3
  import { pathToFileURL } from "node:url";
4
+ import { stat } from "node:fs/promises";
5
5
  //#region src/agent/memory/plugin-discovery.ts
6
6
  init_discover_extensions();
7
7
  async function discoverMemoryPlugins(config) {
@@ -1,6 +1,6 @@
1
- import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
4
4
  import { getAllModels, getDefaultModelSync, init_providers, resolveModel } from "../../providers/index.js";
5
5
  import { parseModelRef } from "./selection.js";
6
6
  import { resolveFallbackCandidates } from "../fallback/candidates.js";
@@ -1,6 +1,6 @@
1
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
4
4
  import "../memory/dreaming/constants.js";
5
5
  import { resolveDreamingAgentScope } from "../memory/dreaming/scope.js";
6
6
  import { persistInboundAttachments } from "../../channels/attachments/inbound-persist.js";
@@ -1,12 +1,12 @@
1
+ import { createLogger } from "../utils/logger/index.js";
2
+ import { init_logger } from "../utils/logger.js";
3
+ import { parseNoteAttachmentTarget } from "../notes/attachment-ref.js";
1
4
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
2
5
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
3
6
  import { init_agent_scope, resolveAgentHomeDir, resolveDefaultAgentId } from "./agent-scope.js";
4
7
  import { extractProfileAgentId } from "../config/agent-profile.js";
5
- import { createLogger } from "../utils/logger/index.js";
6
- import { init_logger } from "../utils/logger.js";
7
8
  import { init_paths, resolveUserProfilePath } from "../config/paths.js";
8
9
  import { extractTextContent } from "./context/workspace.js";
9
- import { parseNoteAttachmentTarget } from "../notes/attachment-ref.js";
10
10
  import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
11
11
  import { getProjectForSession } from "../projects/workspace.js";
12
12
  import { resolveWorkspaceSkillsDir, resolveWorkspaceSkillsLockPath } from "./skills/workspace-skills-dir.js";
@@ -1,7 +1,7 @@
1
- import { init_workspace_defaults, resolveDefaultAgentWorkspaceDir } from "../../config/workspace-defaults.js";
2
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
1
  import { createLogger } from "../../utils/logger/index.js";
4
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_workspace_defaults, resolveDefaultAgentWorkspaceDir } from "../../config/workspace-defaults.js";
4
+ import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
5
5
  import { effectiveWorkspacePathForSession, projectWorkspacePath } from "../../session/session-workspace.js";
6
6
  import { getProjectForSession } from "../../projects/workspace.js";
7
7
  import { resolveVerboseLevel } from "../../session/config-store.js";
@@ -6,8 +6,8 @@ import { computeSkillTreeHashSync } from "./hub-hash.js";
6
6
  import { tmpdir } from "node:os";
7
7
  import { basename, dirname, join, normalize, resolve, sep } from "node:path";
8
8
  import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
9
- import { execFileSync } from "node:child_process";
10
9
  import { fileURLToPath } from "node:url";
10
+ import { execFileSync } from "node:child_process";
11
11
  import { fetch } from "undici";
12
12
  import AdmZip from "adm-zip";
13
13
  //#region src/agent/skills/hub-pull.ts
@@ -1,6 +1,6 @@
1
- import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
2
1
  import { consumeConnectorApproval, createConnectorApproval, getConnectorApproval, getConnectorInstallation, listConnectorActionMetadata, listConnectorConnections, listConnectorInstallations, upsertConnectorActionMetadata, upsertConnectorInstallation } from "../../storage/sqlite/connector-repository.js";
3
2
  import "../../storage/sqlite/index.js";
3
+ import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
4
4
  import { connectorArgumentsHash, connectorArgumentsPreview } from "../../connectors/approval.js";
5
5
  import { ComposioSessionsAdapter } from "../../connectors/composio-sessions.js";
6
6
  import { getComposioToolkitScope, isComposioActionAllowedByCatalog, scopeForComposioAction } from "../../connectors/composio.js";
@@ -1,7 +1,7 @@
1
- import { GoalService } from "../../goals/goal-service.js";
2
- import "../../goals/index.js";
3
1
  import { getSessionMetadata } from "../../storage/sqlite/session-repository.js";
4
2
  import "../../storage/sqlite/index.js";
3
+ import { GoalService } from "../../goals/goal-service.js";
4
+ import "../../goals/index.js";
5
5
  import { Type } from "@sinclair/typebox";
6
6
  //#region src/agent/tools/goal-tool.ts
7
7
  const GoalToolSchema = Type.Object({
@@ -1,6 +1,6 @@
1
- import { extractProfileAgentId } from "../../config/agent-profile.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { extractProfileAgentId } from "../../config/agent-profile.js";
4
4
  import { Type } from "@sinclair/typebox";
5
5
  //#region src/agent/tools/workflow-tool.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
+ import { runWithActivityContext } from "../../activity/context.js";
1
2
  import { getSessionMetadata } from "../../storage/sqlite/session-repository.js";
2
3
  import "../../storage/sqlite/index.js";
3
- import { runWithActivityContext } from "../../activity/context.js";
4
4
  import "../../activity/index.js";
5
5
  import { isValidProjectAgentId, normalizeProjectAgentId } from "../../projects/project-agent.js";
6
6
  import "../../projects/index.js";
@@ -1,7 +1,7 @@
1
- import { init_agent_scope, resolveAgentIdForWorkspacePath } from "../agent-scope.js";
2
- import { init_agent_session_key, normalizeAgentId } from "../../routing/agent-session-key.js";
3
1
  import { createLogger } from "../../utils/logger/index.js";
4
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_agent_session_key, normalizeAgentId } from "../../routing/agent-session-key.js";
4
+ import { init_agent_scope, resolveAgentIdForWorkspacePath } from "../agent-scope.js";
5
5
  import { resolveBuiltinMemoryStoreConfig } from "../memory/memory-config.js";
6
6
  import { BuiltinMemoryStore } from "../memory/builtin-memory-store.js";
7
7
  import { createMemoryManagerFromConfig } from "../memory/create-memory-manager.js";
@@ -1,7 +1,7 @@
1
- import { buildMemoryRuntime } from "./memory-runtime.js";
2
1
  import { checkBoundary } from "./boundary-guard.js";
3
2
  import { resolveModelRole } from "./model-router.js";
4
3
  import { buildRuntimeToolRegistry } from "./tool-registry.js";
4
+ import { buildMemoryRuntime } from "./memory-runtime.js";
5
5
  import { resolveWorkflow, validateWorkflowForRuntime } from "./workflow-runtime.js";
6
6
  import { buildAgentRuntimeProfile } from "./runtime-profile.js";
7
7
  import { appendAgentRunEvent, createAgentRunTrace, finishAgentRunTrace, hashEffectiveManifest } from "./run-trace.js";
@@ -1,9 +1,9 @@
1
1
  import { buildAgentManifestPromptSection } from "../agent-manifest/prompt.js";
2
2
  import "../agent-manifest/index.js";
3
- import { buildMemoryRuntime } from "./memory-runtime.js";
4
3
  import { checkBoundary } from "./boundary-guard.js";
5
4
  import { resolveModelRole } from "./model-router.js";
6
5
  import { buildRuntimeToolRegistry } from "./tool-registry.js";
6
+ import { buildMemoryRuntime } from "./memory-runtime.js";
7
7
  import { resolveWorkflow, validateWorkflowForRuntime } from "./workflow-runtime.js";
8
8
  //#region src/agent-runtime/runtime-profile.ts
9
9
  function buildAgentRuntimeProfile(params) {
@@ -1,9 +1,9 @@
1
- import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
4
3
  import { resolveAutomationSafetyForTrust } from "../../user-context/trust-policy.js";
5
4
  import { getUserTrustPolicy } from "../../storage/sqlite/user-trust-repository.js";
6
5
  import "../../storage/sqlite/index.js";
6
+ import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
7
7
  import { AutomationAlreadyRunningError } from "../service/automation-service.js";
8
8
  import { logRouteError } from "../../gateway/hono/lib/route-logger.js";
9
9
  import { simulateAutomation } from "../draft/automation-draft-validator.js";
@@ -1,7 +1,7 @@
1
- import { init_agent_scope, normalizeAgentId } from "../../agent/agent-scope.js";
2
- import { buildSessionKey, init_session_key } from "../../routing/session-key.js";
3
1
  import { createLogger } from "../../utils/logger/index.js";
4
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { init_agent_scope, normalizeAgentId } from "../../agent/agent-scope.js";
4
+ import { buildSessionKey, init_session_key } from "../../routing/session-key.js";
5
5
  import crypto from "node:crypto";
6
6
  //#region src/automations/service/action-executor.ts
7
7
  init_agent_scope();
@@ -5,8 +5,8 @@ import { pickFreePort } from "./free-port.js";
5
5
  import { homedir, platform } from "node:os";
6
6
  import { join } from "node:path";
7
7
  import { existsSync } from "node:fs";
8
- import { mkdir, rm } from "node:fs/promises";
9
8
  import { spawn } from "node:child_process";
9
+ import { mkdir, rm } from "node:fs/promises";
10
10
  //#region src/browser/cdp-local-launcher.ts
11
11
  /**
12
12
  * Launches a Chromium / Chrome instance locally with `--remote-debugging-port`
@@ -1,15 +1,15 @@
1
1
  import { PACKAGE_VERSION, init_package_version } from "../../package-version.js";
2
- import { assertCacheDir, init_cache_dir_policy } from "../cache-dir-policy.js";
3
2
  import { createLogger } from "../../utils/logger/index.js";
4
3
  import { init_logger } from "../../utils/logger.js";
4
+ import { assertCacheDir, init_cache_dir_policy } from "../cache-dir-policy.js";
5
5
  import { init_paths, resolveBinDir } from "../../config/paths.js";
6
6
  import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
7
7
  import { resolvePackageRoot } from "../../infra/update-check.js";
8
8
  import { dirname, join } from "node:path";
9
9
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
10
- import { readFile, readdir, rm } from "node:fs/promises";
11
- import { spawn } from "node:child_process";
12
10
  import { fileURLToPath } from "node:url";
11
+ import { spawn } from "node:child_process";
12
+ import { readFile, readdir, rm } from "node:fs/promises";
13
13
  //#region src/browser/providers/browser-ext-install.ts
14
14
  /**
15
15
  * Install bundled Chrome extension artifacts into {resolveBinDir()}/browser-ext/.
@@ -1,6 +1,6 @@
1
- import { assertCacheDir, expandHome, init_cache_dir_policy } from "../cache-dir-policy.js";
2
1
  import { createLogger } from "../../utils/logger/index.js";
3
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { assertCacheDir, expandHome, init_cache_dir_policy } from "../cache-dir-policy.js";
4
4
  import { init_paths, resolveBinDir } from "../../config/paths.js";
5
5
  import { loadPlaywrightCoreModule } from "./playwright-doctor.js";
6
6
  import { WEBDRIVER_OVERRIDE_SCRIPT, buildStealthArgs, filterCloakBrowserExtraArgs, generateFingerprintSeed, makeExecutable, removeQuarantineAttr } from "../stealth.js";
@@ -8,9 +8,9 @@ import { pickFreePort } from "../free-port.js";
8
8
  import { arch, platform, tmpdir } from "node:os";
9
9
  import { join, resolve } from "node:path";
10
10
  import { createReadStream, createWriteStream } from "node:fs";
11
+ import { spawn } from "node:child_process";
11
12
  import { createHash } from "node:crypto";
12
13
  import { mkdir, mkdtemp, rm, stat } from "node:fs/promises";
13
- import { spawn } from "node:child_process";
14
14
  import { Readable, Transform } from "node:stream";
15
15
  import AdmZip from "adm-zip";
16
16
  import { pipeline } from "node:stream/promises";
@@ -1,8 +1,8 @@
1
1
  import { createRequire } from "node:module";
2
2
  import { dirname, join } from "node:path";
3
3
  import { existsSync } from "node:fs";
4
- import { stat } from "node:fs/promises";
5
4
  import { fileURLToPath } from "node:url";
5
+ import { stat } from "node:fs/promises";
6
6
  //#region src/browser/providers/playwright-doctor.ts
7
7
  /** Root directory of the `playwright-core` package (Electron extraResources or node_modules). */
8
8
  function resolvePlaywrightCoreRoot() {