@xopcai/xopc 0.0.278 → 0.0.282

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 (441) hide show
  1. package/dist/browser-ext/_locales/en/messages.json +34 -4
  2. package/dist/browser-ext/_locales/zh_CN/messages.json +34 -4
  3. package/dist/browser-ext/dist/assets/{auth-ClQTK565.js → auth-DB30ywek.js} +18 -53
  4. package/dist/browser-ext/dist/assets/pcm-capture-worklet-CGN9Mlhg.js +39 -0
  5. package/dist/browser-ext/dist/assets/{sidepanel-CeGqObOa.css → sidepanel-BbSQr-6P.css} +40 -6
  6. package/dist/browser-ext/dist/background.js +1 -1
  7. package/dist/browser-ext/dist/sidepanel.html +2 -2
  8. package/dist/browser-ext/dist/sidepanel.js +1219 -191
  9. package/dist/browser-ext/manifest.json +2 -1
  10. package/dist/extensions/feishu/src/adapters/cli-login.js +3 -3
  11. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  12. package/dist/extensions/telegram/src/inbound-processor.js +2 -2
  13. package/dist/extensions/telegram/src/outbound-sender.js +1 -1
  14. package/dist/extensions/telegram/src/plugin.js +2 -2
  15. package/dist/extensions/telegram/xopc.extension.json +1 -1
  16. package/dist/extensions/weixin/src/api/api.js +2 -2
  17. package/dist/extensions/weixin/src/auth/accounts.js +12 -12
  18. package/dist/extensions/weixin/src/messaging/debug-mode.js +5 -5
  19. package/dist/extensions/weixin/src/messaging/inbound.js +11 -11
  20. package/dist/gateway/static/root/assets/{activity-store-SJZ5fS17.js → activity-store-iPtG94qr.js} +1 -1
  21. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-lRVOwbrK.js → agent-avatar-dicebear-Cny5rATT.js} +1 -1
  22. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-OyQ8OVZv.js +1 -0
  23. package/dist/gateway/static/root/assets/{agents-DNQNTDkU.js → agents-DJeh_Ewo.js} +1 -1
  24. package/dist/gateway/static/root/assets/{api-CnJAVHBu.js → api-KMJzMqvZ.js} +1 -1
  25. package/dist/gateway/static/root/assets/{app-management-settings-panel-oHTY5PDs.js → app-management-settings-panel-ZqQKaZEI.js} +1 -1
  26. package/dist/gateway/static/root/assets/{appearance-settings-B0YnZ3ig.js → appearance-settings-CfXsQkKO.js} +1 -1
  27. package/dist/gateway/static/root/assets/apps-page-k-QnVhKW.js +1 -0
  28. package/dist/gateway/static/root/assets/{archive-plugin-D4x142le.js → archive-plugin-BrW53Hap.js} +1 -1
  29. package/dist/gateway/static/root/assets/{attachment-load-zibD2Hod.js → attachment-load-DkfFWHiS.js} +1 -1
  30. package/dist/gateway/static/root/assets/{automations-page-Dkp7gp_S.js → automations-page-e-5we6kD.js} +1 -1
  31. package/dist/gateway/static/root/assets/automations-workspace-DPnlkws1.js +6 -0
  32. package/dist/gateway/static/root/assets/{binary-plugins-CfUzu1Hc.js → binary-plugins-CWIswfXA.js} +1 -1
  33. package/dist/gateway/static/root/assets/{block-editor-r5nCBBan.js → block-editor-CfeF1OmA.js} +3 -3
  34. package/dist/gateway/static/root/assets/{browser-automation-inputs-DcVLoIzc.js → browser-automation-inputs-BTIufVbM.js} +1 -1
  35. package/dist/gateway/static/root/assets/{browser-automations-page-BnL4JnTM.js → browser-automations-page-DnsuWKRu.js} +2 -2
  36. package/dist/gateway/static/root/assets/browser-settings-page-C8xyhnxx.js +8 -0
  37. package/dist/gateway/static/root/assets/capabilities-settings-panel-CBllOLTT.js +8 -0
  38. package/dist/gateway/static/root/assets/channels-settings-C-A-VUE2.js +1 -0
  39. package/dist/gateway/static/root/assets/{channels-status-swr-BTT2sIGg.js → channels-status-swr-DMYQNs-J.js} +1 -1
  40. package/dist/gateway/static/root/assets/{chat-terminal-dock-CWVnJtBp.js → chat-terminal-dock-C_Fw1R3A.js} +2 -2
  41. package/dist/gateway/static/root/assets/connectors-page-CtsMo3H4.js +2 -0
  42. package/dist/gateway/static/root/assets/{date-picker-XjPSlgq_.js → date-picker-CPFxjTrN.js} +1 -1
  43. package/dist/gateway/static/root/assets/{dependency-picker-CkyfEP88.js → dependency-picker-C_5KqzjI.js} +1 -1
  44. package/dist/gateway/static/root/assets/{desktop-pet-BAE_NVx5.js → desktop-pet-DLJsC5D6.js} +1 -1
  45. package/dist/gateway/static/root/assets/{desktop-pet-settings-BUw6V2R9.js → desktop-pet-settings-BdI1iSgz.js} +1 -1
  46. package/dist/gateway/static/root/assets/device-pairing-wizard-BnvPLhc9.js +1 -0
  47. package/dist/gateway/static/root/assets/{extension-debug-page-giBeIVUT.js → extension-debug-page-BNS_TkZQ.js} +1 -1
  48. package/dist/gateway/static/root/assets/{extension-page-Bqo9bNtx.js → extension-page-DMSDZ7Mb.js} +1 -1
  49. package/dist/gateway/static/root/assets/{extension-settings-page-BX-6AA3k.js → extension-settings-page-CeGCWMt0.js} +1 -1
  50. package/dist/gateway/static/root/assets/gateway-config-swr-Cpmyrr6j.js +1 -0
  51. package/dist/gateway/static/root/assets/gateway-settings-DKOTYUma.js +1 -0
  52. package/dist/gateway/static/root/assets/{gateway-startup-retry-CVTa5HSS.js → gateway-startup-retry-DoiPeb65.js} +1 -1
  53. package/dist/gateway/static/root/assets/{heartbeat-settings-DWFAopk_.js → heartbeat-settings-gsdL_Yij.js} +1 -1
  54. package/dist/gateway/static/root/assets/home-page-CbeAdS1T.js +1 -0
  55. package/dist/gateway/static/root/assets/{image-generation-api-DtMRG1oF.js → image-generation-api-CqjHWl2T.js} +1 -1
  56. package/dist/gateway/static/root/assets/index-B_Sg5BKz.css +2 -0
  57. package/dist/gateway/static/root/assets/index-enFXJJCU.js +74 -0
  58. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BKGPpBnV.js → keyboard-shortcuts-settings-CCLtJ8s8.js} +1 -1
  59. package/dist/gateway/static/root/assets/local-app-workbench-page-DzC6SrXj.js +2 -0
  60. package/dist/gateway/static/root/assets/{local-apps-page-B06ToOxB.js → local-apps-page-3LdgP3NO.js} +1 -1
  61. package/dist/gateway/static/root/assets/{locale-store-BkJ7g35d.js → locale-store-1urrBBCQ.js} +1 -1
  62. package/dist/gateway/static/root/assets/{logs-page-DibI1GsP.js → logs-page-DHClKtm6.js} +2 -2
  63. package/dist/gateway/static/root/assets/{management-settings-DJ6yMZCd.js → management-settings-BaCo9Nuo.js} +1 -1
  64. package/dist/gateway/static/root/assets/{markdown-view-DF3aJP_5.js → markdown-view-BZmcFIWa.js} +1 -1
  65. package/dist/gateway/static/root/assets/{media-plugins-CdrLNAks.js → media-plugins-BMjJppvG.js} +1 -1
  66. package/dist/gateway/static/root/assets/messages-DYFcjtmG.js +3 -0
  67. package/dist/gateway/static/root/assets/note-detail-panel-hYO2jNhL.js +5 -0
  68. package/dist/gateway/static/root/assets/notes-page-BT66x22W.js +8 -0
  69. package/dist/gateway/static/root/assets/{page-tabs-B7LA4z-x.js → page-tabs-BCszXX_F.js} +1 -1
  70. package/dist/gateway/static/root/assets/{preview-open-alternatives-DTQRN7WR.js → preview-open-alternatives-CyM0sanh.js} +1 -1
  71. package/dist/gateway/static/root/assets/proactive-page-CVDGA5sB.js +1 -0
  72. package/dist/gateway/static/root/assets/{product-open-page-BazdmFYo.js → product-open-page-lXAbj85Z.js} +1 -1
  73. package/dist/gateway/static/root/assets/project-detail-page-Bp6TAMPM.js +1 -0
  74. package/dist/gateway/static/root/assets/projects-page-UhOIiDcg.js +1 -0
  75. package/dist/gateway/static/root/assets/{registry-api-CTq8EECj.js → registry-api-CxQstD00.js} +1 -1
  76. package/dist/gateway/static/root/assets/remote-access-hub-DJIkMFT4.js +1 -0
  77. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-D-DZf4I1.js → runtime-tools-settings-panel-BUFCgRdZ.js} +2 -2
  78. package/dist/gateway/static/root/assets/{schema-form-B-Yj9DVW.js → schema-form-B01ksA8M.js} +1 -1
  79. package/dist/gateway/static/root/assets/sessions-page-CQOAwPDt.js +1 -0
  80. package/dist/gateway/static/root/assets/settings-advanced-gate-CFuqbGI-.js +1 -0
  81. package/dist/gateway/static/root/assets/{settings-form-section-BxPUqwY6.js → settings-form-section-DvnjZBa3.js} +1 -1
  82. package/dist/gateway/static/root/assets/{settings-page-zLn8lIrs.js → settings-page-DZRkpbCh.js} +1 -1
  83. package/dist/gateway/static/root/assets/setup-status-panel-DVaEiAVY.js +1 -0
  84. package/dist/gateway/static/root/assets/{share-preview-page-DAc_FkVc.js → share-preview-page-vz0UK56q.js} +1 -1
  85. package/dist/gateway/static/root/assets/shares-settings-XiCqMDAe.js +1 -0
  86. package/dist/gateway/static/root/assets/skill-reload-api-C3D8WanU.js +1 -0
  87. package/dist/gateway/static/root/assets/skills-page-CxMWwR6A.js +2 -0
  88. package/dist/gateway/static/root/assets/{skills-page.utils-BR5bk2vT.js → skills-page.utils-BryVNYll.js} +1 -1
  89. package/dist/gateway/static/root/assets/{system-settings-panel-C0ptJutB.js → system-settings-panel-mKFDe6aZ.js} +1 -1
  90. package/dist/gateway/static/root/assets/task-detail-page-Cb0RZNcJ.js +1 -0
  91. package/dist/gateway/static/root/assets/{theme-store-mV6Cm2vj.js → theme-store-Dc5s20V3.js} +1 -1
  92. package/dist/gateway/static/root/assets/tunnel-api-FcI3wKy3.js +1 -0
  93. package/dist/gateway/static/root/assets/{use-autosave-Dc5aN2px.js → use-autosave-CDgdtjTC.js} +1 -1
  94. package/dist/gateway/static/root/assets/user-model-page-Cnshc-Un.js +2 -0
  95. package/dist/gateway/static/root/assets/{voice-api-key-field-CY0DpJui.js → voice-api-key-field-Ce8cb5mN.js} +1 -1
  96. package/dist/gateway/static/root/assets/{voice-config-api-D3DdcH4H.js → voice-config-api-Mk78BrpP.js} +1 -1
  97. package/dist/gateway/static/root/assets/{work-discovery-overlay-Brg9yJBr.js → work-discovery-overlay-CacFTtXe.js} +1 -1
  98. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-D3fq7boB.js → workflow-run-setup-panel-V-5HuEUq.js} +2 -2
  99. package/dist/gateway/static/root/assets/workflows-page-1OJimIfo.js +6 -0
  100. package/dist/gateway/static/root/index.html +10 -11
  101. package/dist/package.js +1 -1
  102. package/dist/packages/gateway-contract/src/discussions.js +17 -0
  103. package/dist/packages/gateway-contract/src/proactive.js +4 -2
  104. package/dist/src/agent/agent-manager.js +14 -14
  105. package/dist/src/agent/agent-scope.js +2 -2
  106. package/dist/src/agent/background-review/run-background-review.js +3 -3
  107. package/dist/src/agent/context/coordinator.js +3 -3
  108. package/dist/src/agent/context/execution-context.js +4 -4
  109. package/dist/src/agent/context/execution-scope.js +2 -2
  110. package/dist/src/agent/context/project-context.d.ts +1 -0
  111. package/dist/src/agent/context/project-context.js +16 -8
  112. package/dist/src/agent/embedded/index.js +2 -2
  113. package/dist/src/agent/embedded/run-for-session.js +4 -4
  114. package/dist/src/agent/embedded/run-turn.js +2 -2
  115. package/dist/src/agent/embedded/session-tool-result-guard.js +3 -3
  116. package/dist/src/agent/external-tools/composio-provider.js +1 -1
  117. package/dist/src/agent/external-tools/gateway-tools.js +1 -1
  118. package/dist/src/agent/external-tools/mcp-provider.js +2 -2
  119. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  120. package/dist/src/agent/image/generation/providers/dashscope.js +1 -1
  121. package/dist/src/agent/image/generation/providers/fal.js +1 -1
  122. package/dist/src/agent/image/generation/providers/google.js +1 -1
  123. package/dist/src/agent/image/generation/runtime.js +1 -1
  124. package/dist/src/agent/image/index.js +1 -1
  125. package/dist/src/agent/image/load-image-media.js +1 -1
  126. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  127. package/dist/src/agent/inbound/inbound-loop.js +2 -2
  128. package/dist/src/agent/index.js +1 -1
  129. package/dist/src/agent/mcp/bundle-mcp-gateway.js +1 -1
  130. package/dist/src/agent/mcp/bundle-mcp-runtime.js +2 -2
  131. package/dist/src/agent/mcp/index.js +2 -2
  132. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  133. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +1 -1
  134. package/dist/src/agent/memory/index.js +2 -2
  135. package/dist/src/agent/messaging/outbound-coordinator.js +1 -1
  136. package/dist/src/agent/orchestration/agent-orchestrator.js +5 -5
  137. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  138. package/dist/src/agent/sandbox/exec-policy.js +1 -1
  139. package/dist/src/agent/service/direct-turn-helpers.js +6 -6
  140. package/dist/src/agent/service/process-direct-one-shot.js +1 -1
  141. package/dist/src/agent/service/process-direct-streaming.js +5 -5
  142. package/dist/src/agent/service/webchat-tts.js +2 -2
  143. package/dist/src/agent/service.js +18 -18
  144. package/dist/src/agent/skills/filesystem-watcher.js +1 -1
  145. package/dist/src/agent/skills/hub-pull.js +3 -3
  146. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +1 -1
  147. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
  148. package/dist/src/agent/source-context/task-context.d.ts +3 -0
  149. package/dist/src/agent/source-context/task-context.js +24 -0
  150. package/dist/src/agent/source-context/types.d.ts +2 -2
  151. package/dist/src/agent/source-context/types.js +1 -1
  152. package/dist/src/agent/tasks/task-judge-service.js +2 -2
  153. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  154. package/dist/src/agent/tool-manuals/xopc-use.js +1 -0
  155. package/dist/src/agent/tools/create-share-tool.js +3 -3
  156. package/dist/src/agent/tools/delegate-tool.js +3 -3
  157. package/dist/src/agent/tools/executor.js +1 -1
  158. package/dist/src/agent/tools/factory.js +13 -13
  159. package/dist/src/agent/tools/image-generate-tool.js +3 -3
  160. package/dist/src/agent/tools/index.js +5 -5
  161. package/dist/src/agent/tools/list-dir.js +1 -1
  162. package/dist/src/agent/tools/publish-artifacts.js +2 -2
  163. package/dist/src/agent/tools/read.js +1 -1
  164. package/dist/src/agent/tools/review-workspace.js +1 -1
  165. package/dist/src/agent/tools/send-media.js +2 -2
  166. package/dist/src/agent/tools/skills-tools.js +1 -1
  167. package/dist/src/agent/tools/tts-tool.js +1 -1
  168. package/dist/src/agent/tools/user-context-tool.js +1 -1
  169. package/dist/src/agent/tools/write.js +2 -2
  170. package/dist/src/agent/tools/xopc-use-tool.js +4 -4
  171. package/dist/src/agent/workflow/subagent-runner.js +1 -1
  172. package/dist/src/capabilities/store-connector.js +1 -1
  173. package/dist/src/channels/attachments/voice-stt-webchat.js +2 -2
  174. package/dist/src/channels/index.js +2 -2
  175. package/dist/src/channels/outbound-sender.js +1 -1
  176. package/dist/src/channels/pairing/allow-from-file.js +9 -9
  177. package/dist/src/channels/pairing/pairing-store.js +6 -6
  178. package/dist/src/chat-commands/builtins/config.js +2 -2
  179. package/dist/src/chat-commands/builtins/review.js +1 -1
  180. package/dist/src/chat-commands/builtins/session.js +1 -1
  181. package/dist/src/chat-commands/builtins/thinking.js +1 -1
  182. package/dist/src/chat-commands/builtins/tts.js +1 -1
  183. package/dist/src/chat-commands/builtins/understanding.js +1 -1
  184. package/dist/src/chat-commands/builtins/workflow.js +2 -2
  185. package/dist/src/chat-commands/context.js +2 -2
  186. package/dist/src/chat-commands/index.js +3 -3
  187. package/dist/src/cli/commands/agent.js +6 -6
  188. package/dist/src/cli/commands/agents.js +1 -1
  189. package/dist/src/cli/commands/config.js +1 -1
  190. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  191. package/dist/src/cli/commands/extension-dev.js +1 -1
  192. package/dist/src/cli/commands/extension.js +1 -1
  193. package/dist/src/cli/commands/gateway/shared.js +1 -1
  194. package/dist/src/cli/commands/gateway/token.js +1 -1
  195. package/dist/src/cli/commands/image.js +1 -1
  196. package/dist/src/cli/commands/init.js +1 -1
  197. package/dist/src/cli/commands/onboard.js +1 -1
  198. package/dist/src/cli/commands/project.js +2 -2
  199. package/dist/src/cli/commands/runtime.js +1 -1
  200. package/dist/src/cli/commands/skills.js +2 -2
  201. package/dist/src/cli/commands/tui.js +1 -1
  202. package/dist/src/cli/commands/tunnel.js +3 -3
  203. package/dist/src/cli/extension-cli-register.js +4 -4
  204. package/dist/src/cli/utils/gateway-client.js +1 -1
  205. package/dist/src/config/index.js +2 -2
  206. package/dist/src/connectors/connected-source-understanding.js +2 -2
  207. package/dist/src/connectors/connection-recovery-service.js +3 -3
  208. package/dist/src/discussions/action-tasks.d.ts +21 -0
  209. package/dist/src/discussions/action-tasks.js +93 -0
  210. package/dist/src/discussions/analyzer.d.ts +21 -1
  211. package/dist/src/discussions/analyzer.js +229 -62
  212. package/dist/src/discussions/audio-repair.d.ts +8 -0
  213. package/dist/src/discussions/audio-repair.js +41 -0
  214. package/dist/src/discussions/edits.d.ts +22 -0
  215. package/dist/src/discussions/edits.js +81 -0
  216. package/dist/src/discussions/errors.d.ts +4 -0
  217. package/dist/src/discussions/errors.js +10 -0
  218. package/dist/src/discussions/export.d.ts +2 -0
  219. package/dist/src/discussions/export.js +23 -0
  220. package/dist/src/discussions/index.js +3 -2
  221. package/dist/src/discussions/live-worker.js +2 -2
  222. package/dist/src/discussions/organizer-worker.js +14 -5
  223. package/dist/src/discussions/organizer.d.ts +1 -1
  224. package/dist/src/discussions/organizer.js +60 -24
  225. package/dist/src/discussions/reconcile.d.ts +22 -0
  226. package/dist/src/discussions/reconcile.js +55 -0
  227. package/dist/src/discussions/recording.d.ts +9 -0
  228. package/dist/src/discussions/recording.js +219 -0
  229. package/dist/src/discussions/recordingJobs.d.ts +14 -0
  230. package/dist/src/discussions/recordingJobs.js +69 -0
  231. package/dist/src/discussions/repository.d.ts +4 -2
  232. package/dist/src/discussions/repository.js +15 -10
  233. package/dist/src/discussions/revisions.d.ts +12 -0
  234. package/dist/src/discussions/revisions.js +36 -0
  235. package/dist/src/discussions/sealer.d.ts +1 -0
  236. package/dist/src/discussions/sealer.js +62 -12
  237. package/dist/src/discussions/service.d.ts +16 -15
  238. package/dist/src/discussions/service.js +177 -91
  239. package/dist/src/discussions/types.d.ts +4 -139
  240. package/dist/src/discussions/types.js +1 -11
  241. package/dist/src/extensions/api.js +3 -3
  242. package/dist/src/extensions/bundled-extension-activation.js +1 -1
  243. package/dist/src/extensions/index.js +1 -1
  244. package/dist/src/extensions/loader.js +1 -1
  245. package/dist/src/extensions/sdk/index.js +1 -1
  246. package/dist/src/files/file-service.d.ts +1 -0
  247. package/dist/src/files/file-service.js +77 -0
  248. package/dist/src/gateway/agents-admin.js +3 -3
  249. package/dist/src/gateway/chat-stream/mapper.js +2 -2
  250. package/dist/src/gateway/device-routes.js +2 -2
  251. package/dist/src/gateway/file-path-classifier.js +1 -1
  252. package/dist/src/gateway/heartbeat/service.js +1 -1
  253. package/dist/src/gateway/hono/app.js +6 -5
  254. package/dist/src/gateway/hono/lib/config-payload.js +2 -2
  255. package/dist/src/gateway/hono/lib/static-ui.js +1 -0
  256. package/dist/src/gateway/hono/routes/agents.js +1 -1
  257. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  258. package/dist/src/gateway/hono/routes/browser.js +1 -1
  259. package/dist/src/gateway/hono/routes/commands-skills.js +3 -3
  260. package/dist/src/gateway/hono/routes/config-patch/gateway.js +1 -1
  261. package/dist/src/gateway/hono/routes/context-sources.js +1 -2
  262. package/dist/src/gateway/hono/routes/discussions.js +126 -19
  263. package/dist/src/gateway/hono/routes/files.js +1 -22
  264. package/dist/src/gateway/hono/routes/index.js +0 -2
  265. package/dist/src/gateway/hono/routes/lazy-bundles.js +16 -0
  266. package/dist/src/gateway/hono/routes/mcp.js +2 -2
  267. package/dist/src/gateway/hono/routes/media.js +1 -1
  268. package/dist/src/gateway/hono/routes/models.js +4 -4
  269. package/dist/src/gateway/hono/routes/notes.js +1 -1
  270. package/dist/src/gateway/hono/routes/proactive-control.js +4 -38
  271. package/dist/src/gateway/hono/routes/project-understanding.d.ts +3 -0
  272. package/dist/src/gateway/hono/routes/project-understanding.js +65 -0
  273. package/dist/src/gateway/hono/routes/projects.js +22 -6
  274. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +2 -2
  275. package/dist/src/gateway/hono/routes/session-input-handler.js +2 -2
  276. package/dist/src/gateway/hono/routes/sessions.js +1 -1
  277. package/dist/src/gateway/hono/routes/shares.js +3 -3
  278. package/dist/src/gateway/hono/routes/site-shares.js +1 -1
  279. package/dist/src/gateway/hono/routes/status.js +1 -1
  280. package/dist/src/gateway/hono/routes/tasks.js +4 -3
  281. package/dist/src/gateway/hono/routes/user-model.js +4 -4
  282. package/dist/src/gateway/hono/routes/voice.js +3 -3
  283. package/dist/src/gateway/hono/routes/work-discovery.d.ts +0 -2
  284. package/dist/src/gateway/hono/routes/work-discovery.js +2 -16
  285. package/dist/src/gateway/hono/routes/workflows.js +4 -4
  286. package/dist/src/gateway/image-generation-setup.js +1 -1
  287. package/dist/src/gateway/lock.js +10 -10
  288. package/dist/src/gateway/media-access.js +2 -2
  289. package/dist/src/gateway/ports.js +6 -6
  290. package/dist/src/gateway/security/gateway-scopes.js +1 -2
  291. package/dist/src/gateway/server.js +1 -1
  292. package/dist/src/gateway/service/agent-runner.js +2 -2
  293. package/dist/src/gateway/service/config-coordinator.js +3 -3
  294. package/dist/src/gateway/service/marketplace-service.js +3 -3
  295. package/dist/src/gateway/service/run-gateway-agent.js +3 -3
  296. package/dist/src/gateway/service.d.ts +3 -0
  297. package/dist/src/gateway/service.js +42 -27
  298. package/dist/src/gateway/session-context-summary.js +2 -2
  299. package/dist/src/gateway/workspace-editor-path.js +2 -2
  300. package/dist/src/heartbeat/index.js +1 -1
  301. package/dist/src/infra/gateway-processes.js +2 -2
  302. package/dist/src/infra/path-env.js +3 -3
  303. package/dist/src/infra/update-global.js +10 -10
  304. package/dist/src/knowledge-memory/repository.d.ts +2 -0
  305. package/dist/src/knowledge-memory/repository.js +3 -1
  306. package/dist/src/local-apps/service.js +1 -1
  307. package/dist/src/media-shared/http/ssrf-guard.js +1 -1
  308. package/dist/src/media-understanding/audio-transcription-runner.d.ts +1 -0
  309. package/dist/src/media-understanding/audio-transcription-runner.js +1 -0
  310. package/dist/src/media-understanding/runner.js +1 -0
  311. package/dist/src/media-understanding/types.d.ts +8 -0
  312. package/dist/src/notes/agent-context.js +3 -3
  313. package/dist/src/notes/service.d.ts +3 -1
  314. package/dist/src/notes/store.d.ts +3 -1
  315. package/dist/src/notes/store.js +5 -3
  316. package/dist/src/proactive/actions/service.js +1 -1
  317. package/dist/src/proactive/execution/agent-executor.js +1 -1
  318. package/dist/src/proactive/execution/context.js +1 -1
  319. package/dist/src/proactive/execution/worker.js +1 -1
  320. package/dist/src/proactive/experience.d.ts +38 -21
  321. package/dist/src/proactive/experience.js +109 -13
  322. package/dist/src/proactive/follow-ups.js +1 -1
  323. package/dist/src/proactive/inbox/cards.js +9 -3
  324. package/dist/src/proactive/inbox/delivery.js +2 -2
  325. package/dist/src/proactive/inbox/digest.js +2 -2
  326. package/dist/src/proactive/inbox/notification-policy.js +1 -1
  327. package/dist/src/proactive/inbox/repository.js +1 -1
  328. package/dist/src/proactive/inbox/service.js +1 -1
  329. package/dist/src/proactive/index.js +1 -1
  330. package/dist/src/proactive/maintenance.js +0 -1
  331. package/dist/src/proactive/scenarios/control.d.ts +0 -35
  332. package/dist/src/proactive/scenarios/control.js +7 -53
  333. package/dist/src/proactive/temporal/worker.js +1 -1
  334. package/dist/src/projects/project-skill-service.js +2 -2
  335. package/dist/src/projects/project-store.js +6 -4
  336. package/dist/src/providers/model-reference-auditor.js +1 -1
  337. package/dist/src/remote-access/exposure-manager.js +1 -1
  338. package/dist/src/session/client-history.d.ts +1 -1
  339. package/dist/src/session/client-history.js +1 -1
  340. package/dist/src/session/index.js +2 -2
  341. package/dist/src/session/session-title.js +1 -1
  342. package/dist/src/session/store.js +3 -3
  343. package/dist/src/session/thinking-resolve.js +1 -1
  344. package/dist/src/share/share-store.js +1 -1
  345. package/dist/src/share/share-thumbnail.js +1 -1
  346. package/dist/src/share/site-share-store.js +1 -1
  347. package/dist/src/storage/sqlite/connection.js +9 -9
  348. package/dist/src/storage/sqlite/migrations/166_remove_proactive_previews.sql +1 -0
  349. package/dist/src/storage/sqlite/migrations/167_discussion_recording_chunks.sql +7 -0
  350. package/dist/src/storage/sqlite/migrations/168_discussion_evidence.sql +16 -0
  351. package/dist/src/storage/sqlite/migrations/169_discussion_action_tasks.sql +8 -0
  352. package/dist/src/storage/sqlite/migrations/170_discussion_edits.sql +8 -0
  353. package/dist/src/storage/sqlite/migrations/171_discussion_recording_jobs.sql +14 -0
  354. package/dist/src/storage/sqlite/migrations/172_project_understanding.sql +3 -0
  355. package/dist/src/storage/sqlite/migrations/173_mobile_discussion_source.sql +5 -0
  356. package/dist/src/storage/sqlite/migrations/__tests__/mobile-discussion-source.test.ts +20 -0
  357. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  358. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  359. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  360. package/dist/src/storage/sqlite/schema.js +1 -1
  361. package/dist/src/tasks/execution-context.js +1 -1
  362. package/dist/src/tasks/home-query-service.js +1 -1
  363. package/dist/src/tasks/index.js +3 -3
  364. package/dist/src/tasks/task-application-service.js +1 -1
  365. package/dist/src/tasks/task-context-assembler.js +1 -1
  366. package/dist/src/tasks/task-handoff-service.js +1 -1
  367. package/dist/src/tasks/task-repository.d.ts +1 -0
  368. package/dist/src/tasks/task-repository.js +4 -0
  369. package/dist/src/tasks/task-run-coordinator.js +1 -1
  370. package/dist/src/tui/backends/embedded-backend.js +9 -9
  371. package/dist/src/tui/backends/gateway-realtime-backend.js +2 -2
  372. package/dist/src/tui/extension-host/load-extensions.js +1 -1
  373. package/dist/src/tui/tui-command-formatters.js +1 -1
  374. package/dist/src/tui/tui-commands.js +5 -5
  375. package/dist/src/tui/tui-picker-overlay.js +1 -1
  376. package/dist/src/tui/tui-skills-autocomplete.js +1 -1
  377. package/dist/src/tui/tui-startup-resources.js +4 -4
  378. package/dist/src/tui/tui.js +2 -2
  379. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  380. package/dist/src/voice/audio/normalize.js +28 -5
  381. package/dist/src/voice/local/runtime-worker.js +1 -1
  382. package/dist/src/voice/realtime/memory-context.js +3 -3
  383. package/dist/src/voice/stt/index.js +2 -2
  384. package/dist/src/voice/stt/preflight.js +1 -1
  385. package/dist/src/voice/stt/providers/local-transcription.js +1 -1
  386. package/dist/src/voice/stt/transcribe-core.js +2 -1
  387. package/dist/src/voice/stt/types.d.ts +1 -0
  388. package/dist/src/voice/tts/index.js +3 -3
  389. package/dist/src/voice/tts/merge-config.js +1 -1
  390. package/dist/src/voice/tts/payload.js +1 -1
  391. package/dist/src/voice/tts/speak-core.js +1 -1
  392. package/dist/src/work-discovery/analyzer.d.ts +1 -0
  393. package/dist/src/work-discovery/analyzer.js +28 -22
  394. package/dist/src/work-discovery/index.js +3 -3
  395. package/dist/src/work-discovery/investigator.js +1 -1
  396. package/dist/src/work-discovery/project-understanding.d.ts +7 -0
  397. package/dist/src/work-discovery/project-understanding.js +38 -0
  398. package/dist/src/work-discovery/repository.d.ts +3 -1
  399. package/dist/src/work-discovery/repository.js +18 -5
  400. package/dist/src/work-discovery/service.d.ts +8 -0
  401. package/dist/src/work-discovery/service.js +164 -16
  402. package/dist/src/work-discovery/types.d.ts +2 -0
  403. package/dist/src/workflows/context/workflow-context.js +1 -1
  404. package/dist/src/workflows/service/workflow-run-service.js +4 -4
  405. package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
  406. package/package.json +3 -3
  407. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DAqn5DdL.js +0 -1
  408. package/dist/gateway/static/root/assets/apps-page-Bh0etSmL.js +0 -1
  409. package/dist/gateway/static/root/assets/automations-workspace-w4McwueN.js +0 -6
  410. package/dist/gateway/static/root/assets/browser-settings-page-DxX-t0EJ.js +0 -8
  411. package/dist/gateway/static/root/assets/capabilities-settings-panel-CvacBQAI.js +0 -8
  412. package/dist/gateway/static/root/assets/channels-settings-CJzSNo-L.js +0 -1
  413. package/dist/gateway/static/root/assets/config-reload-event-Bjh2zoKp.js +0 -1
  414. package/dist/gateway/static/root/assets/connectors-page-DNBhBT0b.js +0 -2
  415. package/dist/gateway/static/root/assets/device-pairing-wizard-DsR5NQEC.js +0 -1
  416. package/dist/gateway/static/root/assets/gateway-config-swr-cd8owslz.js +0 -1
  417. package/dist/gateway/static/root/assets/gateway-settings-Dil7vuyU.js +0 -1
  418. package/dist/gateway/static/root/assets/home-page-Dpeuvazg.js +0 -1
  419. package/dist/gateway/static/root/assets/index-B03HGpzt.js +0 -74
  420. package/dist/gateway/static/root/assets/index-CXF9-BpI.css +0 -2
  421. package/dist/gateway/static/root/assets/local-app-workbench-page-CBtemxFc.js +0 -2
  422. package/dist/gateway/static/root/assets/messages-BGc-OJWg.js +0 -3
  423. package/dist/gateway/static/root/assets/note-detail-panel-GOxomxOK.js +0 -5
  424. package/dist/gateway/static/root/assets/notes-page-CQBgk3_x.js +0 -8
  425. package/dist/gateway/static/root/assets/proactive-card-BF3741px.js +0 -1
  426. package/dist/gateway/static/root/assets/proactive-page-1EM217v0.js +0 -1
  427. package/dist/gateway/static/root/assets/project-detail-page-B1Pm-fQd.js +0 -1
  428. package/dist/gateway/static/root/assets/projects-page-DUrxyNR9.js +0 -1
  429. package/dist/gateway/static/root/assets/remote-access-hub-C6VzHUwx.js +0 -1
  430. package/dist/gateway/static/root/assets/sessions-page-DtemHfkv.js +0 -1
  431. package/dist/gateway/static/root/assets/settings-advanced-gate-ByEVQe0c.js +0 -1
  432. package/dist/gateway/static/root/assets/setup-status-panel-BwIrk3Jx.js +0 -1
  433. package/dist/gateway/static/root/assets/shares-settings-Dwdv6QyS.js +0 -1
  434. package/dist/gateway/static/root/assets/skill-reload-api-CDzQWN60.js +0 -1
  435. package/dist/gateway/static/root/assets/skills-page-CO5XVkbY.js +0 -2
  436. package/dist/gateway/static/root/assets/task-detail-page-DOjcKOzQ.js +0 -1
  437. package/dist/gateway/static/root/assets/tunnel-api-BABuQvGD.js +0 -1
  438. package/dist/gateway/static/root/assets/user-model-page-UhsSP_pC.js +0 -2
  439. package/dist/gateway/static/root/assets/workflows-page-S7XXNBWa.js +0 -6
  440. package/dist/src/proactive/scenarios/preview.d.ts +0 -13
  441. package/dist/src/proactive/scenarios/preview.js +0 -81
