@askexenow/exe-os 0.9.153 → 0.9.155

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 (270) hide show
  1. package/deploy/compose/.env.example +25 -39
  2. package/deploy/compose/cloudflared/config.yml.example +29 -0
  3. package/deploy/compose/docker-compose.yml +94 -0
  4. package/deploy/compose/gateway.json +11 -1
  5. package/deploy/compose/generate-env.ts +18 -4
  6. package/deploy/compose/init-db.sql +55 -0
  7. package/dist/{active-agent-HDUT3T3I.js → active-agent-GHJBTJRF.js} +4 -4
  8. package/dist/{active-agent-XHERKXH6.js → active-agent-RY74REEW.js} +4 -4
  9. package/dist/{agentic-ontology-GMK3MB3U.js → agentic-ontology-FP67RCR6.js} +1 -1
  10. package/dist/{backfill-metadata-PPI5QFYW.js → backfill-metadata-W7FUQRD7.js} +5 -5
  11. package/dist/{background-jobs-IUB22CRF.js → background-jobs-XYVQT4HN.js} +2 -2
  12. package/dist/{behaviors-JG75DNG3.js → behaviors-KA64SSPT.js} +4 -4
  13. package/dist/bin/age-ontology-load.js +2 -2
  14. package/dist/bin/agentic-ontology-backfill.js +7 -7
  15. package/dist/bin/agentic-reflection-backfill.js +8 -8
  16. package/dist/bin/agentic-semantic-label.js +7 -7
  17. package/dist/bin/backfill-conversations.js +7 -7
  18. package/dist/bin/backfill-responses.js +7 -7
  19. package/dist/bin/backfill-vectors.js +9 -9
  20. package/dist/bin/bulk-sync-postgres.js +8 -8
  21. package/dist/bin/cc-doctor.js +3 -3
  22. package/dist/bin/cleanup-stale-review-tasks.js +11 -11
  23. package/dist/bin/cli.js +18 -18
  24. package/dist/bin/exe-agent-config.js +4 -4
  25. package/dist/bin/exe-agent.js +9 -9
  26. package/dist/bin/exe-assign.js +9 -9
  27. package/dist/bin/exe-boot.js +18 -18
  28. package/dist/bin/exe-call.js +5 -5
  29. package/dist/bin/exe-cloud.js +7 -7
  30. package/dist/bin/exe-dispatch.js +11 -11
  31. package/dist/bin/exe-doctor.js +1 -1
  32. package/dist/bin/exe-export-behaviors.js +8 -8
  33. package/dist/bin/exe-forget.js +7 -7
  34. package/dist/bin/exe-gateway.js +8 -8
  35. package/dist/bin/exe-healthcheck.js +3 -3
  36. package/dist/bin/exe-heartbeat.js +11 -11
  37. package/dist/bin/exe-kill.js +14 -14
  38. package/dist/bin/exe-launch-agent.js +12 -12
  39. package/dist/bin/exe-new-employee.js +8 -8
  40. package/dist/bin/exe-pending-messages.js +12 -12
  41. package/dist/bin/exe-pending-notifications.js +11 -11
  42. package/dist/bin/exe-pending-reviews.js +11 -11
  43. package/dist/bin/exe-rename.js +5 -5
  44. package/dist/bin/exe-review.js +13 -13
  45. package/dist/bin/exe-search.js +6 -6
  46. package/dist/bin/exe-session-cleanup.js +17 -18
  47. package/dist/bin/exe-settings.js +7 -7
  48. package/dist/bin/exe-start-codex.js +12 -12
  49. package/dist/bin/exe-start-opencode.js +9 -9
  50. package/dist/bin/exe-status.js +12 -12
  51. package/dist/bin/exe-support.js +3 -3
  52. package/dist/bin/exe-team.js +4 -4
  53. package/dist/bin/git-sweep.js +11 -11
  54. package/dist/bin/graph-backfill.js +6 -6
  55. package/dist/bin/graph-export.js +6 -6
  56. package/dist/bin/install.js +7 -7
  57. package/dist/bin/intercom-check.js +4 -4
  58. package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
  59. package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
  60. package/dist/bin/scan-tasks.js +11 -11
  61. package/dist/bin/setup.js +2 -2
  62. package/dist/bin/shard-migrate.js +6 -6
  63. package/dist/bin/stack-update.js +2 -2
  64. package/dist/{branding-EHDA3CCK.js → branding-YUEILP4B.js} +1 -1
  65. package/dist/{capacity-monitor-5IVGAQ34.js → capacity-monitor-WAZTZAR5.js} +12 -12
  66. package/dist/{catchup-brief-HFJR32Q3.js → catchup-brief-PKETW4ND.js} +13 -13
  67. package/dist/{chunk-HZNQYDAN.js → chunk-23UPL4NU.js} +3 -3
  68. package/dist/{chunk-ZGKU4PMY.js → chunk-2X5G7F5C.js} +3 -3
  69. package/dist/{chunk-EYQ3DHHI.js → chunk-3AN3RTUT.js} +8 -8
  70. package/dist/{chunk-SGLVCPZP.js → chunk-452JBQHH.js} +1 -1
  71. package/dist/{chunk-TOWAZ5IV.js → chunk-4GXRETYL.js} +16 -1
  72. package/dist/{chunk-SFV2XRPY.js → chunk-4ZQDR3MI.js} +1 -1
  73. package/dist/{chunk-DW6P7UVY.js → chunk-66QQPSWI.js} +2 -2
  74. package/dist/{chunk-PMCXWAVQ.js → chunk-6F46227N.js} +6 -6
  75. package/dist/{chunk-UHL4QL5E.js → chunk-77QEF6FR.js} +2 -2
  76. package/dist/{chunk-Q7GVSS2J.js → chunk-7G44AU2D.js} +1 -1
  77. package/dist/{chunk-LIJC4CRF.js → chunk-7VIH6LOQ.js} +2 -2
  78. package/dist/{chunk-L5WTOR3T.js → chunk-7XRGVVG6.js} +3 -3
  79. package/dist/{chunk-AFMQR776.js → chunk-A6LSJC2O.js} +1 -1
  80. package/dist/{chunk-3TXOH3SJ.js → chunk-A7KEWR6S.js} +1 -1
  81. package/dist/{chunk-4RKL53PD.js → chunk-AK7S4GRC.js} +25 -18
  82. package/dist/{chunk-4IEQIUBZ.js → chunk-BRHV6CJT.js} +2 -2
  83. package/dist/{chunk-BPBUSSYF.js → chunk-CGLSVN6N.js} +9 -9
  84. package/dist/{chunk-GJMHN45Z.js → chunk-CK5ZKW25.js} +1 -1
  85. package/dist/{chunk-K4KAPZC7.js → chunk-CMFLJNP6.js} +1 -1
  86. package/dist/{chunk-6YUACQQA.js → chunk-CTOQYEKJ.js} +1 -1
  87. package/dist/{chunk-UPAEAL6K.js → chunk-CXGOW4EJ.js} +3 -3
  88. package/dist/{chunk-6HFZ2KUC.js → chunk-DH65L4XI.js} +1 -1
  89. package/dist/{chunk-W6SKR3HZ.js → chunk-E2O7YYDS.js} +2 -2
  90. package/dist/{chunk-MBYJEE3B.js → chunk-EVB53OQD.js} +23 -11
  91. package/dist/{chunk-H5STRY47.js → chunk-F7ITFLVR.js} +1 -1
  92. package/dist/{chunk-WPNWFI4A.js → chunk-FOG7AEEO.js} +2 -2
  93. package/dist/{chunk-OEPEY47B.js → chunk-G2RRAFCH.js} +1 -1
  94. package/dist/{chunk-EYQIEK5M.js → chunk-GUCKE3GK.js} +1 -1
  95. package/dist/{chunk-KIUU4PNX.js → chunk-H2CFBUGF.js} +1 -1
  96. package/dist/{chunk-VB23RNNI.js → chunk-HBPFK6AO.js} +1 -1
  97. package/dist/{chunk-WZMS6X56.js → chunk-HDQJMTBG.js} +2 -2
  98. package/dist/{chunk-JUM3EUB2.js → chunk-HF6TVN2J.js} +6 -6
  99. package/dist/{chunk-M37FGM3X.js → chunk-HH6ZCDZH.js} +2 -2
  100. package/dist/{chunk-YOH3ABTS.js → chunk-INWPOOB6.js} +1 -1
  101. package/dist/{chunk-CBLNQNWT.js → chunk-IRVLV6C5.js} +1 -1
  102. package/dist/{chunk-EHXOWGQG.js → chunk-IXJ4SLKR.js} +2 -2
  103. package/dist/{chunk-ODEGQCWW.js → chunk-J73N5EJ6.js} +5 -5
  104. package/dist/{chunk-UQE5R5PM.js → chunk-JFEFVLLD.js} +7 -7
  105. package/dist/{chunk-LM7TQYLW.js → chunk-JTHPKHKC.js} +1 -1
  106. package/dist/{chunk-VJW3E5KW.js → chunk-JYYWHPQC.js} +8 -8
  107. package/dist/{chunk-RAMU6E5T.js → chunk-KL5VDEBT.js} +1 -1
  108. package/dist/{chunk-BV2JVO2U.js → chunk-KPB5SN3Q.js} +1 -1
  109. package/dist/{chunk-OQYZQR24.js → chunk-KZXC3G3P.js} +2 -2
  110. package/dist/{chunk-MNIJA5BL.js → chunk-LVWXGZER.js} +1 -1
  111. package/dist/{chunk-JJA6F6NA.js → chunk-LWABYGNF.js} +1 -1
  112. package/dist/{chunk-SJKOILTX.js → chunk-MBXAWOYB.js} +1 -1
  113. package/dist/{chunk-4PDXCEXT.js → chunk-OCFYT3LE.js} +50 -9
  114. package/dist/{chunk-GCNWCYJI.js → chunk-ONKIWA3R.js} +2 -2
  115. package/dist/{chunk-WLSSSDAR.js → chunk-PELAHAJR.js} +1 -1
  116. package/dist/{chunk-IWGGTD5D.js → chunk-PY7QM2C7.js} +3 -3
  117. package/dist/{chunk-YABPRFBT.js → chunk-Q46X2YPY.js} +4 -4
  118. package/dist/{chunk-PC6Y4ATU.js → chunk-Q55XPOXU.js} +1 -1
  119. package/dist/{chunk-25NSQUZ3.js → chunk-RTNRPBQP.js} +10 -10
  120. package/dist/{chunk-EOO32RJZ.js → chunk-RVSGXGWG.js} +1 -1
  121. package/dist/{chunk-CF4DZKKE.js → chunk-RZE4KMRO.js} +2 -2
  122. package/dist/{chunk-V4MKR32F.js → chunk-S6DDN7IS.js} +2 -2
  123. package/dist/{chunk-BR5UVRA2.js → chunk-SEENMPG7.js} +2 -2
  124. package/dist/{chunk-EOU4ZLRZ.js → chunk-SNN634YS.js} +1 -1
  125. package/dist/{chunk-LWJ4AMMY.js → chunk-T5YT64SZ.js} +1 -1
  126. package/dist/{chunk-NNT2ZNMC.js → chunk-TJEETRHD.js} +1 -1
  127. package/dist/{chunk-3ZU7RTMF.js → chunk-TM3WWKNB.js} +42 -29
  128. package/dist/{chunk-AMVDQ7HH.js → chunk-U56WZR5E.js} +6 -6
  129. package/dist/{chunk-U3B3TVLQ.js → chunk-U5GTF2JP.js} +1 -1
  130. package/dist/{chunk-XQC5BNCJ.js → chunk-UWUF5NWA.js} +7 -7
  131. package/dist/{chunk-CO2SF5SB.js → chunk-V5Y323LO.js} +1 -1
  132. package/dist/{chunk-XMRDT4PB.js → chunk-WZTQUBIE.js} +1 -1
  133. package/dist/{chunk-RLCZBSUB.js → chunk-X347L57O.js} +12 -0
  134. package/dist/{chunk-ICKEGWWP.js → chunk-X5O3FKRU.js} +1 -1
  135. package/dist/{chunk-4MN44ORL.js → chunk-XIGJOVTD.js} +1 -1
  136. package/dist/{chunk-5U5MI4VH.js → chunk-XIZR2YLR.js} +88 -90
  137. package/dist/{chunk-7WEVNBV2.js → chunk-ZIJR3H2O.js} +2 -2
  138. package/dist/{chunk-5NSTNICM.js → chunk-ZPM2RMK2.js} +3 -3
  139. package/dist/{code-context-index-I5A7I4JQ.js → code-context-index-XZ22G57G.js} +4 -4
  140. package/dist/{conversation-wiki-populator-RSJ44BRO.js → conversation-wiki-populator-HVROKOEU.js} +1 -1
  141. package/dist/{crdt-sync-3VQP2ISB.js → crdt-sync-5JERNXAI.js} +1 -1
  142. package/dist/{crm-bridge-4QZRMOF7.js → crm-bridge-BVTB6LZK.js} +1 -1
  143. package/dist/{crm-webhook-SOUYMO3X.js → crm-webhook-DGL6XEOQ.js} +2 -2
  144. package/dist/{cto-delegation-gate-UGCMXYAO.js → cto-delegation-gate-UFSXT2CA.js} +10 -10
  145. package/dist/{daemon-auth-F47P6HTC.js → daemon-auth-H4EJ7KAQ.js} +2 -2
  146. package/dist/{daemon-orchestration-MD34RKQZ.js → daemon-orchestration-IP2LHJJK.js} +13 -13
  147. package/dist/{db-backup-W56YOLMC.js → db-backup-7UOCAPHO.js} +2 -2
  148. package/dist/{exe-drift-L5ZHO3CZ.js → exe-drift-FNK7OXMY.js} +4 -4
  149. package/dist/{exe-export-UDQU7MMM.js → exe-export-LLKDWX7F.js} +6 -6
  150. package/dist/{exe-import-OY42LQL4.js → exe-import-XVAR7ZVC.js} +6 -6
  151. package/dist/{exe-key-FC67RNXI.js → exe-key-E3YOJ2ME.js} +3 -3
  152. package/dist/{exe-org-OOO7KJVZ.js → exe-org-FEX66BTG.js} +2 -2
  153. package/dist/{fast-db-init-TLOT2K43.js → fast-db-init-SMQC6S3C.js} +1 -1
  154. package/dist/gateway/index.js +12 -12
  155. package/dist/{git-staleness-MSTOMG55.js → git-staleness-HE6QCRSC.js} +3 -3
  156. package/dist/{git-task-sweep-D4IKRGCV.js → git-task-sweep-NWHG3FWG.js} +11 -11
  157. package/dist/{global-procedures-ISPSC4B5.js → global-procedures-KNA62DIE.js} +4 -4
  158. package/dist/{graph-auto-extract-D4I7DF2S.js → graph-auto-extract-4EZVBWQN.js} +3 -3
  159. package/dist/{hook-integrity-SA7S2SNI.js → hook-integrity-P3Z3HKMR.js} +1 -1
  160. package/dist/hooks/bug-report-worker.js +12 -12
  161. package/dist/hooks/codex-stop-task-finalizer.js +12 -12
  162. package/dist/hooks/commit-complete.js +13 -13
  163. package/dist/hooks/error-recall.js +7 -7
  164. package/dist/hooks/exe-heartbeat-hook.js +4 -4
  165. package/dist/hooks/ingest-worker.js +5 -5
  166. package/dist/hooks/ingest.js +12 -12
  167. package/dist/hooks/instructions-loaded.js +5 -5
  168. package/dist/hooks/notification.js +5 -5
  169. package/dist/hooks/post-compact.js +12 -12
  170. package/dist/hooks/post-tool-combined.js +5 -5
  171. package/dist/hooks/pre-compact.js +17 -17
  172. package/dist/hooks/pre-tool-use.js +38 -16
  173. package/dist/hooks/prompt-submit.js +61 -22
  174. package/dist/hooks/session-end.js +21 -21
  175. package/dist/hooks/session-start.js +9 -9
  176. package/dist/hooks/stop.js +19 -19
  177. package/dist/hooks/subagent-stop.js +12 -12
  178. package/dist/hooks/summary-worker.js +20 -20
  179. package/dist/index.js +21 -21
  180. package/dist/{installer-SPQDAGPW.js → installer-4GPRFPIU.js} +6 -6
  181. package/dist/{installer-4YIOBAFV.js → installer-MMXK6EHQ.js} +6 -6
  182. package/dist/{installer-3YHQ5DJZ.js → installer-TAFFG7WH.js} +6 -6
  183. package/dist/{key-backup-status-ORNMJEEA.js → key-backup-status-KQUGSNVJ.js} +1 -1
  184. package/dist/lib/agent-config.js +2 -2
  185. package/dist/lib/cloud-sync.js +6 -6
  186. package/dist/lib/config.js +1 -1
  187. package/dist/lib/consolidation.js +6 -6
  188. package/dist/lib/database.js +3 -3
  189. package/dist/lib/db-daemon-client.js +3 -3
  190. package/dist/lib/db.js +3 -3
  191. package/dist/lib/device-registry.js +1 -1
  192. package/dist/lib/embedder.js +4 -4
  193. package/dist/lib/employee-templates.js +5 -5
  194. package/dist/lib/employees.js +3 -3
  195. package/dist/lib/exe-daemon-client.js +3 -3
  196. package/dist/lib/exe-daemon.js +63 -38
  197. package/dist/lib/hybrid-search.js +6 -6
  198. package/dist/lib/identity.js +3 -3
  199. package/dist/lib/license.js +2 -2
  200. package/dist/lib/messaging.js +11 -11
  201. package/dist/lib/reminders.js +4 -4
  202. package/dist/lib/schedules.js +6 -6
  203. package/dist/lib/skill-learning.js +5 -5
  204. package/dist/lib/store.js +5 -5
  205. package/dist/lib/task-router.js +4 -4
  206. package/dist/lib/tasks.js +11 -11
  207. package/dist/lib/tmux-routing.js +10 -10
  208. package/dist/lib/tmux-transport.js +1 -1
  209. package/dist/lib/token-spend.js +4 -4
  210. package/dist/lib/transport.js +2 -2
  211. package/dist/{license-gate-J5YN264E.js → license-gate-OAPGTQXF.js} +3 -3
  212. package/dist/mcp/register-tools.js +59 -59
  213. package/dist/mcp/server.js +60 -60
  214. package/dist/mcp/tools/complete-reminder.js +5 -5
  215. package/dist/mcp/tools/create-reminder.js +5 -5
  216. package/dist/mcp/tools/create-task.js +13 -13
  217. package/dist/mcp/tools/deactivate-behavior.js +6 -6
  218. package/dist/mcp/tools/list-reminders.js +5 -5
  219. package/dist/mcp/tools/list-tasks.js +13 -13
  220. package/dist/mcp/tools/send-message.js +13 -13
  221. package/dist/mcp/tools/update-task.js +12 -12
  222. package/dist/{mcp-http-config-JBNX3DAR.js → mcp-http-config-FPHVLE3N.js} +4 -4
  223. package/dist/{memory-cards-SYVGSLXW.js → memory-cards-VYZSCHZR.js} +3 -3
  224. package/dist/{memory-poisoning-defense-T7AC4LZN.js → memory-poisoning-defense-NGJ63VZE.js} +3 -3
  225. package/dist/{memory-queue-NYIGZNCG.js → memory-queue-2SHTE6GU.js} +2 -2
  226. package/dist/{memory-queue-client-YJOLYALV.js → memory-queue-client-M7NHD4GY.js} +5 -5
  227. package/dist/{memory-reflection-FNJU7VFC.js → memory-reflection-XXN375ZD.js} +3 -3
  228. package/dist/{notifications-76XXO4Q7.js → notifications-Z6Q2SEHP.js} +10 -10
  229. package/dist/{orchestration-phase-FXKZYK6R.js → orchestration-phase-D3PNCSUY.js} +2 -2
  230. package/dist/{orchestrator-XAT2JSBT.js → orchestrator-RHJGFMAS.js} +12 -12
  231. package/dist/{plan-limits-IAUNTZUW.js → plan-limits-GCKK3L6F.js} +5 -5
  232. package/dist/{projection-worker-S6LYSY22.js → projection-worker-GHWA6NEA.js} +2 -2
  233. package/dist/{push-notifications-NSYLKFXR.js → push-notifications-VJZFCUFZ.js} +2 -2
  234. package/dist/{reranker-OMADCS3D.js → reranker-JJRY3V3V.js} +2 -2
  235. package/dist/{review-polling-E24XBNSI.js → review-polling-XUIKH7HF.js} +11 -11
  236. package/dist/runtime/index.js +17 -17
  237. package/dist/{session-events-CCXFQRFW.js → session-events-KURSY7LK.js} +11 -11
  238. package/dist/{session-kill-telemetry-TX5NCPUV.js → session-kill-telemetry-PD4UM5FM.js} +4 -4
  239. package/dist/{session-scope-7QCZF3MJ.js → session-scope-5MOCMTAM.js} +10 -10
  240. package/dist/{setup-wizard-FA6YEYER.js → setup-wizard-6SW2ND2B.js} +2 -2
  241. package/dist/{shard-manager-SP4YL5JQ.js → shard-manager-6JBG2K5X.js} +2 -2
  242. package/dist/skill-refinement-JBZRPZKW.js +156 -0
  243. package/dist/{task-enforcement-NITY7TBM.js → task-enforcement-2WCWSZQ3.js} +10 -10
  244. package/dist/{task-scope-YZDSPORL.js → task-scope-HW6BE2PI.js} +10 -10
  245. package/dist/{tasks-crud-W5BFKNUS.js → tasks-crud-WACRTPQK.js} +10 -10
  246. package/dist/{tasks-review-VXMELVLA.js → tasks-review-LIWD4PGN.js} +10 -10
  247. package/dist/{token-budget-LJC7HHKB.js → token-budget-5QD4ZSDX.js} +3 -3
  248. package/dist/{tool-capability-index-OBZXORBP.js → tool-capability-index-LBDYUK6L.js} +1 -1
  249. package/dist/{tool-telemetry-L3WQDRMH.js → tool-telemetry-2VGSVV3J.js} +1 -1
  250. package/dist/tui/App.js +23 -23
  251. package/dist/{tui-data-FQYUPCYX.js → tui-data-UKFAWSNP.js} +10 -10
  252. package/dist/{worker-gate-OZCNSASA.js → worker-gate-NJRW5QYT.js} +2 -2
  253. package/dist/{workflow-engine-DA3AWD45.js → workflow-engine-ICAQJSYT.js} +2 -2
  254. package/package.json +1 -1
  255. package/release-notes.json +190 -190
  256. package/stack.release.json +2 -2
  257. /package/dist/{chunk-YH7VB655.js → chunk-E5PVJXIP.js} +0 -0
  258. /package/dist/{chunk-J2OPV5FE.js → chunk-FMBRO3D7.js} +0 -0
  259. /package/dist/{chunk-VN6UUZNO.js → chunk-J2KP4ZDX.js} +0 -0
  260. /package/dist/{chunk-OU7SLHNA.js → chunk-LKKKOWTH.js} +0 -0
  261. /package/dist/{chunk-BRXDLJBU.js → chunk-LZLXG7TK.js} +0 -0
  262. /package/dist/{chunk-UIOTTKLS.js → chunk-PYDL42BL.js} +0 -0
  263. /package/dist/{chunk-PJCTBGWN.js → chunk-RES22KSZ.js} +0 -0
  264. /package/dist/{core-memory-ONZIJYGR.js → core-memory-QRQ62AZY.js} +0 -0
  265. /package/dist/{entity-boost-LIBVNNXO.js → entity-boost-MDWFYORT.js} +0 -0
  266. /package/dist/{message-queue-client-NTLKYGVO.js → message-queue-client-BJZEA6RV.js} +0 -0
  267. /package/dist/{oauth-server-TOWAZR4K.js → oauth-server-UM2TQJLJ.js} +0 -0
  268. /package/dist/{webhook-pipe-PJOFVBD3.js → webhook-pipe-VSLEA26V.js} +0 -0
  269. /package/dist/{wiki-acl-UE3CRAPQ.js → wiki-acl-RZCXSF5O.js} +0 -0
  270. /package/dist/{wiki-client-MMVRPTPK.js → wiki-client-NZR7RW4I.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  # exe-os VPS stack — example environment variables
2
- # Copy to .env before deployment and replace every CHANGEME_* value.
3
- # Values under # SET_MANUALLY must be provided by the operator.
2
+ # Run `exe-os stack-init` or `node deploy/compose/generate-env.js` to auto-generate
3
+ # all secrets. Or copy to .env and replace CHANGEME_* values manually.
4
4
 
5
5
  # --- Data Layer ---
6
6
  POSTGRES_USER=exe
@@ -13,67 +13,53 @@ CLICKHOUSE_PASSWORD=CHANGEME_CLICKHOUSE_PASSWORD
13
13
 
14
14
  REDIS_PASSWORD=CHANGEME_REDIS_PASSWORD
15
15
 
16
+ # --- GoTrue (shared auth) ---
17
+ GOTRUE_JWT_SECRET=CHANGEME_GOTRUE_JWT_SECRET
18
+ GOTRUE_SITE_URL=https://crm.askexe.com
19
+ GOTRUE_EXTERNAL_URL=https://auth.askexe.com
20
+ GOTRUE_DISABLE_SIGNUP=false
21
+ GOTRUE_MAILER_AUTOCONFIRM=true
22
+
16
23
  # --- CRM ---
17
- CRM_IMAGE_TAG=ghcr.io/askexe/exe-crm:v0.9.2
18
- CRM_SERVER_URL=https://CHANGEME_DOMAIN
24
+ CRM_IMAGE_TAG=ghcr.io/askexe/exe-crm:v0.9.3
25
+ CRM_SERVER_URL=https://crm.askexe.com
19
26
  CRM_APP_SECRET=CHANGEME_CRM_APP_SECRET
27
+ EXE_CRM_ADMIN_TOKEN=CHANGEME_EXE_CRM_ADMIN_TOKEN
20
28
  CRM_HOST_PORT=3000
21
29
 
22
30
  # --- Wiki ---
23
- WIKI_IMAGE_TAG=ghcr.io/askexe/exe-wiki:v0.9.2
31
+ WIKI_IMAGE_TAG=ghcr.io/askexe/exe-wiki:v0.9.4
24
32
  WIKI_DB_SCHEMA=wiki
25
33
  WIKI_VECTOR_DB=postgres
26
34
  WIKI_AUTH_TOKEN=CHANGEME_WIKI_AUTH_TOKEN
35
+ EXE_WIKI_ADMIN_TOKEN=CHANGEME_EXE_WIKI_ADMIN_TOKEN
27
36
  WIKI_JWT_SECRET=CHANGEME_WIKI_JWT_SECRET
28
37
  WIKI_SIG_KEY=CHANGEME_WIKI_SIG_KEY
29
38
  WIKI_SIG_SALT=CHANGEME_WIKI_SIG_SALT
30
39
  WIKI_HOST_PORT=3001
31
40
 
32
- # --- exe-os ---
33
- EXE_OS_IMAGE_TAG=ghcr.io/askexe/exe-os:v0.9.2
41
+ # --- exe-os (daemon) ---
42
+ EXE_OS_IMAGE_TAG=ghcr.io/askexe/exe-os:v0.9.154
34
43
  EXED_MCP_TOKEN=CHANGEME_EXED_MCP_TOKEN
35
44
  EXED_DEVICE_ID=vps-default
36
- # VPS-only: enables cloud/local SQLite -> exe-db Postgres projection.
37
- # Keep false on laptops/dev boxes.
38
45
  EXE_CLOUD_SYNC_TO_POSTGRES=true
46
+ EXE_LICENSE_KEY=CHANGEME_EXE_LICENSE_KEY
39
47
 
40
48
  # --- Gateway ---
41
- GATEWAY_IMAGE_TAG=ghcr.io/askexe/exe-gateway:v0.9.2
49
+ GATEWAY_IMAGE_TAG=ghcr.io/askexe/exe-gateway:v0.9.3
42
50
  EXE_GATEWAY_AUTH_TOKEN=CHANGEME_EXE_GATEWAY_AUTH_TOKEN
43
51
  EXE_GATEWAY_WS_RELAY_AUTH_TOKEN=CHANGEME_EXE_GATEWAY_WS_RELAY_AUTH_TOKEN
44
52
  EXE_GATEWAY_WHATSAPP_VERIFY_TOKEN=CHANGEME_EXE_GATEWAY_WHATSAPP_VERIFY_TOKEN
45
- # SET_MANUALLY
46
- WHATSAPP_ACCESS_TOKEN=CHANGEME_WHATSAPP_ACCESS_TOKEN
47
53
  API_ROUTER_URL=https://gateway.askexe.com
48
- API_ROUTER_KEY=CHANGEME_API_ROUTER_KEY
49
- # BYOK: to use your own API keys instead of the Exe API Router,
50
- # set BYOK_ENABLED=true and provide ANTHROPIC_API_KEY below.
51
- # BYOK_ENABLED=false
52
- # ANTHROPIC_API_KEY=CHANGEME_ANTHROPIC_API_KEY
53
54
  GATEWAY_HTTP_HOST_PORT=3100
54
55
  GATEWAY_WS_HOST_PORT=3101
55
56
 
56
- # --- Monitoring agent (standard for managed customer VPSs) ---
57
- MONITOR_AGENT_IMAGE_TAG=ghcr.io/askexe/exe-monitor-agent:v0.9.2
57
+ # --- Monitoring ---
58
+ MONITOR_HUB_IMAGE_TAG=ghcr.io/askexe/exe-monitor-hub:v0.9.4
59
+ MONITOR_AGENT_IMAGE_TAG=ghcr.io/askexe/exe-monitor-agent:v0.9.4
60
+ EXE_MONITOR_ADMIN_TOKEN=CHANGEME_EXE_MONITOR_ADMIN_TOKEN
58
61
  MONITOR_HUB_URL=https://monitor.askexe.com
59
- # Values copied from monitor.askexe.com when adding a new system.
60
- MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN_FROM_MONITOR_HUB
61
- MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_PUBLIC_KEY_FROM_MONITOR_HUB
62
+ MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN
63
+ MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_KEY
62
64
  MONITOR_AGENT_LISTEN=:45876
63
-
64
- # --- AskExe central monitoring hub auth (AskExe-owned infra only) ---
65
- # Customer VPSs normally run only MONITOR_AGENT_* above. These hub values are
66
- # for monitor.askexe.com on exe-db-jkt.
67
- MONITOR_HUB_PUBLIC_URL=https://monitor.askexe.com
68
- MONITOR_HUB_SOURCE_DIR=/opt/exe-monitor
69
- MONITOR_HUB_HOST_PORT=8090
70
- MONITOR_HUB_DATA_DIR=/opt/exe-monitor-data
71
- MONITOR_TRUSTED_AUTH_HEADER=X-AskExe-User-Email
72
- # Keep false during bootstrap; flip true after the GoTrue auth proxy is live.
73
- MONITOR_DISABLE_PASSWORD_AUTH=false
74
- MONITOR_USER_CREATION=true
75
- MONITOR_SHARE_ALL_SYSTEMS=false
76
-
77
- # --- License ---
78
- # injected by deploy_client
79
- EXE_LICENSE_KEY=CHANGEME_EXE_LICENSE_KEY
65
+ MONITOR_HUB_PORT=8090
@@ -0,0 +1,29 @@
1
+ # Cloudflare Tunnel config — routes *.askexe.com to local services.
2
+ # Copy to config.yml and replace TUNNEL_ID with your tunnel UUID.
3
+ # Create tunnel: cloudflared tunnel create <name>
4
+ # Then copy credentials JSON to this directory.
5
+
6
+ tunnel: CHANGEME_TUNNEL_ID
7
+ credentials-file: /etc/cloudflared/CHANGEME_TUNNEL_ID.json
8
+
9
+ ingress:
10
+ # CRM
11
+ - hostname: crm.CHANGEME_DOMAIN
12
+ service: http://exe-crm:3000
13
+ # Wiki
14
+ - hostname: wiki.CHANGEME_DOMAIN
15
+ service: http://exe-wiki:3001
16
+ # Gateway (WhatsApp, webhooks, pairing)
17
+ - hostname: gateway.CHANGEME_DOMAIN
18
+ service: http://exe-gateway:3100
19
+ # Monitor
20
+ - hostname: monitor.CHANGEME_DOMAIN
21
+ service: http://exe-monitor-hub:8090
22
+ # Auth (GoTrue)
23
+ - hostname: auth.CHANGEME_DOMAIN
24
+ service: http://gotrue:9999
25
+ # exe-os daemon (MCP)
26
+ - hostname: api.CHANGEME_DOMAIN
27
+ service: http://exe-os:8765
28
+ # Catch-all
29
+ - service: http_status:404
@@ -36,6 +36,7 @@ services:
36
36
  PGDATA: /var/lib/postgresql/data/pgdata
37
37
  volumes:
38
38
  - postgres_data:/var/lib/postgresql/data
39
+ - ./init-db.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
39
40
  networks:
40
41
  backend:
41
42
  ipv4_address: 10.42.0.10
@@ -104,6 +105,66 @@ services:
104
105
  driver: json-file
105
106
  options: { max-size: "10m", max-file: "3" }
106
107
 
108
+ gotrue:
109
+ image: supabase/gotrue:v2.172.1@sha256:b0dd7aa28dd1f9a8bd31f136c8b912661f701d9b863171e5843cb08f18f49de4
110
+ container_name: gotrue
111
+ restart: unless-stopped
112
+ depends_on:
113
+ exe-db:
114
+ condition: service_healthy
115
+ env_file:
116
+ - path: .env
117
+ required: false
118
+ environment:
119
+ GOTRUE_DB_DRIVER: postgres
120
+ GOTRUE_DB_DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}?sslmode=disable&search_path=auth
121
+ GOTRUE_SITE_URL: ${GOTRUE_SITE_URL:-https://crm.askexe.com}
122
+ GOTRUE_URI_ALLOW_LIST: ${GOTRUE_URI_ALLOW_LIST:-}
123
+ GOTRUE_JWT_SECRET: ${GOTRUE_JWT_SECRET:?GOTRUE_JWT_SECRET is required}
124
+ GOTRUE_JWT_EXP: ${GOTRUE_JWT_EXP:-3600}
125
+ GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated
126
+ API_EXTERNAL_URL: ${GOTRUE_EXTERNAL_URL:-https://auth.askexe.com}
127
+ GOTRUE_DISABLE_SIGNUP: ${GOTRUE_DISABLE_SIGNUP:-false}
128
+ GOTRUE_MAILER_AUTOCONFIRM: ${GOTRUE_MAILER_AUTOCONFIRM:-true}
129
+ ports:
130
+ - "127.0.0.1:${GOTRUE_HOST_PORT:-9999}:9999"
131
+ networks:
132
+ backend:
133
+ ipv4_address: 10.42.0.13
134
+ healthcheck:
135
+ test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:9999/health"]
136
+ interval: 15s
137
+ timeout: 5s
138
+ start_period: 10s
139
+ retries: 5
140
+ logging:
141
+ driver: json-file
142
+ options: { max-size: "10m", max-file: "3" }
143
+
144
+ exe-monitor-hub:
145
+ image: ${MONITOR_HUB_IMAGE_TAG:-ghcr.io/askexe/exe-monitor-hub:v0.9.4}
146
+ container_name: exe-monitor-hub
147
+ restart: unless-stopped
148
+ environment:
149
+ EXE_MONITOR_ADMIN_TOKEN: ${EXE_MONITOR_ADMIN_TOKEN:-}
150
+ GOTRUE_URL: http://gotrue:9999
151
+ ports:
152
+ - "127.0.0.1:${MONITOR_HUB_PORT:-8090}:8090"
153
+ volumes:
154
+ - monitor_hub_data:/app/pb_data
155
+ networks:
156
+ backend:
157
+ ipv4_address: 10.42.0.14
158
+ healthcheck:
159
+ test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8090/api/health"]
160
+ interval: 30s
161
+ timeout: 5s
162
+ start_period: 15s
163
+ retries: 5
164
+ logging:
165
+ driver: json-file
166
+ options: { max-size: "10m", max-file: "3" }
167
+
107
168
  # ------------------------------------------------------------------
108
169
  # Apps
109
170
  # ------------------------------------------------------------------
@@ -128,6 +189,8 @@ services:
128
189
  EXE_LICENSE_KEY: ${EXE_LICENSE_KEY:?EXE_LICENSE_KEY is required — purchase at https://askexe.com}
129
190
  SERVER_URL: ${CRM_SERVER_URL:-https://crm.askexe.com}
130
191
  APP_SECRET: ${CRM_APP_SECRET:?CRM_APP_SECRET is required}
192
+ EXE_CRM_ADMIN_TOKEN: ${EXE_CRM_ADMIN_TOKEN:-}
193
+ GOTRUE_URL: http://gotrue:9999
131
194
  PG_DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}
132
195
  REDIS_URL: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379
133
196
  CLICKHOUSE_URL: http://${CLICKHOUSE_USER:-exe}:${CLICKHOUSE_PASSWORD:?CLICKHOUSE_PASSWORD is required}@clickhouse:8123/${CLICKHOUSE_DB:-default}
@@ -211,6 +274,8 @@ services:
211
274
  STORAGE_DIR: /app/server/storage
212
275
  DATABASE_URL: postgres://${POSTGRES_USER:-exe}:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}@exe-db:5432/${POSTGRES_DB:-exedb}?schema=${WIKI_DB_SCHEMA:-wiki}
213
276
  AUTH_TOKEN: ${WIKI_AUTH_TOKEN:?WIKI_AUTH_TOKEN is required}
277
+ EXE_WIKI_ADMIN_TOKEN: ${EXE_WIKI_ADMIN_TOKEN:-}
278
+ GOTRUE_URL: http://gotrue:9999
214
279
  JWT_SECRET: ${WIKI_JWT_SECRET:?WIKI_JWT_SECRET is required}
215
280
  SIG_KEY: ${WIKI_SIG_KEY:?WIKI_SIG_KEY is required}
216
281
  SIG_SALT: ${WIKI_SIG_SALT:?WIKI_SIG_SALT is required}
@@ -290,6 +355,7 @@ services:
290
355
  EXE_GATEWAY_PORT: "3100"
291
356
  EXE_GATEWAY_HOST: "127.0.0.1"
292
357
  EXE_GATEWAY_AUTH_TOKEN: ${EXE_GATEWAY_AUTH_TOKEN:?EXE_GATEWAY_AUTH_TOKEN is required}
358
+ GOTRUE_URL: http://gotrue:9999
293
359
  EXE_GATEWAY_WHATSAPP_VERIFY_TOKEN: ${EXE_GATEWAY_WHATSAPP_VERIFY_TOKEN:?EXE_GATEWAY_WHATSAPP_VERIFY_TOKEN is required}
294
360
  EXE_GATEWAY_WS_RELAY_ENABLED: "true"
295
361
  EXE_GATEWAY_WS_RELAY_HOST: "127.0.0.1"
@@ -351,6 +417,32 @@ services:
351
417
  driver: json-file
352
418
  options: { max-size: "10m", max-file: "3" }
353
419
 
420
+ # ------------------------------------------------------------------
421
+ # Infrastructure — Cloudflare Tunnel (replaces nginx + SSL certs)
422
+ # ------------------------------------------------------------------
423
+
424
+ cloudflared:
425
+ image: cloudflare/cloudflared:latest
426
+ container_name: cloudflared
427
+ restart: unless-stopped
428
+ command: tunnel --config /etc/cloudflared/config.yml run
429
+ volumes:
430
+ - ${CLOUDFLARED_CONFIG_DIR:-./cloudflared}:/etc/cloudflared:ro
431
+ networks:
432
+ backend:
433
+ ipv4_address: 10.42.0.31
434
+ frontend:
435
+ ipv4_address: 10.43.0.31
436
+ healthcheck:
437
+ test: ["CMD", "cloudflared", "tunnel", "info", "--output", "json"]
438
+ interval: 30s
439
+ timeout: 5s
440
+ start_period: 15s
441
+ retries: 5
442
+ logging:
443
+ driver: json-file
444
+ options: { max-size: "10m", max-file: "3" }
445
+
354
446
  # ------------------------------------------------------------------
355
447
  # Volumes
356
448
  # ------------------------------------------------------------------
@@ -373,6 +465,8 @@ volumes:
373
465
  driver: local
374
466
  monitor_agent_data:
375
467
  driver: local
468
+ monitor_hub_data:
469
+ driver: local
376
470
 
377
471
  # ------------------------------------------------------------------
378
472
  # Networks
@@ -1 +1,11 @@
1
- {}
1
+ {
2
+ "port": 3100,
3
+ "host": "0.0.0.0",
4
+ "readOnly": false,
5
+ "adapters": {
6
+ "whatsapp": {
7
+ "enabled": false,
8
+ "accounts": []
9
+ }
10
+ }
11
+ }
@@ -5,11 +5,11 @@ const REGISTRY = "ghcr.io/askexe";
5
5
  // own package semver internally, but customer deployments use the tested stack
6
6
  // image alias so one stack manifest can pin the whole release. exe-os/exed is
7
7
  // the exception because the runtime package version is the orchestrator release.
8
- const STACK_IMAGE_TAG = "v0.9.2";
9
- const EXED_RELEASE_TAG = "v0.9.2";
8
+ const STACK_IMAGE_TAG = "v0.9.4";
9
+ const EXED_RELEASE_TAG = "v0.9.154";
10
10
 
11
11
  const POSTGRES_USER = "exe";
12
- const POSTGRES_DB = "default";
12
+ const POSTGRES_DB = "exedb";
13
13
  const CLICKHOUSE_DB = "default";
14
14
  const CLICKHOUSE_USER = "exe";
15
15
  export const CRM_IMAGE_TAG = `${REGISTRY}/exe-crm:${STACK_IMAGE_TAG}`;
@@ -21,6 +21,7 @@ const WIKI_HOST_PORT = "3001";
21
21
  export const EXE_OS_IMAGE_TAG = `${REGISTRY}/exe-os:${EXED_RELEASE_TAG}`;
22
22
  export const GATEWAY_IMAGE_TAG = `${REGISTRY}/exe-gateway:${STACK_IMAGE_TAG}`;
23
23
  export const MONITOR_AGENT_IMAGE_TAG = `${REGISTRY}/exe-monitor-agent:${STACK_IMAGE_TAG}`;
24
+ export const MONITOR_HUB_IMAGE_TAG = `${REGISTRY}/exe-monitor-hub:${STACK_IMAGE_TAG}`;
24
25
  const GATEWAY_HTTP_HOST_PORT = "3100";
25
26
  const GATEWAY_WS_HOST_PORT = "3101";
26
27
  const RANDOM_SECRET_16 = 16;
@@ -56,10 +57,18 @@ export function generateEnv(options: GenerateEnvOptions): string {
56
57
  "",
57
58
  `REDIS_PASSWORD=${randomSecret(RANDOM_SECRET_32)}`,
58
59
  "",
60
+ "# --- GoTrue (shared auth) ---",
61
+ `GOTRUE_JWT_SECRET=${randomSecret(RANDOM_SECRET_48)}`,
62
+ `GOTRUE_SITE_URL=https://crm.${normalizedDomain}`,
63
+ `GOTRUE_EXTERNAL_URL=https://auth.${normalizedDomain}`,
64
+ "GOTRUE_DISABLE_SIGNUP=false",
65
+ "GOTRUE_MAILER_AUTOCONFIRM=true",
66
+ "",
59
67
  "# --- CRM ---",
60
68
  `CRM_IMAGE_TAG=${CRM_IMAGE_TAG}`,
61
69
  `CRM_SERVER_URL=https://${normalizedDomain}`,
62
70
  `CRM_APP_SECRET=${randomSecret(RANDOM_SECRET_48)}`,
71
+ `EXE_CRM_ADMIN_TOKEN=${randomSecret(RANDOM_SECRET_48)}`,
63
72
  `CRM_HOST_PORT=${CRM_HOST_PORT}`,
64
73
  "",
65
74
  "# --- Wiki ---",
@@ -67,6 +76,7 @@ export function generateEnv(options: GenerateEnvOptions): string {
67
76
  `WIKI_DB_SCHEMA=${WIKI_DB_SCHEMA}`,
68
77
  `WIKI_VECTOR_DB=${WIKI_VECTOR_DB}`,
69
78
  `WIKI_AUTH_TOKEN=${randomSecret(RANDOM_SECRET_48)}`,
79
+ `EXE_WIKI_ADMIN_TOKEN=${randomSecret(RANDOM_SECRET_48)}`,
70
80
  `WIKI_JWT_SECRET=${randomSecret(RANDOM_SECRET_48)}`,
71
81
  `WIKI_SIG_KEY=${randomSecret(RANDOM_SECRET_48)}`,
72
82
  `WIKI_SIG_SALT=${randomSecret(RANDOM_SECRET_16)}`,
@@ -95,12 +105,15 @@ export function generateEnv(options: GenerateEnvOptions): string {
95
105
  `GATEWAY_HTTP_HOST_PORT=${GATEWAY_HTTP_HOST_PORT}`,
96
106
  `GATEWAY_WS_HOST_PORT=${GATEWAY_WS_HOST_PORT}`,
97
107
  "",
98
- "# --- Monitoring agent (standard for managed customer VPSs) ---",
108
+ "# --- Monitoring ---",
109
+ `MONITOR_HUB_IMAGE_TAG=${MONITOR_HUB_IMAGE_TAG}`,
99
110
  `MONITOR_AGENT_IMAGE_TAG=${MONITOR_AGENT_IMAGE_TAG}`,
111
+ `EXE_MONITOR_ADMIN_TOKEN=${randomSecret(RANDOM_SECRET_48)}`,
100
112
  `MONITOR_HUB_URL=${DEFAULT_MONITOR_HUB_URL}`,
101
113
  "MONITOR_AGENT_TOKEN=CHANGEME_MONITOR_AGENT_TOKEN_FROM_MONITOR_HUB",
102
114
  "MONITOR_AGENT_KEY=CHANGEME_MONITOR_AGENT_PUBLIC_KEY_FROM_MONITOR_HUB",
103
115
  `MONITOR_AGENT_LISTEN=${DEFAULT_MONITOR_AGENT_LISTEN}`,
116
+ "MONITOR_HUB_PORT=8090",
104
117
  "",
105
118
  "# --- License ---",
106
119
  LICENSE_KEY_COMMENT,
@@ -129,6 +142,7 @@ export function generateExampleEnv(): string {
129
142
  `CRM_IMAGE_TAG=${CRM_IMAGE_TAG}`,
130
143
  "CRM_SERVER_URL=https://CHANGEME_DOMAIN",
131
144
  "CRM_APP_SECRET=CHANGEME_CRM_APP_SECRET",
145
+ "EXE_CRM_ADMIN_TOKEN=CHANGEME_EXE_CRM_ADMIN_TOKEN",
132
146
  `CRM_HOST_PORT=${CRM_HOST_PORT}`,
133
147
  "",
134
148
  "# --- Wiki ---",
@@ -0,0 +1,55 @@
1
+ -- exe-os database initialization — runs on first boot.
2
+ -- Creates the exe superuser, schemas, and extensions.
3
+ -- Idempotent: safe to run multiple times.
4
+
5
+ -- Ensure exe user exists with superuser
6
+ DO $$ BEGIN
7
+ IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'exe') THEN
8
+ CREATE ROLE exe WITH LOGIN SUPERUSER PASSWORD current_setting('app.postgres_password', true);
9
+ ELSE
10
+ ALTER ROLE exe SUPERUSER;
11
+ END IF;
12
+ END $$;
13
+
14
+ -- Create extensions
15
+ CREATE EXTENSION IF NOT EXISTS vector;
16
+ CREATE EXTENSION IF NOT EXISTS pgcrypto;
17
+
18
+ -- Create all schemas
19
+ CREATE SCHEMA IF NOT EXISTS raw;
20
+ CREATE SCHEMA IF NOT EXISTS graph;
21
+ CREATE SCHEMA IF NOT EXISTS gateway;
22
+ CREATE SCHEMA IF NOT EXISTS wiki;
23
+ CREATE SCHEMA IF NOT EXISTS crm;
24
+ CREATE SCHEMA IF NOT EXISTS auth;
25
+
26
+ -- Grant exe full access to all schemas
27
+ DO $$ DECLARE s text; BEGIN
28
+ FOR s IN SELECT schema_name FROM information_schema.schemata
29
+ WHERE schema_name NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
30
+ LOOP
31
+ EXECUTE 'GRANT ALL ON SCHEMA ' || quote_ident(s) || ' TO exe';
32
+ EXECUTE 'GRANT ALL ON ALL TABLES IN SCHEMA ' || quote_ident(s) || ' TO exe';
33
+ EXECUTE 'GRANT ALL ON ALL SEQUENCES IN SCHEMA ' || quote_ident(s) || ' TO exe';
34
+ EXECUTE 'ALTER DEFAULT PRIVILEGES IN SCHEMA ' || quote_ident(s) || ' GRANT ALL ON TABLES TO exe';
35
+ EXECUTE 'ALTER DEFAULT PRIVILEGES IN SCHEMA ' || quote_ident(s) || ' GRANT ALL ON SEQUENCES TO exe';
36
+ END LOOP;
37
+ END $$;
38
+
39
+ -- Create raw.raw_events landing pad
40
+ CREATE TABLE IF NOT EXISTS raw.raw_events (
41
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
42
+ source TEXT NOT NULL,
43
+ source_id TEXT,
44
+ event_type TEXT NOT NULL,
45
+ payload JSONB NOT NULL,
46
+ metadata JSONB,
47
+ timestamp TIMESTAMPTZ DEFAULT now(),
48
+ created_at TIMESTAMPTZ DEFAULT now(),
49
+ processed_at TIMESTAMPTZ,
50
+ error TEXT,
51
+ projections JSONB DEFAULT '{}'::jsonb
52
+ );
53
+
54
+ CREATE INDEX IF NOT EXISTS idx_raw_events_unprocessed ON raw.raw_events (created_at) WHERE processed_at IS NULL;
55
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_raw_events_dedup ON raw.raw_events (source, source_id, event_type);
@@ -5,13 +5,13 @@ import {
5
5
  getAllActiveAgents,
6
6
  resolveActiveAgentFromTmuxSession,
7
7
  writeActiveAgent
8
- } from "./chunk-UHL4QL5E.js";
8
+ } from "./chunk-77QEF6FR.js";
9
9
  import "./chunk-CVYC6DUW.js";
10
10
  import "./chunk-GJV3WDWM.js";
11
- import "./chunk-MBYJEE3B.js";
12
- import "./chunk-EOO32RJZ.js";
11
+ import "./chunk-EVB53OQD.js";
12
+ import "./chunk-RVSGXGWG.js";
13
13
  import "./chunk-FXU7JOXK.js";
14
- import "./chunk-TOWAZ5IV.js";
14
+ import "./chunk-4GXRETYL.js";
15
15
  import "./chunk-LYH5HE24.js";
16
16
  import "./chunk-MLKGABMK.js";
17
17
  export {
@@ -6,13 +6,13 @@ import {
6
6
  getAllActiveAgents,
7
7
  resolveActiveAgentFromTmuxSession,
8
8
  writeActiveAgent
9
- } from "./chunk-UHL4QL5E.js";
9
+ } from "./chunk-77QEF6FR.js";
10
10
  import "./chunk-CVYC6DUW.js";
11
11
  import "./chunk-GJV3WDWM.js";
12
- import "./chunk-MBYJEE3B.js";
13
- import "./chunk-EOO32RJZ.js";
12
+ import "./chunk-EVB53OQD.js";
13
+ import "./chunk-RVSGXGWG.js";
14
14
  import "./chunk-FXU7JOXK.js";
15
- import "./chunk-TOWAZ5IV.js";
15
+ import "./chunk-4GXRETYL.js";
16
16
  import "./chunk-LYH5HE24.js";
17
17
  import "./chunk-MLKGABMK.js";
18
18
  export {
@@ -9,7 +9,7 @@ import {
9
9
  insertOntologyForMemory,
10
10
  ontologyPayload,
11
11
  stableId
12
- } from "./chunk-OU7SLHNA.js";
12
+ } from "./chunk-LKKKOWTH.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
  export {
15
15
  clean,
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  disposeStore,
4
4
  initStore
5
- } from "./chunk-25NSQUZ3.js";
6
- import "./chunk-BRXDLJBU.js";
5
+ } from "./chunk-RTNRPBQP.js";
6
+ import "./chunk-LZLXG7TK.js";
7
7
  import "./chunk-MP2AFCGL.js";
8
8
  import {
9
9
  getClient,
10
10
  getEmployeeNamesByRole,
11
11
  loadEmployeesSync
12
- } from "./chunk-MBYJEE3B.js";
13
- import "./chunk-EOO32RJZ.js";
12
+ } from "./chunk-EVB53OQD.js";
13
+ import "./chunk-RVSGXGWG.js";
14
14
  import "./chunk-FXU7JOXK.js";
15
15
  import "./chunk-6D23UNXU.js";
16
- import "./chunk-TOWAZ5IV.js";
16
+ import "./chunk-4GXRETYL.js";
17
17
  import "./chunk-LYH5HE24.js";
18
18
  import {
19
19
  isMainModule
@@ -8,8 +8,8 @@ import {
8
8
  releaseJobLock,
9
9
  reniceCurrentProcess,
10
10
  startManagedJob
11
- } from "./chunk-6YUACQQA.js";
12
- import "./chunk-TOWAZ5IV.js";
11
+ } from "./chunk-CTOQYEKJ.js";
12
+ import "./chunk-4GXRETYL.js";
13
13
  import "./chunk-LYH5HE24.js";
14
14
  import "./chunk-MLKGABMK.js";
15
15
  export {
@@ -5,11 +5,11 @@ import {
5
5
  listBehaviorsSince,
6
6
  listSharedSkills,
7
7
  storeBehavior
8
- } from "./chunk-EOU4ZLRZ.js";
9
- import "./chunk-MBYJEE3B.js";
10
- import "./chunk-EOO32RJZ.js";
8
+ } from "./chunk-SNN634YS.js";
9
+ import "./chunk-EVB53OQD.js";
10
+ import "./chunk-RVSGXGWG.js";
11
11
  import "./chunk-FXU7JOXK.js";
12
- import "./chunk-TOWAZ5IV.js";
12
+ import "./chunk-4GXRETYL.js";
13
13
  import "./chunk-LYH5HE24.js";
14
14
  import "./chunk-MLKGABMK.js";
15
15
  export {
@@ -5,8 +5,8 @@ import {
5
5
  import {
6
6
  politeBatchPause,
7
7
  startManagedJob
8
- } from "../chunk-6YUACQQA.js";
9
- import "../chunk-TOWAZ5IV.js";
8
+ } from "../chunk-CTOQYEKJ.js";
9
+ import "../chunk-4GXRETYL.js";
10
10
  import "../chunk-LYH5HE24.js";
11
11
  import "../chunk-MLKGABMK.js";
12
12
 
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  insertOntologyForBatch
4
- } from "../chunk-OU7SLHNA.js";
4
+ } from "../chunk-LKKKOWTH.js";
5
5
  import {
6
6
  politeBatchPause,
7
7
  startManagedJob
8
- } from "../chunk-6YUACQQA.js";
8
+ } from "../chunk-CTOQYEKJ.js";
9
9
  import {
10
10
  disposeStore,
11
11
  initStore
12
- } from "../chunk-25NSQUZ3.js";
13
- import "../chunk-BRXDLJBU.js";
12
+ } from "../chunk-RTNRPBQP.js";
13
+ import "../chunk-LZLXG7TK.js";
14
14
  import "../chunk-MP2AFCGL.js";
