@askexenow/exe-os 0.9.372 → 0.9.374
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 +45 -10
- package/deploy/compose/.env.example +46 -9
- package/deploy/compose/docker-compose.yml +136 -18
- package/deploy/compose/generate-env.ts +142 -34
- package/deploy/compose/sso-edge/default.conf.template +78 -7
- package/deploy/compose/sso-edge/sso-redirect.conf +109 -13
- package/deploy/stack-manifests/v0.9.30-apps.json +1 -1
- package/deploy/stack-manifests/v0.9.json +4 -4
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-GRT5MKD5.js → active-agent-ONPPEWQV.js} +7 -6
- package/dist/{active-agent-L2ZSSXDK.js → active-agent-UJKMG7LJ.js} +7 -6
- package/dist/{agent-defs-generator-M4ZNYIVX.js → agent-defs-generator-ZWI6DXOE.js} +6 -5
- package/dist/{agent-loop-FOK2IRZQ.js → agent-loop-OYHJKNYH.js} +1 -1
- package/dist/{agentic-ontology-DMPRDEUX.js → agentic-ontology-WHFJ3QFS.js} +1 -1
- package/dist/{artifact-backup-767STHSW.js → artifact-backup-WXZNB7KE.js} +2 -1
- package/dist/{backfill-gate-VX2RZTQV.js → backfill-gate-KWJQ35YX.js} +3 -2
- package/dist/{backfill-metadata-ZMEHJQ5M.js → backfill-metadata-3OUSQD5V.js} +8 -7
- package/dist/{background-jobs-LTPWCMA3.js → background-jobs-6VMD55PK.js} +3 -2
- package/dist/{backup-verify-EX2K732J.js → backup-verify-ZKTUYLTA.js} +4 -3
- package/dist/{behavior-injection-22AGMS25.js → behavior-injection-M6UYZCMW.js} +17 -15
- package/dist/{behaviors-DVFXAWF5.js → behaviors-ZJ45TFBJ.js} +21 -13
- package/dist/bin/age-ontology-load.js +3 -2
- package/dist/bin/agentic-ontology-backfill.js +10 -9
- package/dist/bin/agentic-reflection-backfill.js +11 -10
- package/dist/bin/agentic-semantic-label.js +10 -9
- package/dist/bin/backfill-conversations.js +13 -11
- package/dist/bin/backfill-responses.js +13 -11
- package/dist/bin/backfill-vectors.js +17 -15
- package/dist/bin/bulk-sync-postgres.js +22 -20
- package/dist/bin/cc-doctor.js +10 -9
- package/dist/bin/cleanup-stale-review-tasks.js +29 -26
- package/dist/bin/cli.js +36 -26
- package/dist/bin/deferred-daemon-restart.js +114 -110
- package/dist/bin/exe-agent-config.js +6 -5
- package/dist/bin/exe-agent.js +127 -33
- package/dist/bin/exe-assign.js +15 -13
- package/dist/bin/exe-boot.js +57 -54
- package/dist/bin/exe-call.js +8 -7
- package/dist/bin/exe-cloud.js +24 -22
- package/dist/bin/exe-config-dump.js +6 -5
- package/dist/bin/exe-dispatch.js +30 -27
- package/dist/bin/exe-doctor.js +14 -10
- package/dist/bin/exe-export-behaviors.js +19 -17
- package/dist/bin/exe-forget.js +10 -9
- package/dist/bin/exe-gateway.js +199 -19
- package/dist/bin/exe-grant.js +5 -5
- package/dist/bin/exe-healthcheck.js +10 -9
- package/dist/bin/exe-heartbeat.js +35 -32
- package/dist/bin/exe-kill.js +34 -31
- package/dist/bin/exe-launch-agent.js +126 -54
- package/dist/bin/exe-mcp.js +6 -5
- package/dist/bin/exe-memory-reads.js +8 -7
- package/dist/bin/exe-new-employee.js +12 -11
- package/dist/bin/exe-os-mcp-proxy.js +6 -5
- package/dist/bin/exe-pending-messages.js +30 -27
- package/dist/bin/exe-pending-notifications.js +29 -26
- package/dist/bin/exe-pending-reviews.js +30 -27
- package/dist/bin/exe-rename.js +8 -7
- package/dist/bin/exe-repo-truth.js +1 -1
- package/dist/bin/exe-review.js +33 -30
- package/dist/bin/exe-search.js +9 -8
- package/dist/bin/exe-session-cleanup.js +35 -32
- package/dist/bin/exe-settings.js +24 -22
- package/dist/bin/exe-start-codex.js +137 -55
- package/dist/bin/exe-start-opencode.js +121 -23
- package/dist/bin/exe-status.js +31 -28
- package/dist/bin/exe-support.js +5 -4
- package/dist/bin/exe-team.js +7 -6
- package/dist/bin/exe-watchdog.js +31 -11
- package/dist/bin/generate-hook-manifest.js +44 -7
- package/dist/bin/git-sweep.js +31 -28
- package/dist/bin/graph-backfill.js +89 -35
- package/dist/bin/graph-export.js +9 -8
- package/dist/bin/import-history.js +14 -13
- package/dist/bin/install.js +137 -113
- package/dist/bin/intercom-check.js +5 -5
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +7 -6
- package/dist/bin/postgres-agentic-reflection-backfill.js +5 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +4 -3
- package/dist/bin/pre-publish.js +1 -1
- package/dist/bin/reconcile-backlog.js +2 -2
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +29 -26
- package/dist/bin/setup.js +5 -4
- package/dist/bin/shard-migrate.js +9 -8
- package/dist/bin/stack-update.js +40 -9
- package/dist/bin/verify-stack.js +2 -2
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-OHXH4YC5.js → boot-generation-JKVZ4ZAT.js} +6 -5
- package/dist/{boot-review-sections-N5IXIGSS.js → boot-review-sections-2M6BTG73.js} +28 -25
- package/dist/{branch-hygiene-KCGXRAWP.js → branch-hygiene-U5GFRSTP.js} +31 -7
- package/dist/{branding-GH43W3PU.js → branding-I6KIMB7F.js} +3 -2
- package/dist/budget-fallback-XJRPMP2D.js +11 -0
- package/dist/build-manifest.json +1318 -1233
- package/dist/{capability-cards-4PXVLIVS.js → capability-cards-5IMJT6J7.js} +5 -4
- package/dist/{capacity-monitor-FKMQXORX.js → capacity-monitor-SAXCQK7O.js} +30 -27
- package/dist/{catchup-brief-SN5EKO4N.js → catchup-brief-U2TXBLHD.js} +34 -31
- package/dist/{chunk-CNC57JCS.js → chunk-23MVDXLY.js} +4 -4
- package/dist/{chunk-V4XAKXXF.js → chunk-2AJGV5UL.js} +1 -1
- package/dist/{chunk-FBYAXTDM.js → chunk-2ZOEC4KC.js} +10 -2
- package/dist/{chunk-ELXFSIIM.js → chunk-32YV32VA.js} +2 -2
- package/dist/{chunk-44C7QNZS.js → chunk-3KDCORDO.js} +1 -1
- package/dist/{chunk-JTB5V6BV.js → chunk-3SXHEQ7X.js} +1 -1
- package/dist/{chunk-HDW4XPDV.js → chunk-3UUX5OY4.js} +1 -1
- package/dist/{chunk-7PSLK36P.js → chunk-44TLJZJ5.js} +1 -1
- package/dist/{chunk-JTWTBX2M.js → chunk-4EN3IZ3Q.js} +2 -1
- package/dist/{chunk-KPMC7PY7.js → chunk-4HKTO2SV.js} +1 -1
- package/dist/{chunk-CDUB5Q6J.js → chunk-4IK2K3B3.js} +1 -1
- package/dist/{chunk-GH6YJOOC.js → chunk-4SJ4LK4V.js} +6 -6
- package/dist/{chunk-PVEM537A.js → chunk-4YLBKEL5.js} +2 -2
- package/dist/chunk-4YNA3CM6.js +872 -0
- package/dist/{chunk-KYFFVTGO.js → chunk-55BEFF4V.js} +3 -3
- package/dist/{chunk-SEP5ITFQ.js → chunk-636LKCKE.js} +2 -2
- package/dist/{chunk-QTI4QAWA.js → chunk-6EZQUNE6.js} +338 -5
- package/dist/{chunk-WAEKYKTK.js → chunk-6RKKVPYF.js} +1 -1
- package/dist/{chunk-VX2F4ZUY.js → chunk-6SCGLHJ7.js} +3 -3
- package/dist/{chunk-MEGRQ53A.js → chunk-6VHOQ3IM.js} +51 -6
- package/dist/{chunk-HIIXCAEE.js → chunk-6YVUR3OU.js} +3 -3
- package/dist/{chunk-L6ZNURWN.js → chunk-7GE2EQ23.js} +1 -1
- package/dist/{chunk-2CWS374F.js → chunk-7RI2CNXJ.js} +1 -1
- package/dist/{chunk-OL3QP3AU.js → chunk-7TSBV3SD.js} +1 -1
- package/dist/{chunk-DSOQUQTV.js → chunk-A27Q27CT.js} +27 -0
- package/dist/{chunk-5AHRZI3R.js → chunk-AETLDRZB.js} +1 -1
- package/dist/{chunk-RNLF3CBB.js → chunk-AKLJ4JH3.js} +1 -1
- package/dist/{chunk-XHYHX6F7.js → chunk-AKLQSC6W.js} +329 -164
- package/dist/chunk-ANLFH23R.js +261 -0
- package/dist/{chunk-QLA3RTH4.js → chunk-AWWKRZMB.js} +5 -5
- package/dist/{chunk-ERVQTR7P.js → chunk-BBSIEYF5.js} +17 -3
- package/dist/{chunk-IPMUWYRQ.js → chunk-BJ7AVSY6.js} +2 -2
- package/dist/{chunk-HV6Y6F4X.js → chunk-C2L622QJ.js} +89 -3
- package/dist/{chunk-TX3Q2GIL.js → chunk-C5HUMAA7.js} +24 -1
- package/dist/{chunk-QTYJPWJN.js → chunk-CBCGDEJA.js} +7 -7
- package/dist/{chunk-XXSNLM6R.js → chunk-DB55JZHU.js} +1 -1
- package/dist/{chunk-LAZKEJMS.js → chunk-DIXXEE3S.js} +840 -607
- package/dist/{chunk-FB343XQX.js → chunk-DJ7YXOTU.js} +2 -2
- package/dist/{chunk-YFCNWQAM.js → chunk-DJOIMFKV.js} +2 -2
- package/dist/{chunk-UTDMTQNH.js → chunk-DSJI76XL.js} +92 -14
- package/dist/{chunk-EEXX4UMQ.js → chunk-DZKPOSFD.js} +1 -1
- package/dist/{chunk-WSOA3WMC.js → chunk-E426DOSY.js} +161 -4
- package/dist/{chunk-ZISQOOER.js → chunk-EKE37MO4.js} +3 -3
- package/dist/{chunk-RIECV7SR.js → chunk-EKYYMIVT.js} +1 -1
- package/dist/{chunk-HIVZ53YB.js → chunk-EXTZSNWL.js} +2 -2
- package/dist/{chunk-YYA5LXCT.js → chunk-FNEZ4BWT.js} +1 -1
- package/dist/chunk-FTZET5YX.js +313 -0
- package/dist/chunk-GHR4ZPJ7.js +70 -0
- package/dist/{chunk-MINXPXAB.js → chunk-GJI77VDO.js} +3 -3
- package/dist/{chunk-AAMGHW5W.js → chunk-GLQEJOXE.js} +1 -0
- package/dist/{chunk-ADNBOKYZ.js → chunk-GM7TLYOK.js} +60 -18
- package/dist/{chunk-RUWWES2K.js → chunk-GNUAL43X.js} +2 -2
- package/dist/{chunk-QZL6E4UB.js → chunk-GOMQ7PVQ.js} +2 -2
- package/dist/{chunk-GB3AHV5F.js → chunk-GQOEWNVM.js} +1 -1
- package/dist/{chunk-NQZUSEAR.js → chunk-GS7LIT34.js} +246 -17
- package/dist/{chunk-XTWHNLGD.js → chunk-GZOG2MAX.js} +1 -1
- package/dist/{chunk-E5HAY3DQ.js → chunk-HDLAB7W3.js} +1 -1
- package/dist/{chunk-E5QQZDQN.js → chunk-HNWS7YHN.js} +358 -136
- package/dist/{chunk-VV5EZZNT.js → chunk-HTBEVCO2.js} +1 -1
- package/dist/{chunk-OZBII5E3.js → chunk-I4DNJFDR.js} +4 -4
- package/dist/{chunk-SI5SZAJA.js → chunk-IBS2FAI4.js} +21 -4
- package/dist/{chunk-J5EYOBFF.js → chunk-IHXW4VUI.js} +1 -1
- package/dist/{chunk-RUVO3NJC.js → chunk-IN6CAM4F.js} +9 -3
- package/dist/{chunk-53PYNYTW.js → chunk-IRVOXUSK.js} +5 -5
- package/dist/{chunk-THM7J6UI.js → chunk-JHI5WMK5.js} +5 -5
- package/dist/{chunk-3KTQWMHI.js → chunk-JSMDRKPJ.js} +12 -4
- package/dist/chunk-JTVIANUB.js +131 -0
- package/dist/{chunk-2ADYTOHQ.js → chunk-K4ESASPL.js} +1 -1
- package/dist/{chunk-YWUQVHDL.js → chunk-KTCXJWJG.js} +1 -1
- package/dist/{chunk-RGUDGC6A.js → chunk-KTU3EAWK.js} +5 -5
- package/dist/{chunk-DKBPCOU4.js → chunk-L6RXG36J.js} +2 -2
- package/dist/{chunk-T4EK56WI.js → chunk-LDNYSMPZ.js} +1 -1
- package/dist/{chunk-RIK5GRWI.js → chunk-LGS2V2XD.js} +3 -3
- package/dist/{chunk-JKXZGRWR.js → chunk-LP4GB656.js} +2 -2
- package/dist/{chunk-H74466TM.js → chunk-M7O7TGGU.js} +1 -1
- package/dist/chunk-MJCSEIFI.js +54 -0
- package/dist/{chunk-IDZPQG2D.js → chunk-MOGA4Q7F.js} +2 -2
- package/dist/{chunk-OYQNNKNS.js → chunk-MXPNVSXI.js} +37 -14
- package/dist/{chunk-UVW7YFAF.js → chunk-N7VEP5B3.js} +4 -4
- package/dist/{chunk-HHE2HV3V.js → chunk-NBXDXKLC.js} +1 -1
- package/dist/{chunk-LDL3S7AC.js → chunk-NKETJCB5.js} +7 -3
- package/dist/{chunk-ECHLVLA7.js → chunk-NMH5ZQPU.js} +1 -1
- package/dist/{chunk-U3XLRMJD.js → chunk-NT7W4RXD.js} +1 -1
- package/dist/{chunk-UQUUNGTP.js → chunk-NUK7EEN5.js} +11 -9
- package/dist/{chunk-GBNB4EWD.js → chunk-ORM7ZFKC.js} +16 -0
- package/dist/{chunk-O4ZFRK6W.js → chunk-OVEQE6YS.js} +244 -49
- package/dist/{chunk-4ZJ5BPY6.js → chunk-PB5S7YOF.js} +2 -2
- package/dist/{chunk-JR23BL74.js → chunk-PDVXWXTL.js} +4 -4
- package/dist/{chunk-3CIMDFXG.js → chunk-PFQ3VEEM.js} +1 -1
- package/dist/{chunk-SBJV2PCU.js → chunk-PHBU4LGO.js} +1 -1
- package/dist/{chunk-W25RLOQ2.js → chunk-PLZSZOZN.js} +3 -3
- package/dist/{chunk-THIJIOE2.js → chunk-PY3FOMRN.js} +18 -6
- package/dist/{chunk-AAUWFXOX.js → chunk-Q3AXXKDF.js} +3 -3
- package/dist/{chunk-VKXS2YGN.js → chunk-QHJR7IMX.js} +2 -2
- package/dist/chunk-QLZ46RCK.js +45 -0
- package/dist/{chunk-UHPMK6QZ.js → chunk-R3CZWFFC.js} +10 -2
- package/dist/{chunk-6XEYELCA.js → chunk-R4CBHKZ2.js} +1 -1
- package/dist/{chunk-5APCDDJZ.js → chunk-R522MWAR.js} +9 -9
- package/dist/chunk-RH4AH3YB.js +80 -0
- package/dist/{chunk-AMKSDKMK.js → chunk-S2WBS6BG.js} +22 -35
- package/dist/{chunk-WUKQVNLP.js → chunk-SEQIPGLU.js} +1 -1
- package/dist/{chunk-7WQRFSZI.js → chunk-SL6KQYDU.js} +26 -6
- package/dist/chunk-SLLLOOEI.js +103 -0
- package/dist/{chunk-5N4SG5NB.js → chunk-T35RCQFE.js} +3 -3
- package/dist/{chunk-7V6M3QUS.js → chunk-T3QUKNLI.js} +1 -1
- package/dist/{chunk-CW2UCKHS.js → chunk-TADAO3HV.js} +2 -2
- package/dist/{chunk-5DCCKHDY.js → chunk-TAMDAOCU.js} +109 -13
- package/dist/{chunk-ZXB56YR2.js → chunk-TFKCERAK.js} +101 -23
- package/dist/{chunk-RBYHJDAT.js → chunk-TQAZTRQ3.js} +3 -3
- package/dist/{chunk-OKGIOWOB.js → chunk-U6SUKSZR.js} +2 -2
- package/dist/{chunk-23QKEUF6.js → chunk-U73AC5AN.js} +34 -12
- package/dist/{chunk-PM6WSWVU.js → chunk-UBK7HK3J.js} +3 -3
- package/dist/{chunk-H37FSTF2.js → chunk-UBMZ3YQU.js} +1 -1
- package/dist/{chunk-JJUGI2YL.js → chunk-UCFC2AEI.js} +1 -1
- package/dist/{chunk-6IWLAQ7O.js → chunk-UCUOGVDX.js} +4 -0
- package/dist/{chunk-E7UCDSUE.js → chunk-UKLN57Q5.js} +2 -2
- package/dist/{chunk-ZYCLSEZT.js → chunk-ULIBLJ6W.js} +33 -11
- package/dist/{chunk-RLR6VVKV.js → chunk-UM3N6VND.js} +4 -4
- package/dist/{chunk-ZNUJFX7L.js → chunk-UQGSBM3U.js} +1 -1
- package/dist/{chunk-ZZXMB5F2.js → chunk-UZDF6FLJ.js} +1 -1
- package/dist/{chunk-LNOS24GV.js → chunk-V3WLC5TJ.js} +2 -95
- package/dist/{chunk-UXLO7VHX.js → chunk-VI4ATC6I.js} +1 -1
- package/dist/{chunk-77JP3LK4.js → chunk-VKJGHAZT.js} +92 -21
- package/dist/{chunk-7R73IAHU.js → chunk-VMTZ4RUW.js} +67 -150
- package/dist/{chunk-TGPQMMQP.js → chunk-VYQ7B7DI.js} +30 -17
- package/dist/{chunk-E2WEFZOR.js → chunk-W75GTHR3.js} +1 -1
- package/dist/{chunk-UKLF7F3Z.js → chunk-WJG344NC.js} +9 -9
- package/dist/{chunk-MBNIJXKI.js → chunk-WMEYJT4R.js} +18 -4
- package/dist/{chunk-R6FLELV6.js → chunk-XFTEX77S.js} +3 -3
- package/dist/{chunk-MDGYXUOV.js → chunk-XH7YL7JM.js} +1 -1
- package/dist/{chunk-JOO35RHR.js → chunk-XL5MFGMR.js} +3 -3
- package/dist/{chunk-OW5RZIDW.js → chunk-XNNECNDL.js} +95 -33
- package/dist/{chunk-5AHDQCTB.js → chunk-XXFKSJYA.js} +6 -6
- package/dist/{chunk-TGEPLJ66.js → chunk-XXOPG4BW.js} +3 -3
- package/dist/{chunk-PGLPUP37.js → chunk-XZ65ST2I.js} +1 -1
- package/dist/{chunk-3TTKAT6V.js → chunk-YKC7QDZH.js} +9 -4
- package/dist/{chunk-KXYFBBZR.js → chunk-YMP2QSOP.js} +20 -3
- package/dist/{chunk-TK4MI6F6.js → chunk-YSLGFPWX.js} +6 -6
- package/dist/{chunk-X2P43TB2.js → chunk-YTSXPJUQ.js} +1 -1
- package/dist/{chunk-HECXZGGZ.js → chunk-ZCERWHY2.js} +33 -35
- package/dist/{chunk-IVU3WN7S.js → chunk-ZG62LIK3.js} +74 -4
- package/dist/{chunk-GU62SNDH.js → chunk-ZGYNKA3O.js} +744 -111
- package/dist/{chunk-QMSEL5YS.js → chunk-ZIG7VPJV.js} +28 -76
- package/dist/{chunk-WZJVGA5I.js → chunk-ZL4AGWAH.js} +258 -13
- package/dist/{chunk-QR624DER.js → chunk-ZSODLMFV.js} +2 -2
- package/dist/{cleanup-graph-garbage-IPYDS5OX.js → cleanup-graph-garbage-DPJGO52H.js} +11 -10
- package/dist/{cloud-sync-command-JLNVG7H4.js → cloud-sync-command-JPNTT4OQ.js} +2 -2
- package/dist/{cloud-sync-db-init-JXUF6GI3.js → cloud-sync-db-init-V2LWIUQU.js} +1 -1
- package/dist/{cloud-sync-shutdown-Z4SBP6PL.js → cloud-sync-shutdown-BNALPWGX.js} +5 -4
- package/dist/{co-activation-74RDFTKS.js → co-activation-CMNSWS6B.js} +5 -4
- package/dist/{co-occurrence-CN3TBYVR.js → co-occurrence-WRI2NAN6.js} +9 -8
- package/dist/{code-context-index-D4MJ4VFX.js → code-context-index-NOJSHLPN.js} +12 -6
- package/dist/code-context-watcher-VZNZU3BO.js +118 -0
- package/dist/{codex-consolidation-PPXNBXCV.js → codex-consolidation-SH4UKFBQ.js} +2 -1
- package/dist/{conversation-entity-extractor-QGTLH4BP.js → conversation-entity-extractor-74252CAO.js} +4 -4
- package/dist/{conversation-wiki-populator-EBUZXYEU.js → conversation-wiki-populator-OS4C6W54.js} +1 -1
- package/dist/conversations-retention-C4BLKFEL.js +54 -0
- package/dist/coordinator-notice-MHUY7AQB.js +55 -0
- package/dist/{crdt-sync-7T4WCOKD.js → crdt-sync-B3JN6AIV.js} +1 -1
- package/dist/{crm-webhook-FTW3XZTO.js → crm-webhook-GYWQRFET.js} +2 -2
- package/dist/{cto-delegation-gate-SZCE34LB.js → cto-delegation-gate-LQHVLEMW.js} +29 -26
- package/dist/{daemon-auth-SSPY5ODS.js → daemon-auth-QZHEO7IQ.js} +3 -2
- package/dist/{daemon-orchestration-IGPHVNFR.js → daemon-orchestration-5HIQALZH.js} +36 -34
- package/dist/{daemon-ready-OT2VQLS7.js → daemon-ready-P2BR2XP5.js} +1 -1
- package/dist/{db-integrity-events-5DTASXJF.js → db-integrity-events-2DTFO37N.js} +3 -2
- package/dist/{db-restore-events-2FI4ZMKA.js → db-restore-events-G6NOQOVE.js} +2 -1
- package/dist/{destructive-data-guard-6I5MDFVD.js → destructive-data-guard-BVFWPPIS.js} +1 -1
- package/dist/doc-graph-extractor-PQHDHQPQ.js +367 -0
- package/dist/{documents-URULIXGM.js → documents-C4SSPJMC.js} +15 -13
- package/dist/{dreaming-VIZO3QDO.js → dreaming-XAO3FCBV.js} +33 -30
- package/dist/{employee-boot-brief-XLOG4ULP.js → employee-boot-brief-W4OHUMRQ.js} +37 -34
- package/dist/{exe-drift-TLQM3IHD.js → exe-drift-AG2KMKD5.js} +6 -5
- package/dist/{exe-export-7YWYWJHY.js → exe-export-IC5BT335.js} +17 -15
- package/dist/{exe-import-DW6VAUKW.js → exe-import-A35ZLDPG.js} +17 -15
- package/dist/{exe-key-TLJP2B4Y.js → exe-key-TCMJNYLA.js} +116 -112
- package/dist/{exe-org-LU46N36E.js → exe-org-JXCR3JYZ.js} +24 -23
- package/dist/{exe-snapshot-QHUZRS62.js → exe-snapshot-SV6SRIG6.js} +36 -33
- package/dist/{fast-db-init-SCTOOIUT.js → fast-db-init-L2RGKJWH.js} +1 -1
- package/dist/{founder-context-ZFZC4UHO.js → founder-context-D4HFIESJ.js} +4 -3
- package/dist/{founder-monitor-envelope-5KTKNL5G.js → founder-monitor-envelope-TFKRGCFE.js} +5 -4
- package/dist/{fts-integrity-LKAZEZJE.js → fts-integrity-4YB34KWX.js} +3 -2
- package/dist/gateway/index.js +19 -17
- package/dist/{git-main-guard-TN27QBAI.js → git-main-guard-VTW4N3CM.js} +7 -1
- package/dist/{git-staleness-GSGP344N.js → git-staleness-TN7CYGFG.js} +5 -4
- package/dist/{global-procedures-YAR7G4C6.js → global-procedures-YFDEIOG7.js} +7 -6
- package/dist/{graph-auto-extract-GNQS64F5.js → graph-auto-extract-3YR3TYRW.js} +9 -8
- package/dist/{graph-rag-RMSFLUOB.js → graph-rag-Z2KCJTPK.js} +6 -4
- package/dist/{hook-integrity-CF567MVN.js → hook-integrity-KGAV6ZC2.js} +14 -4
- package/dist/{hook-prefetch-36BK4F7U.js → hook-prefetch-K5DN3TOQ.js} +29 -26
- package/dist/hooks/bug-report-worker.js +34 -30
- package/dist/hooks/codex-stop-task-finalizer.js +36 -32
- package/dist/hooks/commit-complete.js +33 -30
- package/dist/hooks/error-recall.js +12 -11
- package/dist/hooks/exe-heartbeat-hook.js +8 -7
- package/dist/hooks/ingest-worker.js +23 -11
- package/dist/hooks/ingest.js +18 -17
- package/dist/hooks/instructions-loaded.js +10 -9
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +9 -8
- package/dist/hooks/post-compact.js +8 -7
- package/dist/hooks/post-tool-combined.js +26 -15
- package/dist/hooks/pre-compact.js +33 -30
- package/dist/hooks/pre-tool-use.js +404 -46
- package/dist/hooks/prompt-submit.js +57 -47
- package/dist/hooks/session-end.js +40 -41
- package/dist/hooks/session-start.js +21 -20
- package/dist/hooks/stop.js +40 -37
- package/dist/hooks/subagent-stop.js +38 -35
- package/dist/hooks/summary-worker.js +39 -36
- package/dist/hyde-MP4QNMU5.js +80 -0
- package/dist/index.js +44 -39
- package/dist/{installer-LUN4HQIC.js → installer-54HTN5RE.js} +8 -7
- package/dist/{installer-OC5VXNC7.js → installer-LK35OX6R.js} +8 -7
- package/dist/{installer-MPRFUQJE.js → installer-LLWKZI2S.js} +8 -7
- package/dist/intercom-ack-VCW755TN.js +13 -0
- package/dist/{intercom-queue-6DZ7BANV.js → intercom-queue-5NOT2RKI.js} +28 -25
- package/dist/{key-backup-status-6L2ARCXW.js → key-backup-status-LQPINQ3W.js} +2 -1
- package/dist/lib/agent-config.js +3 -2
- package/dist/lib/cloud-sync.js +26 -20
- package/dist/lib/config.js +2 -1
- package/dist/lib/consolidation.js +17 -10
- package/dist/lib/database.js +7 -4
- package/dist/lib/db-backup.js +17 -2
- package/dist/lib/db-daemon-client.js +8 -6
- package/dist/lib/db-write-worker-client.js +3 -1
- package/dist/lib/db-write-worker.js +20 -3
- package/dist/lib/db.js +7 -4
- package/dist/lib/device-registry.js +3 -2
- package/dist/lib/embed-worker.js +2 -1
- package/dist/lib/embedder.js +8 -6
- package/dist/lib/employee-templates.js +8 -7
- package/dist/lib/employees.js +5 -4
- package/dist/lib/exe-daemon-client.js +7 -5
- package/dist/lib/exe-daemon.js +467 -221
- package/dist/lib/hybrid-search.js +11 -8
- package/dist/lib/identity.js +5 -4
- package/dist/lib/license.js +4 -3
- package/dist/lib/messaging.js +29 -26
- package/dist/lib/post-tool-memory.js +16 -2
- package/dist/lib/registry-proxy.js +3 -1
- package/dist/lib/reminders.js +6 -5
- package/dist/lib/schedules.js +9 -8
- package/dist/lib/session-registry.js +7 -6
- package/dist/lib/skill-learning.js +16 -14
- package/dist/lib/stack-invariants.js +17 -1
- package/dist/lib/status-brief.js +5 -4
- package/dist/lib/store.js +10 -7
- package/dist/lib/task-router.js +6 -5
- package/dist/lib/tasks.js +31 -27
- package/dist/lib/tmux-routing.js +40 -25
- package/dist/lib/tmux-status.js +3 -1
- package/dist/lib/tmux-transport.js +2 -1
- package/dist/lib/token-spend.js +6 -5
- package/dist/lib/transport.js +3 -2
- package/dist/{license-gate-ESER24PJ.js → license-gate-JVMB6OFD.js} +5 -4
- package/dist/{license-sync-JVG5KNIY.js → license-sync-5VYS2F2W.js} +4 -3
- package/dist/mcp/register-tools.js +113 -109
- package/dist/mcp/server.js +118 -114
- package/dist/mcp/tools/complete-reminder.js +7 -6
- package/dist/mcp/tools/create-reminder.js +7 -6
- package/dist/mcp/tools/create-task.js +34 -30
- package/dist/mcp/tools/deactivate-behavior.js +18 -16
- package/dist/mcp/tools/list-reminders.js +7 -6
- package/dist/mcp/tools/list-tasks.js +34 -30
- package/dist/mcp/tools/send-message.js +32 -29
- package/dist/mcp/tools/update-task.js +32 -28
- package/dist/mcp-child-registry-OTG4MWO7.js +25 -0
- package/dist/{mcp-http-config-6K6IKH5F.js → mcp-http-config-DQWL7U2Z.js} +6 -5
- package/dist/{mcp-session-identity-LRC6WJSD.js → mcp-session-identity-277GASTQ.js} +28 -25
- package/dist/{memory-cards-V3OZHIYP.js → memory-cards-3S2ZQPR7.js} +17 -8
- package/dist/{memory-graph-extractor-JC2Z64L4.js → memory-graph-extractor-A6DFEFIN.js} +10 -9
- package/dist/{memory-poisoning-defense-YM4QJHCX.js → memory-poisoning-defense-ZVP4H6DY.js} +5 -4
- package/dist/{memory-pressure-watchdog-6F6KEQHN.js → memory-pressure-watchdog-6W5F6R7H.js} +29 -26
- package/dist/{memory-queue-QJNWKWKG.js → memory-queue-YF7IDSFY.js} +3 -2
- package/dist/{memory-queue-client-COA4ABEV.js → memory-queue-client-ADSDP6OX.js} +9 -7
- package/dist/{memory-reflection-QXHJPYPC.js → memory-reflection-BKB2YOE6.js} +52 -6
- package/dist/{monitor-grants-BW2WL4IU.js → monitor-grants-EV747HMW.js} +4 -3
- package/dist/{notification-ledger-6QRLQW4Q.js → notification-ledger-CLGM7ODF.js} +30 -27
- package/dist/{notifications-7B6D7Y5C.js → notifications-MACUZPYP.js} +28 -25
- package/dist/{oauth-server-TZFNQAFS.js → oauth-server-AYM37SQ4.js} +25 -4
- package/dist/{orchestration-events-GY5VP5LU.js → orchestration-events-N7LYMUGA.js} +6 -5
- package/dist/{orchestration-phase-UDS24CVQ.js → orchestration-phase-T2WD45UA.js} +3 -2
- package/dist/{orchestrator-JVPVOYWA.js → orchestrator-4X24EWHV.js} +30 -27
- package/dist/{org-brief-session-GRV5R5E3.js → org-brief-session-FZOFMO5U.js} +13 -12
- package/dist/{org-consent-policy-3FHHSYXV.js → org-consent-policy-O5E6HXBL.js} +1 -1
- package/dist/{org-join-BY4PV6UO.js → org-join-POWUG25F.js} +8 -7
- package/dist/{org-key-admin-WSCPT2CZ.js → org-key-admin-E7EMDOZZ.js} +9 -8
- package/dist/{org-key-pin-5WUSPGVN.js → org-key-pin-WHWHVWUO.js} +4 -3
- package/dist/{org-membership-ESALTLLN.js → org-membership-WRT2IHJK.js} +5 -4
- package/dist/{org-partner-config-YKHPDPZR.js → org-partner-config-B7T4CL2T.js} +7 -6
- package/dist/{org-partner-runtime-UJDGECZ4.js → org-partner-runtime-FODONVTM.js} +13 -12
- package/dist/{org-row-visibility-V5DXIHTE.js → org-row-visibility-VX4AVV5Q.js} +1 -1
- package/dist/{pipeline-router-YY5FQKTY.js → pipeline-router-6GGT2ZW3.js} +6 -5
- package/dist/{plan-limits-OVX6SN6B.js → plan-limits-FUN76LYY.js} +8 -7
- package/dist/{platform-procedures-I57ITMDC.js → platform-procedures-7YSCLF4Z.js} +1 -1
- package/dist/{postinstall-failure-B2JHNFPM.js → postinstall-failure-O6TSSNJB.js} +3 -2
- package/dist/{project-boot-LXLU2J32.js → project-boot-3Q65LCIP.js} +2 -1
- package/dist/project-name-LJVFMYTQ.js +30 -0
- package/dist/{projection-worker-D2472IOD.js → projection-worker-4OANGP5K.js} +5 -4
- package/dist/{prospective-memory-JXO2A6PL.js → prospective-memory-KR3P4T6N.js} +5 -4
- package/dist/{push-notifications-HR3FZRDI.js → push-notifications-NCZLH6DI.js} +29 -26
- package/dist/ref-provenance-gate-M4AQO4OT.js +269 -0
- package/dist/{reproject-worktree-memories-OSS3PGRF.js → reproject-worktree-memories-PWYKPB2U.js} +106 -23
- package/dist/{reranker-IMZRPYJ2.js → reranker-6V3C2AO4.js} +3 -2
- package/dist/resolve-image-labels-ZI6UBW5W.js +15 -0
- package/dist/{retrieval-health-W7OD44FE.js → retrieval-health-5D7O6VH6.js} +4 -3
- package/dist/{review-polling-2INP7H6M.js → review-polling-QW3LJ4KN.js} +29 -26
- package/dist/runtime/index.js +38 -34
- package/dist/{session-events-G4XUPVWV.js → session-events-T45SSTMF.js} +31 -26
- package/dist/{session-kill-telemetry-W7MHWJTQ.js → session-kill-telemetry-QSPVJGBF.js} +29 -26
- package/dist/{session-mcp-config-F7KATWOF.js → session-mcp-config-SC5BLWZG.js} +3 -2
- package/dist/{session-scope-LG2J4EMQ.js → session-scope-KRWE54C4.js} +28 -25
- package/dist/{setup-wizard-YQJI3SVM.js → setup-wizard-GP3TBTPF.js} +5 -4
- package/dist/{shard-manager-UROHZE46.js → shard-manager-OE36A4MY.js} +3 -2
- package/dist/{skill-refinement-RA37U756.js → skill-refinement-C7JTMLJG.js} +6 -5
- package/dist/stack-generate-manifest-MFMDWRUP.js +810 -0
- package/dist/{stack-promote-IYBRXHTA.js → stack-promote-EKSCYY63.js} +8 -6
- package/dist/{stack-release-OXWLVVG6.js → stack-release-2GZAAFO4.js} +8 -6
- package/dist/{stack-update-2CZEROPK.js → stack-update-J6JXSTAZ.js} +51 -5
- package/dist/{steward-gate-LTNFB3FY.js → steward-gate-BFCCMCSW.js} +6 -5
- package/dist/{subagent-brief-injection-OHLWLECQ.js → subagent-brief-injection-ED36PLYY.js} +44 -36
- package/dist/{subagent-spawn-ledger-USYZXU3M.js → subagent-spawn-ledger-E6U3OY6Z.js} +3 -2
- package/dist/{supervisor-handoff-CSJQMI53.js → supervisor-handoff-SGLEPOCY.js} +12 -3
- package/dist/{support-inbox-4KCEPAZQ.js → support-inbox-YW47SYJF.js} +20 -5
- package/dist/{task-enforcement-LGXWXGVZ.js → task-enforcement-CECTQX4U.js} +29 -26
- package/dist/{task-request-inbox-WHCOSUCP.js → task-request-inbox-Q5T4N5K7.js} +1 -1
- package/dist/{task-scope-KXF7Y6KA.js → task-scope-ERVEUEYU.js} +28 -25
- package/dist/{tasks-crud-5EM55WRZ.js → tasks-crud-ZRQNJXQ2.js} +28 -25
- package/dist/{tasks-notify-VFMAURTN.js → tasks-notify-MIZH4C2O.js} +29 -26
- package/dist/{tasks-review-MHGMBHUZ.js → tasks-review-Z7J2P6DG.js} +28 -25
- package/dist/{telemetry-upload-6NRTN7QJ.js → telemetry-upload-LVQUQYFP.js} +10 -9
- package/dist/{token-budget-LZPOYTRP.js → token-budget-BU4NOVZF.js} +6 -5
- package/dist/{tool-capability-index-ED5OAPMW.js → tool-capability-index-7F42MOJT.js} +1 -1
- package/dist/{tool-gates-7PLIOLAL.js → tool-gates-JWVSAYTW.js} +1 -1
- package/dist/{tool-gates-2OZY3GZM.js → tool-gates-VXITVRFQ.js} +1 -1
- package/dist/{tool-telemetry-ZX7VSAXK.js → tool-telemetry-O27EVMBR.js} +1 -1
- package/dist/tui/App.js +43 -40
- package/dist/{tui-data-CC5POSUV.js → tui-data-TPWWBIUQ.js} +28 -25
- package/dist/{update-support-KH6NSQON.js → update-support-F2F5537B.js} +22 -20
- package/dist/{whatsapp-QW3X7OCN.js → whatsapp-YM4A2CSK.js} +3 -1
- package/dist/{work-claims-MNK7PEPW.js → work-claims-B73X5NE7.js} +6 -5
- package/dist/{work-state-heartbeat-YEWT5NMZ.js → work-state-heartbeat-P4YX6E2R.js} +1 -1
- package/dist/{worker-gate-BOQSIU2Z.js → worker-gate-BEEIIVWA.js} +3 -2
- package/dist/{workflow-engine-MUUD7ZEX.js → workflow-engine-5X46PFCW.js} +4 -2
- package/dist/{worktree-GOGT2LZP.js → worktree-W47CIMJ6.js} +9 -6
- package/dist/worktree-ownership-guard-OUWJROW2.js +88 -0
- package/dist/{worktree-sweep-46VWPVQT.js → worktree-sweep-BNBD4RFX.js} +8 -7
- package/package.json +14 -5
- package/release-notes.json +5 -5
- package/src/commands/exe/call.md +1 -1
- package/stack.release.json +6 -0
- package/dist/chunk-KZXMP6JG.js +0 -319
- package/dist/chunk-TCTED52S.js +0 -120
- package/dist/chunk-W2IRQJ6R.js +0 -67
- package/dist/doc-graph-extractor-VPTRIEKN.js +0 -149
- package/dist/project-name-ILJTETUE.js +0 -14
- /package/dist/{chunk-3Y5THOU6.js → chunk-6WIFPD2P.js} +0 -0
- /package/dist/{chunk-7XGXRD22.js → chunk-AISULNGL.js} +0 -0
- /package/dist/{chunk-3F2UB4IQ.js → chunk-DN4YVV4Z.js} +0 -0
- /package/dist/{chunk-WV3TOOL7.js → chunk-KQ6RJWRW.js} +0 -0
- /package/dist/{chunk-HR2R2QER.js → chunk-M4IRPXSZ.js} +0 -0
- /package/dist/{chunk-ORA5BWCV.js → chunk-NRG7KZIP.js} +0 -0
- /package/dist/{chunk-7UTJA6HF.js → chunk-VZAFWPAY.js} +0 -0
- /package/dist/{chunk-VJSDGDNS.js → chunk-WSQASFLP.js} +0 -0
- /package/dist/{chunk-FZQWVQJG.js → chunk-YO4BO2CL.js} +0 -0
- /package/dist/{core-memory-6WBNT2HL.js → core-memory-7I7RE2SJ.js} +0 -0
- /package/dist/{entity-boost-MT336PI3.js → entity-boost-3UWGXG5O.js} +0 -0
- /package/dist/{memory-isolation-EJ45IXBH.js → memory-isolation-2TUZ7Z4K.js} +0 -0
- /package/dist/{message-queue-client-MVBTYCSV.js → message-queue-client-XQN7QABL.js} +0 -0
- /package/dist/{webhook-pipe-UQSEHFPO.js → webhook-pipe-W2FVXY7M.js} +0 -0
- /package/dist/{wiki-acl-WXRJGZ5Q.js → wiki-acl-IBQLLBTS.js} +0 -0
- /package/dist/{wiki-client-AXNM5FWY.js → wiki-client-W65IOSWF.js} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
retryOnDaemonTransportError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XZ65ST2I.js";
|
|
4
4
|
import {
|
|
5
5
|
vectorToSqlLiteral
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MXPNVSXI.js";
|
|
7
7
|
import {
|
|
8
8
|
blobToVector
|
|
9
9
|
} from "./chunk-OTVEIJUQ.js";
|
|
10
10
|
import {
|
|
11
11
|
getClient
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TAMDAOCU.js";
|
|
13
13
|
|
|
14
14
|
// src/lib/behaviors.ts
|
|
15
15
|
import crypto from "crypto";
|
|
@@ -23,6 +23,14 @@ function isGhostBehaviorRow(row) {
|
|
|
23
23
|
if (content === "(empty)" && agent === "unknown") return true;
|
|
24
24
|
return false;
|
|
25
25
|
}
|
|
26
|
+
var BEHAVIOR_CONTENT_MAX_LENGTH = 500;
|
|
27
|
+
function behaviorContentOverCapMessage(actualLength) {
|
|
28
|
+
return `Behavior content is ${actualLength} characters; the maximum is ${BEHAVIOR_CONTENT_MAX_LENGTH}. Behaviors are injected verbatim into agent context at boot \u2014 split this into separate, single-sentence behaviors.`;
|
|
29
|
+
}
|
|
30
|
+
var TOOL_FRAMING_TAG_RE = /<\/?(?:invoke|parameter|content|function_calls)\b[^>]*>/gi;
|
|
31
|
+
function sanitizeBehaviorContent(content) {
|
|
32
|
+
return content.replace(TOOL_FRAMING_TAG_RE, " ").replace(/\s{2,}/g, " ").trim();
|
|
33
|
+
}
|
|
26
34
|
function formatReflexContent(trigger, action) {
|
|
27
35
|
return `\u26A1 REFLEX: When ${trigger} \u2192 ${action}. Decide whether to act.`;
|
|
28
36
|
}
|
|
@@ -42,12 +50,15 @@ async function storeReflexBehavior(opts) {
|
|
|
42
50
|
});
|
|
43
51
|
}
|
|
44
52
|
async function storeBehavior(opts) {
|
|
45
|
-
const trimmedContent = (opts.content ?? "")
|
|
53
|
+
const trimmedContent = sanitizeBehaviorContent(opts.content ?? "");
|
|
46
54
|
if (trimmedContent.length === 0) {
|
|
47
55
|
throw new Error(
|
|
48
56
|
"[behaviors] Refusing to store a behavior with empty content (ghost-row guard)."
|
|
49
57
|
);
|
|
50
58
|
}
|
|
59
|
+
if (trimmedContent.length > BEHAVIOR_CONTENT_MAX_LENGTH) {
|
|
60
|
+
throw new Error(`[behaviors] ${behaviorContentOverCapMessage(trimmedContent.length)}`);
|
|
61
|
+
}
|
|
51
62
|
const trimmedAgent = (opts.agentId ?? "").trim();
|
|
52
63
|
if (trimmedAgent.length === 0) {
|
|
53
64
|
throw new Error(
|
|
@@ -352,6 +363,9 @@ async function reactivateBehavior(id) {
|
|
|
352
363
|
export {
|
|
353
364
|
GHOST_BEHAVIOR_SQL,
|
|
354
365
|
isGhostBehaviorRow,
|
|
366
|
+
BEHAVIOR_CONTENT_MAX_LENGTH,
|
|
367
|
+
behaviorContentOverCapMessage,
|
|
368
|
+
sanitizeBehaviorContent,
|
|
355
369
|
formatReflexContent,
|
|
356
370
|
isReflexBehavior,
|
|
357
371
|
storeReflexBehavior,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NO_DB_INTEGRITY_EVENTS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UQGSBM3U.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveAnthropicAuth
|
|
6
6
|
} from "./chunk-VGMACSEV.js";
|
|
@@ -92,13 +92,13 @@ async function getRetrievalHealth() {
|
|
|
92
92
|
const coveragePct = totalMemories > 0 ? Math.round(memoriesWithVectors / totalMemories * 100) : null;
|
|
93
93
|
let dbRestore = { hasEvents: false, count: 0, last: null, quarantineFiles: 0 };
|
|
94
94
|
try {
|
|
95
|
-
const { getDbRestoreHealth } = await import("./db-restore-events-
|
|
95
|
+
const { getDbRestoreHealth } = await import("./db-restore-events-G6NOQOVE.js");
|
|
96
96
|
dbRestore = getDbRestoreHealth();
|
|
97
97
|
} catch {
|
|
98
98
|
}
|
|
99
99
|
let dbIntegrity = NO_INTEGRITY_EVENTS;
|
|
100
100
|
try {
|
|
101
|
-
const { getDbIntegrityHealth } = await import("./db-integrity-events-
|
|
101
|
+
const { getDbIntegrityHealth } = await import("./db-integrity-events-2DTFO37N.js");
|
|
102
102
|
dbIntegrity = getDbIntegrityHealth();
|
|
103
103
|
} catch {
|
|
104
104
|
}
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
assessVerificationArtifact,
|
|
3
3
|
isSubstantiveCommit,
|
|
4
4
|
measureCommitSubstance
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-4YNA3CM6.js";
|
|
6
6
|
import {
|
|
7
7
|
sessionScopeFilter
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-AKLQSC6W.js";
|
|
9
9
|
|
|
10
10
|
// src/shared/task-completion-gate.ts
|
|
11
11
|
var COMPLETION_CLAIM_STATUSES = ["done", "needs_review", "closed"];
|
|
@@ -289,7 +289,7 @@ async function sweepTasks(projectName, options = {}) {
|
|
|
289
289
|
}
|
|
290
290
|
if (!dryRun) {
|
|
291
291
|
try {
|
|
292
|
-
const { updateTaskStatus } = await import("./tasks-crud-
|
|
292
|
+
const { updateTaskStatus } = await import("./tasks-crud-ZRQNJXQ2.js");
|
|
293
293
|
await updateTaskStatus({
|
|
294
294
|
taskId: task.id,
|
|
295
295
|
status: "needs_review",
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildRestartReport,
|
|
3
|
-
formatRestartReport
|
|
4
|
-
} from "./chunk-EXDW3E2R.js";
|
|
5
1
|
import {
|
|
6
2
|
readPostinstallFailureMarker
|
|
7
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PHBU4LGO.js";
|
|
8
4
|
import {
|
|
9
5
|
formatDegradations,
|
|
10
6
|
getRetrievalHealth
|
|
11
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XFTEX77S.js";
|
|
8
|
+
import {
|
|
9
|
+
buildRestartReport,
|
|
10
|
+
formatRestartReport
|
|
11
|
+
} from "./chunk-EXDW3E2R.js";
|
|
12
12
|
import {
|
|
13
13
|
EXE_HOOK_MANIFEST,
|
|
14
14
|
LEGACY_SPLIT_POST_TOOL_HOOK_MARKERS,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import {
|
|
18
18
|
cleanupLocalSecretResidue,
|
|
19
19
|
inventoryLocalSecretResidue
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-HDLAB7W3.js";
|
|
21
21
|
import {
|
|
22
22
|
resolveAnthropicAuth
|
|
23
23
|
} from "./chunk-VGMACSEV.js";
|
|
@@ -27,16 +27,14 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
offloadReadIfMain,
|
|
29
29
|
repairFtsTable
|
|
30
|
-
} from "./chunk-
|
|
31
|
-
import {
|
|
32
|
-
isMainModule
|
|
33
|
-
} from "./chunk-6Y4B3QF6.js";
|
|
30
|
+
} from "./chunk-TAMDAOCU.js";
|
|
34
31
|
|
|
35
32
|
// src/bin/exe-doctor.ts
|
|
36
33
|
import os from "os";
|
|
37
34
|
import { existsSync, readFileSync } from "fs";
|
|
38
35
|
import { spawn } from "child_process";
|
|
39
36
|
import path from "path";
|
|
37
|
+
import { fileURLToPath } from "url";
|
|
40
38
|
import { randomUUID } from "crypto";
|
|
41
39
|
|
|
42
40
|
// src/lib/conflict-detector.ts
|
|
@@ -391,6 +389,7 @@ async function auditNullVectors(client, flags) {
|
|
|
391
389
|
);
|
|
392
390
|
return Number(result.rows[0].cnt);
|
|
393
391
|
}
|
|
392
|
+
var DUPLICATE_MEMBER_PAGE_SIZE = 500;
|
|
394
393
|
async function auditDuplicates(client, flags) {
|
|
395
394
|
const { clause, args } = agentFilter(flags);
|
|
396
395
|
const groupLimit = boundedAuditLimit(
|
|
@@ -424,19 +423,37 @@ async function auditDuplicates(client, flags) {
|
|
|
424
423
|
let filterClause = " WHERE SUBSTR(raw_text, 1, 200) = ? AND LENGTH(raw_text) = ?" + liveOnly;
|
|
425
424
|
if (flags.agent) filterClause += " AND agent_id = ?";
|
|
426
425
|
if (flags.project) filterClause += " AND project_name = ?";
|
|
427
|
-
const ids = await offloadReadIfMain(
|
|
428
|
-
client,
|
|
429
|
-
`SELECT id, raw_text FROM memories${filterClause} ORDER BY timestamp DESC LIMIT ${memberLimit}`,
|
|
430
|
-
filterArgs,
|
|
431
|
-
true
|
|
432
|
-
);
|
|
433
426
|
const byText = /* @__PURE__ */ new Map();
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
427
|
+
let remaining = memberLimit;
|
|
428
|
+
let cursorTs = null;
|
|
429
|
+
let cursorId = null;
|
|
430
|
+
while (remaining > 0) {
|
|
431
|
+
const pageLimit = Math.min(DUPLICATE_MEMBER_PAGE_SIZE, remaining);
|
|
432
|
+
const pageArgs = [...filterArgs];
|
|
433
|
+
let pageClause = filterClause;
|
|
434
|
+
if (cursorTs !== null) {
|
|
435
|
+
pageClause += " AND (timestamp < ? OR (timestamp = ? AND id < ?))";
|
|
436
|
+
pageArgs.push(cursorTs, cursorTs, cursorId);
|
|
437
|
+
}
|
|
438
|
+
const page = await offloadReadIfMain(
|
|
439
|
+
client,
|
|
440
|
+
`SELECT id, raw_text, timestamp FROM memories${pageClause} ORDER BY timestamp DESC, id DESC LIMIT ${pageLimit}`,
|
|
441
|
+
pageArgs,
|
|
442
|
+
true
|
|
443
|
+
);
|
|
444
|
+
if (page.rows.length === 0) break;
|
|
445
|
+
for (const r of page.rows) {
|
|
446
|
+
const text = r.raw_text;
|
|
447
|
+
const id = r.id;
|
|
448
|
+
const existing = byText.get(text);
|
|
449
|
+
if (existing) existing.push(id);
|
|
450
|
+
else byText.set(text, [id]);
|
|
451
|
+
}
|
|
452
|
+
remaining -= page.rows.length;
|
|
453
|
+
const last = page.rows[page.rows.length - 1];
|
|
454
|
+
cursorTs = last.timestamp;
|
|
455
|
+
cursorId = last.id;
|
|
456
|
+
if (page.rows.length < pageLimit) break;
|
|
440
457
|
}
|
|
441
458
|
for (const [text, allIds] of byText) {
|
|
442
459
|
if (allIds.length <= 1) continue;
|
|
@@ -657,7 +674,7 @@ function auditHookOwnership() {
|
|
|
657
674
|
}
|
|
658
675
|
async function auditShards() {
|
|
659
676
|
try {
|
|
660
|
-
const { auditShardHealth } = await import("./shard-manager-
|
|
677
|
+
const { auditShardHealth } = await import("./shard-manager-OE36A4MY.js");
|
|
661
678
|
const report = await auditShardHealth();
|
|
662
679
|
return {
|
|
663
680
|
total: report.total,
|
|
@@ -675,7 +692,7 @@ async function auditShards() {
|
|
|
675
692
|
async function auditKeyHealth() {
|
|
676
693
|
try {
|
|
677
694
|
const { getMasterKey, getKeyStorageInfo } = await import("./lib/keychain.js");
|
|
678
|
-
const { getKeyBackupStatus } = await import("./key-backup-status-
|
|
695
|
+
const { getKeyBackupStatus } = await import("./key-backup-status-LQPINQ3W.js");
|
|
679
696
|
const [key, storage] = await Promise.all([getMasterKey(), getKeyStorageInfo()]);
|
|
680
697
|
const backup = getKeyBackupStatus();
|
|
681
698
|
return {
|
|
@@ -734,9 +751,33 @@ async function auditCpuSteal() {
|
|
|
734
751
|
function auditPostinstallFailure() {
|
|
735
752
|
return readPostinstallFailureMarker();
|
|
736
753
|
}
|
|
754
|
+
function auditGlobalBin(opts) {
|
|
755
|
+
const moduleFile = opts?.moduleFile ?? fileURLToPath(import.meta.url);
|
|
756
|
+
const exists = opts?.existsFn ?? existsSync;
|
|
757
|
+
const reinstallCommand = "npm install -g @askexenow/exe-os";
|
|
758
|
+
const marker = `${path.sep}lib${path.sep}node_modules${path.sep}`;
|
|
759
|
+
const idx = moduleFile.indexOf(marker);
|
|
760
|
+
if (idx === -1) {
|
|
761
|
+
return {
|
|
762
|
+
checked: false,
|
|
763
|
+
binDir: null,
|
|
764
|
+
targetPresent: false,
|
|
765
|
+
expected: ["exe", "exe-os"],
|
|
766
|
+
missing: [],
|
|
767
|
+
reinstallCommand
|
|
768
|
+
};
|
|
769
|
+
}
|
|
770
|
+
const prefix = moduleFile.slice(0, idx);
|
|
771
|
+
const binDir = path.join(prefix, "bin");
|
|
772
|
+
const target = path.join(path.dirname(moduleFile), "exe-launch-agent.js");
|
|
773
|
+
const targetPresent = exists(target);
|
|
774
|
+
const expected = ["exe", "exe-os"];
|
|
775
|
+
const missing = expected.filter((name) => !exists(path.join(binDir, name)));
|
|
776
|
+
return { checked: true, binDir, targetPresent, expected, missing, reinstallCommand };
|
|
777
|
+
}
|
|
737
778
|
async function runAudit(client, flags) {
|
|
738
779
|
const runConflicts = flags.conflicts || process.env.EXE_AUDIT_CONFLICTS === "1";
|
|
739
|
-
const [stats, nullVectors, duplicates, bloated, fts, orphanedProjects, shards, keyHealth, localSecretResidue, outbox, cpuSteal, postinstallFailure] = await Promise.all([
|
|
780
|
+
const [stats, nullVectors, duplicates, bloated, fts, orphanedProjects, shards, keyHealth, localSecretResidue, outbox, cpuSteal, postinstallFailure, globalBin] = await Promise.all([
|
|
740
781
|
auditStats(client, flags),
|
|
741
782
|
auditNullVectors(client, flags),
|
|
742
783
|
auditDuplicates(client, flags),
|
|
@@ -753,7 +794,8 @@ async function runAudit(client, flags) {
|
|
|
753
794
|
Promise.resolve().then(() => auditLocalSecretResidue()),
|
|
754
795
|
auditOutbox(),
|
|
755
796
|
auditCpuSteal(),
|
|
756
|
-
Promise.resolve().then(() => auditPostinstallFailure())
|
|
797
|
+
Promise.resolve().then(() => auditPostinstallFailure()),
|
|
798
|
+
Promise.resolve().then(() => auditGlobalBin())
|
|
757
799
|
]);
|
|
758
800
|
let conflicts;
|
|
759
801
|
if (runConflicts) {
|
|
@@ -780,7 +822,7 @@ async function runAudit(client, flags) {
|
|
|
780
822
|
} catch {
|
|
781
823
|
retrievalHealth = void 0;
|
|
782
824
|
}
|
|
783
|
-
return { stats, nullVectors, duplicates, duplicateCount, bloated, fts, orphanedProjects, conflicts, hookHealth, hookOwnership, shards, keyHealth, localSecretResidue, outbox, cpuSteal, postinstallFailure, retrievalHealth };
|
|
825
|
+
return { stats, nullVectors, duplicates, duplicateCount, bloated, fts, orphanedProjects, conflicts, hookHealth, hookOwnership, shards, keyHealth, localSecretResidue, outbox, cpuSteal, postinstallFailure, globalBin, retrievalHealth };
|
|
784
826
|
}
|
|
785
827
|
function indicator(value, warn) {
|
|
786
828
|
if (value === 0) return "\u{1F7E2}";
|
|
@@ -911,6 +953,20 @@ function formatReport(report, flags) {
|
|
|
911
953
|
}
|
|
912
954
|
lines.push(` marker: ${pf.path}`);
|
|
913
955
|
}
|
|
956
|
+
const gb = report.globalBin;
|
|
957
|
+
if (gb.checked) {
|
|
958
|
+
if (gb.missing.length === 0) {
|
|
959
|
+
lines.push(`\u{1F7E2} Global bin: ${gb.expected.join(", ")} present`);
|
|
960
|
+
} else {
|
|
961
|
+
lines.push(`\u{1F534} Global bin: MISSING \u2014 ${gb.missing.join(", ")} not found in ${gb.binDir}`);
|
|
962
|
+
if (gb.targetPresent) {
|
|
963
|
+
lines.push(` Likely cause: antivirus/CleanMyMac flagged the \`exe\` command as malware (AtomicStealer false positive) and quarantined it. This is a known false positive \u2014 the launcher is a plain Node script, not malware.`);
|
|
964
|
+
} else {
|
|
965
|
+
lines.push(` The exe-os package launcher is also missing \u2014 the install may have been removed or quarantined.`);
|
|
966
|
+
}
|
|
967
|
+
lines.push(` Reinstall to restore it: ${gb.reinstallCommand}`);
|
|
968
|
+
}
|
|
969
|
+
}
|
|
914
970
|
const sh = report.shards;
|
|
915
971
|
if (sh.total > 0) {
|
|
916
972
|
if (sh.unreadable === 0 && sh.schemaMismatches === 0) {
|
|
@@ -1031,6 +1087,9 @@ function formatReport(report, flags) {
|
|
|
1031
1087
|
if (report.postinstallFailure) {
|
|
1032
1088
|
recs.push("Fix the postinstall failure above, then run `exe-os claude install`, `exe-os codex install`, or `exe-os-install --global`");
|
|
1033
1089
|
}
|
|
1090
|
+
if (report.globalBin.checked && report.globalBin.missing.length > 0) {
|
|
1091
|
+
recs.push(`Global command(s) ${report.globalBin.missing.join(", ")} are missing (likely AV/CleanMyMac quarantine \u2014 known false positive). Restore with \`${report.globalBin.reinstallCommand}\`. See SECURITY.md "Antivirus false positives".`);
|
|
1092
|
+
}
|
|
1034
1093
|
if (report.retrievalHealth) {
|
|
1035
1094
|
for (const d of report.retrievalHealth.degradations) {
|
|
1036
1095
|
if (d.severity === "critical" || d.severity === "warn") {
|
|
@@ -1053,7 +1112,7 @@ function formatReport(report, flags) {
|
|
|
1053
1112
|
return lines.join("\n");
|
|
1054
1113
|
}
|
|
1055
1114
|
async function fixNullVectors() {
|
|
1056
|
-
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-
|
|
1115
|
+
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-BEEIIVWA.js");
|
|
1057
1116
|
if (!tryAcquireWorkerSlot()) {
|
|
1058
1117
|
process.stderr.write("[exe-doctor] Worker gate full \u2014 waiting for existing backfill workers to finish\n");
|
|
1059
1118
|
await new Promise((r) => setTimeout(r, 5e3));
|
|
@@ -1167,7 +1226,7 @@ function shouldFixShards(shards) {
|
|
|
1167
1226
|
return shards.unreadable > 0 || shards.schemaMismatches > 0;
|
|
1168
1227
|
}
|
|
1169
1228
|
async function fixShards(dryRun) {
|
|
1170
|
-
const { auditShardHealth } = await import("./shard-manager-
|
|
1229
|
+
const { auditShardHealth } = await import("./shard-manager-OE36A4MY.js");
|
|
1171
1230
|
const report = await auditShardHealth({ repair: true, dryRun });
|
|
1172
1231
|
return {
|
|
1173
1232
|
total: report.total,
|
|
@@ -1230,7 +1289,8 @@ function emptyAuditReport() {
|
|
|
1230
1289
|
localSecretResidue: { dataDir: "", residues: [] },
|
|
1231
1290
|
outbox: { bugReports: { total: 0, unsent: 0 }, featureRequests: { total: 0, unsent: 0 } },
|
|
1232
1291
|
cpuSteal: { available: false, stealPercent: null, severity: "na", source: "none", message: "not checked" },
|
|
1233
|
-
postinstallFailure: null
|
|
1292
|
+
postinstallFailure: null,
|
|
1293
|
+
globalBin: { checked: false, binDir: null, targetPresent: false, expected: ["exe", "exe-os"], missing: [], reinstallCommand: "npm install -g @askexenow/exe-os" }
|
|
1234
1294
|
};
|
|
1235
1295
|
}
|
|
1236
1296
|
async function main(argv = process.argv.slice(2)) {
|
|
@@ -1240,7 +1300,7 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
1240
1300
|
console.log(formatRestartReport(restartReport));
|
|
1241
1301
|
return emptyAuditReport();
|
|
1242
1302
|
}
|
|
1243
|
-
const { fastDbInit } = await import("./fast-db-init-
|
|
1303
|
+
const { fastDbInit } = await import("./fast-db-init-L2RGKJWH.js");
|
|
1244
1304
|
const client = await fastDbInit();
|
|
1245
1305
|
const report = await runAudit(client, flags);
|
|
1246
1306
|
console.log(formatReport(report, flags));
|
|
@@ -1316,7 +1376,7 @@ ${mode} Complete.`);
|
|
|
1316
1376
|
}
|
|
1317
1377
|
return report;
|
|
1318
1378
|
}
|
|
1319
|
-
if (
|
|
1379
|
+
if ((process.argv[1] ?? "").includes("exe-doctor")) {
|
|
1320
1380
|
main().catch((err) => {
|
|
1321
1381
|
console.error(err instanceof Error ? err.message : String(err));
|
|
1322
1382
|
process.exit(1);
|
|
@@ -1327,6 +1387,7 @@ export {
|
|
|
1327
1387
|
parseFlags,
|
|
1328
1388
|
auditStats,
|
|
1329
1389
|
auditNullVectors,
|
|
1390
|
+
DUPLICATE_MEMBER_PAGE_SIZE,
|
|
1330
1391
|
auditDuplicates,
|
|
1331
1392
|
auditBloated,
|
|
1332
1393
|
auditFts,
|
|
@@ -1339,6 +1400,7 @@ export {
|
|
|
1339
1400
|
auditOutbox,
|
|
1340
1401
|
auditCpuSteal,
|
|
1341
1402
|
auditPostinstallFailure,
|
|
1403
|
+
auditGlobalBin,
|
|
1342
1404
|
runAudit,
|
|
1343
1405
|
formatReport,
|
|
1344
1406
|
fixNullVectors,
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isExeSession,
|
|
3
3
|
strictSessionScopeFilter
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AKLQSC6W.js";
|
|
5
5
|
import {
|
|
6
6
|
recordOrchestrationEventBestEffort
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-W75GTHR3.js";
|
|
8
8
|
import {
|
|
9
9
|
getProjectName
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JTVIANUB.js";
|
|
11
11
|
import {
|
|
12
12
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
13
13
|
getCoordinatorName
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-TAMDAOCU.js";
|
|
15
15
|
import {
|
|
16
16
|
loadConfigSync
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-ZIG7VPJV.js";
|
|
18
18
|
|
|
19
19
|
// src/lib/review-polling.ts
|
|
20
20
|
import { execSync } from "child_process";
|
|
@@ -260,7 +260,7 @@ function createRealDeps(getClient) {
|
|
|
260
260
|
});
|
|
261
261
|
},
|
|
262
262
|
createReviewForOrphan: async (task) => {
|
|
263
|
-
const { createReviewForCompletedTask } = await import("./tasks-review-
|
|
263
|
+
const { createReviewForCompletedTask } = await import("./tasks-review-Z7J2P6DG.js");
|
|
264
264
|
const cwd = process.cwd();
|
|
265
265
|
await createReviewForCompletedTask(
|
|
266
266
|
task,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
routeTask
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KTCXJWJG.js";
|
|
4
4
|
import {
|
|
5
5
|
createTaskCore,
|
|
6
6
|
employeeSessionName,
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
isEmployeeAlive,
|
|
10
10
|
sessionScopeFilter,
|
|
11
11
|
updateTaskStatus
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-AKLQSC6W.js";
|
|
13
13
|
import {
|
|
14
14
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
15
15
|
getCoordinatorName
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-TAMDAOCU.js";
|
|
17
17
|
|
|
18
18
|
// src/runtime/orchestrator.ts
|
|
19
19
|
var STALE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getBrandName
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7RI2CNXJ.js";
|
|
4
4
|
import {
|
|
5
5
|
buildDeployStalenessBanner,
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
resolveDeployStalenessAlert
|
|
7
|
+
} from "./chunk-C5HUMAA7.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/status-brief.ts
|
|
10
10
|
import pathMod from "path";
|
|
@@ -118,7 +118,7 @@ async function generateStatusBrief(employees, data, _activeAgentIds) {
|
|
|
118
118
|
sections.push([` EXE STATUS BRIEF \u2014 ${dateStr}${sessionTag}`]);
|
|
119
119
|
const degradedLines = buildDegradedBanner(data);
|
|
120
120
|
if (degradedLines.length > 0) sections.push(degradedLines);
|
|
121
|
-
const staleDeployLines = buildDeployStalenessBanner(
|
|
121
|
+
const staleDeployLines = buildDeployStalenessBanner(resolveDeployStalenessAlert());
|
|
122
122
|
if (staleDeployLines.length > 0) sections.push(staleDeployLines);
|
|
123
123
|
const orchestrationLines = buildOrchestrationPhase(data, employees);
|
|
124
124
|
if (orchestrationLines.length > 0) sections.push(orchestrationLines);
|
|
@@ -601,6 +601,11 @@ function buildActionRequired(data) {
|
|
|
601
601
|
` \u{1F9F9} ${ub.mergedCount} merged branch${ub.mergedCount === 1 ? "" : "es"} not yet deleted upstream \u2014 prunable, no action needed`
|
|
602
602
|
);
|
|
603
603
|
}
|
|
604
|
+
if ((ub.landedCount ?? 0) > 0) {
|
|
605
|
+
lines.push(
|
|
606
|
+
` \u{1F9F9} ${ub.landedCount} branch${ub.landedCount === 1 ? "" : "es"} whose work is already on main (PR closed without merge / superseded) \u2014 prunable, no action needed`
|
|
607
|
+
);
|
|
608
|
+
}
|
|
604
609
|
if ((ub.unknownCount ?? 0) > 0 && ub.prStateAvailable !== false) {
|
|
605
610
|
lines.push(` \u2753 ${ub.unknownCount} branch${ub.unknownCount === 1 ? "" : "es"} with UNKNOWN PR state \u2014 not counted above`);
|
|
606
611
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
executeAction,
|
|
3
3
|
substituteTemplate
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GM7TLYOK.js";
|
|
5
5
|
|
|
6
6
|
// src/automation/workflow-engine.ts
|
|
7
7
|
import { randomUUID } from "crypto";
|
|
8
|
+
var MAX_WORKFLOW_STEPS = 100;
|
|
8
9
|
var _definitions = /* @__PURE__ */ new Map();
|
|
9
10
|
var _instances = /* @__PURE__ */ new Map();
|
|
10
11
|
function createWorkflowDefinition(input) {
|
|
@@ -39,7 +40,7 @@ function buildTemplateContext(instance) {
|
|
|
39
40
|
function resolveActionParams(action, context) {
|
|
40
41
|
const resolved = {};
|
|
41
42
|
for (const [key, val] of Object.entries(action.params)) {
|
|
42
|
-
resolved[key] = substituteTemplate(val, context);
|
|
43
|
+
resolved[key] = substituteTemplate(val, context, true);
|
|
43
44
|
}
|
|
44
45
|
return { ...action, params: resolved };
|
|
45
46
|
}
|
|
@@ -107,7 +108,7 @@ async function advanceWorkflow(instanceId) {
|
|
|
107
108
|
case "wait_for_approval": {
|
|
108
109
|
const { createTask } = await import("./lib/tasks.js");
|
|
109
110
|
const { getCoordinatorName } = await import("./lib/employees.js");
|
|
110
|
-
const message = step.approval_message ? substituteTemplate(step.approval_message, templateCtx) : `Workflow "${def.name}" step ${step.index} ("${step.name}") requires approval.`;
|
|
111
|
+
const message = step.approval_message ? substituteTemplate(step.approval_message, templateCtx, true) : `Workflow "${def.name}" step ${step.index} ("${step.name}") requires approval.`;
|
|
111
112
|
const task = await createTask({
|
|
112
113
|
title: `[Workflow Approval] ${def.name}: ${step.name}`,
|
|
113
114
|
assignedTo: getCoordinatorName(),
|
|
@@ -169,7 +170,22 @@ To reject: call approve_workflow_step with instance_id="${instance.id}" approved
|
|
|
169
170
|
async function runWorkflow(instanceId) {
|
|
170
171
|
let instance = _instances.get(instanceId);
|
|
171
172
|
if (!instance) throw new Error(`Workflow instance "${instanceId}" not found`);
|
|
173
|
+
let steps = 0;
|
|
172
174
|
while (instance.status === "running") {
|
|
175
|
+
if (steps >= MAX_WORKFLOW_STEPS) {
|
|
176
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
177
|
+
instance.status = "failed";
|
|
178
|
+
instance.step_results.push({
|
|
179
|
+
step_index: instance.current_step,
|
|
180
|
+
status: "failed",
|
|
181
|
+
error: `Workflow exceeded max step limit (${MAX_WORKFLOW_STEPS}) \u2014 aborting to prevent an infinite loop (d9a1fd0d)`,
|
|
182
|
+
started_at: now,
|
|
183
|
+
completed_at: now
|
|
184
|
+
});
|
|
185
|
+
instance.updated_at = now;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
steps++;
|
|
173
189
|
instance = await advanceWorkflow(instanceId);
|
|
174
190
|
}
|
|
175
191
|
return instance;
|
|
@@ -319,6 +335,7 @@ async function loadWorkflows() {
|
|
|
319
335
|
}
|
|
320
336
|
|
|
321
337
|
export {
|
|
338
|
+
MAX_WORKFLOW_STEPS,
|
|
322
339
|
createWorkflowDefinition,
|
|
323
340
|
getWorkflowDefinition,
|
|
324
341
|
listWorkflowDefinitions,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TAMDAOCU.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/pipeline-router.ts
|
|
6
6
|
import crypto from "crypto";
|
|
@@ -116,12 +116,12 @@ async function sinkCRM(msg, agentResponse, agentName) {
|
|
|
116
116
|
}
|
|
117
117
|
async function sinkWiki(msg, agentResponse) {
|
|
118
118
|
try {
|
|
119
|
-
const { createWikiClient } = await import("./wiki-client-
|
|
119
|
+
const { createWikiClient } = await import("./wiki-client-W65IOSWF.js");
|
|
120
120
|
const client = await createWikiClient();
|
|
121
121
|
if (!client) return false;
|
|
122
122
|
const content = msg.text ?? "";
|
|
123
123
|
if (content.length < 50) return false;
|
|
124
|
-
const { chatInWorkspace } = await import("./wiki-client-
|
|
124
|
+
const { chatInWorkspace } = await import("./wiki-client-W65IOSWF.js");
|
|
125
125
|
const ingestText = [
|
|
126
126
|
`[${msg.platform}] Message from ${msg.senderName ?? msg.senderId} (${msg.timestamp}):`,
|
|
127
127
|
content,
|
|
@@ -140,8 +140,8 @@ Agent response: ${agentResponse}` : ""
|
|
|
140
140
|
}
|
|
141
141
|
async function sinkEntityExtraction(msg, agentResponse, agentName) {
|
|
142
142
|
try {
|
|
143
|
-
const { extractFromConversation } = await import("./conversation-entity-extractor-
|
|
144
|
-
const { storeExtraction } = await import("./graph-rag-
|
|
143
|
+
const { extractFromConversation } = await import("./conversation-entity-extractor-74252CAO.js");
|
|
144
|
+
const { storeExtraction } = await import("./graph-rag-Z2KCJTPK.js");
|
|
145
145
|
if ((msg.text?.length ?? 0) < 20) return false;
|
|
146
146
|
if (msg.isHistorical) return false;
|
|
147
147
|
const extraction = await extractFromConversation(msg, agentResponse, agentName);
|
|
@@ -149,7 +149,7 @@ async function sinkEntityExtraction(msg, agentResponse, agentName) {
|
|
|
149
149
|
const client = getClient();
|
|
150
150
|
const memoryId = `conv:${msg.messageId}`;
|
|
151
151
|
await storeExtraction(client, extraction, memoryId, msg.timestamp);
|
|
152
|
-
import("./conversation-wiki-populator-
|
|
152
|
+
import("./conversation-wiki-populator-OS4C6W54.js").then(
|
|
153
153
|
({ populateWikiFromExtraction }) => populateWikiFromExtraction(extraction, msg, agentResponse, agentName)
|
|
154
154
|
).catch((err) => {
|
|
155
155
|
process.stderr.write(
|