@@ -12,14 +12,14 @@ import { appendCompactionBoundaryIfUnchanged, appendTranscriptEntry, listCompact
12
12
  import { getSessionConfig, setSessionConfig } from "../storage/sqlite/config-repository.js";
13
13
  import "../storage/sqlite/index.js";
14
14
  import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
15
- import { readPostCompactionContext } from "../agent/reply/post-compaction-context.js";
15
+ import { transcriptRowsToClientHistory } from "./client-history.js";
16
16
  import { SessionCompactor } from "../agent/memory/compaction.js";
17
+ import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
18
+ import { readPostCompactionContext } from "../agent/reply/post-compaction-context.js";
17
19
  import { resolveCompactionPolicy } from "../agent/memory/compaction-policy.js";
18
20
  import { promoteCompactionLedger } from "../agent/memory/compaction-promotion.js";
19
- import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
20
21
  import { SlidingWindow } from "../agent/memory/window.js";
21
22
  import { isAppendOnlyLlmTranscriptMessage } from "./transcript-stats.js";
22
- import { transcriptRowsToClientHistory } from "./client-history.js";
23
23
  import { backfillStructuredTurnOutcomes } from "./turn-outcome-projector.js";
24
24
  import { computeTranscriptUserRoundDeleteRange } from "./user-round-delete.js";
25
25
  //#region src/session/store.ts
@@ -1,5 +1,5 @@
1
- import { normalizeThinkLevel } from "../agent/transcript/thinking-types.js";
2
1
  import { resolveReasoningLevel, resolveThinkingLevel } from "./config-store.js";
2
+ import { normalizeThinkLevel } from "../agent/transcript/thinking-types.js";
3
3
  //#region src/session/thinking-resolve.ts
4
4
  const FALLBACK = "medium";
5
5
  /**
@@ -5,8 +5,8 @@ import { requireXopcDatabase } from "../storage/sqlite/connection.js";
5
5
  import { runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
6
6
  import { init_paths } from "../config/paths.js";
7
7
  import { DurableState } from "../storage/sqlite/durable-state.js";
8
- import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
9
8
  import { SHARE_CONFIG_DEFAULTS } from "./share-types.js";
9
+ import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
10
10
  import { logShareAudit } from "./share-audit.js";
11
11
  import { join, relative, resolve } from "node:path";
12
12
  import { randomBytes, randomUUID } from "node:crypto";
@@ -2,9 +2,9 @@ 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
4
  import { init_paths } from "../config/paths.js";
5
- import { loadPlaywrightCoreModule } from "../browser/providers/playwright-doctor.js";
6
5
  import { getShareStore } from "./share-store.js";
7
6
  import { getSiteShareStore } from "./site-share-store.js";
7
+ import { loadPlaywrightCoreModule } from "../browser/providers/playwright-doctor.js";
8
8
  import { join } from "node:path";
9
9
  import { mkdir, readFile, stat, unlink, writeFile } from "node:fs/promises";
10
10
  //#region src/share/share-thumbnail.ts
@@ -3,8 +3,8 @@ import { init_logger } from "../utils/logger.js";
3
3
  import { requireXopcDatabase } from "../storage/sqlite/connection.js";
4
4
  import { runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
5
5
  import { DurableState } from "../storage/sqlite/durable-state.js";
6
- import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
7
6
  import { SITE_SHARE_CONFIG_DEFAULTS } from "./site-share-types.js";
7
+ import { isPathUnderWorkspace } from "../gateway/workspace-editor-path.js";
8
8
  import { relative, resolve } from "node:path";
9
9
  import { randomBytes, randomUUID } from "node:crypto";
10
10
  import { lstat, readdir, realpath, stat } from "node:fs/promises";
@@ -5,7 +5,7 @@ import { ensureXopcDatabaseSchema } from "./schema.js";
5
5
  import { requireNodeSqlite } from "../../infra/node-sqlite.js";
6
6
  import { installSqliteTransientRejectionHandler } from "../../infra/unhandled-rejections.js";
7
7
  import path from "node:path";
8
- import fsSync from "node:fs";
8
+ import fs from "node:fs";
9
9
  import childProcess from "node:child_process";
10
10
  //#region src/storage/sqlite/connection.ts
11
11
  init_logger();
@@ -28,7 +28,7 @@ function normalizeNonNegativeInteger(value, label) {
28
28
  function findExistingVolumePath(targetPath) {
29
29
  let current = path.resolve(targetPath);
30
30
  while (true) try {
31
- return fsSync.statSync(current).isDirectory() ? current : path.dirname(current);
31
+ return fs.statSync(current).isDirectory() ? current : path.dirname(current);
32
32
  } catch {
33
33
  const parent = path.dirname(current);
34
34
  if (parent === current) return null;
@@ -75,7 +75,7 @@ function parseMountCommandEntries(contents) {
75
75
  }
76
76
  function readMountEntries() {
77
77
  try {
78
- return parseProcMountInfoEntries(fsSync.readFileSync(PROC_MOUNTINFO_PATH, "utf8"));
78
+ return parseProcMountInfoEntries(fs.readFileSync(PROC_MOUNTINFO_PATH, "utf8"));
79
79
  } catch {}
80
80
  try {
81
81
  return parseMountCommandEntries(String(childProcess.execFileSync("mount", [])));
@@ -102,7 +102,7 @@ function isNetworkMountEntryPath(targetPath) {
102
102
  return mountEntry ? isNetworkMountType(mountEntry.fsType) : false;
103
103
  }
104
104
  function isNetworkBackedPath(targetPath) {
105
- if (typeof fsSync.statfsSync !== "function") return isNetworkMountEntryPath(targetPath);
105
+ if (typeof fs.statfsSync !== "function") return isNetworkMountEntryPath(targetPath);
106
106
  const checkedPath = findExistingVolumePath(targetPath);
107
107
  if (!checkedPath) return false;
108
108
  try {
@@ -111,7 +111,7 @@ function isNetworkBackedPath(targetPath) {
111
111
  4283649346,
112
112
  4266872130,
113
113
  20859
114
- ].includes(fsSync.statfsSync(checkedPath).type >>> 0)) return true;
114
+ ].includes(fs.statfsSync(checkedPath).type >>> 0)) return true;
115
115
  } catch {
116
116
  return isNetworkMountEntryPath(checkedPath);
117
117
  }
@@ -156,13 +156,13 @@ let cachedDatabase = null;
156
156
  function ensureDatabasePermissions(pathname) {
157
157
  const dir = pathname.slice(0, Math.max(pathname.lastIndexOf("/"), pathname.lastIndexOf("\\")));
158
158
  if (dir) {
159
- fsSync.mkdirSync(dir, { recursive: true });
160
- fsSync.chmodSync(dir, DB_DIR_MODE);
159
+ fs.mkdirSync(dir, { recursive: true });
160
+ fs.chmodSync(dir, DB_DIR_MODE);
161
161
  }
162
162
  for (const suffix of DB_SIDECAR_SUFFIXES) {
163
163
  const candidate = `${pathname}${suffix}`;
164
- if (!fsSync.existsSync(candidate)) continue;
165
- fsSync.chmodSync(candidate, DB_FILE_MODE);
164
+ if (!fs.existsSync(candidate)) continue;
165
+ fs.chmodSync(candidate, DB_FILE_MODE);
166
166
  }
167
167
  }
168
168
  function openDatabaseAtPath(pathname) {
@@ -0,0 +1 @@
1
+ DROP TABLE IF EXISTS proactive_preview_runs;
@@ -0,0 +1,7 @@
1
+ CREATE TABLE discussion_recording_chunks (
2
+ discussion_id TEXT NOT NULL REFERENCES discussion_captures(id) ON DELETE CASCADE,
3
+ sequence INTEGER NOT NULL CHECK(sequence >= 0),
4
+ sha256 TEXT NOT NULL,
5
+ bytes INTEGER NOT NULL CHECK(bytes > 0),
6
+ PRIMARY KEY(discussion_id, sequence)
7
+ );
@@ -0,0 +1,16 @@
1
+ CREATE TABLE discussion_transcript_revisions (
2
+ discussion_id TEXT NOT NULL REFERENCES discussion_captures(id) ON DELETE CASCADE,
3
+ revision INTEGER NOT NULL,
4
+ segments_json TEXT NOT NULL,
5
+ created_at INTEGER NOT NULL,
6
+ PRIMARY KEY(discussion_id, revision)
7
+ );
8
+ ALTER TABLE discussion_organizations ADD COLUMN transcript_revision INTEGER NOT NULL DEFAULT 0;
9
+ UPDATE discussion_organizations SET transcript_revision = COALESCE((SELECT transcript_revision FROM discussion_captures WHERE id = discussion_id), 0);
10
+ UPDATE discussion_organizations SET organization_json = json_set(organization_json, '$.decisions', json(COALESCE((SELECT json_group_array(json_object('id', lower(hex(randomblob(8))), 'text', value, 'evidenceSegmentIds', json('[]'))) FROM json_each(organization_json, '$.decisions')), '[]'))) WHERE organization_json IS NOT NULL;
11
+ UPDATE discussion_organizations SET organization_json = json_set(organization_json, '$.risks', json(COALESCE((SELECT json_group_array(json_object('id', lower(hex(randomblob(8))), 'text', value, 'evidenceSegmentIds', json('[]'))) FROM json_each(organization_json, '$.risks')), '[]'))) WHERE organization_json IS NOT NULL;
12
+ UPDATE discussion_organizations SET organization_json = json_set(organization_json, '$.openQuestions', json(COALESCE((SELECT json_group_array(json_object('id', lower(hex(randomblob(8))), 'text', value, 'evidenceSegmentIds', json('[]'))) FROM json_each(organization_json, '$.openQuestions')), '[]'))) WHERE organization_json IS NOT NULL;
13
+ UPDATE discussion_organizations SET organization_json = json_set(organization_json, '$.chapters', json('[]'), '$.actionItems', json(COALESCE((SELECT json_group_array(json_set(value, '$.evidenceSegmentIds', json('[]'))) FROM json_each(organization_json, '$.actionItems')), '[]'))) WHERE organization_json IS NOT NULL;
14
+
15
+ ALTER TABLE discussion_captures ADD COLUMN organization_template TEXT NOT NULL DEFAULT 'general';
16
+ CREATE TABLE discussion_analysis_chunks (discussion_id TEXT NOT NULL REFERENCES discussion_captures(id) ON DELETE CASCADE, input_hash TEXT NOT NULL, result_json TEXT NOT NULL, PRIMARY KEY (discussion_id, input_hash));
@@ -0,0 +1,8 @@
1
+ CREATE TABLE discussion_action_tasks (
2
+ discussion_id TEXT NOT NULL REFERENCES discussion_captures(id) ON DELETE CASCADE,
3
+ action_id TEXT NOT NULL,
4
+ task_id TEXT NOT NULL,
5
+ organization_revision INTEGER NOT NULL,
6
+ created_at INTEGER NOT NULL,
7
+ PRIMARY KEY(discussion_id, action_id)
8
+ );
@@ -0,0 +1,8 @@
1
+ CREATE TABLE discussion_edits (
2
+ discussion_id TEXT NOT NULL REFERENCES discussion_captures(id) ON DELETE CASCADE,
3
+ kind TEXT NOT NULL CHECK (kind IN ('summary', 'decisions', 'actionItems', 'risks', 'openQuestions')),
4
+ item_id TEXT NOT NULL,
5
+ value_json TEXT NOT NULL,
6
+ updated_at INTEGER NOT NULL,
7
+ PRIMARY KEY (discussion_id, kind, item_id)
8
+ );
@@ -0,0 +1,14 @@
1
+ CREATE TABLE discussion_recording_jobs (
2
+ id TEXT PRIMARY KEY,
3
+ discussion_id TEXT NOT NULL UNIQUE REFERENCES discussion_captures(id) ON DELETE CASCADE,
4
+ input_json TEXT NOT NULL,
5
+ manifest_hash TEXT NOT NULL,
6
+ state TEXT NOT NULL CHECK(state IN ('queued', 'running', 'completed', 'failed', 'cancelled')),
7
+ lease_owner TEXT,
8
+ lease_until INTEGER,
9
+ error TEXT,
10
+ created_at INTEGER NOT NULL,
11
+ updated_at INTEGER NOT NULL
12
+ );
13
+
14
+ CREATE INDEX discussion_recording_jobs_pending ON discussion_recording_jobs(state, created_at);
@@ -0,0 +1,3 @@
1
+ ALTER TABLE work_discovery_runs ADD COLUMN mode TEXT NOT NULL DEFAULT 'interactive'
2
+ CHECK (mode IN ('interactive', 'background'));
3
+ ALTER TABLE work_discovery_runs ADD COLUMN attempts INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1,5 @@
1
+ ALTER TABLE discussion_captures ADD COLUMN source_new TEXT NOT NULL DEFAULT 'web'
2
+ CHECK (source_new IN ('web', 'electron', 'mobile'));
3
+ UPDATE discussion_captures SET source_new = source;
4
+ ALTER TABLE discussion_captures DROP COLUMN source;
5
+ ALTER TABLE discussion_captures RENAME COLUMN source_new TO source;
@@ -0,0 +1,20 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { DatabaseSync } from 'node:sqlite';
3
+ import { expect, it } from 'vitest';
4
+
5
+ it('extends the source constraint without deleting existing captures or cascading children', () => {
6
+ const db = new DatabaseSync(':memory:');
7
+ try {
8
+ db.exec(`PRAGMA foreign_keys=ON;
9
+ CREATE TABLE discussion_captures(id TEXT PRIMARY KEY, source TEXT NOT NULL CHECK(source IN ('web','electron')));
10
+ CREATE TABLE chunks(capture_id TEXT REFERENCES discussion_captures(id) ON DELETE CASCADE, sequence INTEGER);
11
+ INSERT INTO discussion_captures VALUES ('first','electron');
12
+ INSERT INTO chunks VALUES ('first',0);`);
13
+ db.exec(readFileSync(new URL('../173_mobile_discussion_source.sql', import.meta.url), 'utf8'));
14
+ expect(db.prepare('SELECT source FROM discussion_captures').get()?.source).toBe('electron');
15
+ expect(db.prepare('SELECT count(*) AS count FROM chunks').get()?.count).toBe(1);
16
+ db.exec("INSERT INTO discussion_captures VALUES ('second','mobile')");
17
+ expect(() => db.exec("INSERT INTO discussion_captures VALUES ('third','unknown')")).toThrow();
18
+ expect(db.prepare('PRAGMA foreign_key_check').all()).toEqual([]);
19
+ } finally { db.close(); }
20
+ });
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 165;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 173;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
12
12
  /** Baseline schema version applied from schema.sql on first open. */
13
13
  const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
14
14
  /** Latest schema version this release supports (increment when adding migrations). */
15
- const XOPC_DB_SCHEMA_VERSION = 165;
15
+ const XOPC_DB_SCHEMA_VERSION = 173;
16
16
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
17
17
  function backupBeforeTaskCutover(db, databasePath) {
18
18
  db.exec("PRAGMA wal_checkpoint(FULL)");
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration) {
57
57
  * Each step runs in its own transaction and updates schema_meta on success.
58
58
  */
59
59
  function applyPendingMigrations(db, options = {}) {
60
- const targetVersion = options.targetVersion ?? 165;
60
+ const targetVersion = options.targetVersion ?? 173;
61
61
  let currentVersion = readSchemaVersion(db);
62
62
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
63
63
  if (currentVersion >= targetVersion) return currentVersion;
@@ -94,7 +94,7 @@ function applyPendingMigrations(db, options = {}) {
94
94
  }
95
95
  /** Inspect schema version without mutating the database. */
96
96
  function inspectSchemaMigrationStatus(db, options = {}) {
97
- const appVersion = options.targetVersion ?? 165;
97
+ const appVersion = options.targetVersion ?? 173;
98
98
  const dbVersion = readSchemaVersion(db);
99
99
  if (dbVersion > appVersion) return {
100
100
  dbVersion,
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
19
19
  export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
20
20
 
21
21
  /** Latest schema version this release supports (increment when adding migrations). */
22
- export const XOPC_DB_SCHEMA_VERSION = 165;
22
+ export const XOPC_DB_SCHEMA_VERSION = 173;
23
23
 
24
24
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
25
25
 
@@ -32,7 +32,7 @@ function ensureXopcDatabaseSchema(db, options = {}) {
32
32
  currentVersion = 11;
33
33
  }
34
34
  applyPendingMigrations(db, {
35
- targetVersion: 165,
35
+ targetVersion: 173,
36
36
  databasePath: options.databasePath
37
37
  });
38
38
  }
@@ -1,7 +1,7 @@
1
1
  import { isXopcDatabaseOpen } from "../storage/sqlite/connection.js";
2
2
  import "../storage/sqlite/index.js";
3
- import { getExecutionEnvironmentForSession } from "../execution-environments/subject.js";
4
3
  import { TaskConversationRepository } from "./task-conversation-repository.js";
4
+ import { getExecutionEnvironmentForSession } from "../execution-environments/subject.js";
5
5
  //#region src/tasks/execution-context.ts
6
6
  const ORIGINS = new Set([
7
7
  "chat",
@@ -4,10 +4,10 @@ import { listConnectorApprovals } from "../storage/sqlite/connector-repository.j
4
4
  import "../storage/sqlite/index.js";
5
5
  import "../automations/domain/defaults.js";
6
6
  import "../automations/index.js";
7
- import { listGatewayAgents } from "../gateway/agents-admin.js";
8
7
  import { TaskRepository } from "./task-repository.js";
9
8
  import { TaskReadModelProjector } from "./task-read-model-projector.js";
10
9
  import { AttentionGovernor } from "./attention-governor.js";
10
+ import { listGatewayAgents } from "../gateway/agents-admin.js";
11
11
  //#region src/tasks/home-query-service.ts
12
12
  function toHomeWorkflowRun(run) {
13
13
  return {
@@ -1,19 +1,19 @@
1
1
  import { enqueueTaskAttentionRequiredEvent, enqueueTaskChanged, enqueueTaskChangedEvent } from "./task-change-events.js";
2
2
  import { TaskRunRepository } from "./task-run-repository.js";
3
- import { TaskContextRepository } from "./task-context-repository.js";
4
3
  import { TaskRepository } from "./task-repository.js";
4
+ import { TaskConversationConflictError, TaskConversationRepository } from "./task-conversation-repository.js";
5
5
  import { TaskReadModelProjector } from "./task-read-model-projector.js";
6
+ import { TaskContextRepository } from "./task-context-repository.js";
6
7
  import { TaskDependencyError, TaskDependencyService } from "./task-dependency-service.js";
7
8
  import { TaskApplicationService } from "./task-application-service.js";
8
9
  import { ProjectMonitoringService, decideProactiveDisposition, isInQuietHours, nextQuietHoursEnd, proactiveDispositionReason } from "./project-monitoring-service.js";
9
- import { TaskConversationConflictError, TaskConversationRepository } from "./task-conversation-repository.js";
10
- import { assembleTaskContext, buildTaskExecutionDirective, getTaskContextManifest, getTaskExecutionBrief } from "./task-context-assembler.js";
11
10
  import { resolveExecutionContext } from "./execution-context.js";
12
11
  import { AttentionGovernor } from "./attention-governor.js";
13
12
  import { HomeQueryService, buildHomeWorkbench, decisionFromTask } from "./home-query-service.js";
14
13
  import { TaskWorkflowCoordinator } from "./task-workflow-coordinator.js";
15
14
  import { defineTaskContract } from "./task-contract-definition.js";
16
15
  import { ModelTaskContractPlanner, parseTaskContractResponse } from "./task-contract-planner.js";
16
+ import { assembleTaskContext, buildTaskExecutionDirective, getTaskContextManifest, getTaskExecutionBrief } from "./task-context-assembler.js";
17
17
  import { TaskRunCoordinator } from "./task-run-coordinator.js";
18
18
  import { ProjectOperatingViewService, summarizeProjectOperatingView } from "./project-operating-view-service.js";
19
19
  import { TaskValueMetricsService } from "./task-value-metrics-service.js";
@@ -2,9 +2,9 @@ import { getSqliteDatabase, runSqliteWriteTransaction } from "../storage/sqlite/
2
2
  import { TaskExecutorSelectionSchema, verifiedTaskCriteria } from "../../packages/gateway-contract/src/tasks.js";
3
3
  import { enqueueTaskAttentionRequiredEvent, enqueueTaskChangedEvent } from "./task-change-events.js";
4
4
  import { TaskRunRepository } from "./task-run-repository.js";
5
- import { TaskContextRepository } from "./task-context-repository.js";
6
5
  import { TaskRepository } from "./task-repository.js";
7
6
  import { TaskReadModelProjector } from "./task-read-model-projector.js";
7
+ import { TaskContextRepository } from "./task-context-repository.js";
8
8
  import { TaskDependencyService } from "./task-dependency-service.js";
9
9
  import { createHash, randomUUID } from "node:crypto";
10
10
  //#region src/tasks/task-application-service.ts
@@ -2,9 +2,9 @@ import { isXopcDatabaseOpen } from "../storage/sqlite/connection.js";
2
2
  import { verifiedTaskCriteria } from "../../packages/gateway-contract/src/tasks.js";
3
3
  import { TaskRunRepository } from "./task-run-repository.js";
4
4
  import "../storage/sqlite/index.js";
5
- import { TaskContextRepository } from "./task-context-repository.js";
6
5
  import { TaskRepository } from "./task-repository.js";
7
6
  import { TaskConversationRepository } from "./task-conversation-repository.js";
7
+ import { TaskContextRepository } from "./task-context-repository.js";
8
8
  //#region src/tasks/task-context-assembler.ts
9
9
  const STANDARD = {
10
10
  profile: "standard",
@@ -3,9 +3,9 @@ import { init_logger } from "../utils/logger.js";
3
3
  import { TaskRunRepository } from "./task-run-repository.js";
4
4
  import { init_agent_scope, listAgentEntries, normalizeAgentId } from "../agent/agent-scope.js";
5
5
  import { buildSessionKey, init_session_key, sanitizeSegment } from "../routing/session-key.js";
6
- import { TaskContextRepository } from "./task-context-repository.js";
7
6
  import { TaskRepository } from "./task-repository.js";
8
7
  import { TaskConversationRepository } from "./task-conversation-repository.js";
8
+ import { TaskContextRepository } from "./task-context-repository.js";
9
9
  //#region src/tasks/task-handoff-service.ts
10
10
  init_agent_scope();
11
11
  init_session_key();
@@ -35,6 +35,7 @@ export declare class TaskRepository {
35
35
  require(id: string): TaskAggregate;
36
36
  getByIdempotencyKey(key: string): TaskAggregate | undefined;
37
37
  list(input?: {
38
+ search?: string;
38
39
  phase?: TaskPhase;
39
40
  projectId?: string;
40
41
  limit?: number;
@@ -104,6 +104,10 @@ var TaskRepository = class {
104
104
  clauses.push("project_id = ?");
105
105
  params.push(input.projectId);
106
106
  }
107
+ if (input.search?.trim()) {
108
+ clauses.push("(instr(lower(title), lower(?)) > 0 OR instr(lower(coalesce(body, '')), lower(?)) > 0)");
109
+ params.push(input.search.trim(), input.search.trim());
110
+ }
107
111
  const limit = Math.max(1, Math.min(200, Math.floor(input.limit ?? 50)));
108
112
  params.push(limit);
109
113
  return getSqliteDatabase().prepare(`SELECT * FROM tasks${clauses.length ? ` WHERE ${clauses.join(" AND ")}` : ""}
@@ -1,6 +1,6 @@
1
1
  import { TaskRunRepository } from "./task-run-repository.js";
2
- import { TaskContextRepository } from "./task-context-repository.js";
3
2
  import { TaskRepository } from "./task-repository.js";
3
+ import { TaskContextRepository } from "./task-context-repository.js";
4
4
  import { TaskApplicationService } from "./task-application-service.js";
5
5
  //#region src/tasks/task-run-coordinator.ts
6
6
  var TaskRunCoordinator = class TaskRunCoordinator {
@@ -8,24 +8,24 @@ import "../../storage/sqlite/index.js";
8
8
  import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
9
9
  import { init_agent_scope, listAgentEntries, normalizeAgentId } from "../../agent/agent-scope.js";
10
10
  import { loadConfig, saveConfig } from "../../config/loader.js";
11
- import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
12
11
  import { effectiveWorkspacePathForSession } from "../../session/session-workspace.js";
13
- import { buildReviewContext, resolveGitRoot } from "../../review/review-git.js";
14
- import { MessageBus, MessageBusShutdownError } from "../../infra/bus/queue.js";
15
- import "../../infra/bus/index.js";
16
- import { getWorkspacePath } from "../../config/workspace-path-helpers.js";
17
- import "../../config/index.js";
18
- import { setTuiDefaultAgentConfig } from "../../commands/agents.config.js";
19
12
  import { ProjectService } from "../../projects/project-service.js";
20
13
  import { inferSuggestedProjectDefaultAgentId } from "../../projects/project-agent-suggestion.js";
21
14
  import "../../projects/index.js";
22
15
  import { buildSessionTimeline } from "../../session/transcript-outline.js";
23
16
  import { transcriptRowsToClientHistory } from "../../session/client-history.js";
17
+ import { createCreateShareTool, isShareToolAvailable } from "../../agent/tools/create-share-tool.js";
18
+ import { evictEmbeddedSessionRunner } from "../../agent/embedded/session-runner.js";
19
+ import { setTuiDefaultAgentConfig } from "../../commands/agents.config.js";
24
20
  import { SessionIndex } from "../../session/manager.js";
25
21
  import "../../session/index.js";
26
22
  import { parseModelRef } from "../../agent/models/selection.js";
27
- import { evictEmbeddedSessionRunner } from "../../agent/embedded/session-runner.js";
28
- import { createCreateShareTool, isShareToolAvailable } from "../../agent/tools/create-share-tool.js";
23
+ import { buildReviewContext, resolveGitRoot } from "../../review/review-git.js";
24
+ import { MessageBus, MessageBusShutdownError } from "../../infra/bus/queue.js";
25
+ import "../../infra/bus/index.js";
26
+ import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
27
+ import { getWorkspacePath } from "../../config/workspace-path-helpers.js";
28
+ import "../../config/index.js";
29
29
  import { buildWorkflowChildTools } from "../../agent/workflow/workflow-child-tools.js";
30
30
  import { WorkflowRunService } from "../../workflows/service/workflow-run-service.js";
31
31
  import { WorkflowSessionBridge } from "../../workflows/service/workflow-session-bridge.js";
@@ -1,9 +1,9 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
4
- import { gatewayCredentialAuthorization } from "../../gateway/credential.js";
5
3
  import { transcriptRowsToClientHistory } from "../../session/client-history.js";
6
4
  import { parseModelRef } from "../../agent/models/selection.js";
5
+ import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
6
+ import { gatewayCredentialAuthorization } from "../../gateway/credential.js";
7
7
  import { RealtimeClient } from "../../../packages/realtime-client/src/index.js";
8
8
  import { buildTuiTranscriptTree, transcriptTreeEntryIdToRowNumber } from "../tui-transcript-tree.js";
9
9
  import { computeTuiSessionStats } from "../tui-session-stats.js";
@@ -2,9 +2,9 @@ import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { init_paths, resolveExtensionsDir } from "../../config/paths.js";
4
4
  import { loadConfig } from "../../config/loader.js";
5
+ import { ExtensionLoader } from "../../extensions/loader.js";
5
6
  import { getWorkspacePath } from "../../config/workspace-path-helpers.js";
6
7
  import "../../config/index.js";
7
- import { ExtensionLoader } from "../../extensions/loader.js";
8
8
  //#region src/tui/extension-host/load-extensions.ts
9
9
  init_paths();
10
10
  init_logger();
@@ -5,8 +5,8 @@ import { parseAgentSessionKey } from "../routing/session-key-utils.js";
5
5
  import { init_agent_session_key } from "../routing/agent-session-key.js";
6
6
  import { resolveConfigPath } from "../config/paths.js";
7
7
  import { getProviderDisplayName, getSortedProviders, init_providers, providerSupportsApiKey, providerSupportsOAuth } from "../providers/index.js";
8
- import { normalizeVerboseLevel } from "../agent/transcript/thinking-types.js";
9
8
  import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
9
+ import { normalizeVerboseLevel } from "../agent/transcript/thinking-types.js";
10
10
  import "../config/index.js";
11
11
  import { computeContextUsagePercent, formatContextUsageLabel } from "./tui-context-usage.js";
12
12
  import { formatSessionPickerDescription } from "./tui-session-format.js";
@@ -6,16 +6,16 @@ import "../storage/sqlite/index.js";
6
6
  import { resolveConfigPath } from "../config/paths.js";
7
7
  import { loadConfig } from "../config/loader.js";
8
8
  import { init_providers, providerSupportsOAuth } from "../providers/index.js";
9
- import { normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel } from "../agent/transcript/thinking-types.js";
10
- import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
11
- import "../config/index.js";
12
- import { provenanceTracker } from "../extensions/security.js";
9
+ import { TaskRepository } from "../tasks/task-repository.js";
13
10
  import { ProjectService } from "../projects/project-service.js";
14
11
  import { isValidProjectAgentId, normalizeProjectAgentId } from "../projects/project-agent.js";
15
12
  import { inferSuggestedProjectDefaultAgentId } from "../projects/project-agent-suggestion.js";
16
13
  import "../projects/index.js";
17
- import { TaskRepository } from "../tasks/task-repository.js";
18
14
  import "../tasks/index.js";
15
+ import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
16
+ import { normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel } from "../agent/transcript/thinking-types.js";
17
+ import { provenanceTracker } from "../extensions/security.js";
18
+ import "../config/index.js";
19
19
  import { theme } from "./theme.js";
20
20
  import { getTuiKeybindingsPath } from "./tui-keybindings-file.js";
21
21
  import { formatKeyIds, formatXopcTuiHotkeys } from "./format-tui-hotkeys.js";
@@ -1,7 +1,7 @@
1
1
  import { parseAgentSessionKey } from "../routing/session-key-utils.js";
2
2
  import { init_agent_session_key } from "../routing/agent-session-key.js";
3
- import { listThinkingLevels, normalizeThinkLevel } from "../agent/transcript/thinking-types.js";
4
3
  import { getProjectTrustOptions, hasTrustRequiringProjectResources } from "../project-trust/trust-store.js";
4
+ import { listThinkingLevels, normalizeThinkLevel } from "../agent/transcript/thinking-types.js";
5
5
  import { searchableSelectListTheme, theme } from "./theme.js";
6
6
  import { formatKeyIds } from "./format-tui-hotkeys.js";
7
7
  import { formatSessionPickerDescription } from "./tui-session-format.js";
@@ -1,9 +1,9 @@
1
1
  import { resolveStateDir } from "../config/paths-state.js";
2
2
  import { init_paths, resolveBundledSkillsDir } from "../config/paths.js";
3
3
  import { loadConfig } from "../config/loader.js";
4
+ import { loadSkills } from "../agent/skills/index.js";
4
5
  import { getWorkspacePath } from "../config/workspace-path-helpers.js";
5
6
  import "../config/index.js";
6
- import { loadSkills } from "../agent/skills/index.js";
7
7
  //#region src/tui/tui-skills-autocomplete.ts
8
8
  init_paths();
9
9
  /** `@skill` autocomplete from workspace + global + bundled skill directories. */
@@ -1,13 +1,13 @@
1
1
  import { resolveStateDir } from "../config/paths-state.js";
2
2
  import { init_paths, resolveAgentProfileDir, resolveBundledSkillsDir } from "../config/paths.js";
3
- import { listConnectorInstances } from "../connectors/instances.js";
4
3
  import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
4
+ import { resolveBootstrapFilesSync } from "../agent/bootstrap/bootstrap-files.js";
5
+ import { createSkillConfigManager, isSkillEnabled } from "../agent/skills/config.js";
6
+ import { loadSkills } from "../agent/skills/index.js";
5
7
  import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
8
+ import { listConnectorInstances } from "../connectors/instances.js";
6
9
  import { getWorkspacePath } from "../config/workspace-path-helpers.js";
7
10
  import "../config/index.js";
8
- import { createSkillConfigManager, isSkillEnabled } from "../agent/skills/config.js";
9
- import { loadSkills } from "../agent/skills/index.js";
10
- import { resolveBootstrapFilesSync } from "../agent/bootstrap/bootstrap-files.js";
11
11
  import { basename } from "node:path";
12
12
  //#region src/tui/tui-startup-resources.ts
13
13
  init_paths();
@@ -6,11 +6,11 @@ import { init_paths } from "../config/paths.js";
6
6
  import { loadConfig } from "../config/loader.js";
7
7
  import { getAllModels, getAllProviders, getApiKey, init_providers, isProviderConfiguredSync } from "../providers/index.js";
8
8
  import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
9
- import "../config/index.js";
9
+ import { ProjectTrustStore, hasTrustRequiringProjectResources } from "../project-trust/trust-store.js";
10
10
  import { MAX_WEBCHAT_ATTACHMENT_FILE_BYTES } from "../gateway/chat-limits.js";
11
11
  import { renderWorkflowFinalSummary, renderWorkflowPanel } from "../agent/workflow/snapshot.js";
12
- import { ProjectTrustStore, hasTrustRequiringProjectResources } from "../project-trust/trust-store.js";
13
12
  import { ensureStarterAgentsInitialized } from "../agent/starter-agents.js";
13
+ import "../config/index.js";
14
14
  import { isTerminalWorkflowRunStatus } from "../workflows/domain/run.js";
15
15
  import "../workflows/domain/index.js";
16
16
  import { runViewToSnapshot } from "../workflows/service/run-view-to-snapshot.js";
@@ -1,9 +1,9 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
3
  import { resolveGatewayEffectiveHost } from "../config/gateway-bind.js";
4
- import { resolveGatewayAuth } from "../gateway/auth.js";
5
4
  import { resolveOptionalTunnelRegistrationSecret, resolveTunnelBrokerUrl } from "./env.js";
6
5
  import { getTunnelService } from "./tunnel-service.js";
6
+ import { resolveGatewayAuth } from "../gateway/auth.js";
7
7
  import { requireTunnelGatewayToken } from "./auth-policy.js";
8
8
  import { hasValidTunnelConsent } from "./consent.js";
9
9
  import { resolveFrpSubdomainHost } from "./frp-subdomain-host.js";