15
15
  import {
16
16
  getClient
17
- } from "../chunk-MBYJEE3B.js";
18
- import "../chunk-EOO32RJZ.js";
17
+ } from "../chunk-EVB53OQD.js";
18
+ import "../chunk-RVSGXGWG.js";
19
19
  import "../chunk-FXU7JOXK.js";
20
20
  import "../chunk-6D23UNXU.js";
21
- import "../chunk-TOWAZ5IV.js";
21
+ import "../chunk-4GXRETYL.js";
22
22
  import "../chunk-LYH5HE24.js";
23
23
  import "../chunk-MLKGABMK.js";
24
24
 
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  generateReflectionCheckpoints
4
- } from "../chunk-MNIJA5BL.js";
5
- import "../chunk-OU7SLHNA.js";
4
+ } from "../chunk-LVWXGZER.js";
5
+ import "../chunk-LKKKOWTH.js";
6
6
  import {
7
7
  startManagedJob
8
- } from "../chunk-6YUACQQA.js";
8
+ } from "../chunk-CTOQYEKJ.js";
9
9
  import {
10
10
  initStore
11
- } from "../chunk-25NSQUZ3.js";
12
- import "../chunk-BRXDLJBU.js";
11
+ } from "../chunk-RTNRPBQP.js";
12
+ import "../chunk-LZLXG7TK.js";
13
13
  import "../chunk-MP2AFCGL.js";
