@xopcai/xopc 0.0.313 → 0.0.315

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 (696) hide show
  1. package/dist/browser-ext/dist/assets/{auth-C3yV1y_l.js → auth-DKo-NMUY.js} +18 -1
  2. package/dist/browser-ext/dist/background.js +68 -2
  3. package/dist/browser-ext/dist/sidepanel.html +1 -1
  4. package/dist/browser-ext/dist/sidepanel.js +1 -1
  5. package/dist/browser-ext/manifest.json +1 -1
  6. package/dist/extensions/feishu/src/adapters/cli-login.js +3 -3
  7. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  8. package/dist/extensions/telegram/src/inbound-processor.js +1 -1
  9. package/dist/extensions/telegram/src/outbound-sender.js +1 -1
  10. package/dist/extensions/telegram/src/plugin.js +2 -2
  11. package/dist/extensions/telegram/xopc.extension.json +1 -1
  12. package/dist/extensions/weixin/src/api/api.js +2 -2
  13. package/dist/extensions/weixin/src/auth/accounts.js +12 -12
  14. package/dist/extensions/weixin/src/messaging/debug-mode.js +5 -5
  15. package/dist/extensions/weixin/src/messaging/inbound.js +11 -11
  16. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-C73s_EYF.js → agent-avatar-dicebear-BbFOF2SH.js} +1 -1
  17. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D9T-QGmd.js +1 -0
  18. package/dist/gateway/static/root/assets/agents-Ds5sQcPd.js +1 -0
  19. package/dist/gateway/static/root/assets/{api-Com7kQuw.js → api-BzloAiIG.js} +1 -1
  20. package/dist/gateway/static/root/assets/{app-link-CKueEVbT.js → app-link-nL8iPwEr.js} +1 -1
  21. package/dist/gateway/static/root/assets/{app-management-settings-panel-DSo_SV6G.js → app-management-settings-panel-BpUHskXq.js} +1 -1
  22. package/dist/gateway/static/root/assets/appearance-settings-CQd5Vo6f.js +1 -0
  23. package/dist/gateway/static/root/assets/apps-page-B7VIsfye.js +1 -0
  24. package/dist/gateway/static/root/assets/{archive-plugin-BWueu3Qt.js → archive-plugin-BM4O6WfL.js} +1 -1
  25. package/dist/gateway/static/root/assets/{attachment-load-DYV25sAC.js → attachment-load-Cdn9MYmI.js} +1 -1
  26. package/dist/gateway/static/root/assets/{automations-page-Du8AkHrH.js → automations-page-DnRx-Ra4.js} +1 -1
  27. package/dist/gateway/static/root/assets/automations-workspace-B5s10G5F.js +7 -0
  28. package/dist/gateway/static/root/assets/{binary-plugins-rahoUE_-.js → binary-plugins-dkhUf4bm.js} +1 -1
  29. package/dist/gateway/static/root/assets/{block-editor-CVbiuQ90.js → block-editor-BTzqEuAy.js} +29 -29
  30. package/dist/gateway/static/root/assets/{browser-automation-inputs-CAC4w9KM.js → browser-automation-inputs-Bowij-nJ.js} +1 -1
  31. package/dist/gateway/static/root/assets/{browser-automations-page-B3-fdrAr.js → browser-automations-page-CQ7SYTQj.js} +2 -2
  32. package/dist/gateway/static/root/assets/browser-settings-page-vqLoPOOg.js +3 -0
  33. package/dist/gateway/static/root/assets/capabilities-D0S3DuAD.js +1 -0
  34. package/dist/gateway/static/root/assets/capabilities-settings-panel-DI68WGYd.js +8 -0
  35. package/dist/gateway/static/root/assets/channels-settings-Cimssy-S.js +1 -0
  36. package/dist/gateway/static/root/assets/{chat-terminal-dock-98GzKJ0K.js → chat-terminal-dock-DzgFHd6l.js} +2 -2
  37. package/dist/gateway/static/root/assets/{computer-settings-page-CB3mySQb.js → computer-settings-page-380_vIqO.js} +1 -1
  38. package/dist/gateway/static/root/assets/{connector-service-page-ZlbIXdey.js → connector-service-page-DILFakXb.js} +1 -1
  39. package/dist/gateway/static/root/assets/connectors-page-COmFp9HC.js +2 -0
  40. package/dist/gateway/static/root/assets/conversation-identity-Cw0n9uzK.js +1 -0
  41. package/dist/gateway/static/root/assets/{date-picker-WW3fY-ng.js → date-picker-CRVun-T5.js} +1 -1
  42. package/dist/gateway/static/root/assets/{dependency-picker-D1QgzM_s.js → dependency-picker-BoWqt5yU.js} +1 -1
  43. package/dist/gateway/static/root/assets/{desktop-pet-D0MtbTwu.js → desktop-pet-DPlkBjft.js} +1 -1
  44. package/dist/gateway/static/root/assets/desktop-pet-settings-D7FgfX_K.js +1 -0
  45. package/dist/gateway/static/root/assets/device-pairing-wizard-BP6yxut8.js +1 -0
  46. package/dist/gateway/static/root/assets/{extension-debug-page-BOtWAAGM.js → extension-debug-page-CT_QkSN_.js} +1 -1
  47. package/dist/gateway/static/root/assets/{extension-page-FULvawj8.js → extension-page-BF1NdcKP.js} +1 -1
  48. package/dist/gateway/static/root/assets/{extension-settings-page-Dzh6lE26.js → extension-settings-page-CKQVZ3Xc.js} +1 -1
  49. package/dist/gateway/static/root/assets/files-BK6enEvD.js +1 -0
  50. package/dist/gateway/static/root/assets/{gateway-config-swr-D7SG_ECs.js → gateway-config-swr-BPsZPoAT.js} +1 -1
  51. package/dist/gateway/static/root/assets/gateway-settings-3bIy7XMr.js +1 -0
  52. package/dist/gateway/static/root/assets/{gateway-startup-retry-CrHz00-9.js → gateway-startup-retry-cG6EqUJw.js} +1 -1
  53. package/dist/gateway/static/root/assets/home-page-DFNDLFgv.js +1 -0
  54. package/dist/gateway/static/root/assets/{image-generation-api-DGiHzeLb.js → image-generation-api-DI_QutIx.js} +1 -1
  55. package/dist/gateway/static/root/assets/{imports-page-DiJrgu9D.js → imports-page-BUG6G72F.js} +1 -1
  56. package/dist/gateway/static/root/assets/index-BCi8nfxs.js +89 -0
  57. package/dist/gateway/static/root/assets/index-DWgd1VK2.css +1 -0
  58. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DZ60sucF.js → keyboard-shortcuts-settings-qnG-4FJs.js} +1 -1
  59. package/dist/gateway/static/root/assets/local-app-workbench-page-B3iJWhjN.js +2 -0
  60. package/dist/gateway/static/root/assets/{local-apps-page-Cx2YuI8E.js → local-apps-page-BpEGeURS.js} +1 -1
  61. package/dist/gateway/static/root/assets/{locale-store-vZTDIqJB.js → locale-store-BlgpZORR.js} +1 -1
  62. package/dist/gateway/static/root/assets/logs-page-0QPGj-5c.js +2 -0
  63. package/dist/gateway/static/root/assets/management-settings-Sl0wwidS.js +1 -0
  64. package/dist/gateway/static/root/assets/{markdown-view-DJfzcZCW.js → markdown-view-BzjjpL2H.js} +1 -1
  65. package/dist/gateway/static/root/assets/{media-plugins-COpQGcN3.js → media-plugins-Bzkdhotn.js} +1 -1
  66. package/dist/gateway/static/root/assets/messages-2GhUD7SC.js +3 -0
  67. package/dist/gateway/static/root/assets/note-detail-panel-BXtD71j1.js +5 -0
  68. package/dist/gateway/static/root/assets/notes-page-DNY4vW-u.js +8 -0
  69. package/dist/gateway/static/root/assets/page-context-capture-button-CFt4hXQ6.js +1 -0
  70. package/dist/gateway/static/root/assets/{page-tabs-nARdLZcP.js → page-tabs-Dz_x22MQ.js} +1 -1
  71. package/dist/gateway/static/root/assets/{preview-open-alternatives-BEJg3fTq.js → preview-open-alternatives-C1mkgFAl.js} +1 -1
  72. package/dist/gateway/static/root/assets/product-delivery-chCjIpvu.js +1 -0
  73. package/dist/gateway/static/root/assets/{product-open-page-CR4Lehku.js → product-open-page-DHZgzSDV.js} +1 -1
  74. package/dist/gateway/static/root/assets/project-detail-page-D3NhZ7ZZ.js +1 -0
  75. package/dist/gateway/static/root/assets/projects-page-CEr8DX9I.js +1 -0
  76. package/dist/gateway/static/root/assets/{registry-api-CF-nJ5MG.js → registry-api-DMW2apOO.js} +1 -1
  77. package/dist/gateway/static/root/assets/remote-access-hub-Db-B-Mf3.js +1 -0
  78. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-DEJi0BLL.js +5 -0
  79. package/dist/gateway/static/root/assets/scenes-page-BUUX-PnI.js +2 -0
  80. package/dist/gateway/static/root/assets/{schema-form-DOsDKbWU.js → schema-form-RVltVpuG.js} +1 -1
  81. package/dist/gateway/static/root/assets/schemas-88fK3zzl.js +64 -0
  82. package/dist/gateway/static/root/assets/sessions-page-Rm4H2okS.js +1 -0
  83. package/dist/gateway/static/root/assets/settings-advanced-gate-VxPItcOG.js +1 -0
  84. package/dist/gateway/static/root/assets/{settings-form-section-kIV5M-9G.js → settings-form-section-BkBO7woF.js} +1 -1
  85. package/dist/gateway/static/root/assets/{settings-page-layout-B39PogyD.js → settings-page-layout-lLvHc-zF.js} +1 -1
  86. package/dist/gateway/static/root/assets/{settings-page-C2TS9mvq.js → settings-page-zl0XY203.js} +1 -1
  87. package/dist/gateway/static/root/assets/setup-status-panel-Difrpr4T.js +1 -0
  88. package/dist/gateway/static/root/assets/{share-preview-page-CMbgRZ7w.js → share-preview-page-NC4Gj867.js} +1 -1
  89. package/dist/gateway/static/root/assets/shares-settings-DPLvEcB-.js +1 -0
  90. package/dist/gateway/static/root/assets/skill-reload-api-CKdLCf_-.js +1 -0
  91. package/dist/gateway/static/root/assets/{skills-page-DV4FX1ev.js → skills-page-CzekvBNQ.js} +1 -1
  92. package/dist/gateway/static/root/assets/{skills-page.utils-C-2lmZHk.js → skills-page.utils-BLeiN245.js} +1 -1
  93. package/dist/gateway/static/root/assets/{system-settings-panel-CQ1Z6i28.js → system-settings-panel-Bp75s9nl.js} +1 -1
  94. package/dist/gateway/static/root/assets/task-detail-page-Bh8H4FYR.js +1 -0
  95. package/dist/gateway/static/root/assets/tasks-CDR_RVbQ.js +1 -0
  96. package/dist/gateway/static/root/assets/{tunnel-api-tn6H0D44.js → tunnel-api-BDiaC6an.js} +1 -1
  97. package/dist/gateway/static/root/assets/turn-outcome-D0SnyZ3Z.js +1 -0
  98. package/dist/gateway/static/root/assets/{use-autosave-CkEM9tXu.js → use-autosave-C_ntK_Zu.js} +1 -1
  99. package/dist/gateway/static/root/assets/user-model-page-C7gFCGAV.js +2 -0
  100. package/dist/gateway/static/root/assets/{voice-api-key-field-d0Fawetf.js → voice-api-key-field-D4cfuMp1.js} +1 -1
  101. package/dist/gateway/static/root/assets/{voice-config-api-D_8zU7Li.js → voice-config-api-Cjvd6maH.js} +1 -1
  102. package/dist/gateway/static/root/assets/{work-discovery-overlay-C5FFSieF.js → work-discovery-overlay-Ce6ToB0O.js} +1 -1
  103. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-q5ammR4k.js → workflow-run-setup-panel-C80nrmKi.js} +2 -2
  104. package/dist/gateway/static/root/assets/workflows-page-CVQjo3RI.js +6 -0
  105. package/dist/gateway/static/root/index.html +16 -16
  106. package/dist/package.js +1 -1
  107. package/dist/packages/computer-control-contract/src/index.js +10 -1
  108. package/dist/packages/gateway-contract/src/app-context.js +55 -0
  109. package/dist/packages/gateway-contract/src/automations.js +16 -17
  110. package/dist/packages/gateway-contract/src/capabilities.js +1078 -0
  111. package/dist/packages/gateway-contract/src/extension-capabilities.js +26 -0
  112. package/dist/packages/gateway-contract/src/home.js +3 -3
  113. package/dist/packages/gateway-contract/src/index.js +8 -0
  114. package/dist/packages/gateway-contract/src/product-delivery.js +19 -4
  115. package/dist/packages/gateway-contract/src/scenes.js +199 -0
  116. package/dist/packages/gateway-contract/src/task-runs.js +8 -4
  117. package/dist/packages/gateway-contract/src/tasks.js +5 -4
  118. package/dist/packages/realtime-client/src/index.js +17 -4
  119. package/dist/src/agent/agent-manager.d.ts +1 -0
  120. package/dist/src/agent/agent-manager.js +19 -18
  121. package/dist/src/agent/agent-scope.js +2 -2
  122. package/dist/src/agent/background-review/run-background-review.js +4 -4
  123. package/dist/src/agent/child-agent-factory.d.ts +2 -0
  124. package/dist/src/agent/child-agent-factory.js +5 -0
  125. package/dist/src/agent/coding/repository-instructions.js +1 -1
  126. package/dist/src/agent/commands/approved-verification.d.ts +14 -0
  127. package/dist/src/agent/commands/approved-verification.js +48 -0
  128. package/dist/src/agent/context/coordinator.js +2 -2
  129. package/dist/src/agent/context/execution-context.js +4 -4
  130. package/dist/src/agent/context/execution-scope.js +4 -3
  131. package/dist/src/agent/context/project-context.js +5 -4
  132. package/dist/src/agent/data-acquisition/service.js +1 -1
  133. package/dist/src/agent/embedded/index.js +2 -2
  134. package/dist/src/agent/embedded/model-runtime.js +1 -1
  135. package/dist/src/agent/embedded/run-for-session.js +4 -4
  136. package/dist/src/agent/embedded/run-turn.js +4 -4
  137. package/dist/src/agent/embedded/session-tool-result-guard.js +3 -3
  138. package/dist/src/agent/embedded/tool-result-truncation.js +1 -1
  139. package/dist/src/agent/external-tools/cliProvider.js +126 -78
  140. package/dist/src/agent/external-tools/composio-provider.d.ts +1 -1
  141. package/dist/src/agent/external-tools/composio-provider.js +73 -15
  142. package/dist/src/agent/external-tools/endpoint-provider.js +14 -1
  143. package/dist/src/agent/external-tools/gateway-tools.js +1 -1
  144. package/dist/src/agent/external-tools/mcp-provider.js +2 -2
  145. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  146. package/dist/src/agent/image/generation/providers/dashscope.js +1 -1
  147. package/dist/src/agent/image/generation/providers/fal.js +1 -1
  148. package/dist/src/agent/image/generation/providers/google.js +1 -1
  149. package/dist/src/agent/image/generation/runtime.js +1 -1
  150. package/dist/src/agent/image/index.js +1 -1
  151. package/dist/src/agent/image/load-image-media.js +1 -1
  152. package/dist/src/agent/image/tool-model-config.js +1 -1
  153. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  154. package/dist/src/agent/inbound/inbound-loop.js +2 -2
  155. package/dist/src/agent/inbound/turn-dispatcher.d.ts +2 -0
  156. package/dist/src/agent/inbound/turn-dispatcher.js +2 -1
  157. package/dist/src/agent/index.js +1 -1
  158. package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +39 -0
  159. package/dist/src/agent/mcp/bundle-mcp-gateway.js +33 -2
  160. package/dist/src/agent/mcp/bundle-mcp-runtime.js +12 -1
  161. package/dist/src/agent/mcp/bundle-mcp-types.d.ts +2 -1
  162. package/dist/src/agent/mcp/index.js +2 -2
  163. package/dist/src/agent/mcp/mcp-resource-id.d.ts +6 -0
  164. package/dist/src/agent/mcp/mcp-resource-id.js +19 -0
  165. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  166. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
  167. package/dist/src/agent/memory/compaction-chunks.d.ts +6 -1
  168. package/dist/src/agent/memory/compaction-chunks.js +16 -3
  169. package/dist/src/agent/memory/compaction-ledger.d.ts +3 -1
  170. package/dist/src/agent/memory/compaction-ledger.js +31 -18
  171. package/dist/src/agent/memory/compaction-request.d.ts +2 -0
  172. package/dist/src/agent/memory/compaction-request.js +6 -1
  173. package/dist/src/agent/memory/compaction.d.ts +19 -1
  174. package/dist/src/agent/memory/compaction.js +112 -30
  175. package/dist/src/agent/memory/context-recovery.js +1 -1
  176. package/dist/src/agent/memory/index.js +2 -2
  177. package/dist/src/agent/orchestration/agent-orchestrator.js +5 -5
  178. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  179. package/dist/src/agent/sandbox/exec-policy.js +1 -1
  180. package/dist/src/agent/service/direct-turn-helpers.js +5 -5
  181. package/dist/src/agent/service/process-direct-one-shot.js +1 -1
  182. package/dist/src/agent/service/process-direct-streaming.d.ts +3 -0
  183. package/dist/src/agent/service/process-direct-streaming.js +21 -12
  184. package/dist/src/agent/service/webchat-tts.js +1 -1
  185. package/dist/src/agent/service.js +22 -21
  186. package/dist/src/agent/service.types.d.ts +1 -0
  187. package/dist/src/agent/session/session-inspector.js +1 -1
  188. package/dist/src/agent/skills/config.js +2 -0
  189. package/dist/src/agent/skills/filesystem-watcher.js +1 -1
  190. package/dist/src/agent/skills/format-skills-prompt.js +14 -1
  191. package/dist/src/agent/skills/hub-lock.js +1 -1
  192. package/dist/src/agent/skills/hub-pull.js +3 -3
  193. package/dist/src/agent/skills/index.js +16 -8
  194. package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +1 -1
  195. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +1 -1
  196. package/dist/src/agent/skills/types.d.ts +1 -1
  197. package/dist/src/agent/source-context/app-context.d.ts +4 -0
  198. package/dist/src/agent/source-context/app-context.js +36 -0
  199. package/dist/src/agent/source-context/browser-tab.d.ts +3 -0
  200. package/dist/src/agent/source-context/browser-tab.js +29 -0
  201. package/dist/src/agent/source-context/file-context.d.ts +3 -0
  202. package/dist/src/agent/source-context/file-context.js +64 -0
  203. package/dist/src/agent/source-context/index.d.ts +4 -0
  204. package/dist/src/agent/source-context/index.js +5 -1
  205. package/dist/src/agent/source-context/injector.js +2 -1
  206. package/dist/src/agent/source-context/mcp-resource-context.d.ts +8 -0
  207. package/dist/src/agent/source-context/mcp-resource-context.js +30 -0
  208. package/dist/src/agent/source-context/session-context.d.ts +8 -0
  209. package/dist/src/agent/source-context/session-context.js +33 -0
  210. package/dist/src/agent/source-context/types.d.ts +12 -2
  211. package/dist/src/agent/source-context/types.js +3 -2
  212. package/dist/src/agent/tasks/task-judge-service.js +6 -5
  213. package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
  214. package/dist/src/agent/tool-manuals/computer.js +1 -1
  215. package/dist/src/agent/tools/automation-tool.d.ts +12 -1
  216. package/dist/src/agent/tools/automation-tool.js +106 -32
  217. package/dist/src/agent/tools/create-share-tool.js +4 -4
  218. package/dist/src/agent/tools/dataBatch.js +1 -1
  219. package/dist/src/agent/tools/delegate-tool.js +3 -3
  220. package/dist/src/agent/tools/delegation-parent-policy.js +1 -1
  221. package/dist/src/agent/tools/executor.js +1 -1
  222. package/dist/src/agent/tools/factory.d.ts +1 -0
  223. package/dist/src/agent/tools/factory.js +22 -17
  224. package/dist/src/agent/tools/fetch-text.js +1 -1
  225. package/dist/src/agent/tools/image-generate-tool.js +3 -3
  226. package/dist/src/agent/tools/index.js +6 -6
  227. package/dist/src/agent/tools/list-dir.js +1 -1
  228. package/dist/src/agent/tools/publish-artifacts.js +2 -2
  229. package/dist/src/agent/tools/read.js +2 -2
  230. package/dist/src/agent/tools/review-workspace.js +1 -1
  231. package/dist/src/agent/tools/scoped-workspace-tools.d.ts +8 -0
  232. package/dist/src/agent/tools/scoped-workspace-tools.js +81 -0
  233. package/dist/src/agent/tools/send-media.js +2 -2
  234. package/dist/src/agent/tools/skills-tools.js +1 -1
  235. package/dist/src/agent/tools/user-context-tool.js +1 -1
  236. package/dist/src/agent/tools/write.js +2 -2
  237. package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -3
  238. package/dist/src/agent/tools/xopc-use-tool.js +997 -908
  239. package/dist/src/agent/workflow/subagent-runner.js +2 -1
  240. package/dist/src/agent-config/index.js +2 -2
  241. package/dist/src/agent-config/schema.d.ts +5 -0
  242. package/dist/src/agent-config/schema.js +14 -10
  243. package/dist/src/ai-assist/text-assist.js +1 -1
  244. package/dist/src/auth/credentials.js +2 -2
  245. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  246. package/dist/src/auth/profiles/store.js +1 -1
  247. package/dist/src/auth/sync-provider-auth.js +2 -2
  248. package/dist/src/automations/api/routes.js +244 -164
  249. package/dist/src/automations/capabilities/drafts.d.ts +4 -0
  250. package/dist/src/automations/capabilities/drafts.js +95 -0
  251. package/dist/src/automations/capabilities/read.d.ts +4 -0
  252. package/dist/src/automations/capabilities/read.js +119 -0
  253. package/dist/src/automations/capabilities/write.d.ts +349 -0
  254. package/dist/src/automations/capabilities/write.js +172 -0
  255. package/dist/src/automations/domain/index.js +2 -2
  256. package/dist/src/automations/domain/validation.d.ts +77 -77
  257. package/dist/src/automations/domain/validation.js +9 -6
  258. package/dist/src/automations/draft/automation-draft-validator.d.ts +2 -2
  259. package/dist/src/automations/index.js +6 -6
  260. package/dist/src/automations/service/automation-service.d.ts +31 -0
  261. package/dist/src/automations/service/automation-service.js +213 -75
  262. package/dist/src/automations/service/index.js +2 -2
  263. package/dist/src/automations/storage/automation-repository.d.ts +2 -0
  264. package/dist/src/automations/storage/automation-repository.js +9 -1
  265. package/dist/src/automations/storage/automation-run-repository.d.ts +4 -1
  266. package/dist/src/automations/storage/automation-run-repository.js +16 -3
  267. package/dist/src/automations/storage/index.js +3 -3
  268. package/dist/src/browser/automations/schema.d.ts +1 -1
  269. package/dist/src/browser/automations/service.d.ts +1 -1
  270. package/dist/src/browser/observation/format.js +4 -0
  271. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  272. package/dist/src/capabilities/adapters/http.d.ts +4 -0
  273. package/dist/src/capabilities/adapters/http.js +44 -0
  274. package/dist/src/capabilities/readiness/from-config.js +11 -7
  275. package/dist/src/capabilities/runtime/app-context.d.ts +3 -0
  276. package/dist/src/capabilities/runtime/app-context.js +72 -0
  277. package/dist/src/capabilities/runtime/atomic-operations.d.ts +11 -0
  278. package/dist/src/capabilities/runtime/atomic-operations.js +34 -0
  279. package/dist/src/capabilities/runtime/dispatcher.d.ts +67 -0
  280. package/dist/src/capabilities/runtime/dispatcher.js +170 -0
  281. package/dist/src/capabilities/runtime/errors.d.ts +6 -0
  282. package/dist/src/capabilities/runtime/errors.js +11 -0
  283. package/dist/src/capabilities/runtime/external-operations.d.ts +16 -0
  284. package/dist/src/capabilities/runtime/external-operations.js +92 -0
  285. package/dist/src/capabilities/runtime/product.d.ts +12 -0
  286. package/dist/src/capabilities/runtime/product.js +69 -0
  287. package/dist/src/capabilities/runtime/settings.d.ts +3 -0
  288. package/dist/src/capabilities/runtime/settings.js +27 -0
  289. package/dist/src/capabilities/store-connector.js +1 -1
  290. package/dist/src/channels/attachments/voice-stt-webchat.js +2 -2
  291. package/dist/src/channels/index.js +2 -2
  292. package/dist/src/channels/pairing/allow-from-file.js +9 -9
  293. package/dist/src/channels/pairing/pairing-store.js +6 -6
  294. package/dist/src/chat-commands/agent-edit.js +1 -1
  295. package/dist/src/chat-commands/builtins/config.js +1 -1
  296. package/dist/src/chat-commands/builtins/review.js +1 -1
  297. package/dist/src/chat-commands/builtins/thinking.js +1 -1
  298. package/dist/src/chat-commands/builtins/tts.js +1 -1
  299. package/dist/src/chat-commands/builtins/understanding.js +1 -1
  300. package/dist/src/chat-commands/builtins/workflow.js +2 -2
  301. package/dist/src/chat-commands/context.js +2 -2
  302. package/dist/src/chat-commands/index.js +2 -2
  303. package/dist/src/cli/cli-log-level-preset.d.ts +2 -0
  304. package/dist/src/cli/cli-log-level-preset.js +4 -0
  305. package/dist/src/cli/command-catalog.js +4 -0
  306. package/dist/src/cli/command-loaders.js +1 -0
  307. package/dist/src/cli/command-manifest.js +4 -0
  308. package/dist/src/cli/commands/agent.js +7 -7
  309. package/dist/src/cli/commands/agents.js +1 -1
  310. package/dist/src/cli/commands/config.js +1 -1
  311. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  312. package/dist/src/cli/commands/doctor/checks/provider-auth.js +3 -3
  313. package/dist/src/cli/commands/extension-dev.js +1 -1
  314. package/dist/src/cli/commands/extension.js +1 -1
  315. package/dist/src/cli/commands/gateway/shared.js +1 -1
  316. package/dist/src/cli/commands/gateway/token.js +1 -1
  317. package/dist/src/cli/commands/image.js +1 -1
  318. package/dist/src/cli/commands/init.js +1 -1
  319. package/dist/src/cli/commands/mcp.d.ts +1 -0
  320. package/dist/src/cli/commands/mcp.js +51 -0
  321. package/dist/src/cli/commands/models.js +1 -1
  322. package/dist/src/cli/commands/onboard.js +1 -1
  323. package/dist/src/cli/commands/project.js +2 -2
  324. package/dist/src/cli/commands/runtime.js +1 -1
  325. package/dist/src/cli/commands/skills.js +2 -2
  326. package/dist/src/cli/commands/tunnel.js +3 -3
  327. package/dist/src/cli/extension-cli-register.js +4 -4
  328. package/dist/src/cli/utils/gateway-client.js +1 -1
  329. package/dist/src/computer/broker.d.ts +0 -1
  330. package/dist/src/computer/broker.js +4 -6
  331. package/dist/src/computer/evaluation-harness.d.ts +45 -0
  332. package/dist/src/computer/evaluation-harness.js +108 -0
  333. package/dist/src/computer/model-adapter.d.ts +37 -2
  334. package/dist/src/computer/model-adapter.js +333 -42
  335. package/dist/src/computer/model-policy.d.ts +4 -1
  336. package/dist/src/computer/model-policy.js +11 -3
  337. package/dist/src/computer/release-gate.d.ts +22 -0
  338. package/dist/src/computer/release-gate.js +19 -0
  339. package/dist/src/computer/runtime.js +16 -12
  340. package/dist/src/computer/task-state.d.ts +1 -0
  341. package/dist/src/computer/task-state.js +1 -0
  342. package/dist/src/config/index.js +5 -5
  343. package/dist/src/config/loader.js +2 -2
  344. package/dist/src/config/models-json.d.ts +6 -0
  345. package/dist/src/config/models-json.js +3 -3
  346. package/dist/src/config/schema.d.ts +4 -0
  347. package/dist/src/config/schema.js +4 -10
  348. package/dist/src/connectors/cli/authorization.js +1 -1
  349. package/dist/src/connectors/cli/runtime.js +1 -1
  350. package/dist/src/connectors/composio-sessions.d.ts +4 -2
  351. package/dist/src/connectors/composio-sessions.js +11 -10
  352. package/dist/src/connectors/composio.js +11 -9
  353. package/dist/src/connectors/connected-source-understanding.js +2 -2
  354. package/dist/src/connectors/connection-recovery-service.js +5 -5
  355. package/dist/src/connectors/health.js +1 -1
  356. package/dist/src/discussions/action-tasks.js +2 -1
  357. package/dist/src/discussions/live-worker.js +1 -1
  358. package/dist/src/discussions/recording.js +1 -1
  359. package/dist/src/discussions/sealer.js +1 -1
  360. package/dist/src/execution-environments/local-worktree-manager.d.ts +1 -0
  361. package/dist/src/execution-environments/local-worktree-manager.js +13 -2
  362. package/dist/src/extensions/activation-context.js +3 -3
  363. package/dist/src/extensions/api.js +3 -3
  364. package/dist/src/extensions/bundled-extension-activation.js +1 -1
  365. package/dist/src/extensions/index.js +1 -1
  366. package/dist/src/extensions/loader.js +1 -1
  367. package/dist/src/extensions/lockfile.js +1 -1
  368. package/dist/src/extensions/normalize-manifest.js +6 -1
  369. package/dist/src/extensions/sdk/index.js +1 -1
  370. package/dist/src/extensions/sdk/media.js +1 -1
  371. package/dist/src/extensions/types/manifest.d.ts +3 -0
  372. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  373. package/dist/src/gateway/agents-admin.js +4 -4
  374. package/dist/src/gateway/chat-stream/mapper.js +3 -2
  375. package/dist/src/gateway/device-routes.js +2 -2
  376. package/dist/src/gateway/file-path-classifier.js +2 -2
  377. package/dist/src/gateway/global-defaults-admin.js +1 -1
  378. package/dist/src/gateway/hono/app.js +3 -3
  379. package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -0
  380. package/dist/src/gateway/hono/lib/config-payload.js +3 -3
  381. package/dist/src/gateway/hono/middleware/scopes.js +1 -1
  382. package/dist/src/gateway/hono/routes/agent-stream.js +2 -2
  383. package/dist/src/gateway/hono/routes/agents.js +1 -1
  384. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +6 -3
  385. package/dist/src/gateway/hono/routes/browser.js +33 -1
  386. package/dist/src/gateway/hono/routes/capability-operations.d.ts +3 -0
  387. package/dist/src/gateway/hono/routes/capability-operations.js +52 -0
  388. package/dist/src/gateway/hono/routes/commands-skills.js +3 -3
  389. package/dist/src/gateway/hono/routes/config-patch/gateway.js +1 -1
  390. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  391. package/dist/src/gateway/hono/routes/devices.js +0 -16
  392. package/dist/src/gateway/hono/routes/endpoint-tools.js +86 -30
  393. package/dist/src/gateway/hono/routes/home.js +1 -1
  394. package/dist/src/gateway/hono/routes/imports.js +1 -1
  395. package/dist/src/gateway/hono/routes/lazy-bundles.js +16 -0
  396. package/dist/src/gateway/hono/routes/local-app-capabilities.d.ts +4 -0
  397. package/dist/src/gateway/hono/routes/local-app-capabilities.js +41 -0
  398. package/dist/src/gateway/hono/routes/local-apps.js +41 -9
  399. package/dist/src/gateway/hono/routes/mcp.js +33 -2
  400. package/dist/src/gateway/hono/routes/media.js +1 -1
  401. package/dist/src/gateway/hono/routes/models.js +7 -7
  402. package/dist/src/gateway/hono/routes/notes.js +216 -147
  403. package/dist/src/gateway/hono/routes/projects.js +219 -376
  404. package/dist/src/gateway/hono/routes/scenes.js +188 -75
  405. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +64 -16
  406. package/dist/src/gateway/hono/routes/session-input-handler.js +49 -7
  407. package/dist/src/gateway/hono/routes/sessions.js +18 -1
  408. package/dist/src/gateway/hono/routes/shares.js +3 -3
  409. package/dist/src/gateway/hono/routes/site-shares.js +1 -1
  410. package/dist/src/gateway/hono/routes/tasks.js +182 -326
  411. package/dist/src/gateway/hono/routes/user-model-refresh.js +1 -1
  412. package/dist/src/gateway/hono/routes/user-model.js +4 -4
  413. package/dist/src/gateway/hono/routes/voice.js +7 -7
  414. package/dist/src/gateway/hono/routes/workflows.js +3 -3
  415. package/dist/src/gateway/lock.js +11 -11
  416. package/dist/src/gateway/media-access.js +3 -2
  417. package/dist/src/gateway/mobile-privacy.js +2 -2
  418. package/dist/src/gateway/ports.js +6 -6
  419. package/dist/src/gateway/scenes/host.js +14 -3
  420. package/dist/src/gateway/scenes/mailContext.js +1 -1
  421. package/dist/src/gateway/scenes/slackThreadSource.d.ts +41 -0
  422. package/dist/src/gateway/scenes/slackThreadSource.js +168 -0
  423. package/dist/src/gateway/security/gateway-scopes.d.ts +1 -1
  424. package/dist/src/gateway/security/gateway-scopes.js +5 -0
  425. package/dist/src/gateway/server.js +1 -1
  426. package/dist/src/gateway/service/agent-runner.d.ts +1 -1
  427. package/dist/src/gateway/service/agent-runner.js +2 -2
  428. package/dist/src/gateway/service/app-context-access.d.ts +7 -0
  429. package/dist/src/gateway/service/app-context-access.js +70 -0
  430. package/dist/src/gateway/service/config-coordinator.js +4 -4
  431. package/dist/src/gateway/service/marketplace-service.js +3 -3
  432. package/dist/src/gateway/service/run-gateway-agent.js +13 -4
  433. package/dist/src/gateway/service/session-input-coordinator.d.ts +1 -1
  434. package/dist/src/gateway/service/session-input-coordinator.js +56 -17
  435. package/dist/src/gateway/service/sessions-api.d.ts +1 -0
  436. package/dist/src/gateway/service/sessions-api.js +4 -1
  437. package/dist/src/gateway/service/task-conversation-query-service.d.ts +3 -1
  438. package/dist/src/gateway/service/task-conversation-query-service.js +32 -3
  439. package/dist/src/gateway/service.d.ts +3 -0
  440. package/dist/src/gateway/service.js +130 -39
  441. package/dist/src/gateway/session-context-summary.js +3 -2
  442. package/dist/src/gateway/workspace-editor-path.js +2 -2
  443. package/dist/src/gateway/workspace-file-search.js +25 -12
  444. package/dist/src/heartbeat/index.js +1 -1
  445. package/dist/src/i18n/share-tool-bundle.js +2 -2
  446. package/dist/src/imports/runtime.js +1 -1
  447. package/dist/src/{tasks/task-outbox-dispatcher.d.ts → infra/domain-outbox-dispatcher.d.ts} +2 -2
  448. package/dist/src/{tasks/task-outbox-dispatcher.js → infra/domain-outbox-dispatcher.js} +10 -9
  449. package/dist/src/infra/gateway-processes.js +2 -2
  450. package/dist/src/infra/operation-context.d.ts +2 -0
  451. package/dist/src/infra/operation-context.js +16 -0
  452. package/dist/src/infra/path-env.js +3 -3
  453. package/dist/src/infra/update-global.js +10 -10
  454. package/dist/src/local-apps/capabilities/contracts.d.ts +2 -0
  455. package/dist/src/local-apps/capabilities/contracts.js +32 -0
  456. package/dist/src/local-apps/capabilities/read.d.ts +3 -0
  457. package/dist/src/local-apps/capabilities/read.js +48 -0
  458. package/dist/src/local-apps/capabilities/runtime.d.ts +16 -0
  459. package/dist/src/local-apps/capabilities/runtime.js +66 -0
  460. package/dist/src/local-apps/capabilities/write.d.ts +3 -0
  461. package/dist/src/local-apps/capabilities/write.js +35 -0
  462. package/dist/src/local-apps/release-lock.d.ts +2 -0
  463. package/dist/src/local-apps/release-lock.js +20 -0
  464. package/dist/src/local-apps/runtime-entry.d.ts +0 -2
  465. package/dist/src/local-apps/runtime-entry.js +1 -14
  466. package/dist/src/local-apps/scaffold.js +4 -1
  467. package/dist/src/local-apps/service.d.ts +24 -1
  468. package/dist/src/local-apps/service.js +187 -44
  469. package/dist/src/local-apps/store.js +0 -2
  470. package/dist/src/mcp/capability-server.d.ts +4 -0
  471. package/dist/src/mcp/capability-server.js +96 -0
  472. package/dist/src/mcp/channel-bridge.js +1 -1
  473. package/dist/src/mcp/gateway-http-client.d.ts +7 -0
  474. package/dist/src/mcp/gateway-http-client.js +27 -5
  475. package/dist/src/media-understanding/openai-compatible-audio.js +1 -1
  476. package/dist/src/notes/agent-context.js +4 -4
  477. package/dist/src/notes/capabilities/read.d.ts +3 -0
  478. package/dist/src/notes/capabilities/read.js +96 -0
  479. package/dist/src/notes/capabilities/write.d.ts +7 -0
  480. package/dist/src/notes/capabilities/write.js +152 -0
  481. package/dist/src/notes/index.js +1 -1
  482. package/dist/src/notes/service.d.ts +12 -4
  483. package/dist/src/notes/service.js +188 -175
  484. package/dist/src/notes/store.d.ts +14 -9
  485. package/dist/src/notes/store.js +81 -21
  486. package/dist/src/notifications/service.d.ts +1 -0
  487. package/dist/src/notifications/service.js +5 -0
  488. package/dist/src/projects/capabilities/read.d.ts +3 -0
  489. package/dist/src/projects/capabilities/read.js +81 -0
  490. package/dist/src/projects/capabilities/write.d.ts +9 -0
  491. package/dist/src/projects/capabilities/write.js +260 -0
  492. package/dist/src/projects/index.js +2 -2
  493. package/dist/src/projects/project-change-events.d.ts +2 -0
  494. package/dist/src/projects/project-change-events.js +18 -0
  495. package/dist/src/projects/project-service.d.ts +11 -0
  496. package/dist/src/projects/project-service.js +121 -42
  497. package/dist/src/projects/project-skill-service.js +2 -2
  498. package/dist/src/projects/project-store.js +12 -2
  499. package/dist/src/projects/project-workspace-creation.d.ts +3 -0
  500. package/dist/src/projects/project-workspace-creation.js +45 -0
  501. package/dist/src/projects/workspace-project.js +6 -0
  502. package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
  503. package/dist/src/providers/index.js +2 -2
  504. package/dist/src/providers/model-catalog-persistence.js +1 -1
  505. package/dist/src/providers/model-catalog-types.d.ts +2 -1
  506. package/dist/src/providers/model-reference-auditor.js +5 -5
  507. package/dist/src/providers/model-registry.js +1 -1
  508. package/dist/src/providers/model-supplements.js +13 -3
  509. package/dist/src/providers/presentation.js +3 -3
  510. package/dist/src/providers/register-runtime-providers.js +1 -1
  511. package/dist/src/providers/xopc-cloud-model-source.js +4 -2
  512. package/dist/src/realtime/runtime.js +4 -0
  513. package/dist/src/remote-access/exposure-manager.js +1 -1
  514. package/dist/src/scenes/capabilities/read.d.ts +3 -0
  515. package/dist/src/scenes/capabilities/read.js +187 -0
  516. package/dist/src/scenes/capabilities/write.d.ts +3 -0
  517. package/dist/src/scenes/capabilities/write.js +151 -0
  518. package/dist/src/scenes/contracts.d.ts +2 -105
  519. package/dist/src/scenes/contracts.js +3 -88
  520. package/dist/src/scenes/execution.d.ts +1 -1
  521. package/dist/src/scenes/httpServices.d.ts +2 -0
  522. package/dist/src/scenes/inbox.d.ts +1 -0
  523. package/dist/src/scenes/inbox.js +7 -7
  524. package/dist/src/scenes/preferences.d.ts +3 -24
  525. package/dist/src/scenes/preferences.js +8 -30
  526. package/dist/src/scenes/repository.d.ts +1 -0
  527. package/dist/src/scenes/repository.js +7 -3
  528. package/dist/src/scenes/resultNotifications.js +2 -2
  529. package/dist/src/scenes/schedule.d.ts +1 -8
  530. package/dist/src/scenes/schedule.js +3 -15
  531. package/dist/src/scenes/service.d.ts +6 -0
  532. package/dist/src/scenes/service.js +29 -25
  533. package/dist/src/scenes/taskFollowUp/agentExecutor.d.ts +36 -0
  534. package/dist/src/scenes/taskFollowUp/agentExecutor.js +149 -0
  535. package/dist/src/scenes/taskFollowUp/branchInventory.d.ts +38 -0
  536. package/dist/src/scenes/taskFollowUp/branchInventory.js +70 -0
  537. package/dist/src/scenes/taskFollowUp/contracts.d.ts +91 -0
  538. package/dist/src/scenes/taskFollowUp/contracts.js +100 -0
  539. package/dist/src/scenes/taskFollowUp/resources.d.ts +19 -0
  540. package/dist/src/scenes/taskFollowUp/resources.js +97 -0
  541. package/dist/src/scenes/taskFollowUp/service.d.ts +810 -0
  542. package/dist/src/scenes/taskFollowUp/service.js +710 -0
  543. package/dist/src/scenes/taskFollowUp/workspaceFingerprint.d.ts +2 -0
  544. package/dist/src/scenes/taskFollowUp/workspaceFingerprint.js +46 -0
  545. package/dist/src/scenes/templates.d.ts +2 -2
  546. package/dist/src/scenes/templates.js +1 -1
  547. package/dist/src/session/client-history.d.ts +2 -1
  548. package/dist/src/session/client-history.js +3 -2
  549. package/dist/src/session/index.js +2 -2
  550. package/dist/src/session/session-find.d.ts +17 -0
  551. package/dist/src/session/session-find.js +56 -0
  552. package/dist/src/session/session-title.js +1 -1
  553. package/dist/src/session/store.d.ts +4 -0
  554. package/dist/src/session/store.js +46 -10
  555. package/dist/src/session/thinking-resolve.js +1 -1
  556. package/dist/src/share/note-share-revocation.d.ts +3 -0
  557. package/dist/src/share/note-share-revocation.js +26 -0
  558. package/dist/src/share/share-store.js +1 -1
  559. package/dist/src/share/share-thumbnail.js +1 -1
  560. package/dist/src/share/site-proxy.js +1 -1
  561. package/dist/src/share/site-share-store.js +1 -1
  562. package/dist/src/storage/sqlite/connection.js +9 -9
  563. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.d.ts +15 -1
  564. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +39 -6
  565. package/dist/src/storage/sqlite/index.d.ts +1 -1
  566. package/dist/src/storage/sqlite/index.js +2 -2
  567. package/dist/src/storage/sqlite/migrations/190_scene_development.sql +37 -0
  568. package/dist/src/storage/sqlite/migrations/191_scene_task_follow_up.sql +27 -0
  569. package/dist/src/storage/sqlite/migrations/192_capability_operations.sql +20 -0
  570. package/dist/src/storage/sqlite/migrations/193_note_file_cleanup.sql +8 -0
  571. package/dist/src/storage/sqlite/migrations/194_capability_external_outcomes.sql +11 -0
  572. package/dist/src/storage/sqlite/migrations/195_automation_deleted_revisions.sql +4 -0
  573. package/dist/src/storage/sqlite/migrations/196_automation_run_requests.sql +23 -0
  574. package/dist/src/storage/sqlite/migrations/197_note_deletion_cleanup.sql +8 -0
  575. package/dist/src/storage/sqlite/migrations/198_project_workspace_creation.sql +7 -0
  576. package/dist/src/storage/sqlite/migrations/199_scene_resource_events.sql +488 -0
  577. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  578. package/dist/src/storage/sqlite/migrations/runner.js +6 -3
  579. package/dist/src/storage/sqlite/schema.js +1 -1
  580. package/dist/src/storage/sqlite/transaction.d.ts +5 -0
  581. package/dist/src/storage/sqlite/transaction.js +34 -3
  582. package/dist/src/tasks/capabilities/management.d.ts +195 -0
  583. package/dist/src/tasks/capabilities/management.js +111 -0
  584. package/dist/src/tasks/capabilities/read.d.ts +2 -0
  585. package/dist/src/tasks/capabilities/read.js +141 -0
  586. package/dist/src/tasks/capabilities/relations.d.ts +204 -0
  587. package/dist/src/tasks/capabilities/relations.js +140 -0
  588. package/dist/src/tasks/capabilities/runs.d.ts +2 -0
  589. package/dist/src/tasks/capabilities/runs.js +89 -0
  590. package/dist/src/tasks/capabilities/write.d.ts +207 -0
  591. package/dist/src/tasks/capabilities/write.js +107 -0
  592. package/dist/src/tasks/execution-context.js +1 -1
  593. package/dist/src/tasks/home-query-service.js +5 -4
  594. package/dist/src/tasks/index.d.ts +0 -1
  595. package/dist/src/tasks/index.js +9 -9
  596. package/dist/src/tasks/project-operating-view-service.js +2 -1
  597. package/dist/src/tasks/task-application-service.d.ts +1 -0
  598. package/dist/src/tasks/task-application-service.js +4 -3
  599. package/dist/src/tasks/task-change-events.js +5 -3
  600. package/dist/src/tasks/task-context-assembler.js +3 -2
  601. package/dist/src/tasks/task-deletion-service.js +2 -1
  602. package/dist/src/tasks/task-dependency-service.js +2 -1
  603. package/dist/src/tasks/task-handoff-service.js +3 -2
  604. package/dist/src/tasks/task-read-model-projector.js +2 -1
  605. package/dist/src/tasks/task-repository.d.ts +12 -7
  606. package/dist/src/tasks/task-repository.js +175 -154
  607. package/dist/src/tasks/task-run-coordinator.js +2 -1
  608. package/dist/src/tasks/task-run-dispatcher.js +2 -1
  609. package/dist/src/tasks/task-run-repository.d.ts +1 -0
  610. package/dist/src/tasks/task-run-repository.js +29 -14
  611. package/dist/src/tasks/task-signal-service.js +2 -1
  612. package/dist/src/tui/backends/embedded-backend.js +10 -10
  613. package/dist/src/tui/backends/gateway-realtime-backend.js +2 -2
  614. package/dist/src/tui/extension-host/load-extensions.js +1 -1
  615. package/dist/src/tui/tui-command-formatters.js +1 -1
  616. package/dist/src/tui/tui-commands.js +6 -6
  617. package/dist/src/tui/tui-picker-overlay.js +1 -1
  618. package/dist/src/tui/tui-skills-autocomplete.js +1 -1
  619. package/dist/src/tui/tui-startup-resources.js +4 -4
  620. package/dist/src/tui/tui.js +3 -3
  621. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  622. package/dist/src/user-context/config.d.ts +13 -0
  623. package/dist/src/user-context/config.js +2 -0
  624. package/dist/src/voice/local/runtime-worker.js +1 -1
  625. package/dist/src/voice/platform-catalog.d.ts +1 -1
  626. package/dist/src/voice/realtime/memory-context.js +3 -3
  627. package/dist/src/voice/realtime/runtime.js +3 -3
  628. package/dist/src/voice/stt/index.js +2 -2
  629. package/dist/src/voice/stt/preflight.js +1 -1
  630. package/dist/src/voice/stt/providers/alibaba-transcription.js +1 -1
  631. package/dist/src/voice/stt/providers/local-transcription.js +1 -1
  632. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +1 -1
  633. package/dist/src/voice/stt/transcribe-core.js +1 -1
  634. package/dist/src/voice/tts/audio.js +1 -1
  635. package/dist/src/voice/tts/factory.js +1 -1
  636. package/dist/src/voice/tts/index.js +1 -1
  637. package/dist/src/voice/tts/payload.js +1 -1
  638. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +1 -1
  639. package/dist/src/work-discovery/incremental-repository.js +1 -1
  640. package/dist/src/work-discovery/index.js +1 -1
  641. package/dist/src/work-discovery/repository.d.ts +1 -1
  642. package/dist/src/work-discovery/repository.js +3 -2
  643. package/dist/src/work-discovery/service.d.ts +4 -0
  644. package/dist/src/work-discovery/service.js +40 -15
  645. package/dist/src/workflows/context/workflow-context.js +3 -2
  646. package/dist/src/workflows/service/workflow-run-service.js +7 -6
  647. package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
  648. package/package.json +8 -4
  649. package/skills/THIRD_PARTY_NOTICES.md +2 -2
  650. package/skills/documents/xlsx/SKILL.md +5 -0
  651. package/skills/engineering/build-xopc-local-app/SKILL.md +2 -0
  652. package/skills/tools/find-skills/SKILL.md +3 -0
  653. package/dist/gateway/static/root/assets/activity-store-CS_SAPwP.js +0 -1
  654. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-9w_YVThL.js +0 -1
  655. package/dist/gateway/static/root/assets/agents-Bspu1pT2.js +0 -1
  656. package/dist/gateway/static/root/assets/appearance-settings-Jgvx-RKL.js +0 -1
  657. package/dist/gateway/static/root/assets/apps-page-403o57-3.js +0 -1
  658. package/dist/gateway/static/root/assets/automations-workspace-Dpju5KT_.js +0 -7
  659. package/dist/gateway/static/root/assets/browser-settings-page-C0HJrpr1.js +0 -3
  660. package/dist/gateway/static/root/assets/capabilities-settings-panel-BanM86OX.js +0 -8
  661. package/dist/gateway/static/root/assets/channels-settings-Bhh0F9pO.js +0 -1
  662. package/dist/gateway/static/root/assets/connectors-page-BTqjm6eD.js +0 -2
  663. package/dist/gateway/static/root/assets/desktop-pet-settings-BI_sQTR_.js +0 -1
  664. package/dist/gateway/static/root/assets/device-pairing-wizard-BoPCEIm5.js +0 -1
  665. package/dist/gateway/static/root/assets/files-Be5viEFY.js +0 -1
  666. package/dist/gateway/static/root/assets/gateway-realtime-mpOw3R4d.js +0 -1
  667. package/dist/gateway/static/root/assets/gateway-realtime-store-Z-ErSgkD.js +0 -1
  668. package/dist/gateway/static/root/assets/gateway-settings-Bq82yXVh.js +0 -1
  669. package/dist/gateway/static/root/assets/home-page-BD1v6Uee.js +0 -1
  670. package/dist/gateway/static/root/assets/index-Ah5XDhOL.js +0 -79
  671. package/dist/gateway/static/root/assets/index-CV5b1pD1.css +0 -1
  672. package/dist/gateway/static/root/assets/local-app-workbench-page-BF8x3bgh.js +0 -2
  673. package/dist/gateway/static/root/assets/logs-page-B4vMUM7D.js +0 -2
  674. package/dist/gateway/static/root/assets/management-settings-Cg0UjJpy.js +0 -1
  675. package/dist/gateway/static/root/assets/messages-CRH2my19.js +0 -3
  676. package/dist/gateway/static/root/assets/note-detail-panel-CWVIGctd.js +0 -5
  677. package/dist/gateway/static/root/assets/notes-page-CcTzMI1K.js +0 -8
  678. package/dist/gateway/static/root/assets/product-delivery-CrAI8ZEa.js +0 -1
  679. package/dist/gateway/static/root/assets/project-detail-page-BNYoV9Ac.js +0 -1
  680. package/dist/gateway/static/root/assets/projects-page-CcKnYQqm.js +0 -1
  681. package/dist/gateway/static/root/assets/remote-access-hub-HIvwD5Xn.js +0 -1
  682. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-CFE2oX_l.js +0 -5
  683. package/dist/gateway/static/root/assets/scenes-page-BGKdg4uS.js +0 -1
  684. package/dist/gateway/static/root/assets/schemas-BaskVM5g.js +0 -64
  685. package/dist/gateway/static/root/assets/sessions-page-tn99saMj.js +0 -1
  686. package/dist/gateway/static/root/assets/settings-advanced-gate-Cx_uvwqz.js +0 -1
  687. package/dist/gateway/static/root/assets/setup-status-panel-1kYYg3BH.js +0 -1
  688. package/dist/gateway/static/root/assets/shares-settings-Du7BfwId.js +0 -1
  689. package/dist/gateway/static/root/assets/skill-reload-api-BMhhXxRZ.js +0 -1
  690. package/dist/gateway/static/root/assets/task-detail-page-vFn3xdlZ.js +0 -1
  691. package/dist/gateway/static/root/assets/theme-store-DdURyZ1M.js +0 -1
  692. package/dist/gateway/static/root/assets/user-model-page-uK9sxPUH.js +0 -2
  693. package/dist/gateway/static/root/assets/workflows-page-DIyd5AC9.js +0 -6
  694. package/skills/creative/algorithmic-art/SKILL.md +0 -44
  695. package/skills/creative/algorithmic-art/templates/generator-template.js +0 -27
  696. package/skills/creative/algorithmic-art/templates/viewer.html +0 -27
