@askexenow/exe-os 0.9.383 → 0.9.384
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/delivery/catalog.json +1254 -0
- package/deploy/compose/generate-env.ts +65 -9
- package/deploy/compose/setup.sh +205 -7
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-LFY5P5EX.js → active-agent-F5V4E4UL.js} +4 -4
- package/dist/{active-agent-BV4OE3GI.js → active-agent-YTBB4ZQM.js} +4 -4
- package/dist/{agent-defs-generator-IC2DVSI4.js → agent-defs-generator-7TFISIJQ.js} +3 -3
- package/dist/{agent-loop-GSUZJZBJ.js → agent-loop-EZ7LDAGD.js} +1 -1
- package/dist/{agentic-ontology-V3PFEFVZ.js → agentic-ontology-XVTUVV7W.js} +1 -1
- package/dist/{artifact-backup-EXBY3YQS.js → artifact-backup-TF6YWQT2.js} +3 -3
- package/dist/{backfill-metadata-NTCC7EMS.js → backfill-metadata-J6MXIDCW.js} +8 -8
- package/dist/{backup-verify-D3RU5JXC.js → backup-verify-6DVBQMDP.js} +1 -1
- package/dist/{behavior-injection-GWRLUR34.js → behavior-injection-XDA7ZCYN.js} +14 -13
- package/dist/{behavior-promotion-YSEL7K5K.js → behavior-promotion-4VLQ7LXK.js} +13 -12
- package/dist/{behaviors-FHQKACTI.js → behaviors-SCCZP7RZ.js} +12 -11
- package/dist/bin/agentic-ontology-backfill.js +9 -9
- package/dist/bin/agentic-reflection-backfill.js +10 -10
- package/dist/bin/agentic-semantic-label.js +9 -9
- package/dist/bin/backfill-conversations.js +10 -9
- package/dist/bin/backfill-responses.js +10 -9
- package/dist/bin/backfill-vectors.js +11 -10
- package/dist/bin/bulk-sync-postgres.js +20 -19
- package/dist/bin/cc-doctor.js +11 -10
- package/dist/bin/cleanup-stale-review-tasks.js +21 -20
- package/dist/bin/cli.js +27 -22
- package/dist/bin/deferred-daemon-restart.js +105 -104
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +9 -9
- package/dist/bin/exe-assign.js +12 -11
- package/dist/bin/exe-boot.js +42 -41
- package/dist/bin/exe-call.js +5 -5
- package/dist/bin/exe-cloud.js +21 -20
- package/dist/bin/exe-config-dump.js +3 -3
- package/dist/bin/exe-dispatch.js +22 -21
- package/dist/bin/exe-doctor.js +7 -7
- package/dist/bin/exe-export-behaviors.js +16 -15
- package/dist/bin/exe-forget.js +11 -11
- package/dist/bin/exe-gateway.js +9 -9
- package/dist/bin/exe-grant.js +6 -6
- package/dist/bin/exe-healthcheck.js +11 -10
- package/dist/bin/exe-heartbeat.js +33 -27
- package/dist/bin/exe-kill.js +27 -26
- package/dist/bin/exe-launch-agent.js +34 -33
- package/dist/bin/exe-mcp.js +5 -5
- package/dist/bin/exe-memory-reads.js +8 -8
- package/dist/bin/exe-new-employee.js +9 -9
- package/dist/bin/exe-os-mcp-proxy.js +5 -5
- package/dist/bin/exe-pending-messages.js +22 -21
- package/dist/bin/exe-pending-notifications.js +21 -20
- package/dist/bin/exe-pending-reviews.js +22 -21
- package/dist/bin/exe-preflight.js +1 -1
- package/dist/bin/exe-rename.js +5 -5
- package/dist/bin/exe-review.js +26 -25
- package/dist/bin/exe-search.js +10 -10
- package/dist/bin/exe-session-cleanup.js +27 -26
- package/dist/bin/exe-settings.js +20 -19
- package/dist/bin/exe-start-codex.js +23 -22
- package/dist/bin/exe-start-opencode.js +20 -19
- package/dist/bin/exe-status.js +23 -22
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +5 -5
- package/dist/bin/exe-watchdog.js +1 -1
- package/dist/bin/git-sweep.js +22 -21
- package/dist/bin/graph-backfill.js +9 -9
- package/dist/bin/graph-export.js +9 -9
- package/dist/bin/hooks-cli.js +1 -1
- package/dist/bin/import-history.js +12 -12
- package/dist/bin/install.js +107 -106
- package/dist/bin/intercom-check.js +11 -7
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +5 -5
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/reconcile-backlog.js +2 -2
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/repair-document-chunks.js +8 -8
- package/dist/bin/scan-tasks.js +22 -21
- package/dist/bin/setup.js +2 -2
- package/dist/bin/shard-migrate.js +9 -9
- package/dist/bin/stack-update.js +622 -30
- package/dist/bin/verify-stack.js +1 -1
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-OKYUBE3G.js → boot-generation-Q7LGQ3AO.js} +4 -4
- package/dist/{boot-review-sections-KFHON3GW.js → boot-review-sections-G5774FR5.js} +20 -19
- package/dist/build-manifest.json +1104 -1084
- package/dist/{capability-cards-WQHJXAC3.js → capability-cards-I3RHCF4F.js} +3 -3
- package/dist/{capacity-monitor-N2NCT6UR.js → capacity-monitor-7I7GDONU.js} +22 -21
- package/dist/{catchup-brief-WDEELMAD.js → catchup-brief-3T5PARIR.js} +31 -28
- package/dist/{check-image-pullability-5LAYCKW3.js → check-image-pullability-2AIVB4BX.js} +32 -0
- package/dist/{chunk-5LRIZHMH.js → chunk-2FKU4ZEO.js} +30 -22
- package/dist/{chunk-AH4X72T6.js → chunk-2PZTMSMG.js} +5 -5
- package/dist/{chunk-GK6V6AZ3.js → chunk-3B6FLNLV.js} +1 -1
- package/dist/{chunk-NY6SBR4O.js → chunk-3FGBBJYM.js} +15 -3
- package/dist/{chunk-O5LDG2AV.js → chunk-3OX34OC3.js} +22 -14
- package/dist/{chunk-LPBWEQOY.js → chunk-3RGTLZNO.js} +12 -12
- package/dist/{chunk-AITTVLVQ.js → chunk-3SUPEE6H.js} +3 -3
- package/dist/{chunk-IPA6VOZE.js → chunk-46VSBDUW.js} +2 -2
- package/dist/{chunk-642NFHVO.js → chunk-4AAMFWJT.js} +2 -2
- package/dist/{chunk-AYOCLUGP.js → chunk-4AR5XKCH.js} +1 -1
- package/dist/{chunk-GLQEJOXE.js → chunk-5MVKTNZP.js} +57 -0
- package/dist/{chunk-CZKDWW76.js → chunk-5U2IJBFV.js} +197 -27
- package/dist/{chunk-NRHFYGQH.js → chunk-6BJCDWSM.js} +1 -1
- package/dist/{chunk-WVY5SSAG.js → chunk-6FIC57PH.js} +1 -1
- package/dist/{chunk-S6STQE5T.js → chunk-6YDY6ZTD.js} +3 -3
- package/dist/{chunk-FPAPXMJA.js → chunk-72V3S44T.js} +12 -9
- package/dist/{chunk-DV6W44ZY.js → chunk-7J2ZQ4XN.js} +1 -1
- package/dist/{chunk-EYZKJY7K.js → chunk-7UHZBVP3.js} +53 -40
- package/dist/{chunk-ZE2GXNVJ.js → chunk-AGC2V7JS.js} +25 -12
- package/dist/{chunk-NUAVPYBH.js → chunk-AHESD3KW.js} +1 -1
- package/dist/{chunk-2MA6TC4L.js → chunk-ALRHGEAJ.js} +1 -1
- package/dist/{chunk-V3F4FWDN.js → chunk-ANVHWV2X.js} +1 -1
- package/dist/{chunk-WSEI3KH4.js → chunk-APL7HUE3.js} +15 -12
- package/dist/{chunk-PWYSCKTX.js → chunk-AZSTIAVL.js} +137 -15
- package/dist/chunk-AZXMR25O.js +545 -0
- package/dist/{chunk-XK352OKY.js → chunk-B7AMNZTC.js} +2 -2
- package/dist/{chunk-5AVXGIMQ.js → chunk-BPVFZ6Q4.js} +2 -2
- package/dist/{chunk-XTQ7R2PA.js → chunk-BV2IET6B.js} +73 -17
- package/dist/{chunk-3W3PXRTN.js → chunk-CH7BUBP3.js} +7 -7
- package/dist/{chunk-KHJAE3DF.js → chunk-CHIUS5QB.js} +10 -10
- package/dist/{chunk-HBMATN75.js → chunk-CM7N5MBY.js} +5 -5
- package/dist/{chunk-ZGTA4TXQ.js → chunk-CYCIX7AW.js} +2 -2
- package/dist/{chunk-RLIZUOTN.js → chunk-D3LXVAIQ.js} +2 -2
- package/dist/{chunk-7M2HH4BN.js → chunk-DMUOTCDN.js} +1 -1
- package/dist/{chunk-W67YI7WP.js → chunk-DYVLEMKS.js} +1 -1
- package/dist/{chunk-4LYVULBC.js → chunk-E3ZM32LF.js} +8 -8
- package/dist/{chunk-RXA2LNTL.js → chunk-E7C2WNR5.js} +4 -4
- package/dist/{chunk-DCEHRV3W.js → chunk-EGOEB42T.js} +3 -3
- package/dist/{chunk-L2PBBNKH.js → chunk-EIOGV75A.js} +2 -2
- package/dist/{chunk-F5DBJXTB.js → chunk-ELCRJGCH.js} +2 -2
- package/dist/{chunk-RJXOPNXY.js → chunk-ELEGH4DX.js} +115 -13
- package/dist/{chunk-AB3WZ2LC.js → chunk-EOTZSAQL.js} +1 -1
- package/dist/{chunk-UW22NW2B.js → chunk-EUGEFBGV.js} +3 -3
- package/dist/{chunk-36PEAE2S.js → chunk-EYMFVITZ.js} +1 -1
- package/dist/{chunk-4KNZKUDK.js → chunk-F4BBMIPG.js} +1 -1
- package/dist/{chunk-MCFEV74P.js → chunk-FHIFTSPL.js} +1 -1
- package/dist/{chunk-ZU5RWVNU.js → chunk-FMIYFHLE.js} +2 -2
- package/dist/{chunk-VTN2S7NH.js → chunk-FVLNNNH6.js} +3 -3
- package/dist/{chunk-ZVPVLYBG.js → chunk-GL47M7NY.js} +27 -8
- package/dist/{chunk-USRMWZHH.js → chunk-GSLFH4AI.js} +24 -12
- package/dist/{chunk-ZYXFGAIV.js → chunk-HA63SH5W.js} +1 -1
- package/dist/{chunk-7I4PNLNR.js → chunk-HU3VD4MQ.js} +1 -1
- package/dist/{chunk-36Y3O44B.js → chunk-I5XIW2BP.js} +7 -7
- package/dist/{chunk-JGNEGWQD.js → chunk-IGJMS7C5.js} +2 -2
- package/dist/{chunk-ZJDTQFY6.js → chunk-JA3Y5TV6.js} +1 -1
- package/dist/{chunk-YSNN626O.js → chunk-JDDM6C57.js} +1 -1
- package/dist/{chunk-BZSV52YR.js → chunk-JFJP6ATJ.js} +1 -1
- package/dist/{chunk-3LKQDDJ3.js → chunk-JFTUAV4J.js} +1 -1
- package/dist/{chunk-YWHLC4VZ.js → chunk-JJTPPAZY.js} +2513 -373
- package/dist/{chunk-PYMLQINV.js → chunk-KILR4FBR.js} +4 -4
- package/dist/{chunk-ECQ6KVVW.js → chunk-KTKIFXIP.js} +1 -1
- package/dist/{chunk-W6BFHT5C.js → chunk-KXYKSLW4.js} +11 -11
- package/dist/{chunk-YVVD25YI.js → chunk-L3VUW5M4.js} +1 -1
- package/dist/{chunk-NDN3ZMCW.js → chunk-L63V25HS.js} +6 -5
- package/dist/{chunk-BZ3YF6MG.js → chunk-LFBLQE2P.js} +1 -1
- package/dist/{chunk-2NIURKEP.js → chunk-LKTN22L6.js} +58 -22
- package/dist/{chunk-6BBFHDY3.js → chunk-LR5O2XWZ.js} +5 -5
- package/dist/{chunk-3KPJ5URE.js → chunk-LSNBTGW4.js} +1 -1
- package/dist/{chunk-KHGFI43T.js → chunk-MB47DRF5.js} +2 -2
- package/dist/{chunk-T3KBSR4O.js → chunk-MC4IM2CC.js} +12 -9
- package/dist/{chunk-4JF42BVF.js → chunk-MFAOAIUE.js} +4 -1
- package/dist/{chunk-T7EM74XC.js → chunk-MKM6D7JM.js} +9 -6
- package/dist/{chunk-2XBBXQLT.js → chunk-MOANZQXF.js} +1 -1
- package/dist/{chunk-CCUUMZXU.js → chunk-MPZ2AVNS.js} +2 -2
- package/dist/{chunk-SVFKV7QN.js → chunk-MROSARM5.js} +1 -1
- package/dist/{chunk-WHQQT5XN.js → chunk-MUAWCFW6.js} +5 -1
- package/dist/{chunk-MKDZQ5ZA.js → chunk-NF5FOSLD.js} +1 -1
- package/dist/{chunk-BKUEPHLH.js → chunk-NKEFYE4R.js} +1 -1
- package/dist/{chunk-NKNAKGTM.js → chunk-NVFNADTX.js} +12 -8
- package/dist/{chunk-6MILT557.js → chunk-NYLJQ2M2.js} +4 -4
- package/dist/{chunk-RNECR5Z6.js → chunk-OBBO6EJR.js} +1 -1
- package/dist/{chunk-CMADI6WN.js → chunk-P2UY34XE.js} +5 -5
- package/dist/{chunk-UGV5PUQR.js → chunk-P3QQ52QK.js} +2 -2
- package/dist/{chunk-6H4SQGT4.js → chunk-P3UX5EH4.js} +4 -4
- package/dist/{chunk-DJFM6JCJ.js → chunk-P4PIZOL2.js} +3 -3
- package/dist/{chunk-SC2TRT6S.js → chunk-P4XLIPB7.js} +1 -1
- package/dist/{chunk-2TPBLZBO.js → chunk-PL4CFSQ7.js} +1 -1
- package/dist/{chunk-LLZNPOGB.js → chunk-PLII76NJ.js} +58 -0
- package/dist/{chunk-YFP7LPOG.js → chunk-PRDDPQLC.js} +4 -4
- package/dist/{chunk-BZ546I4Q.js → chunk-PUBA5B4M.js} +24 -0
- package/dist/{chunk-6ODN2IXS.js → chunk-PWC3C5ME.js} +4 -4
- package/dist/{chunk-Z5QBRLWR.js → chunk-QFAFKEB5.js} +4 -4
- package/dist/{chunk-CL4J4757.js → chunk-QH5ZQ5SJ.js} +26 -0
- package/dist/{chunk-XP6ZSSZ6.js → chunk-QNZ4562V.js} +1 -1
- package/dist/{chunk-QHMIXDIA.js → chunk-QPTSA4PP.js} +1 -1
- package/dist/{chunk-TNUTMT3J.js → chunk-R5E7WNAC.js} +3 -3
- package/dist/{chunk-5LZYZGRD.js → chunk-RB3J2WYQ.js} +1 -1
- package/dist/{chunk-HPJ5PHDG.js → chunk-RDWIKDMY.js} +2 -2
- package/dist/{chunk-TLXFEIBQ.js → chunk-RVO5O5SR.js} +6 -6
- package/dist/{chunk-EWGUFJ7F.js → chunk-RZN2LEAK.js} +3 -3
- package/dist/{chunk-Q5O2ER4U.js → chunk-S26CV7BE.js} +57 -13
- package/dist/{chunk-S5OL3HXO.js → chunk-SDYWZRPN.js} +1 -1
- package/dist/{chunk-BOQZXNAW.js → chunk-T5FEAQES.js} +1 -1
- package/dist/{chunk-XU57KFD6.js → chunk-T5SM4RXY.js} +5 -1
- package/dist/{chunk-S3XJ2C44.js → chunk-TKAU7IJ2.js} +1 -1
- package/dist/{chunk-DZ3VKZ3C.js → chunk-TKS5GMYA.js} +1 -1
- package/dist/{chunk-TTLPYAM7.js → chunk-TNS63ATU.js} +1 -1
- package/dist/{chunk-53YKDX7M.js → chunk-UOPCVFVR.js} +16 -16
- package/dist/{chunk-ZHWE25YW.js → chunk-UX2EO653.js} +1 -1
- package/dist/{chunk-ERF6YZQA.js → chunk-UXN4BICC.js} +1 -1
- package/dist/{chunk-ZTOBDVKB.js → chunk-VF2KRROX.js} +1 -1
- package/dist/{chunk-HU36JAK4.js → chunk-VF3BZOZK.js} +5 -2
- package/dist/{chunk-BEIYEBTU.js → chunk-VHHX4UCP.js} +1 -1
- package/dist/{chunk-S3G7LJDK.js → chunk-VJEJ7JNB.js} +1 -1
- package/dist/{chunk-KG3SL2VF.js → chunk-VLBHZ6TF.js} +2 -2
- package/dist/{chunk-AOFW3H6S.js → chunk-VOVFUKEB.js} +5 -5
- package/dist/{chunk-R3SPFIPE.js → chunk-VROK4X2L.js} +1 -1
- package/dist/{chunk-K4BA46H4.js → chunk-W3KPQE7H.js} +4 -4
- package/dist/{chunk-6PAFSV4N.js → chunk-W6BZ4UGA.js} +1 -1
- package/dist/{chunk-WY7K2GNY.js → chunk-XEBKIWI7.js} +8 -8
- package/dist/{chunk-R5PL432W.js → chunk-XSUALA32.js} +2 -2
- package/dist/{chunk-SQ7QYLO3.js → chunk-XUZK23V7.js} +11 -6
- package/dist/{chunk-ZXQ2SLCZ.js → chunk-YLB365YX.js} +148 -5
- package/dist/{chunk-GOOLWD2J.js → chunk-YLFCH3VA.js} +21 -13
- package/dist/{chunk-ETIVP2P6.js → chunk-YRQ26MNP.js} +4 -4
- package/dist/chunk-YRUZK2QA.js +35 -0
- package/dist/{chunk-RQBGLL3Z.js → chunk-ZAEUEDTN.js} +1 -1
- package/dist/{chunk-QZW4T3GM.js → chunk-ZBPZDADW.js} +313 -43
- package/dist/{chunk-ZLPS3GR7.js → chunk-ZJQ56DZZ.js} +42 -1
- package/dist/{chunk-7TDDSOJQ.js → chunk-ZOTTYCP5.js} +3 -3
- package/dist/{chunk-PJ2ZJUM2.js → chunk-ZPP63JSQ.js} +1 -1
- package/dist/{chunk-XD6D4RNQ.js → chunk-ZT4LFTUJ.js} +1 -1
- package/dist/{cleanup-graph-garbage-YZOQQLJI.js → cleanup-graph-garbage-VQAJ2RBT.js} +9 -9
- package/dist/{cloud-sync-command-L4P7TIIR.js → cloud-sync-command-J7NEFUY7.js} +2 -2
- package/dist/{cloud-sync-db-init-IR3S4ZYH.js → cloud-sync-db-init-KWEMNMGA.js} +1 -1
- package/dist/{cloud-sync-shutdown-K46O655Z.js → cloud-sync-shutdown-P63AUTUI.js} +3 -3
- package/dist/{co-activation-ZPW3K6F3.js → co-activation-7IHRPBZN.js} +3 -3
- package/dist/{co-occurrence-HD7N27HR.js → co-occurrence-R5AG4OAU.js} +7 -7
- package/dist/{code-context-index-SQQMEGNQ.js → code-context-index-WFLLZBVB.js} +3 -2
- package/dist/{code-context-watcher-SHRFZ3GC.js → code-context-watcher-3QAPHO7N.js} +3 -2
- package/dist/{consent-passphrase-BQUOHQGM.js → consent-passphrase-5ZBDJ5G7.js} +2 -2
- package/dist/{content-extractor-5FBHNJBI.js → content-extractor-ZLXC6GNR.js} +2 -2
- package/dist/{conversation-entity-extractor-NDZS5U3J.js → conversation-entity-extractor-7FRKLLBD.js} +4 -4
- package/dist/{crdt-sync-BXDOLDB3.js → crdt-sync-IFRZOEIS.js} +4 -4
- package/dist/{crm-webhook-LV3TX3LT.js → crm-webhook-L2S63ASV.js} +2 -2
- package/dist/{cto-delegation-gate-DDQRFK4C.js → cto-delegation-gate-3WU7OHX7.js} +20 -19
- package/dist/{daemon-orchestration-DKGZA6VZ.js → daemon-orchestration-3VQYKLOR.js} +25 -24
- package/dist/{daemon-ready-R6M5FCNV.js → daemon-ready-VZ6ZHA2C.js} +1 -1
- package/dist/{dispatch-ack-X4DXUSKP.js → dispatch-ack-UYEAKON5.js} +2 -1
- package/dist/{doc-graph-extractor-3QULZX7K.js → doc-graph-extractor-YIR5E7OF.js} +7 -7
- package/dist/{documents-PXMQ655U.js → documents-QEHPTYIY.js} +12 -11
- package/dist/{dreaming-YDN6SB5W.js → dreaming-LNFE7DTN.js} +26 -25
- package/dist/{employee-boot-brief-6A4GLZLX.js → employee-boot-brief-ZTXDYNWM.js} +31 -30
- package/dist/{entity-boost-LY5IKPD5.js → entity-boost-R5N6JWXD.js} +1 -1
- package/dist/{exe-drift-4GUGVTPD.js → exe-drift-WYSJVZFO.js} +4 -4
- package/dist/{exe-export-LNYMMWJ6.js → exe-export-GOLNAEAV.js} +13 -12
- package/dist/{exe-import-FAZDYRI2.js → exe-import-U4BSI6OH.js} +13 -12
- package/dist/{exe-key-QRLCCKNV.js → exe-key-V42G3NGO.js} +105 -104
- package/dist/{exe-org-RQFTK3C2.js → exe-org-U4GLQ6OP.js} +24 -24
- package/dist/{exe-snapshot-PAHOT277.js → exe-snapshot-U7ONBYNY.js} +30 -29
- package/dist/{fast-db-init-UO7KLV35.js → fast-db-init-W3NGKAEU.js} +1 -1
- package/dist/{founder-context-OEB2OB3U.js → founder-context-ZSIBRVDM.js} +2 -2
- package/dist/{founder-monitor-envelope-73NOAFUE.js → founder-monitor-envelope-L3IWZLFY.js} +4 -4
- package/dist/gateway/index.js +15 -14
- package/dist/{gateway-client-YZ62NOC3.js → gateway-client-DJFCVIPT.js} +1 -1
- package/dist/{git-staleness-XZ4YA242.js → git-staleness-OF24QXFZ.js} +3 -3
- package/dist/{global-procedures-KUXA6TJS.js → global-procedures-WSIOWO43.js} +4 -4
- package/dist/{graph-auto-extract-B2ICIL4E.js → graph-auto-extract-IEVVN3L3.js} +7 -7
- package/dist/{graph-query-33NOX4G4.js → graph-query-JDZWAVCU.js} +1 -1
- package/dist/{graph-rag-YPCBTGO7.js → graph-rag-BKAD2XQA.js} +4 -4
- package/dist/{hook-integrity-OKADQMF3.js → hook-integrity-TPWDGX2M.js} +1 -1
- package/dist/{hook-prefetch-CULOQNP7.js → hook-prefetch-FD6VGJJA.js} +21 -20
- package/dist/hooks/bug-report-worker.js +25 -24
- package/dist/hooks/codex-stop-task-finalizer.js +27 -26
- package/dist/hooks/commit-complete.js +32 -28
- package/dist/hooks/error-recall.js +12 -12
- package/dist/hooks/exe-heartbeat-hook.js +5 -5
- package/dist/hooks/ingest-worker.js +12 -11
- package/dist/hooks/ingest.js +14 -14
- package/dist/hooks/instructions-loaded.js +7 -7
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +6 -6
- package/dist/hooks/post-compact.js +5 -5
- package/dist/hooks/post-tool-combined.js +15 -15
- package/dist/hooks/pre-compact.js +24 -23
- package/dist/hooks/pre-tool-use.js +2 -2
- package/dist/hooks/prompt-submit.js +43 -42
- package/dist/hooks/session-end.js +29 -28
- package/dist/hooks/session-start.js +22 -19
- package/dist/hooks/stop.js +30 -29
- package/dist/hooks/subagent-stop.js +26 -25
- package/dist/hooks/summary-worker.js +29 -28
- package/dist/index.js +34 -33
- package/dist/{installer-YDH5HHYZ.js → installer-NMOBSEZ2.js} +7 -7
- package/dist/{installer-DLXN6MIE.js → installer-OTI5SA43.js} +7 -7
- package/dist/{installer-YFNGAHNG.js → installer-SRJGE4GU.js} +7 -7
- package/dist/{intercom-queue-2O5ANKO2.js → intercom-queue-4FFXCBHO.js} +20 -19
- package/dist/lib/cloud-sync.js +20 -19
- package/dist/lib/consolidation.js +10 -10
- package/dist/lib/crypto.js +3 -3
- package/dist/lib/database.js +3 -3
- package/dist/lib/db-backup.js +3 -1
- package/dist/lib/db-daemon-client.js +4 -3
- package/dist/lib/db-write-worker.js +4 -4
- package/dist/lib/db.js +3 -3
- package/dist/lib/delivery-catalog.js +431 -0
- package/dist/lib/delivery-schemas.js +31 -503
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +3 -2
- package/dist/lib/employee-templates.js +5 -5
- package/dist/lib/employees.js +3 -3
- package/dist/lib/exe-daemon-client.js +2 -1
- package/dist/lib/exe-daemon.js +162 -97
- package/dist/lib/hybrid-search.js +10 -10
- package/dist/lib/identity.js +3 -3
- package/dist/lib/keychain.js +13 -1
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +31 -22
- package/dist/lib/post-tool-memory.js +7 -7
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +4 -4
- package/dist/lib/schedules.js +9 -9
- package/dist/lib/session-registry.js +5 -5
- package/dist/lib/skill-learning.js +13 -12
- package/dist/lib/status-brief.js +2 -1
- package/dist/lib/store.js +8 -8
- package/dist/lib/task-router.js +4 -4
- package/dist/lib/tasks.js +22 -21
- package/dist/lib/tmux-routing.js +20 -19
- package/dist/lib/tmux-status.js +3 -1
- package/dist/lib/token-spend.js +4 -4
- package/dist/lib/ws-client.js +1 -1
- package/dist/{license-gate-2MXPY5DA.js → license-gate-R4JWTWM4.js} +3 -3
- package/dist/{license-recheck-7LRDLWFK.js → license-recheck-3MBJ4IJX.js} +1 -1
- package/dist/{license-sync-LQ4MVJCQ.js → license-sync-BVSG3WMW.js} +2 -2
- package/dist/{local-secret-inventory-3Z36XK6Q.js → local-secret-inventory-JWNBHZZ4.js} +6 -4
- package/dist/mailbox-inbox-MTAT4MXX.js +13 -0
- package/dist/{mailbox-outbox-DNDDP2HW.js → mailbox-outbox-OY4IU6S4.js} +2 -1
- package/dist/mcp/register-tools.js +104 -103
- package/dist/mcp/server.js +106 -105
- package/dist/mcp/tools/complete-reminder.js +5 -5
- package/dist/mcp/tools/create-reminder.js +5 -5
- package/dist/mcp/tools/create-task.js +26 -23
- package/dist/mcp/tools/deactivate-behavior.js +14 -13
- package/dist/mcp/tools/list-reminders.js +5 -5
- package/dist/mcp/tools/list-tasks.js +24 -23
- package/dist/mcp/tools/send-message.js +23 -22
- package/dist/mcp/tools/update-task.js +23 -22
- package/dist/{mcp-health-B5EKRCZG.js → mcp-health-4ZHU67LM.js} +9 -3
- package/dist/{mcp-http-config-E63VUDME.js → mcp-http-config-VUMSFWFH.js} +5 -5
- package/dist/{mcp-session-identity-TFNTAJR7.js → mcp-session-identity-DZHWEJRV.js} +20 -19
- package/dist/{memory-cards-T7EX4BGP.js → memory-cards-JVXTMSAT.js} +8 -8
- package/dist/{memory-graph-extractor-5BU6M7M2.js → memory-graph-extractor-PPBJMYFJ.js} +8 -8
- package/dist/{memory-poisoning-defense-37DM3TAR.js → memory-poisoning-defense-K5Q74XQ4.js} +3 -3
- package/dist/{memory-pressure-watchdog-RQV6HOQ4.js → memory-pressure-watchdog-YMJH5CSA.js} +21 -20
- package/dist/{memory-queue-client-UKBDOEIU.js → memory-queue-client-4G7HVRSX.js} +3 -2
- package/dist/{memory-reflection-PBIAI2RZ.js → memory-reflection-7BZWIHRE.js} +8 -8
- package/dist/{monitor-grants-JMKMPLSU.js → monitor-grants-Q7X3MYQP.js} +3 -3
- package/dist/{monitor-identity-ENPAVY4O.js → monitor-identity-ZQB4IXEE.js} +2 -2
- package/dist/{notification-ledger-X4QCCYEB.js → notification-ledger-XRAXL5OI.js} +24 -21
- package/dist/{notifications-CFWVEJ3C.js → notifications-JE3PX55X.js} +20 -19
- package/dist/{orchestration-events-Z3AIQATS.js → orchestration-events-JCQ5F5IJ.js} +4 -4
- package/dist/{orchestrator-UERD2XBD.js → orchestrator-X65INDTR.js} +22 -21
- package/dist/{org-brief-session-KCSOXIO6.js → org-brief-session-3PQ22UIX.js} +16 -15
- package/dist/{org-consent-policy-SHTWNGJ7.js → org-consent-policy-VGELJ7K7.js} +7 -6
- package/dist/{org-join-6DMHADPH.js → org-join-6TO5ZYUZ.js} +9 -9
- package/dist/{org-key-admin-BE5V64ES.js → org-key-admin-XHYVRRAZ.js} +9 -9
- package/dist/{org-key-pin-GZ4UH5VE.js → org-key-pin-TTTYGTQL.js} +3 -3
- package/dist/{org-membership-BNRVQVP7.js → org-membership-Y7T2BS57.js} +4 -4
- package/dist/{org-partner-config-UNXA6DXG.js → org-partner-config-OP4NEUNF.js} +7 -7
- package/dist/{org-partner-runtime-JBW5FWJG.js → org-partner-runtime-YNVUNT2R.js} +17 -16
- package/dist/{org-row-visibility-YDH3H5HS.js → org-row-visibility-JBBXNYXD.js} +1 -1
- package/dist/{pipeline-router-W2NECWQD.js → pipeline-router-EIBB7QNG.js} +4 -4
- package/dist/{plan-limits-Y74NOVVZ.js → plan-limits-MEWXYLEN.js} +6 -6
- package/dist/{pre-tool-use-impl-WNJJTS7I.js → pre-tool-use-impl-C6KJY22W.js} +35 -34
- package/dist/{project-name-RJDSE5O6.js → project-name-UYORSNGE.js} +4 -4
- package/dist/{projection-worker-6RGZZLY3.js → projection-worker-WYFDWS57.js} +2 -2
- package/dist/{prospective-memory-LTCFFWNL.js → prospective-memory-E6XBQFJA.js} +3 -3
- package/dist/{push-notifications-OSA4WUZF.js → push-notifications-M7YU63FY.js} +21 -20
- package/dist/{reproject-worktree-memories-3FEBUMTB.js → reproject-worktree-memories-B5XMGJSD.js} +20 -19
- package/dist/{reranker-AF7NH7EZ.js → reranker-SRA4BR7N.js} +1 -1
- package/dist/{retrieval-health-VKRILNSN.js → retrieval-health-P2JPZUPV.js} +1 -1
- package/dist/{review-polling-TFLN4T7C.js → review-polling-KQPN7IQE.js} +21 -20
- package/dist/runtime/index.js +25 -24
- package/dist/{session-events-SEVCMVVC.js → session-events-6LDDKKY3.js} +21 -20
- package/dist/{session-kill-telemetry-XSZB3KWR.js → session-kill-telemetry-5DSRGWCL.js} +21 -20
- package/dist/{session-scope-4UGYWAFG.js → session-scope-XG5R3P3D.js} +20 -19
- package/dist/{setup-wizard-5N5SZHCB.js → setup-wizard-7QFLZIKT.js} +2 -2
- package/dist/{shard-manager-UKWAOC2Y.js → shard-manager-HHHHV2KZ.js} +1 -1
- package/dist/{skill-refinement-26YAEXKO.js → skill-refinement-I5RMAHSC.js} +4 -4
- package/dist/{stack-generate-manifest-C77FJO5G.js → stack-generate-manifest-AKMZ3AUX.js} +6 -5
- package/dist/stack-init-5VKL5PL5.js +136 -0
- package/dist/{stack-promote-PV43IV5C.js → stack-promote-34CE2HHF.js} +5 -4
- package/dist/{stack-release-43QHVZ3L.js → stack-release-5PGWV5D4.js} +6 -5
- package/dist/{stack-update-6BHMJEK4.js → stack-update-ZQQ5YYPJ.js} +18 -3
- package/dist/{steward-gate-C6CVSMT7.js → steward-gate-AQJ6KT2C.js} +4 -4
- package/dist/{subagent-brief-injection-RUU3DVUH.js → subagent-brief-injection-3GU7YAWY.js} +33 -32
- package/dist/{support-inbox-D2P4JESB.js → support-inbox-NY5TB3FN.js} +9 -9
- package/dist/{support-outbox-7QGJK3LD.js → support-outbox-KNI3FR3G.js} +3 -2
- package/dist/{task-enforcement-MI5NESRP.js → task-enforcement-CAA6D2MH.js} +21 -20
- package/dist/{task-request-inbox-ZEFX5V2F.js → task-request-inbox-QBZVU66E.js} +9 -6
- package/dist/{task-scope-TTMFQBED.js → task-scope-NHXB4ZRN.js} +22 -19
- package/dist/{tasks-crud-3BGB5I55.js → tasks-crud-JHSWL5NM.js} +20 -19
- package/dist/{tasks-notify-XMBQWAOM.js → tasks-notify-7PBE4U7T.js} +21 -20
- package/dist/{tasks-review-7B2YNLOB.js → tasks-review-PPPVEE62.js} +20 -19
- package/dist/{telemetry-upload-M37GZK5Y.js → telemetry-upload-YU2VRNHX.js} +8 -8
- package/dist/{token-budget-CQATVFOK.js → token-budget-QCMWKG3K.js} +4 -4
- package/dist/{tool-capability-index-RGCEDV44.js → tool-capability-index-7AWQAJRP.js} +1 -1
- package/dist/{tool-gates-VXITVRFQ.js → tool-gates-5Q3RSQEG.js} +1 -1
- package/dist/{tool-gates-JWVSAYTW.js → tool-gates-QD26D2NE.js} +1 -1
- package/dist/{tool-telemetry-4JZ7FOJB.js → tool-telemetry-LTOIC64I.js} +1 -1
- package/dist/tui/App.js +30 -29
- package/dist/{tui-data-WYTAUJGH.js → tui-data-NDBXD6U7.js} +24 -23
- package/dist/{update-support-677WC3GL.js → update-support-BMJM4NG7.js} +17 -16
- package/dist/{whatsapp-4BSW74A2.js → whatsapp-QQLDAHUX.js} +2 -2
- package/dist/{wiki-acl-OGMGHBOL.js → wiki-acl-W6WDCVCP.js} +1 -1
- package/dist/{work-claims-5BS242P4.js → work-claims-6DM32MGO.js} +4 -4
- package/dist/{work-state-heartbeat-5ZA3IO24.js → work-state-heartbeat-HG7D4AWJ.js} +1 -1
- package/dist/{workflow-engine-OBEVRGMJ.js → workflow-engine-ZWC6CCXE.js} +2 -2
- package/dist/{worktree-XC4RBKKR.js → worktree-EMQCPGFE.js} +5 -5
- package/dist/{worktree-sweep-IXU4LYC5.js → worktree-sweep-XVUJZBXV.js} +6 -6
- package/package.json +13 -6
- package/release-notes.json +37 -41
- package/dist/mailbox-inbox-XE72D3AX.js +0 -10
- /package/dist/{chunk-AD3BEMDA.js → chunk-2KY7WZZF.js} +0 -0
- /package/dist/{chunk-VAXC5I2H.js → chunk-2Q2CD6CD.js} +0 -0
- /package/dist/{chunk-GEEWKHA4.js → chunk-AJK2PVQW.js} +0 -0
- /package/dist/{chunk-XTREZV4R.js → chunk-AWWDKF22.js} +0 -0
- /package/dist/{chunk-3SWW7CHT.js → chunk-DN3ZR3UE.js} +0 -0
- /package/dist/{chunk-4WU2UNXL.js → chunk-DZN7SDY2.js} +0 -0
- /package/dist/{chunk-TBPJ2GNW.js → chunk-GIRD7O5X.js} +0 -0
- /package/dist/{chunk-7C33VMAN.js → chunk-JRIH6I7D.js} +0 -0
- /package/dist/{chunk-FSI7PM76.js → chunk-M4XY4JRK.js} +0 -0
- /package/dist/{chunk-VK3MMYBD.js → chunk-P2VVMGMI.js} +0 -0
- /package/dist/{chunk-OBFAJFYQ.js → chunk-Q46NYJ77.js} +0 -0
- /package/dist/{chunk-Q7ESNZFY.js → chunk-U2D6PJ5T.js} +0 -0
- /package/dist/{chunk-VIDAIUVD.js → chunk-XDVOGDBC.js} +0 -0
- /package/dist/{core-memory-E2PKUID3.js → core-memory-O6D5UC3T.js} +0 -0
- /package/dist/{memory-isolation-PUONYUJ4.js → memory-isolation-EBFFC6HF.js} +0 -0
- /package/dist/{oauth-server-6LCX2VHS.js → oauth-server-ZKBUHDFI.js} +0 -0
- /package/dist/{project-boot-AFWDFRTX.js → project-boot-VEYFCCSL.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
|
-
import { readFileSync } from "node:fs";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
3
4
|
// ---------------------------------------------------------------------------
|
|
4
5
|
// IMAGE PINS — DERIVED FROM THE SIGNED MANIFEST. NEVER HAND-TYPED.
|
|
5
6
|
//
|
|
@@ -26,7 +27,52 @@ const REGISTRY = "ghcr.io/askexe";
|
|
|
26
27
|
// own registry constant rather than reusing REGISTRY (bug 58840873).
|
|
27
28
|
const AUTH_REGISTRY = "update.askexe.com/askexe";
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
// Bug cff0de47: the manifest used to be resolved as ONE path relative to this
|
|
31
|
+
// module's own file (`../stack-manifests/v0.9.json`). The documented VPS install
|
|
32
|
+
// copies `deploy/compose/*` into /opt/exe-stack WITHOUT its sibling
|
|
33
|
+
// `deploy/stack-manifests/`, so the relocated generator looked for
|
|
34
|
+
// /opt/stack-manifests/v0.9.json — a directory nobody ever creates — and died at
|
|
35
|
+
// MODULE INITIALIZATION before generating a single line of configuration.
|
|
36
|
+
//
|
|
37
|
+
// Resolution is now an ordered search over EXPLICIT, configurable locations, so
|
|
38
|
+
// relocating this file cannot break it:
|
|
39
|
+
// 1. $EXE_STACK_MANIFEST — explicit override (setup.sh exports it)
|
|
40
|
+
// 2. <this dir>/stack-manifests/… — manifest copied ALONGSIDE the compose files
|
|
41
|
+
// 3. <this dir>/../stack-manifests/…— in-repo / in-package layout
|
|
42
|
+
// A failure names every location searched instead of one phantom path.
|
|
43
|
+
const MANIFEST_FILENAME = "v0.9.json";
|
|
44
|
+
const MANIFEST_PATH_ENV_VAR = "EXE_STACK_MANIFEST";
|
|
45
|
+
|
|
46
|
+
export function manifestSearchPaths(
|
|
47
|
+
env: NodeJS.ProcessEnv = process.env,
|
|
48
|
+
moduleUrl: string = import.meta.url,
|
|
49
|
+
): string[] {
|
|
50
|
+
const paths: string[] = [];
|
|
51
|
+
const override = (env[MANIFEST_PATH_ENV_VAR] ?? "").trim();
|
|
52
|
+
if (override) paths.push(override);
|
|
53
|
+
paths.push(fileURLToPath(new URL(`./stack-manifests/${MANIFEST_FILENAME}`, moduleUrl)));
|
|
54
|
+
paths.push(fileURLToPath(new URL(`../stack-manifests/${MANIFEST_FILENAME}`, moduleUrl)));
|
|
55
|
+
return paths;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function resolveManifestPath(
|
|
59
|
+
env: NodeJS.ProcessEnv = process.env,
|
|
60
|
+
moduleUrl: string = import.meta.url,
|
|
61
|
+
exists: (p: string) => boolean = existsSync,
|
|
62
|
+
): string {
|
|
63
|
+
const candidates = manifestSearchPaths(env, moduleUrl);
|
|
64
|
+
for (const candidate of candidates) {
|
|
65
|
+
if (exists(candidate)) return candidate;
|
|
66
|
+
}
|
|
67
|
+
throw new Error(
|
|
68
|
+
`generate-env: the signed stack manifest (${MANIFEST_FILENAME}) was not found. Searched:\n` +
|
|
69
|
+
candidates.map((c) => ` - ${c}`).join("\n") +
|
|
70
|
+
`\nThe manifest is the single source of truth for every image pin, so generation cannot ` +
|
|
71
|
+
`continue without it. Copy deploy/stack-manifests/ next to these compose files, or set ` +
|
|
72
|
+
`${MANIFEST_PATH_ENV_VAR}=/path/to/${MANIFEST_FILENAME}. ` +
|
|
73
|
+
`This is NOT a node/tsx problem.`,
|
|
74
|
+
);
|
|
75
|
+
}
|
|
30
76
|
|
|
31
77
|
type ManifestFile = {
|
|
32
78
|
latest: string;
|
|
@@ -34,11 +80,12 @@ type ManifestFile = {
|
|
|
34
80
|
};
|
|
35
81
|
|
|
36
82
|
function loadManifestServices(): Record<string, { image?: string }> {
|
|
37
|
-
const
|
|
83
|
+
const manifestPath = resolveManifestPath();
|
|
84
|
+
const manifest = JSON.parse(readFileSync(manifestPath, "utf8")) as ManifestFile;
|
|
38
85
|
const services = manifest.stacks?.[manifest.latest]?.services;
|
|
39
86
|
if (!services) {
|
|
40
87
|
throw new Error(
|
|
41
|
-
`generate-env: stack manifest ${
|
|
88
|
+
`generate-env: stack manifest ${manifestPath} has no services for latest="${manifest.latest}". ` +
|
|
42
89
|
`Refusing to generate a .env with no pins — that is exactly the silent-substitution failure ` +
|
|
43
90
|
`the manifest-as-single-source-of-truth change exists to prevent.`,
|
|
44
91
|
);
|
|
@@ -192,9 +239,18 @@ export interface GenerateEnvOptions {
|
|
|
192
239
|
* a fresh deploy and the checked-in .env.example are unchanged.
|
|
193
240
|
*/
|
|
194
241
|
disableSignup?: boolean;
|
|
242
|
+
/**
|
|
243
|
+
* The CRM's first administrator (bug cff0de47). When supplied it is written
|
|
244
|
+
* straight into EXE_CRM_ADMIN_EMAIL instead of the CHANGEME_ADMIN_EMAIL placeholder, so the documented first-run path produces
|
|
245
|
+
* a .env that the deploy gate accepts. It is still never GUESSED — no
|
|
246
|
+
* admin@<domain> default — because it must be a real mailbox that also exists
|
|
247
|
+
* in GoTrue.
|
|
248
|
+
*/
|
|
249
|
+
adminEmail?: string;
|
|
195
250
|
}
|
|
196
251
|
|
|
197
252
|
export function generateEnv(options: GenerateEnvOptions): string {
|
|
253
|
+
const adminEmail = (options.adminEmail ?? "").trim();
|
|
198
254
|
const normalizedDomain = normalizeDomain(options.domain);
|
|
199
255
|
const normalizedClientName = normalizeClientName(options.clientName);
|
|
200
256
|
const gatewayWsAuthToken = randomSecret(RANDOM_SECRET_48);
|
|
@@ -318,8 +374,8 @@ export function generateEnv(options: GenerateEnvOptions): string {
|
|
|
318
374
|
// refused (e51ca54c §10.6b). It cannot be generated — it must be a real
|
|
319
375
|
// mailbox that also exists in GoTrue — so it ships as SET_MANUALLY rather
|
|
320
376
|
// than as a random secret or a guessed admin@<domain>.
|
|
321
|
-
MANUAL_VALUE_COMMENT,
|
|
322
|
-
"
|
|
377
|
+
...(adminEmail ? [] : [MANUAL_VALUE_COMMENT]),
|
|
378
|
+
`EXE_CRM_ADMIN_EMAIL=${adminEmail || "CHANGEME_ADMIN_EMAIL"}`,
|
|
323
379
|
`CRM_HOST_PORT=${CRM_HOST_PORT}`,
|
|
324
380
|
"",
|
|
325
381
|
"# --- Wiki ---",
|
|
@@ -935,7 +991,7 @@ export function joinEnvLines(lines: string[]): string {
|
|
|
935
991
|
function printUsage(): void {
|
|
936
992
|
process.stderr.write(
|
|
937
993
|
"Usage:\n" +
|
|
938
|
-
" npx tsx deploy/compose/generate-env.ts <client-name> <domain> [license-key]\n" +
|
|
994
|
+
" npx tsx deploy/compose/generate-env.ts <client-name> <domain> [license-key] [admin-email]\n" +
|
|
939
995
|
" npx tsx deploy/compose/generate-env.ts --example\n",
|
|
940
996
|
);
|
|
941
997
|
}
|
|
@@ -957,13 +1013,13 @@ function main(): void {
|
|
|
957
1013
|
return;
|
|
958
1014
|
}
|
|
959
1015
|
|
|
960
|
-
const [clientName, domain, licenseKey] = args;
|
|
1016
|
+
const [clientName, domain, licenseKey, adminEmail] = args;
|
|
961
1017
|
if (!clientName || !domain) {
|
|
962
1018
|
printUsage();
|
|
963
1019
|
process.exit(1);
|
|
964
1020
|
}
|
|
965
1021
|
|
|
966
|
-
process.stdout.write(generateEnv({ clientName, domain, licenseKey }));
|
|
1022
|
+
process.stdout.write(generateEnv({ clientName, domain, licenseKey, adminEmail }));
|
|
967
1023
|
}
|
|
968
1024
|
|
|
969
1025
|
if (isCliInvocation()) {
|
package/deploy/compose/setup.sh
CHANGED
|
@@ -14,17 +14,106 @@ info() { echo -e "${GREEN}[setup]${NC} $1"; }
|
|
|
14
14
|
warn() { echo -e "${YELLOW}[setup]${NC} $1"; }
|
|
15
15
|
err() { echo -e "${RED}[setup]${NC} $1" >&2; }
|
|
16
16
|
|
|
17
|
+
# Read one KEY from .env, empty if absent. Used to decide whether a RE-RUN
|
|
18
|
+
# already has the configuration this run did not pass on the command line.
|
|
19
|
+
get_env_var() {
|
|
20
|
+
[[ -f .env ]] || { echo ""; return 0; }
|
|
21
|
+
local raw
|
|
22
|
+
raw=$(grep -E "^$1=" .env 2>/dev/null | head -n1 | cut -d= -f2- || true)
|
|
23
|
+
# set_env_var writes dotenv DOUBLE-QUOTED values, so undo that quoting here —
|
|
24
|
+
# otherwise a re-run compares `"true"` against `true` and takes the wrong
|
|
25
|
+
# branch. Values written by generate-env.ts are unquoted and pass through.
|
|
26
|
+
if [[ ${#raw} -ge 2 && "$raw" == '"'*'"' ]]; then
|
|
27
|
+
local bs='\' dq='"' dollar='$'
|
|
28
|
+
raw="${raw:1:${#raw}-2}"
|
|
29
|
+
raw="${raw//$dollar$dollar/$dollar}"
|
|
30
|
+
raw="${raw//"$bs$dq"/$dq}"
|
|
31
|
+
raw="${raw//"$bs$bs"/$bs}"
|
|
32
|
+
fi
|
|
33
|
+
printf '%s\n' "$raw"
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Set (or append) one KEY=VALUE in .env WITHOUT echoing the value. sed cannot be
|
|
37
|
+
# used safely here: secrets contain /, & and = which are sed metacharacters.
|
|
38
|
+
#
|
|
39
|
+
# COMPOSE INTERPOLATES .env VALUES, so a `$` written raw is not a `$`. An SMTP
|
|
40
|
+
# password of `abc$TOKEN` is read by Compose as the variable TOKEN and becomes
|
|
41
|
+
# `abc` — the credential is silently changed, email verification and password
|
|
42
|
+
# reset stop working, and nothing in the stack reports a wrong password as
|
|
43
|
+
# anything but a failed login. Measured:
|
|
44
|
+
#
|
|
45
|
+
# .env: SMTP_PASS=abc$TOKEN -> docker compose config -> P: abc
|
|
46
|
+
# .env: SMTP_PASS=abc$$TOKEN -> docker compose config -> P: abc$$TOKEN
|
|
47
|
+
#
|
|
48
|
+
# (`docker compose config` re-escapes a literal `$` as `$$` on output, which is
|
|
49
|
+
# how the second line reads back as the intended `abc$TOKEN`.)
|
|
50
|
+
#
|
|
51
|
+
# ESCAPING `$` IS NOT ENOUGH: an UNQUOTED value also loses everything from the
|
|
52
|
+
# first `#`, and its surrounding whitespace. Measured the same way:
|
|
53
|
+
#
|
|
54
|
+
# .env: SMTP_PASS=abc #def -> docker compose config -> P: abc
|
|
55
|
+
# .env: SMTP_PASS="abc #def" -> docker compose config -> P: abc #def
|
|
56
|
+
#
|
|
57
|
+
# So values are written dotenv DOUBLE-QUOTED, with `\`, `"` and `$` escaped.
|
|
58
|
+
# These are literal secrets and hostnames, never expressions — nothing here is
|
|
59
|
+
# meant to interpolate. get_env_var() undoes exactly this quoting.
|
|
60
|
+
set_env_var() {
|
|
61
|
+
local key="$1" value="$2"
|
|
62
|
+
# The replacement side of ${var//x/y} IS expanded, so a literal `$$` written
|
|
63
|
+
# there becomes the shell's PID — `abc$TOKEN` came out as `abc87319TOKEN`.
|
|
64
|
+
# Going through a variable whose value is a single `$` keeps both characters
|
|
65
|
+
# literal, because an expansion's RESULT is not expanded again.
|
|
66
|
+
local dollar='$' bs='\' dq='"'
|
|
67
|
+
# The PATTERN side is quoted: an unquoted `$bs` is a lone backslash, which the
|
|
68
|
+
# pattern matcher reads as an escape character and matches nothing, so `a\b`
|
|
69
|
+
# went out unescaped and Compose read `\b` as a BACKSPACE byte.
|
|
70
|
+
value="${value//"$bs"/$bs$bs}" # backslash first: it escapes the rest
|
|
71
|
+
value="${value//$dq/$bs$dq}"
|
|
72
|
+
value="${value//$dollar/$dollar$dollar}"
|
|
73
|
+
value="$dq$value$dq"
|
|
74
|
+
SEV_KEY="$key" SEV_VALUE="$value" awk '
|
|
75
|
+
$0 ~ "^" ENVIRON["SEV_KEY"] "=" { print ENVIRON["SEV_KEY"] "=" ENVIRON["SEV_VALUE"]; found=1; next }
|
|
76
|
+
{ print }
|
|
77
|
+
END { if (!found) print ENVIRON["SEV_KEY"] "=" ENVIRON["SEV_VALUE"] }
|
|
78
|
+
' .env > .env.setenv.tmp && mv .env.setenv.tmp .env
|
|
79
|
+
chmod 600 .env 2>/dev/null || true
|
|
80
|
+
}
|
|
81
|
+
|
|
17
82
|
# Parse args
|
|
18
|
-
CLIENT="" DOMAIN="" LICENSE=""
|
|
83
|
+
CLIENT="" DOMAIN="" LICENSE="" ADMIN_EMAIL="" TUNNEL_TOKEN=""
|
|
84
|
+
SMTP_HOST="" SMTP_PORT="" SMTP_USER="" SMTP_PASS="" NO_EMAIL="no"
|
|
19
85
|
while [[ $# -gt 0 ]]; do
|
|
20
86
|
case $1 in
|
|
21
87
|
--client) CLIENT="$2"; shift 2;;
|
|
22
88
|
--domain) DOMAIN="$2"; shift 2;;
|
|
23
89
|
--license) LICENSE="$2"; shift 2;;
|
|
90
|
+
--admin-email) ADMIN_EMAIL="$2"; shift 2;;
|
|
91
|
+
--tunnel-token) TUNNEL_TOKEN="$2"; shift 2;;
|
|
92
|
+
--smtp-host) SMTP_HOST="$2"; shift 2;;
|
|
93
|
+
--smtp-port) SMTP_PORT="$2"; shift 2;;
|
|
94
|
+
--smtp-user) SMTP_USER="$2"; shift 2;;
|
|
95
|
+
--smtp-pass) SMTP_PASS="$2"; shift 2;;
|
|
96
|
+
--no-email) NO_EMAIL="yes"; shift 1;;
|
|
24
97
|
*) err "Unknown arg: $1"; exit 1;;
|
|
25
98
|
esac
|
|
26
99
|
done
|
|
27
|
-
[[ -z "$CLIENT" || -z "$DOMAIN" ]] && { err "Usage: ./setup.sh --client <name> --domain <domain>"; exit 1; }
|
|
100
|
+
[[ -z "$CLIENT" || -z "$DOMAIN" ]] && { err "Usage: ./setup.sh --client <name> --domain <domain> --admin-email <you@your-domain> [--tunnel-token <token>] [--smtp-host <host> --smtp-user <user> --smtp-pass <pass> | --no-email] [--license <key>]"; exit 1; }
|
|
101
|
+
# bug cff0de47: the CRM seeds its FIRST workspace owner from EXE_CRM_ADMIN_EMAIL.
|
|
102
|
+
# Without it the CRM boots healthy with no workspace and no user, and the first
|
|
103
|
+
# sign-in is refused with no way in. Ask for it here rather than deploying a
|
|
104
|
+
# stack nobody can log into (preflight refuses it either way).
|
|
105
|
+
if [[ -z "$ADMIN_EMAIL" ]]; then
|
|
106
|
+
if [[ -t 0 ]]; then
|
|
107
|
+
read -r -p " Admin email (owns the CRM/wiki; must be a real mailbox): " ADMIN_EMAIL
|
|
108
|
+
fi
|
|
109
|
+
fi
|
|
110
|
+
if [[ -z "$ADMIN_EMAIL" ]]; then
|
|
111
|
+
err "--admin-email is required. It becomes EXE_CRM_ADMIN_EMAIL: the mailbox that"
|
|
112
|
+
err "owns this stack. The CRM seeds its first workspace for exactly this address;"
|
|
113
|
+
err "without it the CRM comes up healthy but empty and NOBODY can sign in."
|
|
114
|
+
err " ./setup.sh --client $CLIENT --domain $DOMAIN --admin-email you@$DOMAIN${LICENSE:+ --license $LICENSE}"
|
|
115
|
+
exit 1
|
|
116
|
+
fi
|
|
28
117
|
|
|
29
118
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
30
119
|
cd "$SCRIPT_DIR"
|
|
@@ -59,13 +148,44 @@ else
|
|
|
59
148
|
# so any failure of the generator silently deployed ancient images that bypass
|
|
60
149
|
# the manifest's digest-pinning entirely. There is NO safe inline fallback for
|
|
61
150
|
# image tags — fail loudly instead and let the operator install node/npx.
|
|
151
|
+
# Bug cff0de47: generate-env.ts reads the SIGNED STACK MANIFEST at module
|
|
152
|
+
# initialization. The documented install copies deploy/compose/* into
|
|
153
|
+
# /opt/exe-stack without its sibling deploy/stack-manifests/, so the generator
|
|
154
|
+
# died on a manifest path that exists only inside the npm package — and the
|
|
155
|
+
# error below blamed node/tsx, sending the operator to debug the wrong thing.
|
|
156
|
+
# Locate the manifest explicitly and hand the generator its path.
|
|
157
|
+
if [[ -z "${EXE_STACK_MANIFEST:-}" ]]; then
|
|
158
|
+
for candidate in \
|
|
159
|
+
"$SCRIPT_DIR/stack-manifests/v0.9.json" \
|
|
160
|
+
"$SCRIPT_DIR/../stack-manifests/v0.9.json" \
|
|
161
|
+
"$(npm root -g 2>/dev/null)/@askexenow/exe-os/deploy/stack-manifests/v0.9.json"; do
|
|
162
|
+
if [[ -f "$candidate" ]]; then EXE_STACK_MANIFEST="$candidate"; break; fi
|
|
163
|
+
done
|
|
164
|
+
fi
|
|
165
|
+
if [[ -z "${EXE_STACK_MANIFEST:-}" || ! -f "${EXE_STACK_MANIFEST}" ]]; then
|
|
166
|
+
err "Stack manifest v0.9.json not found. Searched:"
|
|
167
|
+
err " - \$EXE_STACK_MANIFEST (${EXE_STACK_MANIFEST:-unset})"
|
|
168
|
+
err " - $SCRIPT_DIR/stack-manifests/v0.9.json"
|
|
169
|
+
err " - $SCRIPT_DIR/../stack-manifests/v0.9.json"
|
|
170
|
+
err " - \$(npm root -g)/@askexenow/exe-os/deploy/stack-manifests/v0.9.json"
|
|
171
|
+
err ""
|
|
172
|
+
err "The manifest is the single source of truth for every image pin, so .env"
|
|
173
|
+
err "cannot be generated without it. This is NOT a node/tsx problem."
|
|
174
|
+
err "Fix: run 'exe-os stack-init --dir $SCRIPT_DIR' (it copies the compose files"
|
|
175
|
+
err "AND the manifest), or set EXE_STACK_MANIFEST=/path/to/v0.9.json."
|
|
176
|
+
exit 1
|
|
177
|
+
fi
|
|
178
|
+
info "Using stack manifest: $EXE_STACK_MANIFEST"
|
|
179
|
+
export EXE_STACK_MANIFEST
|
|
62
180
|
if command -v node >/dev/null 2>&1 && command -v npx >/dev/null 2>&1; then
|
|
63
181
|
# Run via npx tsx (the project is pure ESM — require() is forbidden).
|
|
64
|
-
if ! npx --yes tsx "$SCRIPT_DIR/generate-env.ts" "$CLIENT" "$DOMAIN" "${LICENSE:-}" > .env 2>/tmp/exe-generate-env.err; then
|
|
182
|
+
if ! npx --yes tsx "$SCRIPT_DIR/generate-env.ts" "$CLIENT" "$DOMAIN" "${LICENSE:-}" "$ADMIN_EMAIL" > .env 2>/tmp/exe-generate-env.err; then
|
|
65
183
|
rm -f .env
|
|
66
184
|
err "generate-env.ts failed — refusing to write a .env with stale fallback image tags."
|
|
67
185
|
err "Generator error:"; cat /tmp/exe-generate-env.err >&2 || true
|
|
68
|
-
err "
|
|
186
|
+
err "If the error above is about a missing manifest, see EXE_STACK_MANIFEST"
|
|
187
|
+
err "(currently: $EXE_STACK_MANIFEST). Otherwise fix node/tsx and re-run"
|
|
188
|
+
err "setup.sh (the inline fallback was removed: bug 716c0f6e)."
|
|
69
189
|
exit 1
|
|
70
190
|
fi
|
|
71
191
|
else
|
|
@@ -80,6 +200,79 @@ else
|
|
|
80
200
|
info ".env generated with auto-generated secrets (chmod 600)"
|
|
81
201
|
fi
|
|
82
202
|
|
|
203
|
+
# Step 2a: Cloudflare tunnel token.
|
|
204
|
+
#
|
|
205
|
+
# bug cff0de47: the gated deploy at the end of this script REFUSES to run
|
|
206
|
+
# without a tunnel token (the cloudflared service has no compose profile gate,
|
|
207
|
+
# so a stack without a token has no public ingress). The customer guide used to
|
|
208
|
+
# hand the token over in a LATER step than the one that runs this script, so the
|
|
209
|
+
# documented order could never complete on a fresh machine. Take it here.
|
|
210
|
+
if [[ -n "$TUNNEL_TOKEN" ]]; then
|
|
211
|
+
set_env_var CLOUDFLARE_TUNNEL_TOKEN "$TUNNEL_TOKEN"
|
|
212
|
+
info "Cloudflare tunnel token written to .env"
|
|
213
|
+
else
|
|
214
|
+
warn "No --tunnel-token given. The deploy step below REQUIRES CLOUDFLARE_TUNNEL_TOKEN"
|
|
215
|
+
warn "in .env (Zero Trust > Networks > Tunnels > your tunnel > install token)."
|
|
216
|
+
warn "Set it and re-run this script, or re-run with --tunnel-token <token>."
|
|
217
|
+
fi
|
|
218
|
+
|
|
219
|
+
# Step 2a-ii: Email delivery.
|
|
220
|
+
#
|
|
221
|
+
# bug cff0de47: a freshly generated .env ships SMTP_HOST empty and
|
|
222
|
+
# GOTRUE_MAILER_AUTOCONFIRM=false, and the deploy preflight REFUSES that
|
|
223
|
+
# combination — password-reset and email-verification would silently never
|
|
224
|
+
# send. Every fresh install hit it, and the customer guide never mentioned
|
|
225
|
+
# email at all. Ask for it here rather than deploying a stack whose recovery
|
|
226
|
+
# flow is dead, or record the operator's explicit decision to run without email.
|
|
227
|
+
if [[ "$NO_EMAIL" == "yes" ]]; then
|
|
228
|
+
set_env_var GOTRUE_MAILER_AUTOCONFIRM "true"
|
|
229
|
+
warn "Email flows DISABLED (--no-email): GOTRUE_MAILER_AUTOCONFIRM=true."
|
|
230
|
+
warn "Sign-ups are auto-confirmed and there is NO password-reset email."
|
|
231
|
+
warn "Signup stays disabled (invite-only), so this does not open registration."
|
|
232
|
+
elif [[ -n "$SMTP_HOST" ]]; then
|
|
233
|
+
set_env_var SMTP_HOST "$SMTP_HOST"
|
|
234
|
+
if [[ -n "$SMTP_PORT" ]]; then set_env_var SMTP_PORT "$SMTP_PORT"; fi
|
|
235
|
+
if [[ -n "$SMTP_USER" ]]; then set_env_var SMTP_USER "$SMTP_USER"; fi
|
|
236
|
+
if [[ -n "$SMTP_PASS" ]]; then set_env_var SMTP_PASS "$SMTP_PASS"; fi
|
|
237
|
+
# GOTRUE_MAILER_AUTOCONFIRM IS DERIVED FROM THE MAILER DECISION, not left at
|
|
238
|
+
# whatever a previous run wrote. Switching a `--no-email` install to SMTP used
|
|
239
|
+
# to leave AUTOCONFIRM=true behind: setup announced that verification would
|
|
240
|
+
# send while GoTrue kept auto-confirming every account without ever proving
|
|
241
|
+
# the mailbox belonged to the person signing up — and preflight's smtp_recovery
|
|
242
|
+
# check short-circuits on AUTOCONFIRM=true, so nothing downstream said
|
|
243
|
+
# otherwise. Each branch here writes the flag its own decision implies.
|
|
244
|
+
# (codex on PR #1152)
|
|
245
|
+
set_env_var GOTRUE_MAILER_AUTOCONFIRM "false"
|
|
246
|
+
info "SMTP configured ($SMTP_HOST) — email verification and password reset will send."
|
|
247
|
+
elif [[ -n "$(get_env_var SMTP_HOST)" ]]; then
|
|
248
|
+
# A RE-RUN IS NOT A FRESH INSTALL. This script is documented as re-runnable —
|
|
249
|
+
# the customer guide's own tunnel-token retry re-invokes it — and demanding
|
|
250
|
+
# the email flags again on every invocation made that retry fail on a stack
|
|
251
|
+
# that was already configured correctly. Judge the EFFECTIVE configuration in
|
|
252
|
+
# .env, not the flags of this particular run. (codex on PR #1152)
|
|
253
|
+
info "SMTP already configured in .env ($(get_env_var SMTP_HOST)) — keeping it."
|
|
254
|
+
if [[ "$(get_env_var GOTRUE_MAILER_AUTOCONFIRM)" == "true" ]]; then
|
|
255
|
+
# No decision was made THIS run, so this is reported, not silently flipped:
|
|
256
|
+
# SMTP + AUTOCONFIRM=true can be deliberate on an invite-only stack.
|
|
257
|
+
warn "...but GOTRUE_MAILER_AUTOCONFIRM=true, so accounts are auto-confirmed"
|
|
258
|
+
warn "WITHOUT verifying the mailbox. Re-run with --smtp-host to enforce"
|
|
259
|
+
warn "verification, or set GOTRUE_MAILER_AUTOCONFIRM=false in .env."
|
|
260
|
+
fi
|
|
261
|
+
elif [[ "$(get_env_var GOTRUE_MAILER_AUTOCONFIRM)" == "true" ]]; then
|
|
262
|
+
warn "Email flows already DISABLED in .env (GOTRUE_MAILER_AUTOCONFIRM=true) — keeping that choice."
|
|
263
|
+
warn "Sign-ups are auto-confirmed and there is NO password-reset email."
|
|
264
|
+
else
|
|
265
|
+
err "No email delivery configured. A stack with SMTP_HOST empty and"
|
|
266
|
+
err "GOTRUE_MAILER_AUTOCONFIRM=false cannot send password-reset or"
|
|
267
|
+
err "email-verification messages, and the deploy gate refuses it."
|
|
268
|
+
err ""
|
|
269
|
+
err "Either supply SMTP credentials:"
|
|
270
|
+
err " --smtp-host smtp.example.com --smtp-port 587 --smtp-user <user> --smtp-pass <pass>"
|
|
271
|
+
err "or run without email flows (sign-ups auto-confirmed, no password reset):"
|
|
272
|
+
err " --no-email"
|
|
273
|
+
exit 1
|
|
274
|
+
fi
|
|
275
|
+
|
|
83
276
|
# Step 2b: Host-access consent for the monitor agent.
|
|
84
277
|
#
|
|
85
278
|
# exe-monitor-agent reports fleet health to the monitoring hub, but to do so it
|
|
@@ -235,7 +428,7 @@ fi
|
|
|
235
428
|
|
|
236
429
|
if [[ -n "$EXE_CLI" ]]; then
|
|
237
430
|
info "Step 4+5: Deploying via '$EXE_CLI stack-update' (preflight + proxy auth + health-gated rollout + rollback)..."
|
|
238
|
-
if ! "$EXE_CLI" stack-update --yes; then
|
|
431
|
+
if ! "$EXE_CLI" stack-update --yes --domain "$DOMAIN" --admin-email "$ADMIN_EMAIL"; then
|
|
239
432
|
err "stack-update failed — the gated deploy refused or rolled back. Review the"
|
|
240
433
|
err "output above. Do NOT bypass with raw 'docker compose up' — fix the cause"
|
|
241
434
|
err "(preflight RED, image pull, or health failure) and re-run setup.sh."
|
|
@@ -249,7 +442,7 @@ else
|
|
|
249
442
|
err ""
|
|
250
443
|
err "Install the CLI and re-run setup.sh:"
|
|
251
444
|
err " npm install -g exe-os"
|
|
252
|
-
err " ./setup.sh --client $CLIENT --domain $DOMAIN${LICENSE:+ --license $LICENSE}"
|
|
445
|
+
err " ./setup.sh --client $CLIENT --domain $DOMAIN --admin-email $ADMIN_EMAIL${LICENSE:+ --license $LICENSE}"
|
|
253
446
|
exit 1
|
|
254
447
|
fi
|
|
255
448
|
|
|
@@ -259,7 +452,12 @@ docker ps --format 'table {{.Names}}\t{{.Status}}'
|
|
|
259
452
|
echo ""
|
|
260
453
|
info "Stack deployed! Next steps:"
|
|
261
454
|
echo " 1. Configure Cloudflare tunnel (if not done)"
|
|
262
|
-
|
|
455
|
+
# bug cff0de47: this used to say "to create admin account". GoTrue signup is OFF
|
|
456
|
+
# by default (invite-only), so there is no account to create in the CRM UI — the
|
|
457
|
+
# admin is SEEDED from EXE_CRM_ADMIN_EMAIL and must also be created in GoTrue.
|
|
458
|
+
echo " 2. Create the GoTrue user for ${ADMIN_EMAIL} (signup is DISABLED by default —"
|
|
459
|
+
echo " see CUSTOMER-GUIDE.md 'Create Your Admin Account'), then sign in at"
|
|
460
|
+
echo " https://crm.${DOMAIN}"
|
|
263
461
|
echo " 3. Open https://wiki.${DOMAIN} to set up wiki"
|
|
264
462
|
echo " 4. Configure WhatsApp: edit gateway.json, restart gateway, pair at https://gateway.${DOMAIN}/pair/<name>"
|
|
265
463
|
echo " 5. Verify: curl https://crm.${DOMAIN}/healthz && curl https://wiki.${DOMAIN}/api/ping"
|
package/dist/.dist-verified.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"verified_at": "2026-09-
|
|
4
|
-
"manifest_sha256": "
|
|
5
|
-
"package_version": "0.9.
|
|
3
|
+
"verified_at": "2026-09-10T04:33:27.784Z",
|
|
4
|
+
"manifest_sha256": "bc5eed1f8fc614320e0c43011f62df3b11fb4e6c07324618a1eaa44feaa4d45c",
|
|
5
|
+
"package_version": "0.9.384"
|
|
6
6
|
}
|
|
@@ -8,18 +8,18 @@ import {
|
|
|
8
8
|
resolveAgentAttribution,
|
|
9
9
|
resolveAgentForPayload,
|
|
10
10
|
writeActiveAgent
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-F4BBMIPG.js";
|
|
12
12
|
import "./chunk-MUCNYSJP.js";
|
|
13
13
|
import "./chunk-CVYC6DUW.js";
|
|
14
14
|
import "./chunk-GJV3WDWM.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-GL47M7NY.js";
|
|
16
16
|
import "./chunk-BBMTVAE3.js";
|
|
17
17
|
import "./chunk-TKDITWDN.js";
|
|
18
18
|
import "./chunk-5YEUPUV4.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-72V3S44T.js";
|
|
20
20
|
import "./chunk-YYB5PMTK.js";
|
|
21
21
|
import "./chunk-L5CGXEZC.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-QH5ZQ5SJ.js";
|
|
23
23
|
import "./chunk-ZQEJ4IX2.js";
|
|
24
24
|
import "./chunk-FXU7JOXK.js";
|
|
25
25
|
import "./chunk-MMS2HBRT.js";
|
|
@@ -7,18 +7,18 @@ import {
|
|
|
7
7
|
resolveAgentAttribution,
|
|
8
8
|
resolveAgentForPayload,
|
|
9
9
|
writeActiveAgent
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-F4BBMIPG.js";
|
|
11
11
|
import "./chunk-MUCNYSJP.js";
|
|
12
12
|
import "./chunk-CVYC6DUW.js";
|
|
13
13
|
import "./chunk-GJV3WDWM.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-GL47M7NY.js";
|
|
15
15
|
import "./chunk-BBMTVAE3.js";
|
|
16
16
|
import "./chunk-TKDITWDN.js";
|
|
17
17
|
import "./chunk-5YEUPUV4.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-72V3S44T.js";
|
|
19
19
|
import "./chunk-YYB5PMTK.js";
|
|
20
20
|
import "./chunk-L5CGXEZC.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-QH5ZQ5SJ.js";
|
|
22
22
|
import "./chunk-ZQEJ4IX2.js";
|
|
23
23
|
import "./chunk-FXU7JOXK.js";
|
|
24
24
|
import "./chunk-MMS2HBRT.js";
|
|
@@ -5,14 +5,14 @@ import "./chunk-AM7S2TY6.js";
|
|
|
5
5
|
import {
|
|
6
6
|
loadEmployeesSync,
|
|
7
7
|
validateEmployeeName
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GL47M7NY.js";
|
|
9
9
|
import "./chunk-BBMTVAE3.js";
|
|
10
10
|
import "./chunk-TKDITWDN.js";
|
|
11
11
|
import "./chunk-5YEUPUV4.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-72V3S44T.js";
|
|
13
13
|
import "./chunk-YYB5PMTK.js";
|
|
14
14
|
import "./chunk-L5CGXEZC.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-QH5ZQ5SJ.js";
|
|
16
16
|
import "./chunk-ZQEJ4IX2.js";
|
|
17
17
|
import "./chunk-FXU7JOXK.js";
|
|
18
18
|
import "./chunk-WNBZJSQT.js";
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
artifactObjectId,
|
|
9
9
|
encryptSyncBlob
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ZPP63JSQ.js";
|
|
11
11
|
import "./chunk-TWMWHDOY.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-4AR5XKCH.js";
|
|
13
|
+
import "./chunk-5U2IJBFV.js";
|
|
14
14
|
import {
|
|
15
15
|
EXE_AI_DIR,
|
|
16
16
|
loadConfigSync
|
|
@@ -2,30 +2,30 @@
|
|
|
2
2
|
import {
|
|
3
3
|
disposeStore,
|
|
4
4
|
initStore
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-UOPCVFVR.js";
|
|
6
|
+
import "./chunk-AWWDKF22.js";
|
|
7
7
|
import "./chunk-CHCA3ZM2.js";
|
|
8
8
|
import "./chunk-OTVEIJUQ.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-VHHX4UCP.js";
|
|
10
10
|
import "./chunk-5MOYSU5A.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-ELEGH4DX.js";
|
|
12
12
|
import "./chunk-76CJBM36.js";
|
|
13
13
|
import "./chunk-MP2AFCGL.js";
|
|
14
14
|
import {
|
|
15
15
|
getClient,
|
|
16
16
|
getEmployeeNamesByRole,
|
|
17
17
|
loadEmployeesSync
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-GL47M7NY.js";
|
|
19
19
|
import "./chunk-BBMTVAE3.js";
|
|
20
20
|
import "./chunk-TKDITWDN.js";
|
|
21
21
|
import "./chunk-5YEUPUV4.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-72V3S44T.js";
|
|
23
23
|
import "./chunk-YYB5PMTK.js";
|
|
24
24
|
import "./chunk-L5CGXEZC.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-QH5ZQ5SJ.js";
|
|
26
26
|
import "./chunk-ZQEJ4IX2.js";
|
|
27
27
|
import "./chunk-FXU7JOXK.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-5U2IJBFV.js";
|
|
29
29
|
import "./chunk-MMS2HBRT.js";
|
|
30
30
|
import "./chunk-RH4AH3YB.js";
|
|
31
31
|
import {
|
|
@@ -19,20 +19,20 @@ import {
|
|
|
19
19
|
selectInjectedBehaviors,
|
|
20
20
|
selectRelevantBehaviors,
|
|
21
21
|
selectRelevantBehaviorsWithReasons
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-4AAMFWJT.js";
|
|
23
|
+
import "./chunk-S26CV7BE.js";
|
|
24
|
+
import "./chunk-EIOGV75A.js";
|
|
25
25
|
import "./chunk-QGGH7LOU.js";
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-UOPCVFVR.js";
|
|
27
|
+
import "./chunk-AWWDKF22.js";
|
|
28
28
|
import "./chunk-CHCA3ZM2.js";
|
|
29
29
|
import "./chunk-OTVEIJUQ.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-VHHX4UCP.js";
|
|
31
31
|
import "./chunk-5MOYSU5A.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-ELEGH4DX.js";
|
|
33
33
|
import "./chunk-76CJBM36.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-VJEJ7JNB.js";
|
|
35
|
+
import "./chunk-MFAOAIUE.js";
|
|
36
36
|
import "./chunk-PCV52RYM.js";
|
|
37
37
|
import "./chunk-BTSWFMEH.js";
|
|
38
38
|
import "./chunk-CIPDQRFO.js";
|
|
@@ -41,17 +41,18 @@ import "./chunk-IMYGYIAI.js";
|
|
|
41
41
|
import "./chunk-3DAEZILW.js";
|
|
42
42
|
import "./chunk-DRTJCG6B.js";
|
|
43
43
|
import "./chunk-MP2AFCGL.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-YRUZK2QA.js";
|
|
45
|
+
import "./chunk-GL47M7NY.js";
|
|
45
46
|
import "./chunk-BBMTVAE3.js";
|
|
46
47
|
import "./chunk-TKDITWDN.js";
|
|
47
48
|
import "./chunk-5YEUPUV4.js";
|
|
48
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-72V3S44T.js";
|
|
49
50
|
import "./chunk-YYB5PMTK.js";
|
|
50
51
|
import "./chunk-L5CGXEZC.js";
|
|
51
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-QH5ZQ5SJ.js";
|
|
52
53
|
import "./chunk-ZQEJ4IX2.js";
|
|
53
54
|
import "./chunk-FXU7JOXK.js";
|
|
54
|
-
import "./chunk-
|
|
55
|
+
import "./chunk-5U2IJBFV.js";
|
|
55
56
|
import "./chunk-A7JYF4RG.js";
|
|
56
57
|
import "./chunk-ARX6TAGN.js";
|
|
57
58
|
import "./chunk-MMS2HBRT.js";
|