@askexenow/exe-os 0.9.290 → 0.9.292
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.
- package/deploy/compose/.env.customer.example +14 -1
- package/deploy/compose/.env.example +40 -1
- package/deploy/compose/backup.sh +147 -42
- package/deploy/compose/docker-compose.yml +128 -51
- package/deploy/compose/generate-env.ts +31 -0
- package/deploy/compose/setup.sh +11 -2
- package/dist/active-agent-5DCUU6QR.js +28 -0
- package/dist/active-agent-JTTDI66I.js +27 -0
- package/dist/active-agent-NQAHMQSR.js +27 -0
- package/dist/active-agent-QHGHLMYS.js +28 -0
- package/dist/agentic-ontology-7RXZLSZY.js +25 -0
- package/dist/agentic-ontology-BSSNX24R.js +25 -0
- package/dist/backfill-metadata-5I3PAO66.js +600 -0
- package/dist/backfill-metadata-F3KEE7WZ.js +600 -0
- package/dist/background-jobs-PUXOTBD4.js +25 -0
- package/dist/behaviors-AJFFFXT2.js +40 -0
- package/dist/behaviors-RXUKZLER.js +40 -0
- package/dist/bin/age-ontology-load.js +2 -2
- package/dist/bin/agentic-ontology-backfill.js +8 -7
- package/dist/bin/agentic-reflection-backfill.js +9 -8
- package/dist/bin/agentic-semantic-label.js +8 -7
- package/dist/bin/backfill-conversations.js +8 -7
- package/dist/bin/backfill-responses.js +8 -7
- package/dist/bin/backfill-vectors.js +11 -10
- package/dist/bin/bulk-sync-postgres.js +9 -8
- package/dist/bin/cc-doctor.js +7 -6
- package/dist/bin/cleanup-stale-review-tasks.js +13 -12
- package/dist/bin/cli.js +20 -20
- package/dist/bin/exe-agent-config.js +5 -4
- package/dist/bin/exe-agent.js +10 -9
- package/dist/bin/exe-assign.js +10 -9
- package/dist/bin/exe-boot.js +20 -19
- package/dist/bin/exe-call.js +6 -5
- package/dist/bin/exe-cloud.js +8 -7
- package/dist/bin/exe-dispatch.js +13 -12
- package/dist/bin/exe-doctor.js +2 -1
- package/dist/bin/exe-export-behaviors.js +9 -8
- package/dist/bin/exe-forget.js +8 -7
- package/dist/bin/exe-gateway.js +9 -8
- package/dist/bin/exe-healthcheck.js +11 -6
- package/dist/bin/exe-heartbeat.js +13 -12
- package/dist/bin/exe-kill.js +16 -15
- package/dist/bin/exe-launch-agent.js +20 -19
- package/dist/bin/exe-new-employee.js +9 -8
- package/dist/bin/exe-pending-messages.js +14 -13
- package/dist/bin/exe-pending-notifications.js +13 -12
- package/dist/bin/exe-pending-reviews.js +13 -12
- package/dist/bin/exe-rename.js +6 -5
- package/dist/bin/exe-review.js +15 -14
- package/dist/bin/exe-search.js +7 -6
- package/dist/bin/exe-session-cleanup.js +18 -17
- package/dist/bin/exe-settings.js +8 -7
- package/dist/bin/exe-start-codex.js +13 -12
- package/dist/bin/exe-start-opencode.js +10 -9
- package/dist/bin/exe-status.js +14 -13
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +5 -4
- package/dist/bin/exe-watchdog.js +34 -1
- package/dist/bin/git-sweep.js +14 -13
- package/dist/bin/graph-backfill.js +8 -7
- package/dist/bin/graph-export.js +7 -6
- package/dist/bin/import-history.js +10 -9
- package/dist/bin/install-launchd.js +19 -1
- package/dist/bin/install.js +9 -8
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +6 -5
- package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
- package/dist/bin/scan-tasks.js +13 -12
- package/dist/bin/setup.js +2 -2
- package/dist/bin/shard-migrate.js +7 -6
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/branding-RBMRJA5D.js +97 -0
- package/dist/capability-cards-DCWQI3NN.js +89 -0
- package/dist/capability-cards-TQVKK6TE.js +89 -0
- package/dist/capacity-monitor-7YZOMMMP.js +51 -0
- package/dist/capacity-monitor-S6GFT45S.js +51 -0
- package/dist/catchup-brief-DK7OD5DJ.js +175 -0
- package/dist/catchup-brief-J27L7LKR.js +175 -0
- package/dist/catchup-brief-JLMK2IP5.js +175 -0
- package/dist/chunk-2664Y4WA.js +14503 -0
- package/dist/chunk-2FTHXF6X.js +150 -0
- package/dist/chunk-2H2SCCA7.js +221 -0
- package/dist/chunk-2ISUEARV.js +76 -0
- package/dist/chunk-2RU66KAN.js +456 -0
- package/dist/chunk-2SI5Z24A.js +284 -0
- package/dist/chunk-2V6AASHE.js +668 -0
- package/dist/chunk-2ZMQI2J4.js +85 -0
- package/dist/chunk-3ET3QGXG.js +70 -0
- package/dist/chunk-3V6KXHSV.js +203 -0
- package/dist/chunk-3VT5IG2G.js +14439 -0
- package/dist/chunk-3YHG7W74.js +362 -0
- package/dist/chunk-434Z2LFO.js +30 -0
- package/dist/chunk-44SWZWGS.js +231 -0
- package/dist/chunk-4DFENB7E.js +128 -0
- package/dist/chunk-4EA3J7SE.js +333 -0
- package/dist/chunk-4JY5DRY2.js +1350 -0
- package/dist/chunk-5BUPY2ZC.js +81 -0
- package/dist/chunk-5FIQBJ5I.js +735 -0
- package/dist/chunk-5MQ4RUUP.js +244 -0
- package/dist/chunk-6CTHQKUS.js +1186 -0
- package/dist/chunk-6GEEAOFU.js +538 -0
- package/dist/chunk-6JOF37K6.js +1352 -0
- package/dist/chunk-6OAAN25C.js +727 -0
- package/dist/chunk-6S6QFQ33.js +382 -0
- package/dist/chunk-6U2BFODG.js +227 -0
- package/dist/chunk-76QWODZW.js +1119 -0
- package/dist/chunk-7BNDOTRZ.js +1094 -0
- package/dist/chunk-7HBACWKV.js +128 -0
- package/dist/chunk-7IWWRNJI.js +333 -0
- package/dist/chunk-7MH7VI6T.js +280 -0
- package/dist/chunk-7QKQE7J4.js +70 -0
- package/dist/chunk-7U4JXDBV.js +284 -0
- package/dist/chunk-7UF4323L.js +50 -0
- package/dist/chunk-7UUJMSFH.js +348 -0
- package/dist/chunk-7YEOKPZ6.js +185 -0
- package/dist/chunk-7Z3P23BX.js +244 -0
- package/dist/chunk-BK42Z2SX.js +1186 -0
- package/dist/chunk-BREJRA7B.js +171 -0
- package/dist/chunk-C3FMNIJT.js +94 -0
- package/dist/chunk-CCNSV7J5.js +128 -0
- package/dist/chunk-CKFT7GM6.js +128 -0
- package/dist/chunk-CRCB5S7I.js +454 -0
- package/dist/chunk-CSMTQ24E.js +97 -0
- package/dist/chunk-CSXNLHUU.js +185 -0
- package/dist/chunk-D3ELJGEI.js +97 -0
- package/dist/chunk-D6CCJVTB.js +214 -0
- package/dist/chunk-DEVITBD5.js +1079 -0
- package/dist/chunk-DKIFBCKT.js +157 -0
- package/dist/chunk-DRUPHYRL.js +286 -0
- package/dist/chunk-E4XU7EVT.js +1350 -0
- package/dist/chunk-EEZNLI6L.js +240 -0
- package/dist/chunk-EIA6LRM4.js +38 -0
- package/dist/chunk-FBIXI7WC.js +382 -0
- package/dist/chunk-FSQTZ57R.js +4349 -0
- package/dist/chunk-FW75WOTA.js +97 -0
- package/dist/chunk-GDSV52EC.js +85 -0
- package/dist/chunk-GMZTZ4KQ.js +345 -0
- package/dist/chunk-GNKHK5VD.js +1068 -0
- package/dist/chunk-GP3ZHQJO.js +362 -0
- package/dist/chunk-GSVK66OV.js +58 -0
- package/dist/chunk-GY2BY5VF.js +58 -0
- package/dist/chunk-HNDG5ZDJ.js +336 -0
- package/dist/chunk-HTD4AJUF.js +85 -0
- package/dist/chunk-HTU7RDZA.js +127 -0
- package/dist/chunk-HX4PBMY3.js +227 -0
- package/dist/chunk-IC2PIVLM.js +181 -0
- package/dist/chunk-IK3Q7NLP.js +2113 -0
- package/dist/chunk-IL5FQSUQ.js +2142 -0
- package/dist/chunk-ITWU5LJL.js +85 -0
- package/dist/chunk-IUIVLCAO.js +369 -0
- package/dist/chunk-JHJUV633.js +150 -0
- package/dist/chunk-JXOXGBC2.js +262 -0
- package/dist/chunk-KG55JL2G.js +604 -0
- package/dist/chunk-KGT7VT77.js +167 -0
- package/dist/chunk-L2DMZT56.js +210 -0
- package/dist/chunk-L57H26UP.js +33 -0
- package/dist/chunk-L5E3RXLR.js +197 -0
- package/dist/chunk-L5O4MFMV.js +402 -0
- package/dist/chunk-LAB3RQRN.js +204 -0
- package/dist/chunk-LCOPVYU2.js +3293 -0
- package/dist/chunk-LDI633LO.js +2078 -0
- package/dist/chunk-LJONNOFH.js +336 -0
- package/dist/chunk-LKM56CDI.js +2078 -0
- package/dist/chunk-LPO7KLSP.js +14470 -0
- package/dist/chunk-M46T2E3A.js +262 -0
- package/dist/chunk-MBJYQBUX.js +456 -0
- package/dist/chunk-MEWGYH6Z.js +190 -0
- package/dist/chunk-MHGR5CRN.js +731 -0
- package/dist/chunk-MR64FIZU.js +735 -0
- package/dist/chunk-MTRUOIND.js +159 -0
- package/dist/chunk-MUDCJP6B.js +68 -0
- package/dist/chunk-MUQ46NLH.js +3293 -0
- package/dist/chunk-MYVGG2VW.js +204 -0
- package/dist/chunk-NEFF4ATD.js +197 -0
- package/dist/chunk-NOC7GUHJ.js +836 -0
- package/dist/chunk-NOP22U7I.js +33 -0
- package/dist/chunk-OGFEQ264.js +448 -0
- package/dist/chunk-OGV67HHE.js +230 -0
- package/dist/chunk-OQ3CC5N2.js +54 -0
- package/dist/chunk-OTANU4LT.js +297 -0
- package/dist/chunk-P5A77YDA.js +58 -0
- package/dist/chunk-PIOBPKYE.js +377 -0
- package/dist/chunk-POEI5ZRV.js +731 -0
- package/dist/chunk-PS4W2VGW.js +129 -0
- package/dist/chunk-PT3URNVT.js +836 -0
- package/dist/chunk-Q4IL3S44.js +55 -0
- package/dist/chunk-QEDM5BJW.js +240 -0
- package/dist/chunk-QGYRNG7T.js +129 -0
- package/dist/chunk-QHNGZ6X2.js +538 -0
- package/dist/chunk-QOZQ2MYZ.js +42 -0
- package/dist/chunk-QPYEVLED.js +402 -0
- package/dist/chunk-QRTJNSKU.js +133 -0
- package/dist/chunk-R36FAN53.js +488 -0
- package/dist/chunk-R426G4MO.js +290 -0
- package/dist/chunk-RG4OHDY7.js +348 -0
- package/dist/chunk-RHNSYJCT.js +30 -0
- package/dist/chunk-RKYLET7V.js +1352 -0
- package/dist/chunk-RLSEMHP7.js +369 -0
- package/dist/chunk-ROGL26Q2.js +630 -0
- package/dist/chunk-RTC3JHFF.js +345 -0
- package/dist/chunk-RV62SMCL.js +171 -0
- package/dist/chunk-SC4MQTMY.js +192 -0
- package/dist/chunk-SCT6IMMD.js +630 -0
- package/dist/chunk-SOTS4FXN.js +546 -0
- package/dist/chunk-STS5552V.js +448 -0
- package/dist/chunk-SY65TI5X.js +424 -0
- package/dist/chunk-T67ELIV6.js +38 -0
- package/dist/chunk-TBSYE2WW.js +97 -0
- package/dist/chunk-TGRGBM7C.js +1094 -0
- package/dist/chunk-TGTJYERN.js +621 -0
- package/dist/chunk-THWAU77X.js +290 -0
- package/dist/chunk-TM7NUOZ7.js +574 -0
- package/dist/chunk-TNZWNC4O.js +106 -0
- package/dist/chunk-TRSYK4HA.js +1352 -0
- package/dist/chunk-TZIGQLY7.js +123 -0
- package/dist/chunk-U7PCRZEB.js +286 -0
- package/dist/chunk-UCBIETEA.js +373 -0
- package/dist/chunk-UGH4Z3BT.js +50 -0
- package/dist/chunk-UKRCNA3D.js +127 -0
- package/dist/chunk-ULUNIZOZ.js +2113 -0
- package/dist/chunk-UWTIDBMQ.js +411 -0
- package/dist/chunk-VJTS6RGD.js +81 -0
- package/dist/chunk-VLE2Z4JK.js +411 -0
- package/dist/chunk-VOGYUVYX.js +4349 -0
- package/dist/chunk-VPQAXUG4.js +210 -0
- package/dist/chunk-W3TXZRGP.js +1186 -0
- package/dist/chunk-WQKB25AU.js +1119 -0
- package/dist/chunk-WTEVY2WF.js +122 -0
- package/dist/chunk-X5CTZH7W.js +76 -0
- package/dist/chunk-XCZP6I5M.js +167 -0
- package/dist/chunk-XP3DCIAH.js +181 -0
- package/dist/chunk-XRN5MQRN.js +373 -0
- package/dist/chunk-XZXY66KH.js +123 -0
- package/dist/chunk-Y2SP7JYR.js +668 -0
- package/dist/chunk-Y5ZF5OFM.js +280 -0
- package/dist/chunk-YN7XRPQ6.js +546 -0
- package/dist/chunk-YQOOELC3.js +221 -0
- package/dist/chunk-YTKVJJSU.js +379 -0
- package/dist/chunk-YZJZXBPL.js +192 -0
- package/dist/chunk-Z2XRD6SJ.js +377 -0
- package/dist/chunk-ZBD56XE2.js +122 -0
- package/dist/chunk-ZE2XPYEC.js +299 -0
- package/dist/chunk-ZE4E4PMM.js +157 -0
- package/dist/chunk-ZIY6HVAD.js +214 -0
- package/dist/chunk-ZK4VCLCK.js +176 -0
- package/dist/chunk-ZOBV6QWD.js +54 -0
- package/dist/chunk-ZTGID7RE.js +1068 -0
- package/dist/co-activation-BOHQZWKI.js +74 -0
- package/dist/co-activation-KSBQKWYV.js +74 -0
- package/dist/co-occurrence-OSJQ2XQO.js +95 -0
- package/dist/co-occurrence-YKTIFNYA.js +95 -0
- package/dist/code-context-index-43MNXX4H.js +30 -0
- package/dist/conversation-entity-extractor-6PJUN5DP.js +114 -0
- package/dist/conversation-wiki-populator-PDL2SUZJ.js +105 -0
- package/dist/core-memory-TU636T4D.js +110 -0
- package/dist/core-memory-U74QUX6H.js +110 -0
- package/dist/crdt-sync-JTTYSLBV.js +33 -0
- package/dist/crdt-sync-UG3532QN.js +33 -0
- package/dist/crm-webhook-D5JCLN2M.js +10 -0
- package/dist/crm-webhook-Y2BDCVPM.js +10 -0
- package/dist/cto-delegation-gate-7TJT5EOE.js +280 -0
- package/dist/cto-delegation-gate-DCIFDJDX.js +280 -0
- package/dist/daemon-auth-CBMX4H6L.js +13 -0
- package/dist/daemon-orchestration-D5MFCNVH.js +139 -0
- package/dist/daemon-orchestration-XSDZPGYX.js +139 -0
- package/dist/db-backup-77QYAXID.js +37 -0
- package/dist/db-backup-LJVPP5AS.js +37 -0
- package/dist/db-restore-events-GNZS42YO.js +76 -0
- package/dist/doc-graph-extractor-3PI2M2LX.js +133 -0
- package/dist/doc-graph-extractor-CJU6HR2C.js +133 -0
- package/dist/dreaming-5A4MKONF.js +34 -0
- package/dist/dreaming-RFRHTYFN.js +34 -0
- package/dist/entity-boost-WXSBSZW4.js +375 -0
- package/dist/exe-drift-HBLGPMBH.js +70 -0
- package/dist/exe-drift-K7HAX5N4.js +70 -0
- package/dist/exe-export-JSJOEDBE.js +76 -0
- package/dist/exe-export-YVZMMVZZ.js +76 -0
- package/dist/exe-import-BO2GU36V.js +79 -0
- package/dist/exe-import-S6O6JTAB.js +79 -0
- package/dist/exe-key-5C5FYDC7.js +673 -0
- package/dist/exe-key-QVPXEUTV.js +673 -0
- package/dist/exe-org-35QVSGCM.js +73 -0
- package/dist/exe-snapshot-6MFTRMI5.js +338 -0
- package/dist/exe-snapshot-OFWZY3CY.js +338 -0
- package/dist/fast-db-init-E64KKZS2.js +7 -0
- package/dist/fast-db-init-ZSRLXT5Y.js +7 -0
- package/dist/founder-context-QAAWZEZM.js +96 -0
- package/dist/gateway/index.js +13 -12
- package/dist/git-staleness-3PLBSHA3.js +112 -0
- package/dist/git-staleness-XPWBDY2Q.js +112 -0
- package/dist/git-task-sweep-C5DM7CJS.js +42 -0
- package/dist/git-task-sweep-G2MKIFGS.js +42 -0
- package/dist/global-procedures-CGXY2AVS.js +22 -0
- package/dist/global-procedures-WLVOTD2Y.js +22 -0
- package/dist/graph-auto-extract-SAE3GKG5.js +183 -0
- package/dist/graph-auto-extract-ZLKCPSPD.js +183 -0
- package/dist/graph-query-AP5R6ZHO.js +28 -0
- package/dist/graph-rag-ZCJ4X7YL.js +35 -0
- package/dist/hook-integrity-A3NDG7EB.js +89 -0
- package/dist/hooks/bug-report-worker.js +15 -14
- package/dist/hooks/codex-stop-task-finalizer.js +15 -14
- package/dist/hooks/commit-complete.js +16 -15
- package/dist/hooks/error-recall.js +9 -8
- package/dist/hooks/exe-heartbeat-hook.js +6 -5
- package/dist/hooks/ingest-worker.js +5 -5
- package/dist/hooks/ingest.js +13 -12
- package/dist/hooks/instructions-loaded.js +7 -6
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +7 -6
- package/dist/hooks/post-compact.js +15 -14
- package/dist/hooks/post-tool-combined.js +7 -7
- package/dist/hooks/pre-compact.js +20 -19
- package/dist/hooks/pre-tool-use.js +28 -20
- package/dist/hooks/prompt-submit.js +28 -27
- package/dist/hooks/session-end.js +25 -24
- package/dist/hooks/session-start.js +27 -16
- package/dist/hooks/stop.js +22 -21
- package/dist/hooks/subagent-stop.js +20 -14
- package/dist/hooks/summary-worker.js +22 -21
- package/dist/index.js +23 -22
- package/dist/installer-ALESUE7P.js +298 -0
- package/dist/installer-APCDG6FF.js +40 -0
- package/dist/installer-BYIQKENA.js +40 -0
- package/dist/installer-JNHPJNO2.js +344 -0
- package/dist/installer-KWTPZCUH.js +40 -0
- package/dist/installer-MUKDPCXL.js +344 -0
- package/dist/installer-NR636CAL.js +298 -0
- package/dist/installer-O2S3ZLAH.js +344 -0
- package/dist/installer-T5XSDLBK.js +298 -0
- package/dist/key-backup-status-2EPRIAXU.js +39 -0
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +7 -6
- package/dist/lib/config.js +1 -1
- package/dist/lib/consolidation.js +8 -7
- package/dist/lib/database.js +4 -3
- package/dist/lib/db-daemon-client.js +3 -3
- package/dist/lib/db.js +4 -3
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embed-worker.js +6 -4
- package/dist/lib/embedder.js +4 -4
- package/dist/lib/employee-templates.js +6 -5
- package/dist/lib/employees.js +4 -3
- package/dist/lib/exe-daemon-client.js +3 -3
- package/dist/lib/exe-daemon.js +164 -63
- package/dist/lib/hybrid-search.js +7 -6
- package/dist/lib/identity.js +4 -3
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +13 -12
- package/dist/lib/reminders.js +5 -4
- package/dist/lib/schedules.js +7 -6
- package/dist/lib/session-registry.js +10 -5
- package/dist/lib/skill-learning.js +8 -7
- package/dist/lib/store.js +6 -5
- package/dist/lib/task-router.js +5 -4
- package/dist/lib/tasks.js +14 -13
- package/dist/lib/tmux-routing.js +12 -11
- package/dist/lib/token-spend.js +5 -4
- package/dist/license-gate-O2LLJ6LS.js +16 -0
- package/dist/mcp/register-tools.js +69 -69
- package/dist/mcp/server.js +121 -90
- package/dist/mcp/tools/complete-reminder.js +6 -5
- package/dist/mcp/tools/create-reminder.js +6 -5
- package/dist/mcp/tools/create-task.js +16 -15
- package/dist/mcp/tools/deactivate-behavior.js +9 -8
- package/dist/mcp/tools/list-reminders.js +6 -5
- package/dist/mcp/tools/list-tasks.js +16 -15
- package/dist/mcp/tools/send-message.js +15 -14
- package/dist/mcp/tools/update-task.js +15 -14
- package/dist/mcp-http-config-XI53TYZL.js +29 -0
- package/dist/mcp-http-config-YQ3KWB73.js +29 -0
- package/dist/memory-cards-2F6RFUT5.js +180 -0
- package/dist/memory-cards-LLUWHHT3.js +180 -0
- package/dist/memory-graph-extractor-IT6HYWWM.js +22 -0
- package/dist/memory-graph-extractor-LZUQWU7P.js +22 -0
- package/dist/memory-poisoning-defense-45AMNLDK.js +224 -0
- package/dist/memory-poisoning-defense-FFO3YUFP.js +224 -0
- package/dist/memory-queue-HSHWXVZC.js +19 -0
- package/dist/memory-queue-client-AJ2WHEEE.js +16 -0
- package/dist/memory-reflection-JGA6ULGJ.js +244 -0
- package/dist/memory-reflection-ZT4ST2SS.js +244 -0
- package/dist/message-queue-client-SANA7URQ.js +92 -0
- package/dist/notifications-S5QQ3SBU.js +47 -0
- package/dist/notifications-YBJCZJDR.js +47 -0
- package/dist/oauth-server-VEMBOSS3.js +437 -0
- package/dist/orchestration-events-CYDARUFL.js +27 -0
- package/dist/orchestration-events-F67I3TG6.js +27 -0
- package/dist/orchestration-phase-EMDEZHIU.js +23 -0
- package/dist/orchestrator-B4CUAA7M.js +35 -0
- package/dist/orchestrator-GBONJR6S.js +35 -0
- package/dist/pipeline-router-FKCP3RCU.js +15 -0
- package/dist/pipeline-router-LIQTRMQW.js +15 -0
- package/dist/plan-limits-BQ2CEB66.js +28 -0
- package/dist/plan-limits-H63HOJ4H.js +28 -0
- package/dist/project-boot-4CLI3CLL.js +299 -0
- package/dist/project-boot-VSMQJDDI.js +299 -0
- package/dist/projection-worker-55EFFXOK.js +1084 -0
- package/dist/projection-worker-IQ55BIX7.js +1084 -0
- package/dist/prospective-memory-E7WBD5V4.js +232 -0
- package/dist/prospective-memory-GE7TW6EW.js +232 -0
- package/dist/push-notifications-CV5UD5CC.js +15 -0
- package/dist/reranker-PZWHSEGQ.js +19 -0
- package/dist/reranker-WSJEPXIY.js +19 -0
- package/dist/reranker-ZBN2GKIO.js +19 -0
- package/dist/retrieval-health-HBFTJ5M3.js +11 -0
- package/dist/retrieval-health-M2OE7USG.js +11 -0
- package/dist/review-polling-BBOASCWL.js +126 -0
- package/dist/review-polling-WTJZTCTD.js +126 -0
- package/dist/runtime/index.js +19 -18
- package/dist/session-events-POJ3YCUQ.js +38 -0
- package/dist/session-events-QVNSNSQN.js +38 -0
- package/dist/session-kill-telemetry-65TJ5XV7.js +31 -0
- package/dist/session-kill-telemetry-OC34JTYX.js +31 -0
- package/dist/session-scope-3WDVXSJH.js +88 -0
- package/dist/session-scope-KRQL3PIP.js +88 -0
- package/dist/setup-wizard-FE2MBSZS.js +12 -0
- package/dist/setup-wizard-UUAEUY3X.js +12 -0
- package/dist/shard-manager-P5ZJH4AX.js +30 -0
- package/dist/skill-refinement-5MCWYJW4.js +159 -0
- package/dist/skill-refinement-TRSMFCKK.js +159 -0
- package/dist/stack-update-OGFSAV6F.js +80 -0
- package/dist/steward-gate-L43S6CSV.js +15 -0
- package/dist/steward-gate-LCR46RJV.js +15 -0
- package/dist/support-outbox-QPQQK7F7.js +547 -0
- package/dist/task-enforcement-DRWNGNLH.js +506 -0
- package/dist/task-enforcement-STQBU5AM.js +506 -0
- package/dist/task-scope-A2IJJQQS.js +37 -0
- package/dist/task-scope-X3JOBCZV.js +37 -0
- package/dist/tasks-crud-66VBOQTI.js +79 -0
- package/dist/tasks-crud-ZD24ZQOL.js +79 -0
- package/dist/tasks-notify-EPWV6YRP.js +40 -0
- package/dist/tasks-notify-GHPMBTB3.js +40 -0
- package/dist/tasks-review-P6ZVW3ZV.js +49 -0
- package/dist/tasks-review-VXJVJ7ZT.js +49 -0
- package/dist/telemetry-upload-KCE2IT6P.js +741 -0
- package/dist/telemetry-upload-ZNAMKKNS.js +741 -0
- package/dist/token-budget-GHUZSDOD.js +86 -0
- package/dist/token-budget-O7B4NGY3.js +86 -0
- package/dist/tool-capability-index-3OZFBAC3.js +10 -0
- package/dist/tool-telemetry-EWAC3F75.js +17 -0
- package/dist/tool-telemetry-IO6L62QY.js +17 -0
- package/dist/tui/App.js +25 -24
- package/dist/tui-data-2KSB36YG.js +260 -0
- package/dist/tui-data-YVJ72ZVD.js +260 -0
- package/dist/webhook-pipe-PAPBITL4.js +114 -0
- package/dist/wiki-acl-HTRRAQGV.js +111 -0
- package/dist/wiki-acl-MNG2ROWJ.js +111 -0
- package/dist/wiki-client-Q4O6EMTP.js +157 -0
- package/dist/worker-gate-EVQTUUIF.js +21 -0
- package/dist/worker-gate-XKPDQQY4.js +21 -0
- package/dist/workflow-engine-JYGEDGTL.js +28 -0
- package/dist/workflow-engine-UBTXKWRV.js +28 -0
- package/dist/worktree-VPSXFHXP.js +28 -0
- package/dist/worktree-ZH5AT35X.js +28 -0
- package/dist/worktree-sweep-BIUP4BGY.js +21 -0
- package/dist/worktree-sweep-KEHR4NFP.js +21 -0
- package/package.json +2 -2
- package/release-notes.json +101 -101
- package/stack.release.json +8 -0
|
@@ -29,9 +29,31 @@ services:
|
|
|
29
29
|
image: ${EXE_DB_IMAGE:-pgvector/pgvector:pg16}
|
|
30
30
|
container_name: exe-db
|
|
31
31
|
restart: unless-stopped
|
|
32
|
-
env_file:
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
33
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
34
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
35
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
36
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
37
|
+
#
|
|
38
|
+
# WAL archiving / PITR (bug 5176aa4e). OPT-IN, first-boot-safe: defaults
|
|
39
|
+
# keep archive_mode=off so a fresh stack boots exactly as before (RPO = the
|
|
40
|
+
# nightly pg_dump). Set PG_ARCHIVE_MODE=on in .env to enable continuous WAL
|
|
41
|
+
# archiving for point-in-time recovery — archived segments land in the
|
|
42
|
+
# pg_wal_archive volume (back it up off-box via backup.sh --upload-r2).
|
|
43
|
+
# archive_command is a no-op (/bin/true) unless overridden so the server
|
|
44
|
+
# never wedges if the archive target is unwritable.
|
|
45
|
+
command:
|
|
46
|
+
- postgres
|
|
47
|
+
- -c
|
|
48
|
+
- wal_level=${PG_WAL_LEVEL:-replica}
|
|
49
|
+
- -c
|
|
50
|
+
- archive_mode=${PG_ARCHIVE_MODE:-off}
|
|
51
|
+
- -c
|
|
52
|
+
- archive_command=${PG_ARCHIVE_COMMAND:-test ! -d /var/lib/postgresql/wal_archive || cp %p /var/lib/postgresql/wal_archive/%f || /bin/true}
|
|
53
|
+
- -c
|
|
54
|
+
- archive_timeout=${PG_ARCHIVE_TIMEOUT:-300}
|
|
55
|
+
- -c
|
|
56
|
+
- max_wal_senders=${PG_MAX_WAL_SENDERS:-3}
|
|
35
57
|
environment:
|
|
36
58
|
POSTGRES_USER: ${POSTGRES_USER:-exe}
|
|
37
59
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
|
|
@@ -39,6 +61,9 @@ services:
|
|
|
39
61
|
PGDATA: /var/lib/postgresql/data/pgdata
|
|
40
62
|
volumes:
|
|
41
63
|
- postgres_data:/var/lib/postgresql/data
|
|
64
|
+
# WAL archive destination for PITR. Lives on a named volume so it survives
|
|
65
|
+
# container recreation; push it off-box for true disaster recovery.
|
|
66
|
+
- pg_wal_archive:/var/lib/postgresql/wal_archive
|
|
42
67
|
- ./init-db.sql:/docker-entrypoint-initdb.d/01-init.sql:ro
|
|
43
68
|
networks:
|
|
44
69
|
- backend
|
|
@@ -56,9 +81,11 @@ services:
|
|
|
56
81
|
image: clickhouse/clickhouse-server:24.8.4.13-alpine
|
|
57
82
|
container_name: clickhouse
|
|
58
83
|
restart: unless-stopped
|
|
59
|
-
env_file:
|
|
60
|
-
|
|
61
|
-
|
|
84
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
85
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
86
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
87
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
88
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
62
89
|
environment:
|
|
63
90
|
CLICKHOUSE_DB: ${CLICKHOUSE_DB:-default}
|
|
64
91
|
CLICKHOUSE_USER: ${CLICKHOUSE_USER:-exe}
|
|
@@ -95,9 +122,11 @@ services:
|
|
|
95
122
|
image: redis:7.4-alpine
|
|
96
123
|
container_name: redis
|
|
97
124
|
restart: unless-stopped
|
|
98
|
-
env_file:
|
|
99
|
-
|
|
100
|
-
|
|
125
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
126
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
127
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
128
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
129
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
101
130
|
command: ["redis-server", "--requirepass", "${REDIS_PASSWORD:?REDIS_PASSWORD is required}", "--save", "60", "1", "--appendonly", "yes"]
|
|
102
131
|
volumes:
|
|
103
132
|
- redis_data:/data
|
|
@@ -120,9 +149,11 @@ services:
|
|
|
120
149
|
depends_on:
|
|
121
150
|
exe-db:
|
|
122
151
|
condition: service_healthy
|
|
123
|
-
env_file:
|
|
124
|
-
|
|
125
|
-
|
|
152
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
153
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
154
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
155
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
156
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
126
157
|
environment:
|
|
127
158
|
GOTRUE_API_PORT: ${GOTRUE_API_PORT:-9999}
|
|
128
159
|
GOTRUE_DB_DRIVER: postgres
|
|
@@ -137,14 +168,20 @@ services:
|
|
|
137
168
|
GOTRUE_JWT_SECRET: ${GOTRUE_JWT_SECRET:?GOTRUE_JWT_SECRET is required}
|
|
138
169
|
GOTRUE_JWT_EXP: ${GOTRUE_JWT_EXP:-3600}
|
|
139
170
|
GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated
|
|
140
|
-
|
|
171
|
+
# No hardcoded askexe.com fallback — GOTRUE_EXTERNAL_URL is set per-customer
|
|
172
|
+
# in .env (https://auth.<domain>) and must be present (bug 47965144 class).
|
|
173
|
+
API_EXTERNAL_URL: ${GOTRUE_EXTERNAL_URL:?GOTRUE_EXTERNAL_URL is required — set to https://auth.<your-domain> in .env}
|
|
141
174
|
GOTRUE_DISABLE_SIGNUP: ${GOTRUE_DISABLE_SIGNUP:-true}
|
|
142
175
|
GOTRUE_MAILER_AUTOCONFIRM: ${GOTRUE_MAILER_AUTOCONFIRM:-false}
|
|
143
176
|
GOTRUE_SMTP_HOST: ${SMTP_HOST:-}
|
|
144
177
|
GOTRUE_SMTP_PORT: ${SMTP_PORT:-587}
|
|
145
178
|
GOTRUE_SMTP_USER: ${SMTP_USER:-}
|
|
146
179
|
GOTRUE_SMTP_PASS: ${SMTP_PASS:-}
|
|
147
|
-
|
|
180
|
+
# Bug 133c9d5b: never fall back to a hardcoded askexe.com sender. SMTP_FROM
|
|
181
|
+
# is written to .env by generate-env.ts as noreply@<customer-domain>. A
|
|
182
|
+
# missing value fails loudly rather than silently sending auth mail From
|
|
183
|
+
# noreply@askexe.com (wrong branding + SPF/DKIM/DMARC failure).
|
|
184
|
+
GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_FROM:?SMTP_FROM is required — set to noreply@<your-domain> in .env}
|
|
148
185
|
ports:
|
|
149
186
|
- "127.0.0.1:${GOTRUE_HOST_PORT:-9999}:9999"
|
|
150
187
|
networks:
|
|
@@ -208,9 +245,11 @@ services:
|
|
|
208
245
|
condition: service_healthy
|
|
209
246
|
redis:
|
|
210
247
|
condition: service_healthy
|
|
211
|
-
env_file:
|
|
212
|
-
|
|
213
|
-
|
|
248
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
249
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
250
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
251
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
252
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
214
253
|
environment:
|
|
215
254
|
NODE_ENV: production
|
|
216
255
|
NODE_PORT: "3000"
|
|
@@ -258,9 +297,11 @@ services:
|
|
|
258
297
|
condition: service_healthy
|
|
259
298
|
exe-crm:
|
|
260
299
|
condition: service_healthy
|
|
261
|
-
env_file:
|
|
262
|
-
|
|
263
|
-
|
|
300
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
301
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
302
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
303
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
304
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
264
305
|
environment:
|
|
265
306
|
NODE_ENV: production
|
|
266
307
|
EXE_LICENSE_KEY: ${EXE_LICENSE_KEY:?EXE_LICENSE_KEY is required — purchase at https://askexe.com}
|
|
@@ -300,9 +341,11 @@ services:
|
|
|
300
341
|
condition: service_healthy
|
|
301
342
|
gotrue:
|
|
302
343
|
condition: service_healthy
|
|
303
|
-
env_file:
|
|
304
|
-
|
|
305
|
-
|
|
344
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
345
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
346
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
347
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
348
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
306
349
|
environment:
|
|
307
350
|
NODE_ENV: production
|
|
308
351
|
SERVER_PORT: "3001"
|
|
@@ -342,9 +385,11 @@ services:
|
|
|
342
385
|
image: ${EXE_OS_SERVER_IMAGE_TAG:-${EXE_OS_IMAGE_TAG:-${EXED_IMAGE_TAG:-ghcr.io/askexe/exe-os:v0.9.270}}}
|
|
343
386
|
container_name: exe-os
|
|
344
387
|
restart: unless-stopped
|
|
345
|
-
env_file:
|
|
346
|
-
|
|
347
|
-
|
|
388
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
389
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
390
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
391
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
392
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
348
393
|
environment:
|
|
349
394
|
NODE_ENV: production
|
|
350
395
|
EXED_PORT: "8765"
|
|
@@ -401,9 +446,11 @@ services:
|
|
|
401
446
|
depends_on:
|
|
402
447
|
exe-os:
|
|
403
448
|
condition: service_healthy
|
|
404
|
-
env_file:
|
|
405
|
-
|
|
406
|
-
|
|
449
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
450
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
451
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
452
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
453
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
407
454
|
environment:
|
|
408
455
|
NODE_ENV: production
|
|
409
456
|
EXE_OS_DIR: /home/exed/.exe-os
|
|
@@ -432,9 +479,11 @@ services:
|
|
|
432
479
|
depends_on:
|
|
433
480
|
exe-os:
|
|
434
481
|
condition: service_healthy
|
|
435
|
-
env_file:
|
|
436
|
-
|
|
437
|
-
|
|
482
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
483
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
484
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
485
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
486
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
438
487
|
environment:
|
|
439
488
|
NODE_ENV: production
|
|
440
489
|
EXE_GATEWAY_HOME: /data
|
|
@@ -550,9 +599,11 @@ services:
|
|
|
550
599
|
profiles: ["registry-proxy", "askexe-control-plane"]
|
|
551
600
|
restart: unless-stopped
|
|
552
601
|
entrypoint: ["node", "/app/dist/bin/registry-proxy.js"]
|
|
553
|
-
env_file:
|
|
554
|
-
|
|
555
|
-
|
|
602
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
603
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
604
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
605
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
606
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
556
607
|
environment:
|
|
557
608
|
EXE_REGISTRY_PROXY_PORT: "${EXE_REGISTRY_PROXY_PORT:-3200}"
|
|
558
609
|
EXE_REGISTRY_PROXY_HOST: "${EXE_REGISTRY_PROXY_HOST:-0.0.0.0}"
|
|
@@ -637,7 +688,7 @@ services:
|
|
|
637
688
|
# 4 services: gunicorn API, websocket, RQ worker, scheduler.
|
|
638
689
|
|
|
639
690
|
exe-erp:
|
|
640
|
-
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-
|
|
691
|
+
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-final8}
|
|
641
692
|
container_name: exe-erp
|
|
642
693
|
restart: unless-stopped
|
|
643
694
|
entrypoint: ["/usr/local/bin/entrypoint.sh"]
|
|
@@ -658,9 +709,11 @@ services:
|
|
|
658
709
|
condition: service_healthy
|
|
659
710
|
gotrue:
|
|
660
711
|
condition: service_healthy
|
|
661
|
-
env_file:
|
|
662
|
-
|
|
663
|
-
|
|
712
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
713
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
714
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
715
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
716
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
664
717
|
environment:
|
|
665
718
|
DB_HOST: exe-db
|
|
666
719
|
DB_PORT: "5432"
|
|
@@ -736,7 +789,7 @@ services:
|
|
|
736
789
|
options: { max-size: "10m", max-file: "3" }
|
|
737
790
|
|
|
738
791
|
exe-erp-websocket:
|
|
739
|
-
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-
|
|
792
|
+
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-final8}
|
|
740
793
|
container_name: exe-erp-websocket
|
|
741
794
|
restart: unless-stopped
|
|
742
795
|
entrypoint: []
|
|
@@ -765,9 +818,11 @@ services:
|
|
|
765
818
|
depends_on:
|
|
766
819
|
exe-erp:
|
|
767
820
|
condition: service_healthy
|
|
768
|
-
env_file:
|
|
769
|
-
|
|
770
|
-
|
|
821
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
822
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
823
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
824
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
825
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
771
826
|
environment:
|
|
772
827
|
REDIS_SOCKETIO: redis://:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379/5
|
|
773
828
|
SITE_NAME: ${ERP_SITE_NAME:-erp.askexe.com}
|
|
@@ -786,7 +841,7 @@ services:
|
|
|
786
841
|
options: { max-size: "10m", max-file: "3" }
|
|
787
842
|
|
|
788
843
|
exe-erp-queue:
|
|
789
|
-
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-
|
|
844
|
+
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-final8}
|
|
790
845
|
container_name: exe-erp-queue
|
|
791
846
|
restart: unless-stopped
|
|
792
847
|
entrypoint: []
|
|
@@ -794,9 +849,11 @@ services:
|
|
|
794
849
|
depends_on:
|
|
795
850
|
exe-erp:
|
|
796
851
|
condition: service_healthy
|
|
797
|
-
env_file:
|
|
798
|
-
|
|
799
|
-
|
|
852
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
853
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
854
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
855
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
856
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
800
857
|
environment:
|
|
801
858
|
DB_HOST: exe-db
|
|
802
859
|
DB_PORT: "5432"
|
|
@@ -820,7 +877,7 @@ services:
|
|
|
820
877
|
options: { max-size: "10m", max-file: "3" }
|
|
821
878
|
|
|
822
879
|
exe-erp-scheduler:
|
|
823
|
-
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-
|
|
880
|
+
image: ${ERP_IMAGE_TAG:-ghcr.io/askexe/exe-erp:v0.2.0-final8}
|
|
824
881
|
container_name: exe-erp-scheduler
|
|
825
882
|
restart: unless-stopped
|
|
826
883
|
entrypoint: []
|
|
@@ -828,9 +885,11 @@ services:
|
|
|
828
885
|
depends_on:
|
|
829
886
|
exe-erp:
|
|
830
887
|
condition: service_healthy
|
|
831
|
-
env_file:
|
|
832
|
-
|
|
833
|
-
|
|
888
|
+
# SECURITY (bug 67d62490): no blanket `env_file: .env`. Each service
|
|
889
|
+
# receives ONLY the secrets it owns via the explicit `environment:` block
|
|
890
|
+
# below (values interpolated from .env at compose-parse time, never the
|
|
891
|
+
# whole secret file). A compromise of one app container cannot read another
|
|
892
|
+
# service's GOTRUE_JWT_SECRET / DB passwords / CLOUDFLARE_TUNNEL_TOKEN, etc.
|
|
834
893
|
environment:
|
|
835
894
|
DB_HOST: exe-db
|
|
836
895
|
DB_PORT: "5432"
|
|
@@ -898,6 +957,15 @@ services:
|
|
|
898
957
|
image: ${AUTH_IMAGE_TAG:-update.askexe.com/askexe/exe-auth:v0.1.0}
|
|
899
958
|
container_name: exe-auth
|
|
900
959
|
restart: unless-stopped
|
|
960
|
+
environment:
|
|
961
|
+
# Customer apex domain — the gateway templates its nginx server_name, CORS
|
|
962
|
+
# origin, default redirect and SPA domain from this at container start.
|
|
963
|
+
# Never falls back to askexe.com (bug 47965144).
|
|
964
|
+
DOMAIN: ${DOMAIN:?DOMAIN is required — set to your customer apex domain (e.g. hygo.co)}
|
|
965
|
+
AUTH_SERVER_NAME: ${AUTH_SERVER_NAME:-}
|
|
966
|
+
AUTH_CORS_ORIGIN: ${AUTH_CORS_ORIGIN:-}
|
|
967
|
+
AUTH_DEFAULT_REDIRECT: ${AUTH_DEFAULT_REDIRECT:-}
|
|
968
|
+
AUTH_DEFAULT_PRODUCT: ${AUTH_DEFAULT_PRODUCT:-AUTH}
|
|
901
969
|
ports:
|
|
902
970
|
- "127.0.0.1:${AUTH_PORT:-3300}:80"
|
|
903
971
|
networks:
|
|
@@ -921,9 +989,18 @@ services:
|
|
|
921
989
|
# ------------------------------------------------------------------
|
|
922
990
|
# Volumes
|
|
923
991
|
# ------------------------------------------------------------------
|
|
992
|
+
# At-rest encryption (bug 5176aa4e): the named volumes below default to the
|
|
993
|
+
# local driver (plain ext4). For at-rest encryption of the relational/analytics
|
|
994
|
+
# data — matching the SQLCipher-encrypted memory store — mount the Docker data
|
|
995
|
+
# root (/var/lib/docker) on a LUKS-encrypted block device, or override
|
|
996
|
+
# PG_DATA_DEVICE / driver_opts to point these volumes at an encrypted device.
|
|
997
|
+
# See deploy/CUSTOMER-GUIDE.md > "Encryption at rest (optional)".
|
|
924
998
|
volumes:
|
|
925
999
|
postgres_data:
|
|
926
1000
|
driver: local
|
|
1001
|
+
# WAL archive for point-in-time recovery (enabled via PG_ARCHIVE_MODE=on).
|
|
1002
|
+
pg_wal_archive:
|
|
1003
|
+
driver: local
|
|
927
1004
|
clickhouse_data:
|
|
928
1005
|
driver: local
|
|
929
1006
|
clickhouse_logs:
|
|
@@ -55,6 +55,11 @@ export function generateEnv(options: GenerateEnvOptions): string {
|
|
|
55
55
|
const gatewayWsAuthToken = randomSecret(RANDOM_SECRET_48);
|
|
56
56
|
|
|
57
57
|
return joinEnvLines([
|
|
58
|
+
"# --- Domain ---",
|
|
59
|
+
"# Customer apex domain. Drives auth gateway templating (server_name, CORS,",
|
|
60
|
+
"# default redirect) and the GoTrue From address. Never falls back to askexe.com.",
|
|
61
|
+
`DOMAIN=${normalizedDomain}`,
|
|
62
|
+
"",
|
|
58
63
|
"# --- Data Layer ---",
|
|
59
64
|
`POSTGRES_USER=${POSTGRES_USER}`,
|
|
60
65
|
`POSTGRES_PASSWORD=${randomSecret(RANDOM_SECRET_32)}`,
|
|
@@ -71,8 +76,21 @@ export function generateEnv(options: GenerateEnvOptions): string {
|
|
|
71
76
|
"GOTRUE_API_PORT=9999",
|
|
72
77
|
`GOTRUE_SITE_URL=https://crm.${normalizedDomain}`,
|
|
73
78
|
`GOTRUE_EXTERNAL_URL=https://auth.${normalizedDomain}`,
|
|
79
|
+
"# SSO redirect allow-list (bug 66f8e10a): app origins the gateway may bounce",
|
|
80
|
+
"# users back to via ?redirect=. Required for unified SSO across crm/wiki/erp.",
|
|
81
|
+
`GOTRUE_URI_ALLOW_LIST=https://crm.${normalizedDomain},https://wiki.${normalizedDomain},https://erp.${normalizedDomain}`,
|
|
74
82
|
"GOTRUE_DISABLE_SIGNUP=true",
|
|
75
83
|
"GOTRUE_MAILER_AUTOCONFIRM=false",
|
|
84
|
+
"# Auth emails (confirm/reset/magic-link) send From this customer-domain",
|
|
85
|
+
"# address — not noreply@askexe.com (bug 133c9d5b). Configure SPF/DKIM/DMARC",
|
|
86
|
+
"# for this sender. SMTP stays off until SMTP_HOST is set.",
|
|
87
|
+
`SMTP_FROM=noreply@${normalizedDomain}`,
|
|
88
|
+
"# To enable verified email confirmation, set SMTP_HOST/PORT/USER/PASS below.",
|
|
89
|
+
"# MAILER_AUTOCONFIRM is already false, so once SMTP is live, ownership is verified.",
|
|
90
|
+
"SMTP_HOST=",
|
|
91
|
+
"SMTP_PORT=587",
|
|
92
|
+
"SMTP_USER=",
|
|
93
|
+
"SMTP_PASS=",
|
|
76
94
|
"",
|
|
77
95
|
"# --- CRM ---",
|
|
78
96
|
`CRM_IMAGE_TAG=${CRM_IMAGE_TAG}`,
|
|
@@ -188,6 +206,10 @@ export function generateExampleEnv(): string {
|
|
|
188
206
|
"# Copy to .env before deployment and replace every CHANGEME_* value.",
|
|
189
207
|
"# Values under # SET_MANUALLY must be provided by the operator.",
|
|
190
208
|
"",
|
|
209
|
+
"# --- Domain ---",
|
|
210
|
+
"# Customer apex domain. Drives auth gateway templating and GoTrue From address.",
|
|
211
|
+
"DOMAIN=CHANGEME_DOMAIN",
|
|
212
|
+
"",
|
|
191
213
|
"# --- Data Layer ---",
|
|
192
214
|
`POSTGRES_USER=${POSTGRES_USER}`,
|
|
193
215
|
"POSTGRES_PASSWORD=CHANGEME_POSTGRES_PASSWORD",
|
|
@@ -204,8 +226,17 @@ export function generateExampleEnv(): string {
|
|
|
204
226
|
"GOTRUE_API_PORT=9999",
|
|
205
227
|
"GOTRUE_SITE_URL=https://crm.CHANGEME_DOMAIN",
|
|
206
228
|
"GOTRUE_EXTERNAL_URL=https://auth.CHANGEME_DOMAIN",
|
|
229
|
+
"# SSO redirect allow-list (bug 66f8e10a) — app origins for unified SSO.",
|
|
230
|
+
"GOTRUE_URI_ALLOW_LIST=https://crm.CHANGEME_DOMAIN,https://wiki.CHANGEME_DOMAIN,https://erp.CHANGEME_DOMAIN",
|
|
207
231
|
"GOTRUE_DISABLE_SIGNUP=true",
|
|
208
232
|
"GOTRUE_MAILER_AUTOCONFIRM=false",
|
|
233
|
+
"# From address for auth emails — customer domain, not askexe.com (bug 133c9d5b).",
|
|
234
|
+
"SMTP_FROM=noreply@CHANGEME_DOMAIN",
|
|
235
|
+
"# To enable verified email confirmation, set SMTP_* below (MAILER_AUTOCONFIRM stays false).",
|
|
236
|
+
"SMTP_HOST=",
|
|
237
|
+
"SMTP_PORT=587",
|
|
238
|
+
"SMTP_USER=",
|
|
239
|
+
"SMTP_PASS=",
|
|
209
240
|
"",
|
|
210
241
|
"# --- CRM ---",
|
|
211
242
|
`CRM_IMAGE_TAG=${CRM_IMAGE_TAG}`,
|
package/deploy/compose/setup.sh
CHANGED
|
@@ -55,6 +55,7 @@ else
|
|
|
55
55
|
info "Generating secrets inline..."
|
|
56
56
|
gen() { openssl rand -hex "$1"; }
|
|
57
57
|
cat > .env << ENVEOF
|
|
58
|
+
DOMAIN=${DOMAIN}
|
|
58
59
|
POSTGRES_USER=exe
|
|
59
60
|
POSTGRES_PASSWORD=$(gen 32)
|
|
60
61
|
POSTGRES_DB=exedb
|
|
@@ -65,10 +66,18 @@ REDIS_PASSWORD=$(gen 32)
|
|
|
65
66
|
GOTRUE_JWT_SECRET=$(gen 48)
|
|
66
67
|
GOTRUE_SITE_URL=https://crm.${DOMAIN}
|
|
67
68
|
GOTRUE_EXTERNAL_URL=https://auth.${DOMAIN}
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
# Invite-only by default; never autoconfirm without an SMTP round-trip (bug 36c04fe3).
|
|
70
|
+
# Configure SMTP_HOST below and keep MAILER_AUTOCONFIRM=false to verify email ownership.
|
|
71
|
+
GOTRUE_DISABLE_SIGNUP=true
|
|
72
|
+
GOTRUE_MAILER_AUTOCONFIRM=false
|
|
70
73
|
GOTRUE_EXTERNAL_EMAIL_ENABLED=true
|
|
71
74
|
GOTRUE_EXTERNAL_PHONE_ENABLED=false
|
|
75
|
+
# Auth-email From address — customer domain, not askexe.com (bug 133c9d5b).
|
|
76
|
+
SMTP_FROM=noreply@${DOMAIN}
|
|
77
|
+
SMTP_HOST=
|
|
78
|
+
SMTP_PORT=587
|
|
79
|
+
SMTP_USER=
|
|
80
|
+
SMTP_PASS=
|
|
72
81
|
IS_SIGN_UP_DISABLED=true
|
|
73
82
|
AUTH_PASSWORD_ENABLED=true
|
|
74
83
|
CRM_IMAGE_TAG=ghcr.io/askexe/exe-crm:v0.9.3
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import "./chunk-SH45SJQW.js";
|
|
2
|
+
import {
|
|
3
|
+
cleanupSessionMarkers,
|
|
4
|
+
clearActiveAgent,
|
|
5
|
+
getActiveAgent,
|
|
6
|
+
getAllActiveAgents,
|
|
7
|
+
resolveActiveAgentFromTmuxSession,
|
|
8
|
+
writeActiveAgent
|
|
9
|
+
} from "./chunk-7YEOKPZ6.js";
|
|
10
|
+
import "./chunk-CVYC6DUW.js";
|
|
11
|
+
import "./chunk-GJV3WDWM.js";
|
|
12
|
+
import "./chunk-LCOPVYU2.js";
|
|
13
|
+
import "./chunk-2I23RPSI.js";
|
|
14
|
+
import "./chunk-LJONNOFH.js";
|
|
15
|
+
import "./chunk-PNQDP3OA.js";
|
|
16
|
+
import "./chunk-7HLWBYH7.js";
|
|
17
|
+
import "./chunk-FXU7JOXK.js";
|
|
18
|
+
import "./chunk-5P3HOBZX.js";
|
|
19
|
+
import "./chunk-LYH5HE24.js";
|
|
20
|
+
import "./chunk-MLKGABMK.js";
|
|
21
|
+
export {
|
|
22
|
+
cleanupSessionMarkers,
|
|
23
|
+
clearActiveAgent,
|
|
24
|
+
getActiveAgent,
|
|
25
|
+
getAllActiveAgents,
|
|
26
|
+
resolveActiveAgentFromTmuxSession,
|
|
27
|
+
writeActiveAgent
|
|
28
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cleanupSessionMarkers,
|
|
3
|
+
clearActiveAgent,
|
|
4
|
+
getActiveAgent,
|
|
5
|
+
getAllActiveAgents,
|
|
6
|
+
resolveActiveAgentFromTmuxSession,
|
|
7
|
+
writeActiveAgent
|
|
8
|
+
} from "./chunk-CSXNLHUU.js";
|
|
9
|
+
import "./chunk-CVYC6DUW.js";
|
|
10
|
+
import "./chunk-GJV3WDWM.js";
|
|
11
|
+
import "./chunk-MUQ46NLH.js";
|
|
12
|
+
import "./chunk-2I23RPSI.js";
|
|
13
|
+
import "./chunk-HNDG5ZDJ.js";
|
|
14
|
+
import "./chunk-PNQDP3OA.js";
|
|
15
|
+
import "./chunk-7HLWBYH7.js";
|
|
16
|
+
import "./chunk-FXU7JOXK.js";
|
|
17
|
+
import "./chunk-R36FAN53.js";
|
|
18
|
+
import "./chunk-LYH5HE24.js";
|
|
19
|
+
import "./chunk-MLKGABMK.js";
|
|
20
|
+
export {
|
|
21
|
+
cleanupSessionMarkers,
|
|
22
|
+
clearActiveAgent,
|
|
23
|
+
getActiveAgent,
|
|
24
|
+
getAllActiveAgents,
|
|
25
|
+
resolveActiveAgentFromTmuxSession,
|
|
26
|
+
writeActiveAgent
|
|
27
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cleanupSessionMarkers,
|
|
3
|
+
clearActiveAgent,
|
|
4
|
+
getActiveAgent,
|
|
5
|
+
getAllActiveAgents,
|
|
6
|
+
resolveActiveAgentFromTmuxSession,
|
|
7
|
+
writeActiveAgent
|
|
8
|
+
} from "./chunk-7YEOKPZ6.js";
|
|
9
|
+
import "./chunk-CVYC6DUW.js";
|
|
10
|
+
import "./chunk-GJV3WDWM.js";
|
|
11
|
+
import "./chunk-LCOPVYU2.js";
|
|
12
|
+
import "./chunk-2I23RPSI.js";
|
|
13
|
+
import "./chunk-LJONNOFH.js";
|
|
14
|
+
import "./chunk-PNQDP3OA.js";
|
|
15
|
+
import "./chunk-7HLWBYH7.js";
|
|
16
|
+
import "./chunk-FXU7JOXK.js";
|
|
17
|
+
import "./chunk-5P3HOBZX.js";
|
|
18
|
+
import "./chunk-LYH5HE24.js";
|
|
19
|
+
import "./chunk-MLKGABMK.js";
|
|
20
|
+
export {
|
|
21
|
+
cleanupSessionMarkers,
|
|
22
|
+
clearActiveAgent,
|
|
23
|
+
getActiveAgent,
|
|
24
|
+
getAllActiveAgents,
|
|
25
|
+
resolveActiveAgentFromTmuxSession,
|
|
26
|
+
writeActiveAgent
|
|
27
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import "./chunk-SH45SJQW.js";
|
|
2
|
+
import {
|
|
3
|
+
cleanupSessionMarkers,
|
|
4
|
+
clearActiveAgent,
|
|
5
|
+
getActiveAgent,
|
|
6
|
+
getAllActiveAgents,
|
|
7
|
+
resolveActiveAgentFromTmuxSession,
|
|
8
|
+
writeActiveAgent
|
|
9
|
+
} from "./chunk-CSXNLHUU.js";
|
|
10
|
+
import "./chunk-CVYC6DUW.js";
|
|
11
|
+
import "./chunk-GJV3WDWM.js";
|
|
12
|
+
import "./chunk-MUQ46NLH.js";
|
|
13
|
+
import "./chunk-2I23RPSI.js";
|
|
14
|
+
import "./chunk-HNDG5ZDJ.js";
|
|
15
|
+
import "./chunk-PNQDP3OA.js";
|
|
16
|
+
import "./chunk-7HLWBYH7.js";
|
|
17
|
+
import "./chunk-FXU7JOXK.js";
|
|
18
|
+
import "./chunk-R36FAN53.js";
|
|
19
|
+
import "./chunk-LYH5HE24.js";
|
|
20
|
+
import "./chunk-MLKGABMK.js";
|
|
21
|
+
export {
|
|
22
|
+
cleanupSessionMarkers,
|
|
23
|
+
clearActiveAgent,
|
|
24
|
+
getActiveAgent,
|
|
25
|
+
getAllActiveAgents,
|
|
26
|
+
resolveActiveAgentFromTmuxSession,
|
|
27
|
+
writeActiveAgent
|
|
28
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
clean,
|
|
3
|
+
extractGoalCandidates,
|
|
4
|
+
inferIntention,
|
|
5
|
+
inferOntologyEventType,
|
|
6
|
+
inferOutcome,
|
|
7
|
+
inferSemanticLabel,
|
|
8
|
+
insertOntologyForBatch,
|
|
9
|
+
insertOntologyForMemory,
|
|
10
|
+
ontologyPayload,
|
|
11
|
+
stableId
|
|
12
|
+
} from "./chunk-M46T2E3A.js";
|
|
13
|
+
import "./chunk-MLKGABMK.js";
|
|
14
|
+
export {
|
|
15
|
+
clean,
|
|
16
|
+
extractGoalCandidates,
|
|
17
|
+
inferIntention,
|
|
18
|
+
inferOntologyEventType,
|
|
19
|
+
inferOutcome,
|
|
20
|
+
inferSemanticLabel,
|
|
21
|
+
insertOntologyForBatch,
|
|
22
|
+
insertOntologyForMemory,
|
|
23
|
+
ontologyPayload,
|
|
24
|
+
stableId
|
|
25
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
clean,
|
|
3
|
+
extractGoalCandidates,
|
|
4
|
+
inferIntention,
|
|
5
|
+
inferOntologyEventType,
|
|
6
|
+
inferOutcome,
|
|
7
|
+
inferSemanticLabel,
|
|
8
|
+
insertOntologyForBatch,
|
|
9
|
+
insertOntologyForMemory,
|
|
10
|
+
ontologyPayload,
|
|
11
|
+
stableId
|
|
12
|
+
} from "./chunk-JXOXGBC2.js";
|
|
13
|
+
import "./chunk-MLKGABMK.js";
|
|
14
|
+
export {
|
|
15
|
+
clean,
|
|
16
|
+
extractGoalCandidates,
|
|
17
|
+
inferIntention,
|
|
18
|
+
inferOntologyEventType,
|
|
19
|
+
inferOutcome,
|
|
20
|
+
inferSemanticLabel,
|
|
21
|
+
insertOntologyForBatch,
|
|
22
|
+
insertOntologyForMemory,
|
|
23
|
+
ontologyPayload,
|
|
24
|
+
stableId
|
|
25
|
+
};
|