14
- import "../chunk-MBYJEE3B.js";
15
- import "../chunk-EOO32RJZ.js";
14
+ import "../chunk-EVB53OQD.js";
15
+ import "../chunk-RVSGXGWG.js";
16
16
  import "../chunk-FXU7JOXK.js";
17
17
  import "../chunk-6D23UNXU.js";
18
- import "../chunk-TOWAZ5IV.js";
18
+ import "../chunk-4GXRETYL.js";
19
19
  import "../chunk-LYH5HE24.js";
20
20
  import "../chunk-MLKGABMK.js";
21
21
 
@@ -3,23 +3,23 @@ import {
3
3
  clean,
4
4
  inferSemanticLabel,
5
5
  stableId
6
- } from "../chunk-OU7SLHNA.js";
6
+ } from "../chunk-LKKKOWTH.js";
7
7
  import {
8
8
  politeBatchPause,
9
9
  startManagedJob
10
- } from "../chunk-6YUACQQA.js";
10
+ } from "../chunk-CTOQYEKJ.js";
11
11
  import {
12
12
  initStore
13
- } from "../chunk-25NSQUZ3.js";
14
- import "../chunk-BRXDLJBU.js";
13
+ } from "../chunk-RTNRPBQP.js";
14
+ import "../chunk-LZLXG7TK.js";
15
15
  import "../chunk-MP2AFCGL.js";