@@ -0,0 +1,37 @@
1
+ -- Scene-specific source and delivery metadata; Task and TaskRun remain authoritative.
2
+ CREATE TABLE scene_development_bindings (
3
+ activation_id TEXT PRIMARY KEY REFERENCES scene_activations(id) ON DELETE CASCADE,
4
+ task_id TEXT NOT NULL UNIQUE REFERENCES tasks(task_id) ON DELETE CASCADE,
5
+ source_key TEXT NOT NULL UNIQUE,
6
+ input_json TEXT NOT NULL CHECK(json_valid(input_json)),
7
+ environment_id TEXT REFERENCES execution_environments(environment_id),
8
+ resource_operation_id TEXT,
9
+ observed_revision INTEGER NOT NULL DEFAULT 0,
10
+ delivered_revision INTEGER NOT NULL DEFAULT 0,
11
+ delivered_decisions_hash TEXT NOT NULL DEFAULT '',
12
+ applied_revision INTEGER NOT NULL DEFAULT 0,
13
+ executing_run_id TEXT REFERENCES task_runs(run_id),
14
+ last_error TEXT,
15
+ next_poll_at INTEGER NOT NULL DEFAULT 0,
16
+ failures INTEGER NOT NULL DEFAULT 0,
17
+ created_at INTEGER NOT NULL
18
+ );
19
+ CREATE TABLE scene_development_revisions (
20
+ activation_id TEXT NOT NULL REFERENCES scene_development_bindings(activation_id) ON DELETE CASCADE,
21
+ revision INTEGER NOT NULL,
22
+ source_hash TEXT NOT NULL,
23
+ content TEXT NOT NULL,
24
+ observed_at INTEGER NOT NULL,
25
+ PRIMARY KEY(activation_id, revision)
26
+ );
27
+ CREATE INDEX scene_development_poll ON scene_development_bindings(next_poll_at);
28
+ CREATE TABLE scene_development_branch_links (
29
+ owner_id TEXT NOT NULL,
30
+ workspace_id TEXT NOT NULL,
31
+ project_id TEXT NOT NULL REFERENCES projects(project_id) ON DELETE CASCADE,
32
+ branch_ref TEXT NOT NULL,
33
+ task_id TEXT NOT NULL REFERENCES tasks(task_id) ON DELETE CASCADE,
34
+ confirmed_sha TEXT NOT NULL,
35
+ confirmed_at INTEGER NOT NULL,
36
+ PRIMARY KEY(owner_id, workspace_id, project_id, branch_ref)
37
+ );
@@ -0,0 +1,27 @@
1
+ -- Preserve experimental records and resources without automatically widening authority.
2
+ ALTER TABLE scene_development_bindings RENAME TO scene_task_bindings;
3
+ ALTER TABLE scene_development_revisions RENAME TO scene_task_revisions;
4
+ ALTER TABLE scene_development_branch_links RENAME TO scene_task_branch_links;
5
+ ALTER TABLE scene_task_bindings RENAME COLUMN applied_revision TO processed_revision;
6
+ ALTER TABLE scene_task_bindings ADD COLUMN continuation_attempts INTEGER NOT NULL DEFAULT 0;
7
+ ALTER TABLE scene_task_bindings ADD COLUMN continuation_requested INTEGER NOT NULL DEFAULT 0;
8
+ UPDATE scene_task_bindings SET input_json = json_patch(json_object(
9
+ 'source', json_object('provider', 'slack_thread', 'reference', json_extract(input_json, '$.thread')),
10
+ 'goal', json_extract(input_json, '$.goal'),
11
+ 'instruction', 'Follow the delegated goal using current discussion. Do not publish, commit, push, merge or deploy.',
12
+ 'projectId', json_extract(input_json, '$.projectId'),
13
+ 'resource', 'worktree',
14
+ 'capabilities', json(CASE WHEN json_extract(input_json, '$.mode') = 'code'
15
+ THEN CASE WHEN json_extract(input_json, '$.verificationCommand') IS NOT NULL
16
+ THEN '["workspace.read","workspace.write","verification.run"]' ELSE '["workspace.read","workspace.write"]' END
17
+ ELSE '["workspace.read"]' END)
18
+ ), json_object('sourceUrl', json_extract(input_json, '$.sourceUrl'), 'verificationCommand',
19
+ CASE WHEN json_extract(input_json, '$.mode') = 'code' THEN json_extract(input_json, '$.verificationCommand') ELSE NULL END)),
20
+ last_error = 'Configuration migrated. Review permissions and resume explicitly.', next_poll_at = 0;
21
+ -- Original verified receipts remain authoritative; processed is not a verification claim.
22
+ UPDATE scene_activations SET status = CASE WHEN status = 'archived' THEN status ELSE 'paused' END,
23
+ revision = revision + 1,
24
+ permissions_json = json_set(permissions_json, '$.contextProviders', json('["connected_source"]'),
25
+ '$.effectHandlers', json((SELECT json_group_array(value) FROM scene_task_bindings b,
26
+ json_each(b.input_json, '$.capabilities') WHERE b.activation_id = scene_activations.id AND value <> 'workspace.read')))
27
+ WHERE id IN (SELECT activation_id FROM scene_task_bindings);
@@ -0,0 +1,20 @@
1
+ CREATE TABLE capability_operations (
2
+ operation_id TEXT PRIMARY KEY,
3
+ principal_id TEXT NOT NULL,
4
+ capability_id TEXT NOT NULL,
5
+ idempotency_key TEXT NOT NULL,
6
+ request_digest TEXT NOT NULL,
7
+ descriptor_digest TEXT NOT NULL,
8
+ result_json TEXT NOT NULL CHECK (json_valid(result_json)),
9
+ created_at INTEGER NOT NULL,
10
+ UNIQUE(principal_id, capability_id, idempotency_key)
11
+ );
12
+
13
+ CREATE TABLE capability_invocations (
14
+ invocation_id TEXT PRIMARY KEY,
15
+ operation_id TEXT NOT NULL REFERENCES capability_operations(operation_id) ON DELETE CASCADE,
16
+ surface TEXT NOT NULL,
17
+ replayed INTEGER NOT NULL CHECK (replayed IN (0, 1)),
18
+ created_at INTEGER NOT NULL
19
+ );
20
+ CREATE INDEX capability_invocations_operation ON capability_invocations(operation_id, created_at);
@@ -0,0 +1,8 @@
1
+ CREATE TABLE note_file_cleanup (
2
+ note_id TEXT NOT NULL,
3
+ relative_path TEXT NOT NULL,
4
+ created_at INTEGER NOT NULL,
5
+ attempts INTEGER NOT NULL DEFAULT 0,
6
+ next_attempt_at INTEGER NOT NULL DEFAULT 0,
7
+ PRIMARY KEY (note_id, relative_path)
8
+ );
@@ -0,0 +1,11 @@
1
+ ALTER TABLE capability_operations ADD COLUMN state TEXT NOT NULL DEFAULT 'succeeded'
2
+ CHECK (state IN ('running', 'succeeded', 'failed', 'unknown'));
3
+ ALTER TABLE capability_operations ADD COLUMN generation INTEGER NOT NULL DEFAULT 1;
4
+ ALTER TABLE capability_operations ADD COLUMN recovery_mode TEXT NOT NULL DEFAULT 'atomic'
5
+ CHECK (recovery_mode IN ('atomic', 'manual', 'provider-idempotent'));
6
+ ALTER TABLE capability_operations ADD COLUMN lease_expires_at INTEGER;
7
+ ALTER TABLE capability_operations ADD COLUMN evidence_json TEXT CHECK (evidence_json IS NULL OR json_valid(evidence_json));
8
+ ALTER TABLE capability_invocations ADD COLUMN state TEXT NOT NULL DEFAULT 'succeeded'
9
+ CHECK (state IN ('running', 'succeeded', 'failed', 'unknown'));
10
+ ALTER TABLE capability_invocations ADD COLUMN finished_at INTEGER;
11
+ ALTER TABLE domain_outbox ADD COLUMN operation_id TEXT;
@@ -0,0 +1,4 @@
1
+ CREATE TABLE automation_deleted_revisions (
2
+ automation_id TEXT PRIMARY KEY,
3
+ revision INTEGER NOT NULL CHECK (revision >= 0)
4
+ );
@@ -0,0 +1,23 @@
1
+ CREATE TABLE automation_run_requests (
2
+ run_id TEXT PRIMARY KEY,
3
+ automation_json TEXT NOT NULL CHECK (json_valid(automation_json))
4
+ );
5
+
6
+ -- Freeze the configuration previously used to resume pre-upgrade queued runs.
7
+ -- Remove only top-level optional fields; merge-patch would erase null workflow inputs.
8
+ INSERT INTO automation_run_requests (run_id, automation_json)
9
+ SELECT r.run_id, json_remove(json_object(
10
+ 'id', a.automation_id, 'name', r.automation_name, 'description', a.description,
11
+ 'projectId', a.project_id, 'enabled', json(CASE WHEN a.enabled = 1 THEN 'true' ELSE 'false' END),
12
+ 'trigger', json(r.trigger_snapshot_json), 'action', json(r.action_snapshot_json),
13
+ 'safety', json(a.safety_json), 'conversationMode', a.conversation_mode,
14
+ 'notificationPolicy', a.notification_policy, 'completionWebhookUrl', a.completion_webhook_url,
15
+ 'reliability', json(a.reliability_json), 'state', json(a.state_json),
16
+ 'createdAtMs', a.created_at_ms, 'updatedAtMs', a.updated_at_ms
17
+ ),
18
+ CASE WHEN a.description IS NULL THEN '$.description' ELSE '$.__absent' END,
19
+ CASE WHEN a.project_id IS NULL THEN '$.projectId' ELSE '$.__absent' END,
20
+ CASE WHEN a.safety_json IS NULL THEN '$.safety' ELSE '$.__absent' END,
21
+ CASE WHEN a.completion_webhook_url IS NULL THEN '$.completionWebhookUrl' ELSE '$.__absent' END,
22
+ CASE WHEN a.reliability_json IS NULL THEN '$.reliability' ELSE '$.__absent' END
23
+ ) FROM automation_runs r JOIN automations a ON a.automation_id = r.automation_id WHERE r.status = 'queued';
@@ -0,0 +1,8 @@
1
+ CREATE TABLE note_deletion_cleanup (
2
+ kind TEXT NOT NULL CHECK(kind IN ('media', 'share')),
3
+ object_id TEXT NOT NULL,
4
+ created_at INTEGER NOT NULL,
5
+ attempts INTEGER NOT NULL DEFAULT 0,
6
+ next_attempt_at INTEGER NOT NULL DEFAULT 0,
7
+ PRIMARY KEY(kind, object_id)
8
+ );
@@ -0,0 +1,7 @@
1
+ CREATE TABLE project_workspace_creation (
2
+ project_id TEXT PRIMARY KEY REFERENCES projects(project_id) ON DELETE CASCADE,
3
+ workspace_root TEXT NOT NULL,
4
+ created_at INTEGER NOT NULL,
5
+ attempts INTEGER NOT NULL DEFAULT 0,
6
+ next_attempt_at INTEGER NOT NULL DEFAULT 0
7
+ );
@@ -0,0 +1,488 @@
1
+ -- Scene resource revisions cover the aggregate (notes, runs, results), not activation edit revisions.
2
+ -- Triggers keep background producers and capability calls on the same durable outbox path.
3
+ CREATE TABLE scene_resource_revisions (
4
+ resource_id TEXT PRIMARY KEY,
5
+ revision INTEGER NOT NULL CHECK(revision >= 0)
6
+ );
7
+ INSERT INTO scene_resource_revisions SELECT id, 0 FROM scene_activations;
8
+
9
+ CREATE TRIGGER scene_activations_resource_insert
10
+ AFTER INSERT ON scene_activations
11
+ BEGIN
12
+ INSERT INTO scene_resource_revisions(resource_id, revision)
13
+ SELECT NEW.id, 1 WHERE NEW.id IS NOT NULL
14
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
15
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
16
+ SELECT lower(hex(randomblob(16))), 'scene.created', 'scene', resource_id, resource_id,
17
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
18
+ FROM scene_resource_revisions WHERE resource_id = NEW.id;
19
+ END;
20
+
21
+ CREATE TRIGGER scene_activations_resource_update
22
+ AFTER UPDATE ON scene_activations
23
+ WHEN OLD.revision IS NOT NEW.revision OR OLD.status IS NOT NEW.status OR OLD.goal IS NOT NEW.goal OR OLD.scope_json IS NOT NEW.scope_json OR OLD.permissions_json IS NOT NEW.permissions_json
24
+ BEGIN
25
+ INSERT INTO scene_resource_revisions(resource_id, revision)
26
+ SELECT NEW.id, 1 WHERE NEW.id IS NOT NULL
27
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
28
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
29
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
30
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
31
+ FROM scene_resource_revisions WHERE resource_id = NEW.id;
32
+ END;
33
+
34
+ CREATE TRIGGER scene_activations_resource_delete
35
+ AFTER DELETE ON scene_activations
36
+ BEGIN
37
+ INSERT INTO scene_resource_revisions(resource_id, revision)
38
+ SELECT OLD.id, 1 WHERE OLD.id IS NOT NULL
39
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
40
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
41
+ SELECT lower(hex(randomblob(16))), 'scene.deleted', 'scene', resource_id, resource_id,
42
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
43
+ FROM scene_resource_revisions WHERE resource_id = OLD.id;
44
+ END;
45
+
46
+ CREATE TRIGGER scene_notes_resource_insert
47
+ AFTER INSERT ON scene_notes
48
+ BEGIN
49
+ INSERT INTO scene_resource_revisions(resource_id, revision)
50
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
51
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
52
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
53
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
54
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
55
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
56
+ END;
57
+
58
+ CREATE TRIGGER scene_notes_resource_update
59
+ AFTER UPDATE ON scene_notes
60
+ WHEN OLD.revision IS NOT NEW.revision
61
+ BEGIN
62
+ INSERT INTO scene_resource_revisions(resource_id, revision)
63
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
64
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
65
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
66
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
67
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
68
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
69
+ END;
70
+
71
+ CREATE TRIGGER scene_notes_resource_delete
72
+ AFTER DELETE ON scene_notes
73
+ BEGIN
74
+ INSERT INTO scene_resource_revisions(resource_id, revision)
75
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
76
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
77
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
78
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
79
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
80
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
81
+ END;
82
+
83
+ CREATE TRIGGER scene_work_items_resource_insert
84
+ AFTER INSERT ON scene_work_items
85
+ BEGIN
86
+ INSERT INTO scene_resource_revisions(resource_id, revision)
87
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
88
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
89
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
90
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
91
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
92
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
93
+ END;
94
+
95
+ CREATE TRIGGER scene_work_items_resource_update
96
+ AFTER UPDATE ON scene_work_items
97
+ WHEN OLD.revision IS NOT NEW.revision OR OLD.status IS NOT NEW.status OR OLD.due_at IS NOT NEW.due_at
98
+ BEGIN
99
+ INSERT INTO scene_resource_revisions(resource_id, revision)
100
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
101
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
102
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
103
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
104
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
105
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
106
+ END;
107
+
108
+ CREATE TRIGGER scene_work_items_resource_delete
109
+ AFTER DELETE ON scene_work_items
110
+ BEGIN
111
+ INSERT INTO scene_resource_revisions(resource_id, revision)
112
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
113
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
114
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
115
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
116
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
117
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
118
+ END;
119
+
120
+ CREATE TRIGGER scene_schedule_cursors_resource_insert
121
+ AFTER INSERT ON scene_schedule_cursors
122
+ BEGIN
123
+ INSERT INTO scene_resource_revisions(resource_id, revision)
124
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
125
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
126
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
127
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
128
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
129
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
130
+ END;
131
+
132
+ CREATE TRIGGER scene_schedule_cursors_resource_update
133
+ AFTER UPDATE ON scene_schedule_cursors
134
+ WHEN OLD.revision IS NOT NEW.revision OR OLD.next_due_at IS NOT NEW.next_due_at
135
+ BEGIN
136
+ INSERT INTO scene_resource_revisions(resource_id, revision)
137
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
138
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
139
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
140
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
141
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
142
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
143
+ END;
144
+
145
+ CREATE TRIGGER scene_schedule_cursors_resource_delete
146
+ AFTER DELETE ON scene_schedule_cursors
147
+ BEGIN
148
+ INSERT INTO scene_resource_revisions(resource_id, revision)
149
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
150
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
151
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
152
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
153
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
154
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
155
+ END;
156
+
157
+ CREATE TRIGGER scene_trigger_intents_resource_insert
158
+ AFTER INSERT ON scene_trigger_intents
159
+ BEGIN
160
+ INSERT INTO scene_resource_revisions(resource_id, revision)
161
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
162
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
163
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
164
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
165
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
166
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
167
+ END;
168
+
169
+ CREATE TRIGGER scene_trigger_intents_resource_update
170
+ AFTER UPDATE ON scene_trigger_intents
171
+ WHEN OLD.status IS NOT NEW.status OR OLD.due_at IS NOT NEW.due_at
172
+ BEGIN
173
+ INSERT INTO scene_resource_revisions(resource_id, revision)
174
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
175
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
176
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
177
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
178
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
179
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
180
+ END;
181
+
182
+ CREATE TRIGGER scene_trigger_intents_resource_delete
183
+ AFTER DELETE ON scene_trigger_intents
184
+ BEGIN
185
+ INSERT INTO scene_resource_revisions(resource_id, revision)
186
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
187
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
188
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
189
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
190
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
191
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
192
+ END;
193
+
194
+ CREATE TRIGGER scene_runs_resource_insert
195
+ AFTER INSERT ON scene_runs
196
+ BEGIN
197
+ INSERT INTO scene_resource_revisions(resource_id, revision)
198
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
199
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
200
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
201
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
202
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
203
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
204
+ END;
205
+
206
+ CREATE TRIGGER scene_runs_resource_update
207
+ AFTER UPDATE ON scene_runs
208
+ WHEN OLD.status IS NOT NEW.status OR OLD.attempt IS NOT NEW.attempt OR OLD.reason IS NOT NEW.reason OR OLD.retry_at IS NOT NEW.retry_at
209
+ BEGIN
210
+ INSERT INTO scene_resource_revisions(resource_id, revision)
211
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
212
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
213
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
214
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
215
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
216
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
217
+ END;
218
+
219
+ CREATE TRIGGER scene_runs_resource_delete
220
+ AFTER DELETE ON scene_runs
221
+ BEGIN
222
+ INSERT INTO scene_resource_revisions(resource_id, revision)
223
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
224
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
225
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
226
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
227
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
228
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
229
+ END;
230
+
231
+ CREATE TRIGGER scene_presentations_resource_insert
232
+ AFTER INSERT ON scene_presentations
233
+ BEGIN
234
+ INSERT INTO scene_resource_revisions(resource_id, revision)
235
+ SELECT (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = NEW.outcome_id), 1 WHERE (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = NEW.outcome_id) IS NOT NULL
236
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
237
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
238
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
239
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
240
+ FROM scene_resource_revisions WHERE resource_id = (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = NEW.outcome_id);
241
+ END;
242
+
243
+ CREATE TRIGGER scene_presentations_resource_update
244
+ AFTER UPDATE ON scene_presentations
245
+ WHEN OLD.status IS NOT NEW.status OR OLD.revision IS NOT NEW.revision OR OLD.withdrawn_at IS NOT NEW.withdrawn_at OR OLD.expires_at IS NOT NEW.expires_at OR OLD.snoozed_until IS NOT NEW.snoozed_until
246
+ BEGIN
247
+ INSERT INTO scene_resource_revisions(resource_id, revision)
248
+ SELECT (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = NEW.outcome_id), 1 WHERE (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = NEW.outcome_id) IS NOT NULL
249
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
250
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
251
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
252
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
253
+ FROM scene_resource_revisions WHERE resource_id = (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = NEW.outcome_id);
254
+ END;
255
+
256
+ CREATE TRIGGER scene_presentations_resource_delete
257
+ AFTER DELETE ON scene_presentations
258
+ BEGIN
259
+ INSERT INTO scene_resource_revisions(resource_id, revision)
260
+ SELECT (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = OLD.outcome_id), 1 WHERE (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = OLD.outcome_id) IS NOT NULL
261
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
262
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
263
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
264
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
265
+ FROM scene_resource_revisions WHERE resource_id = (SELECT r.activation_id FROM scene_outcomes o JOIN scene_runs r ON r.id = o.run_id WHERE o.id = OLD.outcome_id);
266
+ END;
267
+
268
+ CREATE TRIGGER scene_feedback_resource_insert
269
+ AFTER INSERT ON scene_feedback
270
+ BEGIN
271
+ INSERT INTO scene_resource_revisions(resource_id, revision)
272
+ SELECT (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = NEW.presentation_id), 1 WHERE (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = NEW.presentation_id) IS NOT NULL
273
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
274
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
275
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
276
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
277
+ FROM scene_resource_revisions WHERE resource_id = (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = NEW.presentation_id);
278
+ END;
279
+
280
+ CREATE TRIGGER scene_feedback_resource_update
281
+ AFTER UPDATE ON scene_feedback
282
+ WHEN OLD.revision IS NOT NEW.revision
283
+ BEGIN
284
+ INSERT INTO scene_resource_revisions(resource_id, revision)
285
+ SELECT (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = NEW.presentation_id), 1 WHERE (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = NEW.presentation_id) IS NOT NULL
286
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
287
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
288
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
289
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
290
+ FROM scene_resource_revisions WHERE resource_id = (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = NEW.presentation_id);
291
+ END;
292
+
293
+ CREATE TRIGGER scene_feedback_resource_delete
294
+ AFTER DELETE ON scene_feedback
295
+ BEGIN
296
+ INSERT INTO scene_resource_revisions(resource_id, revision)
297
+ SELECT (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = OLD.presentation_id), 1 WHERE (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = OLD.presentation_id) IS NOT NULL
298
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
299
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
300
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
301
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
302
+ FROM scene_resource_revisions WHERE resource_id = (SELECT r.activation_id FROM scene_presentations p JOIN scene_outcomes o ON o.id = p.outcome_id JOIN scene_runs r ON r.id = o.run_id WHERE p.id = OLD.presentation_id);
303
+ END;
304
+
305
+ CREATE TRIGGER scene_source_health_resource_insert
306
+ AFTER INSERT ON scene_source_health
307
+ BEGIN
308
+ INSERT INTO scene_resource_revisions(resource_id, revision)
309
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
310
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
311
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
312
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
313
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
314
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
315
+ END;
316
+
317
+ CREATE TRIGGER scene_source_health_resource_update
318
+ AFTER UPDATE ON scene_source_health
319
+ WHEN OLD.reason IS NOT NEW.reason OR OLD.retry_at IS NOT NEW.retry_at OR OLD.consecutive_failures IS NOT NEW.consecutive_failures
320
+ BEGIN
321
+ INSERT INTO scene_resource_revisions(resource_id, revision)
322
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
323
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
324
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
325
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
326
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
327
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
328
+ END;
329
+
330
+ CREATE TRIGGER scene_source_health_resource_delete
331
+ AFTER DELETE ON scene_source_health
332
+ BEGIN
333
+ INSERT INTO scene_resource_revisions(resource_id, revision)
334
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
335
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
336
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
337
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
338
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
339
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
340
+ END;
341
+
342
+ CREATE TRIGGER scene_task_bindings_resource_insert
343
+ AFTER INSERT ON scene_task_bindings
344
+ BEGIN
345
+ INSERT INTO scene_resource_revisions(resource_id, revision)
346
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
347
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
348
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
349
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
350
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
351
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
352
+ END;
353
+
354
+ CREATE TRIGGER scene_task_bindings_resource_update
355
+ AFTER UPDATE ON scene_task_bindings
356
+ WHEN OLD.observed_revision IS NOT NEW.observed_revision OR OLD.delivered_revision IS NOT NEW.delivered_revision OR OLD.processed_revision IS NOT NEW.processed_revision OR OLD.executing_run_id IS NOT NEW.executing_run_id OR OLD.last_error IS NOT NEW.last_error
357
+ BEGIN
358
+ INSERT INTO scene_resource_revisions(resource_id, revision)
359
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
360
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
361
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
362
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
363
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
364
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
365
+ END;
366
+
367
+ CREATE TRIGGER scene_task_bindings_resource_delete
368
+ AFTER DELETE ON scene_task_bindings
369
+ BEGIN
370
+ INSERT INTO scene_resource_revisions(resource_id, revision)
371
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
372
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
373
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
374
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
375
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
376
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
377
+ END;
378
+
379
+ CREATE TRIGGER scene_task_revisions_resource_insert
380
+ AFTER INSERT ON scene_task_revisions
381
+ BEGIN
382
+ INSERT INTO scene_resource_revisions(resource_id, revision)
383
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
384
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
385
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
386
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
387
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
388
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
389
+ END;
390
+
391
+ CREATE TRIGGER scene_task_revisions_resource_update
392
+ AFTER UPDATE ON scene_task_revisions
393
+ WHEN OLD.revision IS NOT NEW.revision
394
+ BEGIN
395
+ INSERT INTO scene_resource_revisions(resource_id, revision)
396
+ SELECT NEW.activation_id, 1 WHERE NEW.activation_id IS NOT NULL
397
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
398
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
399
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
400
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
401
+ FROM scene_resource_revisions WHERE resource_id = NEW.activation_id;
402
+ END;
403
+
404
+ CREATE TRIGGER scene_task_revisions_resource_delete
405
+ AFTER DELETE ON scene_task_revisions
406
+ BEGIN
407
+ INSERT INTO scene_resource_revisions(resource_id, revision)
408
+ SELECT OLD.activation_id, 1 WHERE OLD.activation_id IS NOT NULL
409
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
410
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
411
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
412
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
413
+ FROM scene_resource_revisions WHERE resource_id = OLD.activation_id;
414
+ END;
415
+
416
+ CREATE TRIGGER scene_preferences_resource_insert
417
+ AFTER INSERT ON scene_preferences
418
+ BEGIN
419
+ INSERT INTO scene_resource_revisions(resource_id, revision)
420
+ SELECT 'preferences', 1 WHERE 'preferences' IS NOT NULL
421
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
422
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
423
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
424
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
425
+ FROM scene_resource_revisions WHERE resource_id = 'preferences';
426
+ END;
427
+
428
+ CREATE TRIGGER scene_preferences_resource_update
429
+ AFTER UPDATE ON scene_preferences
430
+ WHEN OLD.revision IS NOT NEW.revision
431
+ BEGIN
432
+ INSERT INTO scene_resource_revisions(resource_id, revision)
433
+ SELECT 'preferences', 1 WHERE 'preferences' IS NOT NULL
434
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
435
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
436
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
437
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
438
+ FROM scene_resource_revisions WHERE resource_id = 'preferences';
439
+ END;
440
+
441
+ CREATE TRIGGER scene_preferences_resource_delete
442
+ AFTER DELETE ON scene_preferences
443
+ BEGIN
444
+ INSERT INTO scene_resource_revisions(resource_id, revision)
445
+ SELECT 'preferences', 1 WHERE 'preferences' IS NOT NULL
446
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
447
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
448
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
449
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
450
+ FROM scene_resource_revisions WHERE resource_id = 'preferences';
451
+ END;
452
+
453
+ CREATE TRIGGER scene_template_versions_resource_insert
454
+ AFTER INSERT ON scene_template_versions
455
+ BEGIN
456
+ INSERT INTO scene_resource_revisions(resource_id, revision)
457
+ SELECT 'templates', 1 WHERE 'templates' IS NOT NULL
458
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
459
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
460
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
461
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
462
+ FROM scene_resource_revisions WHERE resource_id = 'templates';
463
+ END;
464
+
465
+ CREATE TRIGGER scene_template_versions_resource_update
466
+ AFTER UPDATE ON scene_template_versions
467
+ WHEN OLD.content_hash IS NOT NEW.content_hash
468
+ BEGIN
469
+ INSERT INTO scene_resource_revisions(resource_id, revision)
470
+ SELECT 'templates', 1 WHERE 'templates' IS NOT NULL
471
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
472
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
473
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
474
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
475
+ FROM scene_resource_revisions WHERE resource_id = 'templates';
476
+ END;
477
+
478
+ CREATE TRIGGER scene_template_versions_resource_delete
479
+ AFTER DELETE ON scene_template_versions
480
+ BEGIN
481
+ INSERT INTO scene_resource_revisions(resource_id, revision)
482
+ SELECT 'templates', 1 WHERE 'templates' IS NOT NULL
483
+ ON CONFLICT(resource_id) DO UPDATE SET revision = revision + 1;
484
+ INSERT INTO domain_outbox(event_id, event_type, subject_kind, subject_id, correlation_id, payload_json, created_at, operation_id)
485
+ SELECT lower(hex(randomblob(16))), 'scene.changed', 'scene', resource_id, resource_id,
486
+ json_object('sceneId', resource_id, 'revision', revision), CAST(unixepoch('subsec') * 1000 AS INTEGER), xopc_operation_id()
487
+ FROM scene_resource_revisions WHERE resource_id = 'templates';
488
+ END;