@xopcai/xopc 0.0.286 → 0.0.291

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 (445) hide show
  1. package/README.md +16 -0
  2. package/README.zh-CN.md +16 -0
  3. package/dist/browser-ext/dist/assets/{auth-BXCWrPlg.js → auth-B2CDTr_F.js} +2 -1
  4. package/dist/browser-ext/dist/background.js +1 -1
  5. package/dist/browser-ext/dist/sidepanel.html +1 -1
  6. package/dist/browser-ext/dist/sidepanel.js +36 -10
  7. package/dist/browser-ext/manifest.json +1 -1
  8. package/dist/extensions/telegram/xopc.extension.json +1 -1
  9. package/dist/gateway/static/root/assets/{activity-store-xOhV8FHx.js → activity-store-6lmzUBEr.js} +1 -1
  10. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BzQbYWEj.js → agent-avatar-dicebear-BCtrkF15.js} +1 -1
  11. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D2eYNelh.js +1 -0
  12. package/dist/gateway/static/root/assets/agents-BedA5XwI.js +1 -0
  13. package/dist/gateway/static/root/assets/{api-CVJQLBv9.js → api-D6yepxBp.js} +1 -1
  14. package/dist/gateway/static/root/assets/api-Dnfnl1Gd.js +1 -0
  15. package/dist/gateway/static/root/assets/{app-management-settings-panel-CTyuXkNC.js → app-management-settings-panel-Md562Fo-.js} +1 -1
  16. package/dist/gateway/static/root/assets/{appearance-settings-Tk-GJtvF.js → appearance-settings-BiBFI4BM.js} +1 -1
  17. package/dist/gateway/static/root/assets/{apps-page-BA-7OrhJ.js → apps-page-Corla83b.js} +1 -1
  18. package/dist/gateway/static/root/assets/{archive-plugin-O49jeeXo.js → archive-plugin-A_Unp751.js} +1 -1
  19. package/dist/gateway/static/root/assets/{attachment-load-r9lBF2tW.js → attachment-load-D6idSUyP.js} +1 -1
  20. package/dist/gateway/static/root/assets/{automations-page-CFFLXYgS.js → automations-page-C6j71Lgs.js} +1 -1
  21. package/dist/gateway/static/root/assets/automations-workspace-DjZdhLQ5.js +6 -0
  22. package/dist/gateway/static/root/assets/{binary-plugins-BpM43vsn.js → binary-plugins-BkKYh-8v.js} +1 -1
  23. package/dist/gateway/static/root/assets/{block-editor-DFrfEcGw.js → block-editor-CDcMvaku.js} +3 -3
  24. package/dist/gateway/static/root/assets/{browser-automation-inputs-CyHGQwxQ.js → browser-automation-inputs-Cq4sIJt2.js} +1 -1
  25. package/dist/gateway/static/root/assets/{browser-automations-page-CPkOWfM9.js → browser-automations-page-C64k4TBH.js} +2 -2
  26. package/dist/gateway/static/root/assets/{browser-settings-page-BOcseZxg.js → browser-settings-page-1k5rj_qR.js} +3 -3
  27. package/dist/gateway/static/root/assets/capabilities-settings-panel-B2NvoTYb.js +8 -0
  28. package/dist/gateway/static/root/assets/channels-settings-DExixzp4.js +1 -0
  29. package/dist/gateway/static/root/assets/{channels-status-swr-BArPeImO.js → channels-status-swr-CVzEYBpX.js} +1 -1
  30. package/dist/gateway/static/root/assets/{chat-terminal-dock-D5Aka4S8.js → chat-terminal-dock-B9eKFkbg.js} +2 -2
  31. package/dist/gateway/static/root/assets/computer-model-settings-DW6j2lsn.js +1 -0
  32. package/dist/gateway/static/root/assets/computer-settings-page-C2Qyw63Q.js +1 -0
  33. package/dist/gateway/static/root/assets/connectors-page-C3ubZz7K.js +2 -0
  34. package/dist/gateway/static/root/assets/{date-picker-DNtRu6EB.js → date-picker-BdxjXVKL.js} +1 -1
  35. package/dist/gateway/static/root/assets/{dependency-picker-Dng3dIQa.js → dependency-picker-CXOa4uh4.js} +1 -1
  36. package/dist/gateway/static/root/assets/{desktop-pet-BicYycxy.js → desktop-pet-CBWiAaSv.js} +1 -1
  37. package/dist/gateway/static/root/assets/{desktop-pet-settings-BEse55eX.js → desktop-pet-settings-BX1aILDK.js} +1 -1
  38. package/dist/gateway/static/root/assets/{device-pairing-wizard-be30HuFI.js → device-pairing-wizard-bqm_Yf4i.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-debug-page-YzhYyuay.js → extension-debug-page-B4MMerja.js} +1 -1
  40. package/dist/gateway/static/root/assets/{extension-page-CEXVIkDl.js → extension-page-B3ZtINak.js} +1 -1
  41. package/dist/gateway/static/root/assets/{extension-settings-page-CrlbgK8g.js → extension-settings-page-8BkQVh0z.js} +1 -1
  42. package/dist/gateway/static/root/assets/{gateway-config-swr-BNuoHXiZ.js → gateway-config-swr-BBovMBQ1.js} +1 -1
  43. package/dist/gateway/static/root/assets/gateway-settings-ZyhacQX5.js +1 -0
  44. package/dist/gateway/static/root/assets/{gateway-startup-retry-zMPfje0n.js → gateway-startup-retry-NXDtzZED.js} +1 -1
  45. package/dist/gateway/static/root/assets/{heartbeat-settings-BtxitqZ3.js → heartbeat-settings-Bllcxm2A.js} +1 -1
  46. package/dist/gateway/static/root/assets/home-page-Cv2e8XBR.js +1 -0
  47. package/dist/gateway/static/root/assets/{image-generation-api-B_Tyx74A.js → image-generation-api-D01ieqGC.js} +1 -1
  48. package/dist/gateway/static/root/assets/{imports-page-eZciuLw_.js → imports-page-DJG1BJzd.js} +1 -1
  49. package/dist/gateway/static/root/assets/index-B7EieIE4.js +75 -0
  50. package/dist/gateway/static/root/assets/index-BD5uNzie.css +2 -0
  51. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B796W039.js → keyboard-shortcuts-settings-6A6JOHTI.js} +1 -1
  52. package/dist/gateway/static/root/assets/local-app-workbench-page-Cipj52Zq.js +2 -0
  53. package/dist/gateway/static/root/assets/{local-apps-page-DXmY5jwM.js → local-apps-page-bD-m7YHJ.js} +1 -1
  54. package/dist/gateway/static/root/assets/{locale-store-D0001I7p.js → locale-store-eliqUnBr.js} +1 -1
  55. package/dist/gateway/static/root/assets/logs-page-D5feO2yw.js +2 -0
  56. package/dist/gateway/static/root/assets/{management-settings-b1MG7s-3.js → management-settings-B7mz0_44.js} +1 -1
  57. package/dist/gateway/static/root/assets/{markdown-view-2txE_Blz.js → markdown-view-BIg7cei7.js} +1 -1
  58. package/dist/gateway/static/root/assets/{media-plugins-CDEf3ksI.js → media-plugins-DQ2HfMeG.js} +1 -1
  59. package/dist/gateway/static/root/assets/messages-NYDOR8-j.js +3 -0
  60. package/dist/gateway/static/root/assets/note-detail-panel-DhYJigb3.js +5 -0
  61. package/dist/gateway/static/root/assets/notes-page-Bg5NPUdf.js +8 -0
  62. package/dist/gateway/static/root/assets/{page-tabs-Bi_-DA5J.js → page-tabs-DmG_Qjl8.js} +1 -1
  63. package/dist/gateway/static/root/assets/{preview-open-alternatives-Dhfdf14p.js → preview-open-alternatives-Y9J1kjKC.js} +1 -1
  64. package/dist/gateway/static/root/assets/{proactive-page-BNouL7Tv.js → proactive-page-Duc_NQ8l.js} +1 -1
  65. package/dist/gateway/static/root/assets/{product-open-page-BkbZBqBr.js → product-open-page-DtgWUAwT.js} +1 -1
  66. package/dist/gateway/static/root/assets/project-detail-page-DVOiucVA.js +1 -0
  67. package/dist/gateway/static/root/assets/projects-page-Dr_kDoCJ.js +1 -0
  68. package/dist/gateway/static/root/assets/{registry-api-icwoEKYB.js → registry-api-Dpm3N2h0.js} +1 -1
  69. package/dist/gateway/static/root/assets/remote-access-hub-hyJ2KKKK.js +1 -0
  70. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-bmgxwWpW.js → runtime-tools-settings-panel-DB7J9opJ.js} +2 -2
  71. package/dist/gateway/static/root/assets/{schema-form-DoZeepCg.js → schema-form-CMYuPOlE.js} +1 -1
  72. package/dist/gateway/static/root/assets/sessions-page-DGsnYcoh.js +1 -0
  73. package/dist/gateway/static/root/assets/settings-advanced-gate-DuzZqQMn.js +1 -0
  74. package/dist/gateway/static/root/assets/{settings-form-section-sw2bbS2b.js → settings-form-section-BayJP08a.js} +1 -1
  75. package/dist/gateway/static/root/assets/{settings-page-BWF8uac0.js → settings-page-CWBqZtt6.js} +1 -1
  76. package/dist/gateway/static/root/assets/setup-status-panel-C97S5g5c.js +1 -0
  77. package/dist/gateway/static/root/assets/{share-preview-page-BIHYD6-O.js → share-preview-page-Wn5bQA-5.js} +1 -1
  78. package/dist/gateway/static/root/assets/shares-settings-pfVzP8F7.js +1 -0
  79. package/dist/gateway/static/root/assets/skill-reload-api-DDJ0ZKx3.js +1 -0
  80. package/dist/gateway/static/root/assets/skills-page-DbDpLjDW.js +2 -0
  81. package/dist/gateway/static/root/assets/{skills-page.utils-dvue6Ish.js → skills-page.utils-DCHY_kou.js} +1 -1
  82. package/dist/gateway/static/root/assets/{system-settings-panel-DCyxPWCl.js → system-settings-panel-DhgITgId.js} +1 -1
  83. package/dist/gateway/static/root/assets/task-detail-page-UqwtiHYu.js +1 -0
  84. package/dist/gateway/static/root/assets/{theme-store-CZwYGpbY.js → theme-store-DUHPzKzv.js} +1 -1
  85. package/dist/gateway/static/root/assets/{tunnel-api-__auf8Ww.js → tunnel-api-DJ3gz2tM.js} +1 -1
  86. package/dist/gateway/static/root/assets/{use-autosave-Iq83UDt3.js → use-autosave-htvgT192.js} +1 -1
  87. package/dist/gateway/static/root/assets/user-model-page-xOsXY_2W.js +2 -0
  88. package/dist/gateway/static/root/assets/{voice-api-key-field-D-QssKik.js → voice-api-key-field-BviJF3Oa.js} +1 -1
  89. package/dist/gateway/static/root/assets/{voice-config-api-B0wNN_tE.js → voice-config-api-Bjy8EFqi.js} +1 -1
  90. package/dist/gateway/static/root/assets/{work-discovery-overlay-5NRYg1iI.js → work-discovery-overlay-BOBVNEYZ.js} +1 -1
  91. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Ds2SZjLG.js → workflow-run-setup-panel-D1N9uUyM.js} +2 -2
  92. package/dist/gateway/static/root/assets/workflows-page-2ylzlgkG.js +6 -0
  93. package/dist/gateway/static/root/index.html +10 -10
  94. package/dist/package.js +1 -1
  95. package/dist/packages/computer-control-contract/src/index.js +178 -0
  96. package/dist/packages/realtime-protocol/src/voice-audio.js +15 -10
  97. package/dist/packages/realtime-protocol/src/voice-catalog.js +61 -0
  98. package/dist/packages/realtime-protocol/src/voice.js +257 -248
  99. package/dist/src/agent/agent-manager.d.ts +1 -0
  100. package/dist/src/agent/agent-manager.js +5 -4
  101. package/dist/src/agent/background-review/run-background-review.js +1 -1
  102. package/dist/src/agent/embedded/model-runtime.js +1 -1
  103. package/dist/src/agent/embedded/run-for-session.js +1 -1
  104. package/dist/src/agent/embedded/run-turn.js +9 -1
  105. package/dist/src/agent/external-tools/endpoint-provider.js +4 -2
  106. package/dist/src/agent/image/tool-model-config.js +1 -1
  107. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
  108. package/dist/src/agent/service.js +2 -2
  109. package/dist/src/agent/session/session-inspector.js +1 -1
  110. package/dist/src/agent/skills/hub-lock.js +1 -1
  111. package/dist/src/agent/skills/index.js +25 -15
  112. package/dist/src/agent/skills/parse-skill-metadata.d.ts +5 -1
  113. package/dist/src/agent/skills/parse-skill-metadata.js +21 -1
  114. package/dist/src/agent/skills/types.d.ts +7 -0
  115. package/dist/src/agent/tasks/task-judge-service.js +3 -3
  116. package/dist/src/agent/tool-manuals/computer.d.ts +1 -0
  117. package/dist/src/agent/tool-manuals/computer.js +19 -0
  118. package/dist/src/agent/tool-manuals/index.js +7 -0
  119. package/dist/src/agent/tools/computer-use-tool.d.ts +11 -0
  120. package/dist/src/agent/tools/computer-use-tool.js +86 -0
  121. package/dist/src/agent/tools/factory.d.ts +2 -0
  122. package/dist/src/agent/tools/factory.js +30 -0
  123. package/dist/src/agent-config/index.js +2 -2
  124. package/dist/src/agent-config/resolver.js +5 -0
  125. package/dist/src/agent-config/schema.d.ts +32 -0
  126. package/dist/src/agent-config/schema.js +5 -2
  127. package/dist/src/ai-assist/text-assist.js +1 -1
  128. package/dist/src/auth/credentials.js +2 -2
  129. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  130. package/dist/src/auth/profiles/store.js +1 -1
  131. package/dist/src/auth/sync-provider-auth.js +2 -2
  132. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  133. package/dist/src/capabilities/readiness/from-config.js +14 -2
  134. package/dist/src/capabilities/readiness/planner.js +3 -2
  135. package/dist/src/capabilities/readiness/types.d.ts +1 -1
  136. package/dist/src/chat-commands/agent-edit.js +1 -1
  137. package/dist/src/cli/commands/agent.js +1 -1
  138. package/dist/src/cli/commands/doctor/checks/provider-auth.js +3 -3
  139. package/dist/src/cli/commands/models.js +1 -1
  140. package/dist/src/computer/broker.d.ts +97 -0
  141. package/dist/src/computer/broker.js +337 -0
  142. package/dist/src/computer/config.d.ts +9 -0
  143. package/dist/src/computer/config.js +16 -0
  144. package/dist/src/computer/control-guard.d.ts +4 -0
  145. package/dist/src/computer/control-guard.js +17 -0
  146. package/dist/src/computer/errors.d.ts +7 -0
  147. package/dist/src/computer/errors.js +30 -0
  148. package/dist/src/computer/model-adapter.d.ts +44 -0
  149. package/dist/src/computer/model-adapter.js +273 -0
  150. package/dist/src/computer/model-config.d.ts +3 -0
  151. package/dist/src/computer/model-config.js +27 -0
  152. package/dist/src/computer/model-policy.d.ts +3 -0
  153. package/dist/src/computer/model-policy.js +20 -0
  154. package/dist/src/computer/runtime.d.ts +128 -0
  155. package/dist/src/computer/runtime.js +388 -0
  156. package/dist/src/config/index.js +4 -4
  157. package/dist/src/config/loader.js +2 -2
  158. package/dist/src/config/models-json.d.ts +36 -0
  159. package/dist/src/config/models-json.js +15 -1
  160. package/dist/src/config/schema.d.ts +37 -0
  161. package/dist/src/config/schema.js +11 -2
  162. package/dist/src/config/voice.js +2 -2
  163. package/dist/src/endpoint-tools/invocation-service.d.ts +1 -0
  164. package/dist/src/endpoint-tools/invocation-service.js +5 -2
  165. package/dist/src/endpoint-tools/policy.js +7 -0
  166. package/dist/src/endpoint-tools/runtime.js +1 -0
  167. package/dist/src/endpoint-tools/upload-service.d.ts +13 -1
  168. package/dist/src/endpoint-tools/upload-service.js +73 -8
  169. package/dist/src/extensions/lockfile.js +1 -1
  170. package/dist/src/gateway/agent-builtin-tools.d.ts +7 -1
  171. package/dist/src/gateway/agent-builtin-tools.js +7 -0
  172. package/dist/src/gateway/agents-admin.js +1 -1
  173. package/dist/src/gateway/file-path-classifier.js +1 -1
  174. package/dist/src/gateway/global-defaults-admin.js +16 -0
  175. package/dist/src/gateway/hono/lib/config-payload.d.ts +15 -0
  176. package/dist/src/gateway/hono/lib/config-payload.js +2 -1
  177. package/dist/src/gateway/hono/routes/config-patch/misc.js +13 -2
  178. package/dist/src/gateway/hono/routes/endpoint-tools.js +3 -2
  179. package/dist/src/gateway/hono/routes/models.js +6 -3
  180. package/dist/src/gateway/hono/routes/voice.js +55 -1
  181. package/dist/src/gateway/hono/routes/workflows.js +2 -2
  182. package/dist/src/gateway/security/gateway-scopes.d.ts +1 -1
  183. package/dist/src/gateway/security/gateway-scopes.js +3 -0
  184. package/dist/src/gateway/service/config-coordinator.js +4 -1
  185. package/dist/src/gateway/service.js +12 -12
  186. package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
  187. package/dist/src/providers/index.js +2 -2
  188. package/dist/src/providers/model-catalog-persistence.js +11 -2
  189. package/dist/src/providers/model-catalog-store.js +1 -0
  190. package/dist/src/providers/model-catalog-types.d.ts +7 -2
  191. package/dist/src/providers/model-reference-auditor.js +6 -3
  192. package/dist/src/providers/model-registry.js +4 -1
  193. package/dist/src/providers/model-supplements.js +18 -2
  194. package/dist/src/providers/presentation.js +4 -2
  195. package/dist/src/providers/register-runtime-providers.js +1 -1
  196. package/dist/src/providers/xopc-cloud-model-source.js +10 -4
  197. package/dist/src/storage/sqlite/index.d.ts +1 -1
  198. package/dist/src/storage/sqlite/index.js +2 -2
  199. package/dist/src/storage/sqlite/migrations/conversation-backup.d.ts +8 -0
  200. package/dist/src/storage/sqlite/migrations/conversation-backup.js +17 -7
  201. package/dist/src/storage/sqlite/migrations/conversation-windows-owners.js +5 -2
  202. package/dist/src/storage/sqlite/migrations/discover.js +2 -2
  203. package/dist/src/storage/sqlite/migrations/errors.d.ts +5 -0
  204. package/dist/src/storage/sqlite/migrations/errors.js +12 -2
  205. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  206. package/dist/src/storage/sqlite/migrations/runner.js +3 -2
  207. package/dist/src/storage/sqlite/schema.js +2 -2
  208. package/dist/src/storage/sqlite/schema.sql +2641 -526
  209. package/dist/src/tui/backends/embedded-backend.js +1 -1
  210. package/dist/src/tui/tui-commands.js +1 -1
  211. package/dist/src/tui/tui-startup-resources.js +1 -1
  212. package/dist/src/tui/tui.js +2 -2
  213. package/dist/src/voice/platform-catalog.d.ts +81 -0
  214. package/dist/src/voice/platform-catalog.js +16 -0
  215. package/dist/src/voice/platform-settings.d.ts +4 -0
  216. package/dist/src/voice/platform-settings.js +120 -0
  217. package/dist/src/voice/platform-streams.d.ts +12 -0
  218. package/dist/src/voice/platform-streams.js +250 -0
  219. package/dist/src/voice/realtime/omniEngine.js +8 -5
  220. package/dist/src/voice/realtime/omniRoute.d.ts +1 -0
  221. package/dist/src/voice/realtime/omniRoute.js +11 -1
  222. package/dist/src/voice/realtime/runtime.js +14 -6
  223. package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +15 -8
  224. package/dist/src/voice/tts/providers/xopc-cloud-speech.js +12 -19
  225. package/dist/src/work-discovery/service.js +2 -2
  226. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  227. package/package.json +7 -4
  228. package/skills/creative/algorithmic-art/SKILL.md +7 -0
  229. package/skills/creative/frontend-design/SKILL.md +8 -0
  230. package/skills/creative/hatch-pet/SKILL.md +7 -0
  231. package/skills/creative/theme-factory/SKILL.md +8 -0
  232. package/skills/documents/doc-coauthoring/SKILL.md +7 -0
  233. package/skills/documents/docx/SKILL.md +7 -0
  234. package/skills/documents/pdf/SKILL.md +7 -0
  235. package/skills/documents/pptx/SKILL.md +7 -0
  236. package/skills/documents/xlsx/SKILL.md +9 -1
  237. package/skills/engineering/build-xopc-local-app/SKILL.md +7 -0
  238. package/skills/engineering/define-task/SKILL.md +7 -0
  239. package/skills/engineering/diagnose/SKILL.md +8 -0
  240. package/skills/engineering/tdd/SKILL.md +8 -0
  241. package/skills/tools/find-skills/SKILL.md +8 -0
  242. package/skills/tools/github/SKILL.md +7 -0
  243. package/skills/tools/summarize/SKILL.md +8 -0
  244. package/skills/tools/webapp-testing/SKILL.md +8 -1
  245. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BxR5eog4.js +0 -1
  246. package/dist/gateway/static/root/assets/agents-Dx1om1eN.js +0 -1
  247. package/dist/gateway/static/root/assets/api-q1kIMCLW.js +0 -1
  248. package/dist/gateway/static/root/assets/automations-workspace-DUZE1NOH.js +0 -6
  249. package/dist/gateway/static/root/assets/capabilities-settings-panel-ohEV64hG.js +0 -8
  250. package/dist/gateway/static/root/assets/channels-settings-UOf9mgqt.js +0 -1
  251. package/dist/gateway/static/root/assets/connectors-page-BEQR0NRq.js +0 -2
  252. package/dist/gateway/static/root/assets/gateway-settings-CDJY1AOW.js +0 -1
  253. package/dist/gateway/static/root/assets/home-page-_oqo0pNR.js +0 -1
  254. package/dist/gateway/static/root/assets/index--YC42LAz.css +0 -2
  255. package/dist/gateway/static/root/assets/index-fVtuw2o9.js +0 -75
  256. package/dist/gateway/static/root/assets/local-app-workbench-page-Z8mpau9d.js +0 -2
  257. package/dist/gateway/static/root/assets/logs-page-BGOO8ouT.js +0 -2
  258. package/dist/gateway/static/root/assets/messages-BWANv-N-.js +0 -3
  259. package/dist/gateway/static/root/assets/note-detail-panel-Bm33_3xJ.js +0 -5
  260. package/dist/gateway/static/root/assets/notes-page-C32-xssK.js +0 -8
  261. package/dist/gateway/static/root/assets/project-detail-page-CZ7glGYw.js +0 -1
  262. package/dist/gateway/static/root/assets/projects-page-DP3ZINZz.js +0 -1
  263. package/dist/gateway/static/root/assets/remote-access-hub-xqJcPdOO.js +0 -1
  264. package/dist/gateway/static/root/assets/sessions-page-BaxIfjpm.js +0 -1
  265. package/dist/gateway/static/root/assets/settings-advanced-gate-Cy3Ab3Vg.js +0 -1
  266. package/dist/gateway/static/root/assets/setup-status-panel-BuYto2mT.js +0 -1
  267. package/dist/gateway/static/root/assets/shares-settings-DKtWUneq.js +0 -1
  268. package/dist/gateway/static/root/assets/skill-reload-api-Dn7ElMUk.js +0 -1
  269. package/dist/gateway/static/root/assets/skills-page-D-7UtJIc.js +0 -2
  270. package/dist/gateway/static/root/assets/task-detail-page-efmH43Pq.js +0 -1
  271. package/dist/gateway/static/root/assets/user-model-page-DByIJcQq.js +0 -2
  272. package/dist/gateway/static/root/assets/workflows-page-BJv3eoKR.js +0 -6
  273. package/dist/src/storage/sqlite/migrations/002_add_flush_columns.sql +0 -3
  274. package/dist/src/storage/sqlite/migrations/003_add_note_markdown_meta.sql +0 -4
  275. package/dist/src/storage/sqlite/migrations/004_add_session_type_metadata.sql +0 -15
  276. package/dist/src/storage/sqlite/migrations/005_add_note_agent_contexts.sql +0 -10
  277. package/dist/src/storage/sqlite/migrations/006_add_goals.sql +0 -108
  278. package/dist/src/storage/sqlite/migrations/007_goal_run_judge_schema.sql +0 -4
  279. package/dist/src/storage/sqlite/migrations/008_goal_queue_workflow_runs.sql +0 -53
  280. package/dist/src/storage/sqlite/migrations/009_cron_jobs.sql +0 -24
  281. package/dist/src/storage/sqlite/migrations/010_session_id_identity.sql +0 -30
  282. package/dist/src/storage/sqlite/migrations/011_goal_context_messages.sql +0 -8
  283. package/dist/src/storage/sqlite/migrations/012_memory_records.sql +0 -63
  284. package/dist/src/storage/sqlite/migrations/013_memory_trace_events.sql +0 -21
  285. package/dist/src/storage/sqlite/migrations/014_memory_record_governance.sql +0 -10
  286. package/dist/src/storage/sqlite/migrations/015_memory_trace_feedback.sql +0 -4
  287. package/dist/src/storage/sqlite/migrations/016_automations.sql +0 -47
  288. package/dist/src/storage/sqlite/migrations/017_automation_run_events.sql +0 -14
  289. package/dist/src/storage/sqlite/migrations/018_automation_safety.sql +0 -1
  290. package/dist/src/storage/sqlite/migrations/019_projects.sql +0 -40
  291. package/dist/src/storage/sqlite/migrations/020_project_default_agent.sql +0 -1
  292. package/dist/src/storage/sqlite/migrations/021_projects_fts.sql +0 -21
  293. package/dist/src/storage/sqlite/migrations/022_work_items.sql +0 -61
  294. package/dist/src/storage/sqlite/migrations/023_work_item_attachments.sql +0 -15
  295. package/dist/src/storage/sqlite/migrations/024_activity_events.sql +0 -62
  296. package/dist/src/storage/sqlite/migrations/025_project_pinned_at.sql +0 -5
  297. package/dist/src/storage/sqlite/migrations/026_goal_contracts.sql +0 -10
  298. package/dist/src/storage/sqlite/migrations/027_mobile_notifications.sql +0 -43
  299. package/dist/src/storage/sqlite/migrations/028_goal_evidence_requirements.sql +0 -47
  300. package/dist/src/storage/sqlite/migrations/029_user_understanding.sql +0 -133
  301. package/dist/src/storage/sqlite/migrations/030_connectors.sql +0 -94
  302. package/dist/src/storage/sqlite/migrations/031_connector_approvals.sql +0 -24
  303. package/dist/src/storage/sqlite/migrations/032_connector_webhook_deliveries.sql +0 -15
  304. package/dist/src/storage/sqlite/migrations/033_user_trust_policies.sql +0 -6
  305. package/dist/src/storage/sqlite/migrations/034_allow_global_auto_trust.sql +0 -14
  306. package/dist/src/storage/sqlite/migrations/035_user_profile_prompt_state.sql +0 -7
  307. package/dist/src/storage/sqlite/migrations/036_goal_outcome_metric.sql +0 -12
  308. package/dist/src/storage/sqlite/migrations/037_connected_knowledge_pipeline.sql +0 -47
  309. package/dist/src/storage/sqlite/migrations/038_user_owned_memory.sql +0 -68
  310. package/dist/src/storage/sqlite/migrations/039_memory_reference_consents.sql +0 -19
  311. package/dist/src/storage/sqlite/migrations/040_local_apps.sql +0 -32
  312. package/dist/src/storage/sqlite/migrations/041_local_app_release_lifecycle.sql +0 -17
  313. package/dist/src/storage/sqlite/migrations/042_work_discovery.sql +0 -41
  314. package/dist/src/storage/sqlite/migrations/043_local_app_acceptance_runs.sql +0 -16
  315. package/dist/src/storage/sqlite/migrations/044_repair_work_discovery_foreign_keys.sql +0 -75
  316. package/dist/src/storage/sqlite/migrations/045_extension_ui_grants.sql +0 -13
  317. package/dist/src/storage/sqlite/migrations/046_work_discovery_feedback.sql +0 -13
  318. package/dist/src/storage/sqlite/migrations/047_work_discovery_sources.sql +0 -16
  319. package/dist/src/storage/sqlite/migrations/048_work_understanding_investigations.sql +0 -40
  320. package/dist/src/storage/sqlite/migrations/049_work_understanding_threads.sql +0 -52
  321. package/dist/src/storage/sqlite/migrations/050_work_discovery_source_refreshes.sql +0 -15
  322. package/dist/src/storage/sqlite/migrations/051_focus_watches.sql +0 -26
  323. package/dist/src/storage/sqlite/migrations/052_proactive_insights.sql +0 -25
  324. package/dist/src/storage/sqlite/migrations/053_browser_recipes.sql +0 -45
  325. package/dist/src/storage/sqlite/migrations/054_task_outcomes.sql +0 -24
  326. package/dist/src/storage/sqlite/migrations/055_relationship_settings.sql +0 -14
  327. package/dist/src/storage/sqlite/migrations/056_task_verification.sql +0 -6
  328. package/dist/src/storage/sqlite/migrations/057_interaction_states.sql +0 -11
  329. package/dist/src/storage/sqlite/migrations/058_proactive_value.sql +0 -3
  330. package/dist/src/storage/sqlite/migrations/059_composer_input_history.sql +0 -8
  331. package/dist/src/storage/sqlite/migrations/060_remove_runtime_transcript_messages.sql +0 -45
  332. package/dist/src/storage/sqlite/migrations/061_drop_compaction_checkpoints.sql +0 -2
  333. package/dist/src/storage/sqlite/migrations/062_connector_learning_jobs.sql +0 -27
  334. package/dist/src/storage/sqlite/migrations/063_knowledge_collection_scopes.sql +0 -14
  335. package/dist/src/storage/sqlite/migrations/064_user_claims.sql +0 -60
  336. package/dist/src/storage/sqlite/migrations/065_knowledge_item_scope_identity.sql +0 -116
  337. package/dist/src/storage/sqlite/migrations/066_first_class_focuses.sql +0 -126
  338. package/dist/src/storage/sqlite/migrations/067_home_attention_acknowledgements.sql +0 -9
  339. package/dist/src/storage/sqlite/migrations/068_proactive_event_spine.sql +0 -71
  340. package/dist/src/storage/sqlite/migrations/069_proactive_scenario_control.sql +0 -69
  341. package/dist/src/storage/sqlite/migrations/070_proactive_execution.sql +0 -55
  342. package/dist/src/storage/sqlite/migrations/071_proactive_inbox.sql +0 -45
  343. package/dist/src/storage/sqlite/migrations/072_proactive_judgments.sql +0 -14
  344. package/dist/src/storage/sqlite/migrations/073_enable_default_proactive_scenarios.sql +0 -13
  345. package/dist/src/storage/sqlite/migrations/074_deduplicate_blocked_work_routing.sql +0 -5
  346. package/dist/src/storage/sqlite/migrations/075_connector_sync_policies.sql +0 -13
  347. package/dist/src/storage/sqlite/migrations/076_meeting_preparation_scenario.sql +0 -29
  348. package/dist/src/storage/sqlite/migrations/077_proactive_insight_fingerprints.sql +0 -4
  349. package/dist/src/storage/sqlite/migrations/078_discussion_captures.sql +0 -64
  350. package/dist/src/storage/sqlite/migrations/079_discussion_follow_up_scenario.sql +0 -29
  351. package/dist/src/storage/sqlite/migrations/080_task_outcome_context.sql +0 -15
  352. package/dist/src/storage/sqlite/migrations/081_project_monitoring_policies.sql +0 -10
  353. package/dist/src/storage/sqlite/migrations/082_one_click_live_discussions.sql +0 -100
  354. package/dist/src/storage/sqlite/migrations/083_session_task_plans.sql +0 -9
  355. package/dist/src/storage/sqlite/migrations/084_work_intake_lifecycle.sql +0 -26
  356. package/dist/src/storage/sqlite/migrations/085_task_outcome_projection.sql +0 -19
  357. package/dist/src/storage/sqlite/migrations/086_outcome_aggregates.sql +0 -168
  358. package/dist/src/storage/sqlite/migrations/087_context_snapshots.sql +0 -21
  359. package/dist/src/storage/sqlite/migrations/088_automation_execution_deadlines.sql +0 -5
  360. package/dist/src/storage/sqlite/migrations/089_automation_run_leases.sql +0 -8
  361. package/dist/src/storage/sqlite/migrations/090_outcome_contract_judgment.sql +0 -2
  362. package/dist/src/storage/sqlite/migrations/091_context_allocation.sql +0 -1
  363. package/dist/src/storage/sqlite/migrations/092_outcome_execution_runtime.sql +0 -88
  364. package/dist/src/storage/sqlite/migrations/093_remove_legacy_goals.sql +0 -174
  365. package/dist/src/storage/sqlite/migrations/094_outcome_judgment_and_authority.sql +0 -3
  366. package/dist/src/storage/sqlite/migrations/095_session_input_queue.sql +0 -35
  367. package/dist/src/storage/sqlite/migrations/096_drop_work_intakes.sql +0 -6
  368. package/dist/src/storage/sqlite/migrations/097_work_item_lifecycle.sql +0 -194
  369. package/dist/src/storage/sqlite/migrations/098_discussion_note_documents.sql +0 -99
  370. package/dist/src/storage/sqlite/migrations/099_task_model.sql +0 -500
  371. package/dist/src/storage/sqlite/migrations/100_project_task_taskrun.sql +0 -763
  372. package/dist/src/storage/sqlite/migrations/101_session_response_language.sql +0 -1
  373. package/dist/src/storage/sqlite/migrations/102_session_user_context_mode.sql +0 -2
  374. package/dist/src/storage/sqlite/migrations/103_finalize_structured_memory.sql +0 -3
  375. package/dist/src/storage/sqlite/migrations/104_turn_memory_feedback.sql +0 -77
  376. package/dist/src/storage/sqlite/migrations/105_dreaming_ledger.sql +0 -34
  377. package/dist/src/storage/sqlite/migrations/106_dreaming_run_reproducibility.sql +0 -2
  378. package/dist/src/storage/sqlite/migrations/107_connector_accounts.sql +0 -146
  379. package/dist/src/storage/sqlite/migrations/108_repair_user_memory_provider.sql +0 -18
  380. package/dist/src/storage/sqlite/migrations/109_endpoint_principals.sql +0 -14
  381. package/dist/src/storage/sqlite/migrations/110_session_input_origin.sql +0 -43
  382. package/dist/src/storage/sqlite/migrations/111_endpoint_tool_invocations.sql +0 -18
  383. package/dist/src/storage/sqlite/migrations/112_endpoint_instance_bindings.sql +0 -8
  384. package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +0 -76
  385. package/dist/src/storage/sqlite/migrations/114_user_context_domain.sql +0 -193
  386. package/dist/src/storage/sqlite/migrations/115_remove_legacy_user_context.sql +0 -6
  387. package/dist/src/storage/sqlite/migrations/116_structured_context_consolidation.sql +0 -38
  388. package/dist/src/storage/sqlite/migrations/117_unified_understanding_sources.sql +0 -110
  389. package/dist/src/storage/sqlite/migrations/118_task_board_rank.sql +0 -6
  390. package/dist/src/storage/sqlite/migrations/119_proactive_disposition.sql +0 -13
  391. package/dist/src/storage/sqlite/migrations/120_task_conversation.sql +0 -112
  392. package/dist/src/storage/sqlite/migrations/121_automation_inbox.sql +0 -24
  393. package/dist/src/storage/sqlite/migrations/122_automation_session_projects.sql +0 -18
  394. package/dist/src/storage/sqlite/migrations/123_remove_v2_compaction_boundaries.sql +0 -25
  395. package/dist/src/storage/sqlite/migrations/124_workflow_context_snapshots.sql +0 -15
  396. package/dist/src/storage/sqlite/migrations/125_project_workflow_presets.sql +0 -12
  397. package/dist/src/storage/sqlite/migrations/126_focus_context_governance.sql +0 -72
  398. package/dist/src/storage/sqlite/migrations/127_context_object_origin.sql +0 -36
  399. package/dist/src/storage/sqlite/migrations/128_context_extraction.sql +0 -73
  400. package/dist/src/storage/sqlite/migrations/129_focus_versions.sql +0 -51
  401. package/dist/src/storage/sqlite/migrations/130_context_evidence_provenance.sql +0 -18
  402. package/dist/src/storage/sqlite/migrations/131_session_input_contexts.sql +0 -2
  403. package/dist/src/storage/sqlite/migrations/132_transcript_source_context_metadata.sql +0 -34
  404. package/dist/src/storage/sqlite/migrations/133_archive_legacy_work_discovery_profile_facts.sql +0 -11
  405. package/dist/src/storage/sqlite/migrations/134_memory_provenance.sql +0 -18
  406. package/dist/src/storage/sqlite/migrations/135_user_people.sql +0 -59
  407. package/dist/src/storage/sqlite/migrations/136_product_notifications.sql +0 -79
  408. package/dist/src/storage/sqlite/migrations/137_understanding_status_audit.sql +0 -71
  409. package/dist/src/storage/sqlite/migrations/138_device_access.sql +0 -96
  410. package/dist/src/storage/sqlite/migrations/139_turn_outcome_artifact_backfill.sql +0 -231
  411. package/dist/src/storage/sqlite/migrations/140_endpoint_session_bindings.sql +0 -8
  412. package/dist/src/storage/sqlite/migrations/141_device_pairing_approval.sql +0 -17
  413. package/dist/src/storage/sqlite/migrations/142_session_input_instance.sql +0 -1
  414. package/dist/src/storage/sqlite/migrations/143_fixed_session_model.sql +0 -1
  415. package/dist/src/storage/sqlite/migrations/144_execution_environments.sql +0 -59
  416. package/dist/src/storage/sqlite/migrations/145_project_execution_mode.sql +0 -5
  417. package/dist/src/storage/sqlite/migrations/146_understanding_focus_exclusions.sql +0 -9
  418. package/dist/src/storage/sqlite/migrations/147_durable_application_state.sql +0 -39
  419. package/dist/src/storage/sqlite/migrations/148_user_model_foundation.sql +0 -554
  420. package/dist/src/storage/sqlite/migrations/149_separate_source_index_from_memory.sql +0 -18
  421. package/dist/src/storage/sqlite/migrations/150_session_connection_waits.sql +0 -47
  422. package/dist/src/storage/sqlite/migrations/151_proactive_scope_cleanup.sql +0 -6
  423. package/dist/src/storage/sqlite/migrations/152_proactive_scenario_contract.sql +0 -140
  424. package/dist/src/storage/sqlite/migrations/153_browser_control_v2.sql +0 -45
  425. package/dist/src/storage/sqlite/migrations/154_session_clarification_waits.sql +0 -60
  426. package/dist/src/storage/sqlite/migrations/155_browser_extension.sql +0 -120
  427. package/dist/src/storage/sqlite/migrations/156_browser_tab_bindings.sql +0 -14
  428. package/dist/src/storage/sqlite/migrations/157_browser_endpoint_principals.sql +0 -50
  429. package/dist/src/storage/sqlite/migrations/158_browser_native_enrollment.sql +0 -4
  430. package/dist/src/storage/sqlite/migrations/159_proactive_controls.sql +0 -68
  431. package/dist/src/storage/sqlite/migrations/160_proactive_web_push.sql +0 -27
  432. package/dist/src/storage/sqlite/migrations/161_proactive_delivery_and_lifecycle.sql +0 -51
  433. package/dist/src/storage/sqlite/migrations/162_proactive_product.sql +0 -7
  434. package/dist/src/storage/sqlite/migrations/163_proactive_follow_ups.sql +0 -29
  435. package/dist/src/storage/sqlite/migrations/164_browser_sessions.sql +0 -8
  436. package/dist/src/storage/sqlite/migrations/165_device_pairing_target.sql +0 -40
  437. package/dist/src/storage/sqlite/migrations/__tests__/mobile-discussion-source.test.ts +0 -20
  438. package/dist/src/storage/sqlite/migrations/conversation-backup.ts +0 -66
  439. package/dist/src/storage/sqlite/migrations/conversation-key-decoder.ts +0 -50
  440. package/dist/src/storage/sqlite/migrations/conversation-uuid.ts +0 -324
  441. package/dist/src/storage/sqlite/migrations/conversation-windows-owners.ts +0 -71
  442. package/dist/src/storage/sqlite/migrations/discover.ts +0 -52
  443. package/dist/src/storage/sqlite/migrations/errors.ts +0 -32
  444. package/dist/src/storage/sqlite/migrations/runner.ts +0 -204
  445. package/dist/src/storage/sqlite/migrations/types.ts +0 -15