16
16
  import {
17
17
  getClient
18
- } from "../chunk-MBYJEE3B.js";
19
- import "../chunk-EOO32RJZ.js";
18
+ } from "../chunk-EVB53OQD.js";
19
+ import "../chunk-RVSGXGWG.js";
20
20
  import "../chunk-FXU7JOXK.js";
21
21
  import "../chunk-6D23UNXU.js";
22
- import "../chunk-TOWAZ5IV.js";
22
+ import "../chunk-4GXRETYL.js";
23
23
  import "../chunk-LYH5HE24.js";
24
24
  import "../chunk-MLKGABMK.js";
25
25
 
@@ -2,24 +2,24 @@
2
2
  import {
3
3
  connectEmbedDaemon,
4
4
  embedViaClient
5
- } from "../chunk-W6SKR3HZ.js";
5
+ } from "../chunk-E2O7YYDS.js";
6
6
  import "../chunk-3H4VU65X.js";
7
- import "../chunk-K4KAPZC7.js";
7
+ import "../chunk-CMFLJNP6.js";
8
8
  import {
9
9
  flushBatch,
10
10
  initStore,
11
11
  writeMemory
12
- } from "../chunk-25NSQUZ3.js";
13
- import "../chunk-BRXDLJBU.js";
12
+ } from "../chunk-RTNRPBQP.js";
13
+ import "../chunk-LZLXG7TK.js";
14
14
  import "../chunk-MP2AFCGL.js";
15
15
  import {
16
16
  getClient,
17
17
  isCoordinatorName
18
- } from "../chunk-MBYJEE3B.js";
19
- import "../chunk-EOO32RJZ.js";
18
+ } from "../chunk-EVB53OQD.js";
19
+ import "../chunk-RVSGXGWG.js";
20
20
  import "../chunk-FXU7JOXK.js";
21
21
  import "../chunk-6D23UNXU.js";
22
- import "../chunk-TOWAZ5IV.js";
22
+ import "../chunk-4GXRETYL.js";
23
23
  import "../chunk-LYH5HE24.js";
24
24
  import {
25
25
  isMainModule