@@ -1,126 +0,0 @@
1
- DROP TABLE IF EXISTS proactive_insights;
2
- DROP TABLE IF EXISTS focus_watches;
3
- DROP TABLE IF EXISTS work_understanding_thread_feedback;
4
- DROP TABLE IF EXISTS work_understanding_thread_evidence;
5
- DROP TABLE IF EXISTS work_understanding_thread_projects;
6
- DROP TABLE IF EXISTS work_understanding_threads;
7
-
8
- CREATE TABLE focus_candidates (
9
- candidate_id TEXT PRIMARY KEY,
10
- canonical_key TEXT NOT NULL UNIQUE,
11
- title TEXT NOT NULL,
12
- summary TEXT NOT NULL,
13
- confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),
14
- evidence_json TEXT NOT NULL DEFAULT '[]',
15
- status TEXT NOT NULL CHECK (status IN ('pending', 'accepted', 'dismissed')),
16
- discovered_at INTEGER NOT NULL,
17
- updated_at INTEGER NOT NULL
18
- );
19
-
20
- CREATE TABLE focus_candidate_projects (
21
- candidate_id TEXT NOT NULL,
22
- project_id TEXT NOT NULL,
23
- created_at INTEGER NOT NULL,
24
- PRIMARY KEY (candidate_id, project_id),
25
- FOREIGN KEY (candidate_id) REFERENCES focus_candidates(candidate_id) ON DELETE CASCADE,
26
- FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
27
- );
28
-
29
- CREATE TABLE focuses (
30
- focus_id TEXT PRIMARY KEY,
31
- title TEXT NOT NULL,
32
- summary TEXT NOT NULL,
33
- status TEXT NOT NULL CHECK (status IN ('active', 'paused', 'completed')),
34
- source TEXT NOT NULL CHECK (source IN ('user', 'discovery')),
35
- source_candidate_id TEXT,
36
- goal_id TEXT,
37
- created_at INTEGER NOT NULL,
38
- updated_at INTEGER NOT NULL,
39
- completed_at INTEGER,
40
- last_activity_at INTEGER,
41
- FOREIGN KEY (source_candidate_id) REFERENCES focus_candidates(candidate_id) ON DELETE SET NULL,
42
- FOREIGN KEY (goal_id) REFERENCES goals(goal_id) ON DELETE SET NULL
43
- );
44
-
45
- CREATE TABLE focus_projects (
46
- focus_id TEXT NOT NULL,
47
- project_id TEXT NOT NULL,
48
- created_at INTEGER NOT NULL,
49
- PRIMARY KEY (focus_id, project_id),
50
- FOREIGN KEY (focus_id) REFERENCES focuses(focus_id) ON DELETE CASCADE,
51
- FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
52
- );
53
-
54
- CREATE TABLE focus_monitors (
55
- monitor_id TEXT PRIMARY KEY,
56
- focus_id TEXT NOT NULL,
57
- kind TEXT NOT NULL CHECK (kind IN ('progress', 'external_changes')),
58
- enabled INTEGER NOT NULL DEFAULT 0 CHECK (enabled IN (0, 1)),
59
- run_state TEXT NOT NULL DEFAULT 'idle' CHECK (run_state IN ('idle', 'queued', 'running', 'failed')),
60
- cadence_json TEXT NOT NULL,
61
- automation_id TEXT,
62
- last_run_id TEXT,
63
- last_run_at INTEGER,
64
- next_run_at INTEGER,
65
- last_meaningful_result_at INTEGER,
66
- last_error TEXT,
67
- consecutive_failures INTEGER NOT NULL DEFAULT 0,
68
- created_at INTEGER NOT NULL,
69
- updated_at INTEGER NOT NULL,
70
- UNIQUE (focus_id, kind),
71
- FOREIGN KEY (focus_id) REFERENCES focuses(focus_id) ON DELETE CASCADE,
72
- FOREIGN KEY (automation_id) REFERENCES automations(automation_id) ON DELETE SET NULL
73
- );
74
-
75
- CREATE TABLE focus_activities (
76
- activity_id TEXT PRIMARY KEY,
77
- focus_id TEXT NOT NULL,
78
- monitor_id TEXT,
79
- type TEXT NOT NULL CHECK (type IN (
80
- 'created', 'updated', 'paused', 'resumed', 'completed',
81
- 'monitor_enabled', 'monitor_disabled', 'run_started', 'run_no_change',
82
- 'run_failed', 'insight_created', 'insight_dismissed', 'insight_approved'
83
- )),
84
- summary TEXT NOT NULL,
85
- details_json TEXT NOT NULL DEFAULT '{}',
86
- created_at INTEGER NOT NULL,
87
- FOREIGN KEY (focus_id) REFERENCES focuses(focus_id) ON DELETE CASCADE,
88
- FOREIGN KEY (monitor_id) REFERENCES focus_monitors(monitor_id) ON DELETE SET NULL
89
- );
90
-
91
- CREATE TABLE focus_insights (
92
- insight_id TEXT PRIMARY KEY,
93
- focus_id TEXT NOT NULL,
94
- monitor_id TEXT NOT NULL,
95
- run_id TEXT NOT NULL,
96
- kind TEXT NOT NULL CHECK (kind IN ('progress', 'external_changes')),
97
- title TEXT NOT NULL,
98
- summary TEXT NOT NULL,
99
- why_it_matters TEXT NOT NULL,
100
- next_action TEXT NOT NULL,
101
- evidence_json TEXT NOT NULL,
102
- content_hash TEXT NOT NULL,
103
- status TEXT NOT NULL CHECK (status IN ('unread', 'dismissed', 'approved')),
104
- value_score REAL NOT NULL DEFAULT 0,
105
- value_reasons_json TEXT NOT NULL DEFAULT '[]',
106
- created_at INTEGER NOT NULL,
107
- updated_at INTEGER NOT NULL,
108
- UNIQUE (monitor_id, content_hash),
109
- FOREIGN KEY (focus_id) REFERENCES focuses(focus_id) ON DELETE CASCADE,
110
- FOREIGN KEY (monitor_id) REFERENCES focus_monitors(monitor_id) ON DELETE CASCADE
111
- );
112
-
113
- CREATE INDEX idx_focus_candidates_status
114
- ON focus_candidates(status, updated_at DESC);
115
- CREATE INDEX idx_focuses_status_activity
116
- ON focuses(status, last_activity_at DESC, updated_at DESC);
117
- CREATE UNIQUE INDEX idx_focuses_source_candidate
118
- ON focuses(source_candidate_id) WHERE source_candidate_id IS NOT NULL;
119
- CREATE INDEX idx_focus_monitors_focus
120
- ON focus_monitors(focus_id, enabled, updated_at DESC);
121
- CREATE INDEX idx_focus_monitors_automation
122
- ON focus_monitors(automation_id);
123
- CREATE INDEX idx_focus_activities_focus
124
- ON focus_activities(focus_id, created_at DESC);
125
- CREATE INDEX idx_focus_insights_focus
126
- ON focus_insights(focus_id, status, created_at DESC);
@@ -1,9 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS home_attention_acknowledgements (
2
- subject_kind TEXT NOT NULL CHECK (subject_kind IN ('automation_run', 'workflow_run')),
3
- subject_id TEXT NOT NULL,
4
- acknowledged_at INTEGER NOT NULL,
5
- PRIMARY KEY (subject_kind, subject_id)
6
- );
7
-
8
- CREATE INDEX IF NOT EXISTS idx_home_attention_acknowledged_at
9
- ON home_attention_acknowledgements(acknowledged_at DESC);
@@ -1,71 +0,0 @@
1
- DROP TABLE IF EXISTS focus_insights;
2
- DROP TABLE IF EXISTS focus_activities;
3
- DROP TABLE IF EXISTS focus_monitors;
4
- DROP TABLE IF EXISTS focus_projects;
5
- DROP TABLE IF EXISTS focuses;
6
- DROP TABLE IF EXISTS focus_candidate_projects;
7
- DROP TABLE IF EXISTS focus_candidates;
8
-
9
- CREATE TABLE proactive_events (
10
- event_id TEXT PRIMARY KEY,
11
- type TEXT NOT NULL,
12
- schema_version INTEGER NOT NULL CHECK (schema_version > 0),
13
- source_kind TEXT NOT NULL,
14
- source_id TEXT NOT NULL,
15
- device_id TEXT,
16
- subject_kind TEXT NOT NULL,
17
- subject_id TEXT NOT NULL,
18
- actor_kind TEXT NOT NULL CHECK (actor_kind IN ('user', 'agent', 'system', 'integration')),
19
- actor_id TEXT,
20
- workspace_id TEXT NOT NULL,
21
- project_id TEXT,
22
- agent_id TEXT,
23
- occurred_at TEXT NOT NULL,
24
- observed_at TEXT NOT NULL,
25
- correlation_id TEXT NOT NULL,
26
- causation_id TEXT,
27
- dedupe_key TEXT NOT NULL UNIQUE,
28
- sensitivity TEXT NOT NULL CHECK (sensitivity IN ('public', 'personal', 'confidential', 'restricted')),
29
- payload_json TEXT NOT NULL,
30
- routed_at TEXT
31
- );
32
-
33
- CREATE TABLE proactive_signal_batches (
34
- batch_id TEXT PRIMARY KEY,
35
- scenario_key TEXT NOT NULL,
36
- scenario_version INTEGER NOT NULL CHECK (scenario_version > 0),
37
- aggregation_key TEXT NOT NULL,
38
- window_started_at TEXT NOT NULL,
39
- window_ends_at TEXT NOT NULL,
40
- ready_at TEXT NOT NULL,
41
- status TEXT NOT NULL CHECK (status IN (
42
- 'collecting', 'ready', 'processing', 'processed', 'ignored',
43
- 'failed_retryable', 'failed_permanent', 'expired'
44
- )),
45
- event_count INTEGER NOT NULL DEFAULT 0 CHECK (event_count >= 0),
46
- created_at TEXT NOT NULL,
47
- updated_at TEXT NOT NULL
48
- );
49
-
50
- CREATE TABLE proactive_batch_events (
51
- batch_id TEXT NOT NULL,
52
- event_id TEXT NOT NULL,
53
- added_at TEXT NOT NULL,
54
- PRIMARY KEY (batch_id, event_id),
55
- FOREIGN KEY (batch_id) REFERENCES proactive_signal_batches(batch_id) ON DELETE CASCADE,
56
- FOREIGN KEY (event_id) REFERENCES proactive_events(event_id) ON DELETE CASCADE
57
- );
58
-
59
- CREATE INDEX idx_proactive_events_type_observed
60
- ON proactive_events(type, observed_at DESC);
61
- CREATE INDEX idx_proactive_events_subject
62
- ON proactive_events(subject_kind, subject_id, occurred_at DESC);
63
- CREATE INDEX idx_proactive_events_project
64
- ON proactive_events(project_id, occurred_at DESC) WHERE project_id IS NOT NULL;
65
- CREATE INDEX idx_proactive_events_correlation
66
- ON proactive_events(correlation_id);
67
- CREATE INDEX idx_proactive_batches_ready
68
- ON proactive_signal_batches(status, ready_at);
69
- CREATE UNIQUE INDEX idx_proactive_collecting_batch
70
- ON proactive_signal_batches(scenario_key, aggregation_key)
71
- WHERE status = 'collecting';
@@ -1,69 +0,0 @@
1
- CREATE TABLE proactive_scenarios (
2
- scenario_key TEXT PRIMARY KEY,
3
- version INTEGER NOT NULL CHECK (version > 0),
4
- title TEXT NOT NULL,
5
- description TEXT NOT NULL,
6
- base_prompt TEXT NOT NULL,
7
- base_template_version INTEGER NOT NULL CHECK (base_template_version > 0),
8
- event_types_json TEXT NOT NULL,
9
- condition_json TEXT,
10
- aggregation TEXT NOT NULL CHECK (aggregation IN ('subject', 'project', 'workspace')),
11
- debounce_seconds INTEGER NOT NULL CHECK (debounce_seconds >= 0),
12
- max_window_seconds INTEGER NOT NULL CHECK (max_window_seconds > 0),
13
- created_at TEXT NOT NULL,
14
- updated_at TEXT NOT NULL
15
- );
16
-
17
- CREATE TABLE proactive_scenario_subscriptions (
18
- subscription_id TEXT PRIMARY KEY,
19
- scenario_key TEXT NOT NULL,
20
- workspace_id TEXT NOT NULL,
21
- scope_kind TEXT NOT NULL CHECK (scope_kind IN ('workspace', 'project')),
22
- scope_id TEXT NOT NULL,
23
- enabled INTEGER NOT NULL DEFAULT 0 CHECK (enabled IN (0, 1)),
24
- active_prompt_revision_id TEXT,
25
- created_at TEXT NOT NULL,
26
- updated_at TEXT NOT NULL,
27
- UNIQUE (scenario_key, workspace_id, scope_kind, scope_id),
28
- FOREIGN KEY (scenario_key) REFERENCES proactive_scenarios(scenario_key) ON DELETE CASCADE
29
- );
30
-
31
- CREATE TABLE proactive_prompt_revisions (
32
- revision_id TEXT PRIMARY KEY,
33
- subscription_id TEXT NOT NULL,
34
- revision INTEGER NOT NULL CHECK (revision > 0),
35
- status TEXT NOT NULL CHECK (status IN ('draft', 'published', 'retired')),
36
- base_template_version INTEGER NOT NULL CHECK (base_template_version > 0),
37
- user_instructions TEXT NOT NULL,
38
- content_hash TEXT NOT NULL,
39
- created_at TEXT NOT NULL,
40
- published_at TEXT,
41
- UNIQUE (subscription_id, revision),
42
- FOREIGN KEY (subscription_id) REFERENCES proactive_scenario_subscriptions(subscription_id) ON DELETE CASCADE
43
- );
44
-
45
- CREATE INDEX idx_proactive_subscriptions_enabled
46
- ON proactive_scenario_subscriptions(enabled, workspace_id, scenario_key);
47
- CREATE INDEX idx_proactive_prompt_revisions_subscription
48
- ON proactive_prompt_revisions(subscription_id, status, revision DESC);
49
-
50
- ALTER TABLE proactive_signal_batches ADD COLUMN subscription_id TEXT NOT NULL DEFAULT '';
51
- DROP INDEX idx_proactive_collecting_batch;
52
- CREATE UNIQUE INDEX idx_proactive_collecting_batch
53
- ON proactive_signal_batches(subscription_id, scenario_key, aggregation_key)
54
- WHERE status = 'collecting';
55
-
56
- INSERT INTO proactive_scenarios VALUES
57
- ('project_delivery_risk', 1, 'Project delivery risk', 'Detect credible risks to a project commitment.',
58
- 'Identify material changes that create supported schedule, scope, dependency, capacity, or ownership risk. Ignore routine activity and unsupported absence-of-activity claims.',
59
- 1, '["project.updated.v1","work_item.status_changed.v1","work_item.updated.v1"]', NULL,
60
- 'project', 300, 1800, datetime('now'), datetime('now')),
61
- ('blocked_work', 1, 'Blocked work', 'Find work that needs a decision, dependency, or owner intervention.',
62
- 'Confirm that work is truly blocked, identify the blocking object and downstream impact, then propose the smallest supported intervention.',
63
- 1, '["work_item.status_changed.v1","work_item.updated.v1"]',
64
- '{"op":"any","conditions":[{"op":"eq","field":"payload.after.status","value":"blocked"},{"op":"changed","field":"payload.dependencyIds"}]}',
65
- 'project', 180, 900, datetime('now'), datetime('now')),
66
- ('automation_failure_impact', 1, 'Automation failure impact', 'Explain whether a terminal automation failure affects user outcomes.',
67
- 'Classify the failure, distinguish completed from incomplete work, connect it to a user outcome, and request only supported recovery decisions. Do not repeat raw stack traces.',
68
- 1, '["automation.run_failed.v1"]', NULL,
69
- 'subject', 60, 300, datetime('now'), datetime('now'));
@@ -1,55 +0,0 @@
1
- CREATE TABLE proactive_context_snapshots (
2
- snapshot_id TEXT PRIMARY KEY,
3
- batch_id TEXT NOT NULL,
4
- content_json TEXT NOT NULL,
5
- evidence_ids_json TEXT NOT NULL,
6
- created_at TEXT NOT NULL,
7
- FOREIGN KEY (batch_id) REFERENCES proactive_signal_batches(batch_id) ON DELETE CASCADE
8
- );
9
-
10
- CREATE TABLE proactive_runs (
11
- run_id TEXT PRIMARY KEY,
12
- batch_id TEXT NOT NULL UNIQUE,
13
- subscription_id TEXT NOT NULL,
14
- scenario_key TEXT NOT NULL,
15
- scenario_version INTEGER NOT NULL,
16
- prompt_revision_id TEXT,
17
- context_snapshot_id TEXT,
18
- status TEXT NOT NULL CHECK (status IN ('running', 'completed', 'discarded', 'retryable', 'failed')),
19
- attempt INTEGER NOT NULL DEFAULT 1 CHECK (attempt > 0),
20
- lease_owner TEXT,
21
- lease_expires_at TEXT,
22
- model_ref TEXT,
23
- raw_output TEXT,
24
- error_message TEXT,
25
- next_attempt_at TEXT,
26
- started_at TEXT NOT NULL,
27
- completed_at TEXT,
28
- updated_at TEXT NOT NULL,
29
- FOREIGN KEY (batch_id) REFERENCES proactive_signal_batches(batch_id) ON DELETE CASCADE,
30
- FOREIGN KEY (subscription_id) REFERENCES proactive_scenario_subscriptions(subscription_id) ON DELETE CASCADE,
31
- FOREIGN KEY (prompt_revision_id) REFERENCES proactive_prompt_revisions(revision_id),
32
- FOREIGN KEY (context_snapshot_id) REFERENCES proactive_context_snapshots(snapshot_id)
33
- );
34
-
35
- CREATE TABLE proactive_insights (
36
- insight_id TEXT PRIMARY KEY,
37
- run_id TEXT NOT NULL UNIQUE,
38
- subscription_id TEXT NOT NULL,
39
- scenario_key TEXT NOT NULL,
40
- title TEXT NOT NULL,
41
- summary TEXT NOT NULL,
42
- why_now TEXT NOT NULL,
43
- impact TEXT NOT NULL,
44
- recommendation TEXT NOT NULL,
45
- urgency TEXT NOT NULL CHECK (urgency IN ('low', 'medium', 'high', 'critical')),
46
- confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),
47
- value_score REAL NOT NULL CHECK (value_score >= 0 AND value_score <= 1),
48
- evidence_ids_json TEXT NOT NULL,
49
- created_at TEXT NOT NULL,
50
- FOREIGN KEY (run_id) REFERENCES proactive_runs(run_id) ON DELETE CASCADE,
51
- FOREIGN KEY (subscription_id) REFERENCES proactive_scenario_subscriptions(subscription_id) ON DELETE CASCADE
52
- );
53
-
54
- CREATE INDEX idx_proactive_runs_status_lease ON proactive_runs(status, next_attempt_at, lease_expires_at, updated_at);
55
- CREATE INDEX idx_proactive_insights_created ON proactive_insights(created_at DESC);
@@ -1,45 +0,0 @@
1
- CREATE TABLE proactive_inbox_items (
2
- inbox_item_id TEXT PRIMARY KEY,
3
- insight_id TEXT NOT NULL UNIQUE,
4
- status TEXT NOT NULL CHECK (status IN ('unread', 'read', 'snoozed', 'resolved')),
5
- snoozed_until TEXT,
6
- resolution TEXT,
7
- created_at TEXT NOT NULL,
8
- updated_at TEXT NOT NULL,
9
- FOREIGN KEY (insight_id) REFERENCES proactive_insights(insight_id) ON DELETE CASCADE
10
- );
11
-
12
- CREATE TABLE proactive_decisions (
13
- decision_id TEXT PRIMARY KEY,
14
- inbox_item_id TEXT NOT NULL,
15
- choice TEXT NOT NULL,
16
- note TEXT NOT NULL,
17
- created_at TEXT NOT NULL,
18
- FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE
19
- );
20
-
21
- CREATE TABLE proactive_delivery_outbox (
22
- delivery_id TEXT PRIMARY KEY,
23
- inbox_item_id TEXT NOT NULL UNIQUE,
24
- status TEXT NOT NULL CHECK (status IN ('pending', 'delivering', 'delivered', 'retryable', 'failed')),
25
- attempt INTEGER NOT NULL DEFAULT 0 CHECK (attempt >= 0),
26
- next_attempt_at TEXT NOT NULL,
27
- lease_expires_at TEXT,
28
- error_message TEXT,
29
- created_at TEXT NOT NULL,
30
- delivered_at TEXT,
31
- updated_at TEXT NOT NULL,
32
- FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE
33
- );
34
-
35
- CREATE TABLE proactive_feedback (
36
- feedback_id TEXT PRIMARY KEY,
37
- inbox_item_id TEXT NOT NULL,
38
- rating TEXT NOT NULL CHECK (rating IN ('useful', 'not_useful')),
39
- note TEXT NOT NULL,
40
- created_at TEXT NOT NULL,
41
- FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE
42
- );
43
-
44
- CREATE INDEX idx_proactive_inbox_status ON proactive_inbox_items(status, updated_at DESC);
45
- CREATE INDEX idx_proactive_outbox_ready ON proactive_delivery_outbox(status, next_attempt_at);
@@ -1,14 +0,0 @@
1
- ALTER TABLE proactive_insights ADD COLUMN work_done TEXT NOT NULL DEFAULT '';
2
- ALTER TABLE proactive_insights ADD COLUMN decision_json TEXT;
3
-
4
- CREATE TABLE proactive_instruction_feedback (
5
- instruction_id TEXT PRIMARY KEY,
6
- inbox_item_id TEXT NOT NULL,
7
- prompt_revision_id TEXT NOT NULL,
8
- instruction TEXT NOT NULL,
9
- created_at TEXT NOT NULL,
10
- FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE,
11
- FOREIGN KEY (prompt_revision_id) REFERENCES proactive_prompt_revisions(revision_id)
12
- );
13
-
14
- CREATE INDEX idx_proactive_instruction_item ON proactive_instruction_feedback(inbox_item_id, created_at DESC);
@@ -1,13 +0,0 @@
1
- INSERT OR IGNORE INTO proactive_scenario_subscriptions (
2
- subscription_id,
3
- scenario_key,
4
- workspace_id,
5
- scope_kind,
6
- scope_id,
7
- enabled,
8
- created_at,
9
- updated_at
10
- ) VALUES
11
- ('default-project-delivery-risk', 'project_delivery_risk', 'default', 'workspace', 'default', 1, datetime('now'), datetime('now')),
12
- ('default-blocked-work', 'blocked_work', 'default', 'workspace', 'default', 1, datetime('now'), datetime('now')),
13
- ('default-automation-failure-impact', 'automation_failure_impact', 'default', 'workspace', 'default', 1, datetime('now'), datetime('now'));
@@ -1,5 +0,0 @@
1
- UPDATE proactive_scenarios
2
- SET condition_json = '{"op":"neq","field":"payload.after.status","value":"blocked"}',
3
- version = version + 1,
4
- updated_at = datetime('now')
5
- WHERE scenario_key = 'project_delivery_risk';
@@ -1,13 +0,0 @@
1
- CREATE TABLE connector_sync_policies (
2
- connection_id TEXT PRIMARY KEY,
3
- scan_enabled INTEGER NOT NULL DEFAULT 1 CHECK(scan_enabled IN (0, 1)),
4
- proactive_enabled INTEGER NOT NULL DEFAULT 0 CHECK(proactive_enabled IN (0, 1)),
5
- interval_minutes INTEGER CHECK(interval_minutes IS NULL OR interval_minutes BETWEEN 5 AND 1440),
6
- allowed_scenario_keys_json TEXT NOT NULL DEFAULT '[]',
7
- revision INTEGER NOT NULL DEFAULT 1,
8
- updated_at INTEGER NOT NULL,
9
- FOREIGN KEY(connection_id) REFERENCES connector_connections(id) ON DELETE CASCADE
10
- );
11
-
12
- CREATE INDEX idx_connector_sync_policies_proactive
13
- ON connector_sync_policies(proactive_enabled, connection_id);
@@ -1,29 +0,0 @@
1
- INSERT INTO proactive_scenarios (
2
- scenario_key,
3
- version,
4
- title,
5
- description,
6
- base_prompt,
7
- base_template_version,
8
- event_types_json,
9
- condition_json,
10
- aggregation,
11
- debounce_seconds,
12
- max_window_seconds,
13
- created_at,
14
- updated_at
15
- ) VALUES (
16
- 'meeting_preparation',
17
- 1,
18
- 'Meeting preparation',
19
- 'Prepare for an upcoming meeting using authorized calendar and internal context.',
20
- 'Assess whether the upcoming meeting needs preparation. Produce a concise brief only when it adds material value. Connect calendar facts to goals, notes, and user understanding only when the evidence explicitly supports the relationship. Never invent attendees, intent, commitments, or missing context.',
21
- 1,
22
- '["connected_source.calendar_window.v1"]',
23
- NULL,
24
- 'subject',
25
- 60,
26
- 300,
27
- datetime('now'),
28
- datetime('now')
29
- );
@@ -1,4 +0,0 @@
1
- ALTER TABLE proactive_insights ADD COLUMN content_fingerprint TEXT;
2
-
3
- CREATE INDEX idx_proactive_insights_fingerprint
4
- ON proactive_insights(subscription_id, scenario_key, content_fingerprint, created_at DESC);
@@ -1,64 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS discussion_captures (
2
- id TEXT PRIMARY KEY,
3
- client_request_id TEXT NOT NULL UNIQUE,
4
- note_id TEXT NOT NULL UNIQUE,
5
- project_id TEXT,
6
- audio_attachment_id TEXT,
7
- status TEXT NOT NULL CHECK (status IN (
8
- 'awaiting_upload',
9
- 'queued',
10
- 'transcribing',
11
- 'analyzing',
12
- 'review_required',
13
- 'completed',
14
- 'failed',
15
- 'cancelled'
16
- )),
17
- failed_stage TEXT,
18
- capture_mode TEXT NOT NULL CHECK (capture_mode IN ('solo', 'conversation')),
19
- consent_confirmed INTEGER NOT NULL DEFAULT 0,
20
- language_hint TEXT,
21
- duration_ms INTEGER,
22
- mime_type TEXT,
23
- audio_size_bytes INTEGER,
24
- audio_sha256 TEXT,
25
- transcript_raw TEXT,
26
- transcript_sha256 TEXT,
27
- transcript_language TEXT,
28
- stt_provider TEXT,
29
- analysis_json TEXT,
30
- analysis_version INTEGER NOT NULL DEFAULT 0,
31
- analysis_input_hash TEXT,
32
- analyzer_model_ref TEXT,
33
- review_json TEXT,
34
- review_revision INTEGER NOT NULL DEFAULT 0,
35
- attempt_count INTEGER NOT NULL DEFAULT 0,
36
- next_attempt_at INTEGER,
37
- lease_owner TEXT,
38
- lease_expires_at INTEGER,
39
- last_error_code TEXT,
40
- last_error_message TEXT,
41
- created_at INTEGER NOT NULL,
42
- updated_at INTEGER NOT NULL,
43
- completed_at INTEGER,
44
- reviewed_at INTEGER,
45
- audio_deleted_at INTEGER,
46
- FOREIGN KEY (note_id) REFERENCES notes(note_id) ON DELETE CASCADE,
47
- FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE SET NULL
48
- );
49
-
50
- CREATE INDEX IF NOT EXISTS idx_discussion_captures_queue
51
- ON discussion_captures(status, next_attempt_at, created_at);
52
-
53
- CREATE INDEX IF NOT EXISTS idx_discussion_captures_project
54
- ON discussion_captures(project_id, updated_at DESC);
55
-
56
- CREATE TABLE IF NOT EXISTS discussion_action_conversions (
57
- discussion_id TEXT NOT NULL,
58
- action_id TEXT NOT NULL,
59
- work_item_id TEXT NOT NULL UNIQUE,
60
- created_at INTEGER NOT NULL,
61
- PRIMARY KEY (discussion_id, action_id),
62
- FOREIGN KEY (discussion_id) REFERENCES discussion_captures(id) ON DELETE CASCADE,
63
- FOREIGN KEY (work_item_id) REFERENCES work_items(id) ON DELETE CASCADE
64
- );
@@ -1,29 +0,0 @@
1
- INSERT OR IGNORE INTO proactive_scenarios (
2
- scenario_key,
3
- version,
4
- title,
5
- description,
6
- base_prompt,
7
- base_template_version,
8
- event_types_json,
9
- condition_json,
10
- aggregation,
11
- debounce_seconds,
12
- max_window_seconds,
13
- created_at,
14
- updated_at
15
- ) VALUES (
16
- 'discussion_follow_up',
17
- 1,
18
- 'Discussion follow-up',
19
- 'Identify useful next steps after a user-reviewed discussion.',
20
- 'Assess whether the reviewed discussion needs a concise follow-up suggestion. Prioritize missing owners, missing dates, unresolved questions, and material risks. Use only authorized context, never invent commitments or people, and never perform external actions automatically.',
21
- 1,
22
- '["discussion.completed.v1"]',
23
- NULL,
24
- 'subject',
25
- 60,
26
- 300,
27
- datetime('now'),
28
- datetime('now')
29
- );
@@ -1,15 +0,0 @@
1
- ALTER TABLE task_outcomes ADD COLUMN project_id TEXT;
2
- ALTER TABLE task_outcomes ADD COLUMN goal_id TEXT;
3
- ALTER TABLE task_outcomes ADD COLUMN work_item_id TEXT;
4
- ALTER TABLE task_outcomes ADD COLUMN origin TEXT;
5
- ALTER TABLE task_outcomes ADD COLUMN trigger_kind TEXT;
6
- ALTER TABLE task_outcomes ADD COLUMN parent_run_id TEXT;
7
- ALTER TABLE task_outcomes ADD COLUMN next_action TEXT;
8
- ALTER TABLE task_outcomes ADD COLUMN needs_user INTEGER NOT NULL DEFAULT 0;
9
- ALTER TABLE task_outcomes ADD COLUMN context_trace_id TEXT;
10
-
11
- CREATE INDEX idx_task_outcomes_project_updated
12
- ON task_outcomes(project_id, updated_at DESC);
13
-
14
- CREATE INDEX idx_task_outcomes_work_item_updated
15
- ON task_outcomes(work_item_id, updated_at DESC);
@@ -1,10 +0,0 @@
1
- CREATE TABLE project_monitoring_policies (
2
- project_id TEXT PRIMARY KEY,
3
- mode TEXT NOT NULL CHECK (mode IN ('observe', 'ask_before_action', 'auto_low_risk')),
4
- quiet_hours_json TEXT,
5
- allowed_actions_json TEXT NOT NULL DEFAULT '[]',
6
- confidence_threshold REAL NOT NULL DEFAULT 0.75 CHECK (confidence_threshold >= 0 AND confidence_threshold <= 1),
7
- created_at INTEGER NOT NULL,
8
- updated_at INTEGER NOT NULL,
9
- FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
10
- );