@askexenow/exe-os 0.9.362 → 0.9.365
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 +46 -2
- package/deploy/compose/.env.example +49 -2
- package/deploy/compose/cloudflared/config.yml.example +15 -8
- package/deploy/compose/docker-compose.yml +240 -34
- package/deploy/compose/generate-env.ts +88 -2
- package/deploy/compose/status.sh +30 -0
- package/deploy/compose/uptime-check.sh +39 -2
- package/deploy/compose/wiki-schema-guard.sh +302 -0
- package/deploy/stack-manifests/v0.9.json +232 -2
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-BPNEBKHI.js → active-agent-C6DPH43L.js} +10 -5
- package/dist/{active-agent-3FV5V7SS.js → active-agent-MGF7J3HB.js} +10 -5
- package/dist/agent-defs-generator-X7TVMPVB.js +240 -0
- package/dist/{agentic-ontology-RCVCJ6WB.js → agentic-ontology-CARDCG37.js} +1 -1
- package/dist/artifact-backup-767STHSW.js +209 -0
- package/dist/artifact-provenance-C7HQ267L.js +13 -0
- package/dist/{backfill-gate-LRX77SUD.js → backfill-gate-VX2RZTQV.js} +2 -2
- package/dist/{backfill-metadata-Y3DGVCK5.js → backfill-metadata-ANCJA6LA.js} +7 -7
- package/dist/{background-jobs-Z6KHCWES.js → background-jobs-LTPWCMA3.js} +2 -2
- package/dist/{backup-verify-TZPPUCLU.js → backup-verify-F7BHVEF7.js} +27 -14
- package/dist/{behavior-injection-JMGGWCWG.js → behavior-injection-XQ4B7DCF.js} +13 -12
- package/dist/{behaviors-TT6CMEKC.js → behaviors-R2IE3PEN.js} +12 -11
- package/dist/bin/age-ontology-load.js +2 -2
- 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 +14 -13
- package/dist/bin/bulk-sync-postgres.js +23 -19
- package/dist/bin/cc-doctor.js +11 -8
- package/dist/bin/cleanup-stale-review-tasks.js +26 -24
- package/dist/bin/cli.js +29 -102
- package/dist/bin/customer-readiness.js +3 -1
- package/dist/bin/deferred-daemon-restart.js +115 -103
- package/dist/bin/exe-agent-config.js +5 -5
- package/dist/bin/exe-agent.js +14 -14
- package/dist/bin/exe-assign.js +12 -11
- package/dist/bin/exe-boot.js +60 -51
- package/dist/bin/exe-call.js +7 -7
- package/dist/bin/exe-cloud.js +26 -22
- package/dist/bin/exe-config-dump.js +5 -5
- package/dist/bin/exe-dispatch.js +30 -24
- package/dist/bin/exe-doctor.js +10 -9
- package/dist/bin/exe-export-behaviors.js +14 -13
- package/dist/bin/exe-forget.js +9 -9
- package/dist/bin/exe-gateway.js +9 -9
- package/dist/bin/exe-grant.js +5 -5
- package/dist/bin/exe-healthcheck.js +13 -8
- package/dist/bin/exe-heartbeat.js +36 -29
- package/dist/bin/exe-kill.js +30 -28
- package/dist/bin/exe-launch-agent.js +41 -37
- package/dist/bin/exe-mcp.js +5 -5
- package/dist/bin/exe-memory-reads.js +7 -7
- package/dist/bin/exe-new-employee.js +12 -11
- package/dist/bin/exe-os-mcp-proxy.js +5 -5
- package/dist/bin/exe-pending-messages.js +27 -25
- package/dist/bin/exe-pending-notifications.js +26 -24
- package/dist/bin/exe-pending-reviews.js +27 -25
- package/dist/bin/exe-rename.js +7 -7
- package/dist/bin/exe-review.js +29 -27
- package/dist/bin/exe-search.js +8 -8
- package/dist/bin/exe-session-cleanup.js +31 -29
- package/dist/bin/exe-settings.js +24 -20
- package/dist/bin/exe-start-codex.js +36 -21
- package/dist/bin/exe-start-opencode.js +15 -14
- package/dist/bin/exe-status.js +28 -25
- package/dist/bin/exe-support.js +5 -4
- package/dist/bin/exe-team.js +12 -6
- package/dist/bin/exe-verify-running-images.js +145 -0
- package/dist/bin/exe-watchdog.js +16 -6
- package/dist/bin/git-sweep.js +27 -25
- package/dist/bin/graph-backfill.js +10 -9
- package/dist/bin/graph-export.js +8 -8
- package/dist/bin/import-history.js +13 -11
- package/dist/bin/install.js +119 -107
- package/dist/bin/intercom-check.js +5 -5
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +6 -6
- package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +3 -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 +26 -24
- package/dist/bin/setup.js +4 -3
- package/dist/bin/shard-migrate.js +8 -8
- package/dist/bin/stack-update.js +87 -38
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-XABYKF5P.js → boot-generation-X45BSVZY.js} +5 -5
- package/dist/{boot-review-sections-2X5TFIGU.js → boot-review-sections-OBVRXXSF.js} +25 -23
- package/dist/{branch-hygiene-Z4IBWAOX.js → branch-hygiene-HFJ3HA62.js} +17 -10
- package/dist/{branding-7MZDHTKN.js → branding-GH43W3PU.js} +2 -2
- package/dist/build-manifest.json +1189 -1049
- package/dist/{capability-cards-O5UXDOOA.js → capability-cards-57FURUMR.js} +4 -4
- package/dist/{capacity-monitor-IPXM726A.js → capacity-monitor-QEL62JDO.js} +27 -25
- package/dist/{catchup-brief-EBIGDXOK.js → catchup-brief-PMXTCASA.js} +30 -28
- package/dist/{chunk-UO5QJ2RX.js → chunk-22YQBVMO.js} +4 -4
- package/dist/chunk-2ADYTOHQ.js +189 -0
- package/dist/{chunk-NO5KHKKB.js → chunk-2CWS374F.js} +1 -1
- package/dist/{chunk-NAHCSQWT.js → chunk-2ESB5SDP.js} +19 -7
- package/dist/{chunk-CY5NVDTH.js → chunk-2FYIMTQE.js} +9 -5
- package/dist/{chunk-SC6WDF3Q.js → chunk-2RQT7TED.js} +2 -2
- package/dist/{chunk-UWEFIIEG.js → chunk-3CIMDFXG.js} +1 -1
- package/dist/{chunk-E7PL3T2U.js → chunk-3JNVB5LG.js} +1 -1
- package/dist/{chunk-7SY2NOMQ.js → chunk-3THNS2T7.js} +1 -1
- package/dist/{chunk-XJIRUTGJ.js → chunk-45EQTS7B.js} +1 -1
- package/dist/{chunk-YZUHSV24.js → chunk-4LWBC7CM.js} +1 -1
- package/dist/{chunk-DKRDU2AX.js → chunk-4QKKLK3C.js} +14 -14
- package/dist/{chunk-WP2TGH5R.js → chunk-52TIQJEQ.js} +2 -2
- package/dist/{chunk-LG37UBBE.js → chunk-5CBGH6RA.js} +5 -5
- package/dist/{chunk-W3LKIQJ2.js → chunk-6GQYPJPG.js} +22 -16
- package/dist/{chunk-I3SF6QGV.js → chunk-6Q263OZE.js} +1 -1
- package/dist/{chunk-XSYQ5EPE.js → chunk-7C4FUNVO.js} +11 -11
- package/dist/{chunk-P7CV4SHQ.js → chunk-7Y6AQWVT.js} +21 -10
- package/dist/{chunk-NGDXBN3M.js → chunk-A6PDF4BO.js} +2 -2
- package/dist/chunk-A7XLR3K7.js +45 -0
- package/dist/{chunk-7H3AZNQ7.js → chunk-AGQAGOQN.js} +9 -9
- package/dist/{chunk-VDMFVUSY.js → chunk-ANPE3TT3.js} +3 -3
- package/dist/{chunk-NE4QI2GX.js → chunk-BATQKSLI.js} +2 -2
- package/dist/{chunk-AOMFYUPT.js → chunk-BEHLIRRJ.js} +2 -2
- package/dist/{chunk-6EM6USV7.js → chunk-BNHAZ65R.js} +42 -50
- package/dist/{chunk-HLU52KTO.js → chunk-BRLS5OLZ.js} +257 -36
- package/dist/{chunk-QCJT265O.js → chunk-BY7WWPRM.js} +1 -1
- package/dist/{chunk-Z67DIJKT.js → chunk-C3UAQ3JG.js} +1 -1
- package/dist/{chunk-MZYNW5OY.js → chunk-CDUB5Q6J.js} +1 -1
- package/dist/{chunk-5H3RHWRE.js → chunk-CKG6CVKI.js} +1 -1
- package/dist/{chunk-WH2VVEGD.js → chunk-CMBF5WCL.js} +56 -2
- package/dist/{chunk-JYKZVAS6.js → chunk-CPILYY2K.js} +1 -1
- package/dist/{chunk-XTGR3LMF.js → chunk-CW2UCKHS.js} +2 -2
- package/dist/{chunk-32FEF5BW.js → chunk-CWBFOAGM.js} +2 -2
- package/dist/{chunk-V5I5N7NC.js → chunk-DEFSN2FQ.js} +3 -3
- package/dist/{chunk-HAXCUCJC.js → chunk-DJK45U7B.js} +1 -1
- package/dist/{chunk-MZZN5GFC.js → chunk-DQ5KHWFD.js} +1 -1
- package/dist/{chunk-SLBOKYYQ.js → chunk-DWAQOEXL.js} +2 -2
- package/dist/{chunk-T2RZU7JA.js → chunk-DYWGIPVP.js} +7 -7
- package/dist/{chunk-6DTALXOA.js → chunk-E5HAY3DQ.js} +1 -1
- package/dist/{chunk-D5CY4E7I.js → chunk-EHHMNKOA.js} +1 -1
- package/dist/{chunk-54USDN5Q.js → chunk-EJ4522YM.js} +1 -1
- package/dist/{chunk-URNVIZXU.js → chunk-EKVTRI3N.js} +52 -6
- package/dist/{chunk-KID6T2A4.js → chunk-EMZHB767.js} +44 -35
- package/dist/{chunk-KBI4FVBZ.js → chunk-EPDNWY5P.js} +111 -22
- package/dist/{chunk-AQO3BT3I.js → chunk-EPNWEOOE.js} +13 -13
- package/dist/{chunk-5C6ZIJ7J.js → chunk-ESTR7QUP.js} +1 -1
- package/dist/{chunk-Q2VQNAPU.js → chunk-EVPBYX2Z.js} +2 -2
- package/dist/{chunk-CVYDJ2TW.js → chunk-EWCEUO65.js} +1 -1
- package/dist/{chunk-RNSAVQEU.js → chunk-EWZYFG5Q.js} +8 -3
- package/dist/{chunk-R7F6HKTH.js → chunk-EXDW3E2R.js} +3 -1
- package/dist/{chunk-TY4JLBFO.js → chunk-F2S3M5MB.js} +3 -3
- package/dist/{chunk-BT2PUK3S.js → chunk-FXPAUDCZ.js} +1 -1
- package/dist/{chunk-3C7NE4JE.js → chunk-G2EAYH4U.js} +1 -1
- package/dist/{chunk-WDA2KAV7.js → chunk-GSJLB6JI.js} +1 -1
- package/dist/{chunk-M67ARGXY.js → chunk-H37FSTF2.js} +1 -1
- package/dist/{chunk-ZR4CQBAP.js → chunk-H74466TM.js} +1 -1
- package/dist/{chunk-3BAGFZFN.js → chunk-HHGOCBVQ.js} +9 -9
- package/dist/{working-memory-BACVOAIV.js → chunk-HSFBNCNC.js} +3 -3
- package/dist/{chunk-PF7EQSE5.js → chunk-IIZITKBV.js} +6 -6
- package/dist/{chunk-2FA4PYYX.js → chunk-IM2I7OOS.js} +1 -1
- package/dist/{chunk-DSKEYEL2.js → chunk-IXEFO6HD.js} +3 -3
- package/dist/{chunk-TN2E6ZCM.js → chunk-J4U5Z7VX.js} +214 -58
- package/dist/{chunk-PU7UYQRC.js → chunk-J5EYOBFF.js} +1 -1
- package/dist/{chunk-RWKX2TK5.js → chunk-J6I7X272.js} +1 -1
- package/dist/{chunk-BDLRTLXY.js → chunk-JITNFE4W.js} +6 -2
- package/dist/{chunk-PUMH7JSB.js → chunk-JNVQGLPX.js} +3 -3
- package/dist/{chunk-VAOUB2TK.js → chunk-JTB5V6BV.js} +1 -1
- package/dist/{chunk-QYRI25IP.js → chunk-JUOZLXLH.js} +2 -2
- package/dist/{chunk-RYRNY6IF.js → chunk-JYFYIGYK.js} +2 -2
- package/dist/{chunk-2PRAXZWM.js → chunk-KOYGRP2L.js} +10 -5
- package/dist/{chunk-4AFD4R35.js → chunk-KRUYQFSH.js} +5 -5
- package/dist/chunk-L25OAFOU.js +93 -0
- package/dist/{chunk-FUQ2OSDV.js → chunk-L2VZBPJJ.js} +25 -8
- package/dist/{chunk-LCDW2HUL.js → chunk-LHOKWZKL.js} +1 -1
- package/dist/{chunk-BN26LSME.js → chunk-LKYGSJ2E.js} +13 -2
- package/dist/chunk-LNOS24GV.js +214 -0
- package/dist/{chunk-O32HTNRX.js → chunk-LZKYVMBY.js} +13 -4
- package/dist/{chunk-35FD67ZB.js → chunk-M7EES2KM.js} +3 -3
- package/dist/chunk-MBBFL2SP.js +45 -0
- package/dist/{chunk-4R2WD6T3.js → chunk-MPQXQ5IE.js} +2 -2
- package/dist/{chunk-QQMYD4M7.js → chunk-MXEIZUXG.js} +1 -1
- package/dist/{chunk-6QJXFLNN.js → chunk-MZJBUAC3.js} +5 -5
- package/dist/chunk-NEHOQ3P2.js +19 -0
- package/dist/{chunk-BRZR76TS.js → chunk-NJFJWQNN.js} +49 -14
- package/dist/{chunk-Q7J2SQJ6.js → chunk-NO3M2AFM.js} +100 -32
- package/dist/{gotrue-session-2IT7MDGW.js → chunk-NUTZJZKW.js} +7 -8
- package/dist/{chunk-6UZDGEGQ.js → chunk-NV6A5HDN.js} +71 -1
- package/dist/{chunk-ZI3HA3XW.js → chunk-O2MEBF23.js} +3 -3
- package/dist/{chunk-V6YLIDLK.js → chunk-ODBRU6BF.js} +577 -230
- package/dist/{chunk-6N3HUOV3.js → chunk-OFGFRT5J.js} +2 -2
- package/dist/{chunk-HKQ7UTSE.js → chunk-OPNROU5B.js} +1 -1
- package/dist/{chunk-SQM4ZTL2.js → chunk-ORNCMRIX.js} +60 -33
- package/dist/{chunk-RUUX2ZST.js → chunk-P47MPWNU.js} +1 -1
- package/dist/{org-key-admin-4W6LZ5KZ.js → chunk-P5XTVIEC.js} +62 -17
- package/dist/{chunk-OZNCAMS3.js → chunk-POPRJKAY.js} +122 -20
- package/dist/{chunk-SRFRUN66.js → chunk-PPGPCWRC.js} +5 -5
- package/dist/{chunk-B6PFGUYJ.js → chunk-PVEM537A.js} +46 -5
- package/dist/{chunk-QJBX3MBV.js → chunk-Q7BU5Q6I.js} +3 -3
- package/dist/{chunk-SXKIGBNF.js → chunk-QFIVK3G5.js} +1 -1
- package/dist/{chunk-BRIZ6OZ3.js → chunk-QMSEL5YS.js} +81 -23
- package/dist/{chunk-BJEQBKGH.js → chunk-QYJANQWC.js} +8 -8
- package/dist/{chunk-4U56FZ7B.js → chunk-R7RM766N.js} +3 -3
- package/dist/{chunk-QI25QRUP.js → chunk-RD4E5G3B.js} +2 -2
- package/dist/{chunk-QP53XLC5.js → chunk-RHX6MNWY.js} +1 -1
- package/dist/chunk-RIECV7SR.js +234 -0
- package/dist/{chunk-3YBJ36UX.js → chunk-RLDMUSRM.js} +2 -2
- package/dist/{chunk-CXQ724WH.js → chunk-RVWALVDT.js} +2 -2
- package/dist/{chunk-VWTUKKUF.js → chunk-RZIKSE6N.js} +10 -4
- package/dist/chunk-SBAU735L.js +328 -0
- package/dist/{chunk-XRCX6R5S.js → chunk-SBJV2PCU.js} +1 -1
- package/dist/chunk-SO7KTH3Q.js +27 -0
- package/dist/{chunk-327Q53AS.js → chunk-SP37DONS.js} +17 -6
- package/dist/{chunk-KA4WVDLX.js → chunk-T6S45OLV.js} +4 -4
- package/dist/chunk-TCTED52S.js +120 -0
- package/dist/{chunk-HLQ4MS42.js → chunk-TO6TB75E.js} +4 -4
- package/dist/{chunk-465RCKVI.js → chunk-U373MEF5.js} +6 -6
- package/dist/{chunk-AL4HXKDJ.js → chunk-VGE6IHZB.js} +10 -10
- package/dist/{chunk-WBG7XYVR.js → chunk-VHJVD3MZ.js} +8 -0
- package/dist/{chunk-ZZEKOI2M.js → chunk-VMJ2UH4S.js} +1 -1
- package/dist/{chunk-3ICF4IAZ.js → chunk-VS4LPG66.js} +1 -1
- package/dist/{chunk-E3YI6FVJ.js → chunk-VV5EZZNT.js} +1 -1
- package/dist/{chunk-OPU3NYOO.js → chunk-W2IRQJ6R.js} +12 -0
- package/dist/{chunk-PV5BIXT6.js → chunk-WR75WUEP.js} +1 -1
- package/dist/{chunk-XUB4GFPN.js → chunk-WYLFDSIE.js} +144 -99
- package/dist/{chunk-4L33OFU4.js → chunk-X2P43TB2.js} +6 -3
- package/dist/chunk-X2X3IGZU.js +215 -0
- package/dist/{chunk-KIKB6FY3.js → chunk-X6A2VWVJ.js} +2 -2
- package/dist/chunk-XMVSLLED.js +38 -0
- package/dist/{chunk-KDMVVHZH.js → chunk-XTWHNLGD.js} +95 -23
- package/dist/{chunk-QY3TM2T3.js → chunk-YMJOLEPE.js} +4 -4
- package/dist/{chunk-RFKRCVGW.js → chunk-YYA5LXCT.js} +1 -1
- package/dist/{chunk-HSKABJE6.js → chunk-ZDUO6QBH.js} +5 -10
- package/dist/{chunk-PDJWHL63.js → chunk-ZEKCHV43.js} +4 -4
- package/dist/{chunk-23KWUA7Z.js → chunk-ZNEBZCZR.js} +53 -2
- package/dist/chunk-ZNUJFX7L.js +135 -0
- package/dist/{chunk-TP7RXGMP.js → chunk-ZRKEUCUZ.js} +315 -67
- package/dist/{chunk-6Y3KUO7Q.js → chunk-ZSZPMUNX.js} +244 -21
- package/dist/{chunk-4P2BFNSB.js → chunk-ZVTKWWLV.js} +2 -2
- package/dist/{chunk-RCOIKTHM.js → chunk-ZZXMB5F2.js} +1 -1
- package/dist/{cleanup-graph-garbage-6F22Y5SD.js → cleanup-graph-garbage-CAA625RJ.js} +10 -9
- package/dist/cloud-sync-command-DBB7WRHL.js +96 -0
- package/dist/cloud-sync-db-init-V7IB23W5.js +46 -0
- package/dist/{cloud-sync-shutdown-FWERMZB5.js → cloud-sync-shutdown-2D3B73CJ.js} +10 -4
- package/dist/{cloud-sync-state-DJRZORFI.js → cloud-sync-state-5DFKLWNB.js} +1 -1
- package/dist/{co-activation-UEEDCM5U.js → co-activation-JVN7EBS6.js} +4 -4
- package/dist/{co-occurrence-W6OPFRSY.js → co-occurrence-526PTFGT.js} +8 -7
- package/dist/{code-context-index-DWR6HS35.js → code-context-index-XOP6TLPZ.js} +5 -4
- package/dist/{conversation-entity-extractor-LWUIH3UB.js → conversation-entity-extractor-JO56DB2E.js} +9 -4
- package/dist/{conversation-wiki-populator-5EGRW2UZ.js → conversation-wiki-populator-EBUZXYEU.js} +1 -1
- package/dist/{crdt-sync-NHJX3ZJD.js → crdt-sync-LIJLZKFE.js} +2 -2
- package/dist/{crm-webhook-OY467ATC.js → crm-webhook-55F7Y6D2.js} +2 -2
- package/dist/{cto-delegation-gate-XH4YSQVC.js → cto-delegation-gate-QIYV4KFO.js} +41 -24
- package/dist/daemon-auth-SSPY5ODS.js +46 -0
- package/dist/{daemon-orchestration-7425ZVNH.js → daemon-orchestration-Q3GJA2JJ.js} +46 -30
- package/dist/{daemon-ready-VGPSRI3Z.js → daemon-ready-MKBH4QWD.js} +1 -1
- package/dist/{daemon-restart-report-HZU5LWXN.js → daemon-restart-report-EIVD6WDJ.js} +1 -1
- package/dist/db-integrity-events-5DTASXJF.js +22 -0
- package/dist/{db-restore-events-TFCZ4CPM.js → db-restore-events-2FI4ZMKA.js} +1 -1
- package/dist/{doc-graph-extractor-RR2VSO4W.js → doc-graph-extractor-P46R4QME.js} +13 -8
- package/dist/{documents-TRZ4R2ZW.js → documents-7KFEREWO.js} +12 -11
- package/dist/{dreaming-MAMZAPYW.js → dreaming-JMUXBAPU.js} +29 -27
- package/dist/employee-boot-brief-HN63D2BY.js +71 -0
- package/dist/{exe-drift-VBWB5E6S.js → exe-drift-7J7GX7DP.js} +5 -5
- package/dist/{exe-export-XJJTVVT7.js → exe-export-KJ7B2OBU.js} +14 -13
- package/dist/{exe-import-G6O7JFNZ.js → exe-import-HPZDWKGE.js} +14 -13
- package/dist/{exe-key-A2WJLLTM.js → exe-key-2PREP464.js} +117 -105
- package/dist/{exe-org-HXF4XBB3.js → exe-org-VEIISATF.js} +88 -26
- package/dist/{exe-snapshot-TL3TLKLR.js → exe-snapshot-JXQFLUKA.js} +33 -40
- package/dist/{fast-db-init-SO2XUQ7T.js → fast-db-init-SCXJXOYX.js} +1 -1
- package/dist/{founder-context-IOCADC66.js → founder-context-U2SZPLYV.js} +4 -3
- package/dist/{founder-monitor-envelope-SMILO4BT.js → founder-monitor-envelope-5KTKNL5G.js} +4 -4
- package/dist/fts-integrity-LKAZEZJE.js +96 -0
- package/dist/gateway/index.js +19 -19
- package/dist/{git-staleness-I6WT7EXV.js → git-staleness-S4NDR7NX.js} +4 -4
- package/dist/{global-procedures-3RMO6C3C.js → global-procedures-ZOFTOXIR.js} +6 -6
- package/dist/gotrue-session-ODZ2ERJX.js +25 -0
- package/dist/{graph-auto-extract-NKTYPD2I.js → graph-auto-extract-CLVTSUSB.js} +8 -7
- package/dist/{graph-rag-EOGPZOYI.js → graph-rag-LSJLWGXV.js} +4 -3
- package/dist/{hook-integrity-RTBF2BL2.js → hook-integrity-SGTKBL6W.js} +1 -1
- package/dist/{hook-prefetch-V5KCGW2N.js → hook-prefetch-BDSLB6F4.js} +26 -24
- package/dist/hooks/bug-report-worker.js +30 -28
- package/dist/hooks/codex-stop-task-finalizer.js +32 -30
- package/dist/hooks/commit-complete.js +29 -27
- package/dist/hooks/error-recall.js +11 -10
- package/dist/hooks/exe-heartbeat-hook.js +7 -6
- package/dist/hooks/ingest-worker.js +10 -9
- package/dist/hooks/ingest.js +18 -16
- package/dist/hooks/instructions-loaded.js +12 -8
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +8 -7
- package/dist/hooks/post-compact.js +7 -6
- package/dist/hooks/post-tool-combined.js +33 -14
- package/dist/hooks/pre-compact.js +31 -28
- package/dist/hooks/pre-tool-use.js +61 -34
- package/dist/hooks/prompt-submit.js +45 -42
- package/dist/hooks/session-end.js +40 -35
- package/dist/hooks/session-start.js +29 -71
- package/dist/hooks/stop.js +42 -36
- package/dist/hooks/subagent-stop.js +49 -33
- package/dist/hooks/summary-worker.js +35 -33
- package/dist/index.js +40 -38
- package/dist/{installer-G67M3DME.js → installer-EA7T3PBD.js} +7 -7
- package/dist/{installer-L3ZKMOPU.js → installer-KCEM4RCG.js} +7 -7
- package/dist/{installer-QBWZSYDG.js → installer-RC2JCKSE.js} +9 -7
- package/dist/{intercom-queue-R5LSXD3V.js → intercom-queue-6DZPHHQ2.js} +25 -23
- package/dist/{key-backup-status-3RC6XTUX.js → key-backup-status-6L2ARCXW.js} +1 -1
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +25 -19
- package/dist/lib/config.js +1 -1
- package/dist/lib/consolidation.js +9 -9
- package/dist/lib/crypto.js +3 -1
- package/dist/lib/database.js +18 -4
- package/dist/lib/db-backup.js +4 -2
- package/dist/lib/db-daemon-client.js +5 -4
- package/dist/lib/db-write-worker.js +3 -3
- package/dist/lib/db.js +18 -4
- package/dist/lib/device-registry.js +2 -2
- package/dist/lib/embed-worker.js +1 -1
- package/dist/lib/embedder.js +5 -4
- package/dist/lib/employee-templates.js +7 -7
- package/dist/lib/employees.js +4 -4
- package/dist/lib/exe-daemon-client.js +4 -3
- package/dist/lib/exe-daemon.js +473 -206
- package/dist/lib/hybrid-search.js +8 -8
- package/dist/lib/identity-templates.js +1 -1
- package/dist/lib/identity.js +4 -4
- package/dist/lib/license.js +6 -4
- package/dist/lib/messaging.js +26 -24
- package/dist/lib/post-tool-memory.js +2 -2
- package/dist/lib/registry-proxy.js +3 -1
- package/dist/lib/reminders.js +5 -5
- package/dist/lib/schedules.js +8 -8
- package/dist/lib/session-registry.js +6 -6
- package/dist/lib/skill-learning.js +14 -12
- package/dist/lib/stack-invariants.js +21 -0
- package/dist/lib/status-brief.js +3 -3
- package/dist/lib/store.js +7 -7
- package/dist/lib/task-router.js +5 -5
- package/dist/lib/tasks.js +27 -25
- package/dist/lib/tmux-routing.js +25 -23
- package/dist/lib/token-spend.js +5 -5
- package/dist/{license-gate-6R3F3NQR.js → license-gate-HMSMUIAU.js} +5 -4
- package/dist/{license-sync-VBJCXBAP.js → license-sync-FBCMPC4J.js} +4 -3
- package/dist/{mailbox-inbox-CP2VRBXZ.js → mailbox-inbox-4MEUOL3J.js} +2 -2
- package/dist/{mailbox-outbox-HXI7DYNC.js → mailbox-outbox-J6WIF3UY.js} +1 -1
- package/dist/mcp/register-tools.js +114 -102
- package/dist/mcp/server.js +120 -108
- package/dist/mcp/tools/complete-reminder.js +6 -6
- package/dist/mcp/tools/create-reminder.js +6 -6
- package/dist/mcp/tools/create-task.js +30 -27
- package/dist/mcp/tools/deactivate-behavior.js +15 -13
- package/dist/mcp/tools/list-reminders.js +6 -6
- package/dist/mcp/tools/list-tasks.js +30 -27
- package/dist/mcp/tools/send-message.js +29 -26
- package/dist/mcp/tools/update-task.js +28 -26
- package/dist/{mcp-http-config-BWX7AMAZ.js → mcp-http-config-YKJN52HG.js} +5 -5
- package/dist/{mcp-session-identity-GOBGICLI.js → mcp-session-identity-QLUVYWPR.js} +25 -23
- package/dist/{memory-cards-4EXX3BQS.js → memory-cards-K2OSX4AW.js} +7 -7
- package/dist/{memory-graph-extractor-OYVZIJ3R.js → memory-graph-extractor-YLTSKLSY.js} +9 -8
- package/dist/{memory-poisoning-defense-AHOD2EBX.js → memory-poisoning-defense-IPO4ADRL.js} +4 -4
- package/dist/{memory-pressure-watchdog-COJC3OYS.js → memory-pressure-watchdog-ZI3TH2OF.js} +26 -24
- package/dist/{memory-queue-4VN3DTOE.js → memory-queue-QJNWKWKG.js} +2 -2
- package/dist/{memory-queue-client-OI4LDT4W.js → memory-queue-client-HIHCA3W4.js} +6 -5
- package/dist/{memory-reflection-V2SNAUIB.js → memory-reflection-ZKVRU3NT.js} +4 -4
- package/dist/{monitor-grants-W3ISOLMC.js → monitor-grants-BW2WL4IU.js} +3 -3
- package/dist/{notification-ledger-J6Q2GAYU.js → notification-ledger-4REL6M3T.js} +27 -25
- package/dist/{notifications-56TP36IK.js → notifications-UXJUAP3C.js} +25 -23
- package/dist/{orchestration-events-CKQ756NA.js → orchestration-events-GMRGGBMN.js} +5 -5
- package/dist/{orchestration-phase-ZJ4XVNFO.js → orchestration-phase-UDS24CVQ.js} +2 -2
- package/dist/{orchestrator-ERSQ3KNT.js → orchestrator-5TV75HDJ.js} +27 -25
- package/dist/{org-brief-session-FSZ3QJDN.js → org-brief-session-7AZZEO3F.js} +13 -13
- package/dist/{org-consent-policy-BN7MKCZ2.js → org-consent-policy-XT6UZENB.js} +2 -2
- package/dist/{org-join-HTQ57JYH.js → org-join-BMBQDMVF.js} +10 -7
- package/dist/org-key-admin-SCCVVE2H.js +38 -0
- package/dist/{org-key-pin-OTOKAELD.js → org-key-pin-5WUSPGVN.js} +3 -3
- package/dist/{org-membership-SML6GCHP.js → org-membership-ESALTLLN.js} +4 -4
- package/dist/{org-partner-config-XQGOB7EJ.js → org-partner-config-YKHPDPZR.js} +6 -6
- package/dist/{org-partner-runtime-RNNUL5IN.js → org-partner-runtime-WLZAZJIY.js} +14 -14
- package/dist/{org-row-visibility-JZFJ3YRJ.js → org-row-visibility-A5XM4MVO.js} +1 -1
- package/dist/{pipeline-router-IUENNTAY.js → pipeline-router-UEVXDUHR.js} +5 -5
- package/dist/{plan-limits-ZUII366B.js → plan-limits-QEP32X4W.js} +8 -7
- package/dist/{platform-procedures-2VQGBJU7.js → platform-procedures-44NDFTB6.js} +1 -1
- package/dist/{postinstall-failure-A7WTAXD6.js → postinstall-failure-B2JHNFPM.js} +2 -2
- package/dist/{project-boot-3DFY5F35.js → project-boot-LEZSK3W7.js} +9 -1
- package/dist/project-name-ILJTETUE.js +14 -0
- package/dist/{projection-worker-MBWUPB5O.js → projection-worker-GMRC6SBH.js} +4 -4
- package/dist/{prospective-memory-GHE5ORN4.js → prospective-memory-QLHSAPSG.js} +4 -4
- package/dist/{push-notifications-PTQ5DHCD.js → push-notifications-GKRPXOGI.js} +26 -24
- package/dist/reproject-worktree-memories-IXYGHTGA.js +224 -0
- package/dist/{reranker-NUIGAPA3.js → reranker-GB4VEMUV.js} +2 -2
- package/dist/{retrieval-health-XHCERQPG.js → retrieval-health-QIBPBGN6.js} +5 -1
- package/dist/{review-polling-CYBCBHZA.js → review-polling-MU47NQ2N.js} +26 -24
- package/dist/runtime/index.js +37 -35
- package/dist/seat-benefit-VDQJYJOB.js +17 -0
- package/dist/{session-events-X33W4JNA.js → session-events-YMQ3VGBJ.js} +26 -24
- package/dist/{session-kill-telemetry-I2F5PUIW.js → session-kill-telemetry-VGPKE57M.js} +26 -24
- package/dist/{session-mcp-config-YKNXG5DW.js → session-mcp-config-F7KATWOF.js} +10 -1
- package/dist/{session-scope-WXP4F7OF.js → session-scope-P46KAHXQ.js} +26 -24
- package/dist/{setup-wizard-2CTVITIX.js → setup-wizard-BRNHSJ4U.js} +4 -3
- package/dist/{shard-manager-YEOHEOHL.js → shard-manager-UROHZE46.js} +2 -2
- package/dist/{skill-refinement-VDR5OT4V.js → skill-refinement-NLYDSFEH.js} +5 -5
- package/dist/{stack-promote-XVC7FRJW.js → stack-promote-NHFTNIM2.js} +7 -5
- package/dist/{stack-release-6PWAACRM.js → stack-release-AQVKZUS7.js} +7 -5
- package/dist/{stack-update-24VRBQ3U.js → stack-update-LLX5KT7G.js} +38 -6
- package/dist/{steward-gate-2ZNYDVFO.js → steward-gate-JKHYFAHA.js} +5 -5
- package/dist/subagent-brief-injection-VDVOHDOU.js +97 -0
- package/dist/subagent-spawn-ledger-USYZXU3M.js +22 -0
- package/dist/{support-inbox-ZHKLDETT.js → support-inbox-S6YO5YZU.js} +5 -4
- package/dist/{support-outbox-DSWU3IXH.js → support-outbox-HFJWG52M.js} +1 -1
- package/dist/{task-enforcement-GQDUTIFY.js → task-enforcement-LXW45H5Z.js} +26 -24
- package/dist/{task-request-inbox-BFXNUU44.js → task-request-inbox-UCSKDC3R.js} +2 -2
- package/dist/{task-scope-ERHPHLUM.js → task-scope-GDLFE26E.js} +25 -23
- package/dist/{tasks-crud-NVNF3NRA.js → tasks-crud-W7VGWRUV.js} +25 -23
- package/dist/{tasks-notify-DXLU5VCT.js → tasks-notify-CT7NWCS4.js} +26 -24
- package/dist/{tasks-review-BST6N34P.js → tasks-review-WCSKOUFW.js} +25 -23
- package/dist/{telemetry-upload-NY3EKOGY.js → telemetry-upload-FK5WKXVB.js} +10 -9
- package/dist/{token-budget-CLB3GUIX.js → token-budget-GBNGSIU3.js} +5 -5
- package/dist/{tool-capability-index-WZWVBI2R.js → tool-capability-index-BT2GGLLI.js} +1 -1
- package/dist/{tool-telemetry-PALAZUXT.js → tool-telemetry-VKMRS6MP.js} +1 -1
- package/dist/tui/App.js +39 -37
- package/dist/{tui-data-CNFSRZP7.js → tui-data-FTPV2XBQ.js} +25 -23
- package/dist/{update-support-ZVB3CNGY.js → update-support-J6UWPUOC.js} +18 -15
- package/dist/{work-state-heartbeat-O7UMB6SE.js → work-state-heartbeat-4LDF6DSM.js} +1 -1
- package/dist/{worker-gate-6DQQWDNB.js → worker-gate-35VZINZG.js} +2 -2
- package/dist/{workflow-engine-5ZULFH7O.js → workflow-engine-4DA6RSHI.js} +2 -2
- package/dist/working-memory-DPFRSKH3.js +18 -0
- package/dist/{worktree-ZWA35PKW.js → worktree-H3YFJ3NU.js} +6 -6
- package/dist/{worktree-sweep-5LCVT46V.js → worktree-sweep-4EDLLQ2E.js} +9 -7
- package/package.json +11 -5
- package/release-notes.json +86 -34
- package/src/commands/exe/call.md +6 -4
- package/src/commands/exe-reference.md +11 -7
- package/src/commands/exe.md +16 -20
- package/dist/chunk-HISFWAAK.js +0 -90
- package/dist/daemon-auth-OCHW2U6B.js +0 -20
- package/dist/project-name-EWG5KAZP.js +0 -10
- package/dist/session-summary-5EYI4XW4.js +0 -128
- /package/dist/{chunk-YAZ5ECEG.js → chunk-3NBWARKC.js} +0 -0
- /package/dist/{chunk-6C4UAKMS.js → chunk-6CAX7YH4.js} +0 -0
- /package/dist/{chunk-FIPUVCKC.js → chunk-7DMCAGSC.js} +0 -0
- /package/dist/{chunk-X7LY3IOB.js → chunk-JRPYLUXH.js} +0 -0
- /package/dist/{chunk-L4LPJMPV.js → chunk-QYECRPGD.js} +0 -0
- /package/dist/{chunk-UELGUVNL.js → chunk-UY6HRDB2.js} +0 -0
- /package/dist/{chunk-YWN3XMPU.js → chunk-YSDIJ3VI.js} +0 -0
- /package/dist/{core-memory-BZFPVS43.js → core-memory-CMPPHJN5.js} +0 -0
- /package/dist/{entity-boost-VXXED26D.js → entity-boost-CDFAXVYL.js} +0 -0
- /package/dist/{memory-isolation-3PIOWLYP.js → memory-isolation-ZB5S5HCO.js} +0 -0
- /package/dist/{message-queue-client-5XW7ZOK2.js → message-queue-client-PL2POQOV.js} +0 -0
- /package/dist/{oauth-server-KW5M437C.js → oauth-server-NP7KGF7N.js} +0 -0
- /package/dist/{webhook-pipe-QJRFZVKA.js → webhook-pipe-UQSEHFPO.js} +0 -0
- /package/dist/{wiki-acl-RXFV5OEU.js → wiki-acl-5DKOWOIH.js} +0 -0
- /package/dist/{wiki-client-57QWZIHQ.js → wiki-client-AXNM5FWY.js} +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "AI employee operating system
|
|
3
|
+
"version": "0.9.365",
|
|
4
|
+
"description": "AI employee operating system \u2014 persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"exe-timers": "./dist/bin/exe-timers.js",
|
|
47
47
|
"exe-config-dump": "./dist/bin/exe-config-dump.js",
|
|
48
48
|
"exe-stack-update": "./dist/bin/stack-update.js",
|
|
49
|
+
"exe-verify-running-images": "./dist/bin/exe-verify-running-images.js",
|
|
49
50
|
"exe-preflight": "./dist/bin/exe-preflight.js",
|
|
50
51
|
"exe-cloud": "./dist/bin/exe-cloud.js",
|
|
51
52
|
"exe-grant": "./dist/bin/exe-grant.js",
|
|
@@ -114,15 +115,20 @@
|
|
|
114
115
|
"build": "node scripts/dist-ownership-guard.mjs && bash scripts/build-lock.sh && mkdir -p dist/assets && cp src/assets/tmux.conf dist/assets/ && cp src/assets/ghostty.conf dist/assets/ && cp src/assets/statusline-command.sh dist/assets/ && cp src/assets/wezterm.lua dist/assets/ && cp src/assets/com.askexe.exed.plist dist/assets/ && cp src/bin/exe-start.sh dist/bin/exe-start.sh && (node dist/bin/generate-hook-manifest.js 2>/dev/null || true) && node scripts/dist-integrity.mjs --record",
|
|
115
116
|
"deploy": "node dist/bin/pre-build-guard.js && EXE_DIST_OP_RESTARTS_DAEMON=1 EXE_DIST_CLEAN=1 npm run build && node scripts/dist-integrity.mjs --verify && (node dist/bin/prune-orphan-chunks.js || true) && npm install -g . && node dist/bin/install.js --global && echo '[exe-os] Deploy complete. Run /mcp in active sessions to reconnect.'",
|
|
116
117
|
"postinstall": "node postinstall.mjs",
|
|
117
|
-
"prepublishOnly": "npm run typecheck && EXE_DIST_OP_RESTARTS_DAEMON=1 EXE_DIST_CLEAN=1 npm run build && node dist/bin/prune-orphan-chunks.js --force && node scripts/dist-integrity.mjs --prune && npm run guard:esm-require && npm run check:schema-version && node dist/bin/customer-readiness.js && node dist/bin/pre-publish.js",
|
|
118
|
-
"test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts' --exclude 'tests/daemon-perf-stress.test.ts' --exclude 'tests/lib/gateway-client.test.ts' --exclude 'tests/lib/ws-client.test.ts' --exclude 'tests/lib/ws-auth.test.ts' --exclude 'tests/integration/clean-stack-projection.test.ts' --exclude 'tests/orchestration/dispatch-chain.test.ts' --exclude 'tests/orchestration/e2e-flow.test.ts' && echo '::warning::clean-stack-projection and stack-update quarantined (need Docker + live DB; environmental, fail in CI runner
|
|
118
|
+
"prepublishOnly": "npm run typecheck && EXE_DIST_OP_RESTARTS_DAEMON=1 EXE_DIST_CLEAN=1 npm run build && node dist/bin/prune-orphan-chunks.js --force && node scripts/dist-integrity.mjs --prune && npm run guard:esm-require && npm run guard:defect-classes && npm run check:schema-version && node dist/bin/customer-readiness.js && node dist/bin/pre-publish.js",
|
|
119
|
+
"test:publish": "npx vitest run --maxWorkers=4 --exclude 'tests/tui/**' --exclude 'tests/lib/tmux-routing.test.ts' --exclude 'tests/lib/intercom-routing.test.ts' --exclude 'tests/gateway/**' --exclude 'tests/mcp/ingest-document.test.ts' --exclude 'tests/lib/hybrid-search.test.ts' --exclude 'tests/lib/worker-gate.test.ts' --exclude 'tests/daemon-perf-stress.test.ts' --exclude 'tests/lib/gateway-client.test.ts' --exclude 'tests/lib/ws-client.test.ts' --exclude 'tests/lib/ws-auth.test.ts' --exclude 'tests/integration/clean-stack-projection.test.ts' --exclude 'tests/orchestration/dispatch-chain.test.ts' --exclude 'tests/orchestration/e2e-flow.test.ts' && echo '::warning::clean-stack-projection and stack-update quarantined (need Docker + live DB; environmental, fail in CI runner \u2014 container unhealthy / DB not initialized); ws-client/ws-auth quarantined (30-120s timeouts flaky on Node 20 CI runner \u2014 passes locally). Quarantined to match build-and-test (required gate): dispatch-chain/e2e-flow (timing-sensitive, flaky under parallel load \u2014 bug dfb25bf1). device-id-split-brain/reaper-deps-async/find-free-instance/db-backup-recovery de-flaked and promoted to the required gate (chore/deflake-required-ci). See cicd-audit-2026-06-18.md.' && npx vitest run --maxWorkers=1 tests/daemon-perf-stress.test.ts tests/lib/gateway-client.test.ts",
|
|
119
120
|
"benchmark:longmemeval": "npx tsx tests/benchmarks/longmemeval.ts",
|
|
120
121
|
"guard:esm-require": "node scripts/check-no-runtime-require.mjs",
|
|
122
|
+
"guard:defect-classes": "node scripts/check-defect-gates.mjs",
|
|
121
123
|
"check:schema-version": "node scripts/check-schema-version.mjs",
|
|
124
|
+
"check:perms-ui-sync": "node packages/permissions-ui/sync.mjs --check",
|
|
125
|
+
"check:switcher-ui-sync": "node packages/exe-service-switcher/sync.mjs --check",
|
|
122
126
|
"check:stack-manifest-signature": "node scripts/verify-stack-manifest-signature.mjs",
|
|
127
|
+
"check:sso-cookie-contract": "node scripts/sso-cookie-contract-check.mjs",
|
|
123
128
|
"test:stack-sim": "node scripts/stack-sim.mjs",
|
|
124
129
|
"test:daemon-smoke": "vitest run --maxWorkers=1 tests/smoke/daemon-smoke-gate.test.ts",
|
|
125
|
-
"test:smoke": "vitest run --maxWorkers=1 tests/smoke/"
|
|
130
|
+
"test:smoke": "vitest run --maxWorkers=1 tests/smoke/",
|
|
131
|
+
"smoke:runtime": "node --import tsx src/bin/runtime-smoke.ts"
|
|
126
132
|
},
|
|
127
133
|
"dependencies": {
|
|
128
134
|
"@anthropic-ai/sdk": "^0.95.2",
|
package/release-notes.json
CHANGED
|
@@ -1,68 +1,120 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.365",
|
|
3
3
|
"notes": {
|
|
4
|
-
"0.9.
|
|
5
|
-
"version": "0.9.
|
|
6
|
-
"date": "2026-08-
|
|
7
|
-
"features": [
|
|
8
|
-
|
|
4
|
+
"0.9.365": {
|
|
5
|
+
"version": "0.9.365",
|
|
6
|
+
"date": "2026-08-13",
|
|
7
|
+
"features": [
|
|
8
|
+
"mount cross-app service switcher in dashboard + team pages (#683)",
|
|
9
|
+
"phase 5 — org-aware usage/credits/keys/billing + persisted alert threshold (e51ca54c) (#677)",
|
|
10
|
+
"phase 6a — invite email via Resend + redeemability corrections (e51ca54c) (#678)",
|
|
11
|
+
"phase 4 — atomic spend-cap admission + freeze kill-switch (api-router lane) (#672)",
|
|
12
|
+
"phase 2 — self-serve org scoping (GET /v1/orgs, is_staff, panel mode 'self') (#653)",
|
|
13
|
+
"phase 3 — spend-limits model, authoring + ceiling guard, claim projection (e51ca54c) (#663)",
|
|
14
|
+
"detect the unsupervised-daemon state (ad8886b8) (#623)",
|
|
15
|
+
"phase 0 — planning-doc truth, permsSubject() identity join, live self-edit warning (#649)"
|
|
16
|
+
],
|
|
17
|
+
"fixes": [
|
|
18
|
+
"deadlock-proof the release path — drift monitor + required-context gate off the release lane (#675)",
|
|
19
|
+
"write stack state files 0644 so the drift watchdog can read them (exe-monitor#27) (#680)",
|
|
20
|
+
"teach the named-subagent default at every layer, not just the ladder (#614)",
|
|
21
|
+
"honest backup verification — index is healthy, the alarm was not (e0b92e67) (#632)",
|
|
22
|
+
"attribute every kill + verify PID identity before signalling (7a915790, 9fc28233, 42aa8c56) (#636)",
|
|
23
|
+
"digest-pin every shipped image, make strict-digest the DEFAULT (#679)",
|
|
24
|
+
"move extended-tests out of CI workflow so a non-required job stops gating releases (debdb921) (#655)",
|
|
25
|
+
"match agent healthcheck to the PINNED image generation (bug 9ce2a68b coupling) (#676)",
|
|
26
|
+
"live manifest first, packaged only as offline fallback (bug c00e1544) (#674)",
|
|
27
|
+
"resolve the exe-db container dynamically in wire-update-service.sh (bug 7ff62674) (#666)",
|
|
28
|
+
"project attribution must survive git worktrees (e19ce3a3) (#661)",
|
|
29
|
+
"--services is run-scoped, managed-set writes additive-only (bug db262248) (#660)",
|
|
30
|
+
"fail-closed manifest signatures + built-in verification key (bug c00e1544) (#664)",
|
|
31
|
+
"make managed-permissions mode explicit in the shipped stack (e51ca54c) (#668)",
|
|
32
|
+
"role 'none' clears the roster admin bit + a real revoke path in the panel (Phase 1, e51ca54c) (#650)",
|
|
33
|
+
"enforce prepaid credit balance with a 402 gate (5a862f9c) (#642)",
|
|
34
|
+
"add missing /openai segment to Gemini base URL (#648)",
|
|
35
|
+
"stop committing empty secrets in wrangler [vars] (b6f1cbf9) (#647)",
|
|
36
|
+
"make isolation real and non-optional (2b7072a7) (#621)"
|
|
37
|
+
],
|
|
9
38
|
"security": [],
|
|
10
39
|
"other": [
|
|
11
|
-
"v0.9.
|
|
40
|
+
"v0.9.365 (#686)",
|
|
41
|
+
"build + push the exe-dashboard image on main (was hand-shipped) (#654)",
|
|
42
|
+
"right-size the x64 Linux release gate to native-module verification (e8f2cccd) (#651)",
|
|
43
|
+
"release(stack): 0.9.35 — pin exe-auth v0.5.0 (EXE INTELLIGENCE front door) (#645)"
|
|
12
44
|
],
|
|
13
45
|
"migration_notes": []
|
|
14
46
|
},
|
|
15
|
-
"0.9.
|
|
16
|
-
"version": "0.9.
|
|
17
|
-
"date": "2026-
|
|
18
|
-
"features": [
|
|
47
|
+
"0.9.364": {
|
|
48
|
+
"version": "0.9.364",
|
|
49
|
+
"date": "2026-08-12",
|
|
50
|
+
"features": [
|
|
51
|
+
"scheduled CI sweeper: green agent PRs merge automatically and their git worktrees are pruned in the same action, so completed work can no longer sit unmerged and worktrees cannot accumulate",
|
|
52
|
+
"permanent gates for four recurring defect classes, with a monotone inventory that fails when a fix leaves a stale allowlist entry behind"
|
|
53
|
+
],
|
|
19
54
|
"fixes": [
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
55
|
+
"orphan reaper (P0): the daemon reaper matched free text and killed live agent work — two Codex agents and a shell were destroyed mid-run. It now positively identifies a process by argv identity (node-wrapped CLIs resolve to the real CLI) and requires an anchored pattern match",
|
|
56
|
+
"memory (P0): supersede writes are scoped to the calling agent, closing two cross-agent scope leaks; a silently-ignored agent_id is now rejected instead of ignored",
|
|
57
|
+
"cloud sync: the daemon socket leaked after a successful sync, keeping the process alive until SIGTERM; it is now disconnected on cleanup and on SIGTERM",
|
|
58
|
+
"cloud sync: require a reliable daemon DB init instead of syncing against a no-op client",
|
|
59
|
+
"cli: short-lived binaries exit instead of hanging on the daemon socket",
|
|
60
|
+
"agent config: correct Claude 5 model ids, drop a phantom Sonnet 4.8, and accept future claude models instead of failing on a hardcoded list",
|
|
61
|
+
"agent defs: internal Claude model ids are translated to Claude Code frontmatter aliases",
|
|
62
|
+
"registry proxy: routes are classified at a single choke point and unknown paths fail closed",
|
|
63
|
+
"daemon: repeated dirty-worktree archive failures are bounded instead of retrying forever",
|
|
64
|
+
"boot brief: open work that nothing is executing is now surfaced instead of being silently lost; section and brief timeouts are separated and fail loud",
|
|
65
|
+
"sso-edge: the healthcheck probes the exempt /healthz rather than the gated /",
|
|
66
|
+
"worker: a missing API_KEY_STORAGE_SECRET no longer turns a successful auth into a 500 with an unwritten api_key_hash"
|
|
67
|
+
],
|
|
68
|
+
"infrastructure": [
|
|
69
|
+
"local-first Linux CI: linux-build-check, api-router, worker and smoke run on local arm64 Linux VMs (linux-build-check went from 5-6 min to ~1m17s). The x64 Linux matrix still runs on main-push and still gates release, so x64 coverage is preserved",
|
|
70
|
+
"per-SHA concurrency restored on main so a release commit can never lose its CI run to a later push"
|
|
23
71
|
],
|
|
24
72
|
"security": [],
|
|
25
73
|
"other": [],
|
|
26
74
|
"migration_notes": []
|
|
27
75
|
},
|
|
28
|
-
"0.9.
|
|
29
|
-
"version": "0.9.
|
|
30
|
-
"date": "2026-
|
|
76
|
+
"0.9.363": {
|
|
77
|
+
"version": "0.9.363",
|
|
78
|
+
"date": "2026-08-12",
|
|
31
79
|
"features": [
|
|
32
|
-
"
|
|
33
|
-
"
|
|
80
|
+
"runtime smoke gate: a post-deploy check that verifies the deployed system actually works — cloud sync reaches 'complete' with an advancing cursor and DB backup passes integrity — so a merged-but-never-deployed fix can no longer masquerade as done (#600)",
|
|
81
|
+
"account identity + lifecycle: one authoritative identity bound to the verified GoTrue subject (not a client-asserted device id) plus enforceable account suspension at the network boundary; additive migration with a gotrue_sub partial-unique index and legacy backfill (#597)",
|
|
82
|
+
"named-subagent identity + employee memory brief at spawn: dispatch work to a subagent wearing an employee's identity with spawn-ledger-gated memory attribution, and inject the employee's scoped memory brief on first tool use; the PreToolUse matcher now upgrades on existing installs so Task/Agent dispatch is actually captured (#596, #601)",
|
|
83
|
+
"stack: machine-enforce two invariants — exactly one GoTrue per host and a canonical SSO cookie contract (#598)"
|
|
34
84
|
],
|
|
35
85
|
"fixes": [
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"procedures: raise the injected-procedures size cap to 27000 to fit the \"Done = LANDED\" terminal-state discipline addition, and teach merge/landing discipline in the platform procedures (#486)"
|
|
86
|
+
"cloud sync had a 0% success rate: background sync destroyed the daemon socket under backpressure ('Sync failed: Connection closed'), so no sync ever completed. The socket is now preserved and sync completes end-to-end (verified live: 'Cloud sync: complete', 5,430 pushed) (#593)",
|
|
87
|
+
"local-store durability: DB backup can no longer lose data — a failed integrity check quarantines the file instead of deleting it, FTS corruption rethrows instead of silently returning an empty store, and the integrity verdict is a trustworthy tri-state; the online-backup integrity route is pinned to the write path (#590, #594)",
|
|
88
|
+
"daemon: background sweeps moved off the event loop so a long sweep can no longer block MCP handling (#591)",
|
|
89
|
+
"support: recording a fixed version must no longer auto-close a still-open bug (#599)"
|
|
41
90
|
],
|
|
42
91
|
"security": [],
|
|
43
92
|
"other": [],
|
|
44
93
|
"migration_notes": []
|
|
45
94
|
},
|
|
46
|
-
"0.9.
|
|
47
|
-
"version": "0.9.
|
|
48
|
-
"date": "2026-
|
|
95
|
+
"0.9.362": {
|
|
96
|
+
"version": "0.9.362",
|
|
97
|
+
"date": "2026-08-08",
|
|
49
98
|
"features": [
|
|
50
|
-
"
|
|
99
|
+
"p0 timers: daemon timers moved off the event loop — long-running timer callbacks no longer block the daemon event loop, and a worker-race in timer scheduling is closed so overlapping ticks cannot starve MCP handling (Codex gpt-5.5 build, triage 2026-08-06) (#562, re-review findings closed in #571)",
|
|
100
|
+
"p0 durability: last-mile durability for the local store — encrypted backups now actually run, the write path preserves the WAL and does not drop the ledger, and duplicate writes are de-duplicated (Codex gpt-5.5 build) (#560, 5 Codex NO-GO findings closed in #570)",
|
|
101
|
+
"p0 postinstall: postinstall now fails loud on genuine failures — the real exit code is propagated instead of being swallowed, so a broken install surfaces immediately instead of silently degrading (rebuild of #561, Codex findings fixed) (#574)"
|
|
51
102
|
],
|
|
52
103
|
"fixes": [
|
|
53
|
-
"
|
|
104
|
+
"p0 provenance: app-image provenance repo map hardened against spoofing — the imageName→ghRepo mapping is enforced so a cross-named app image cannot masquerade under another repo's provenance (#572)"
|
|
54
105
|
],
|
|
55
106
|
"security": [],
|
|
56
107
|
"other": [],
|
|
57
108
|
"migration_notes": []
|
|
58
109
|
},
|
|
59
|
-
"0.9.
|
|
60
|
-
"version": "0.9.
|
|
61
|
-
"date": "2026-07-
|
|
110
|
+
"0.9.359": {
|
|
111
|
+
"version": "0.9.359",
|
|
112
|
+
"date": "2026-07-30",
|
|
62
113
|
"features": [],
|
|
63
114
|
"fixes": [
|
|
64
|
-
"
|
|
65
|
-
"
|
|
115
|
+
"org-mode: the org-mode-anchor keychain probe no longer risks raising the DESTRUCTIVE macOS 'A keychain cannot be found to store org-mode-anchor' dialog (whose 'Reset To Defaults' button can wipe the login keychain). nativeKeychainAllowed() now skips the native keychain — a best-effort mirror of the authoritative home-anchored file, so nothing is lost — in the daemon (EXE_IS_DAEMON), SSH/remote sessions, and on macOS with no default keychain (probed via a read-only `security default-keychain` that never invokes SecurityAgent). A healthy interactive GUI login is unaffected. Strictly-safer 1-file guard tightening (#514)",
|
|
116
|
+
"privacy: stop unconsented telemetry + support-content egress (bug 4b8b47fd, P0) (#510)",
|
|
117
|
+
"internal (dormant — no user-facing change until the org feature is wired): AI-Partner phase-1 infrastructure — B1 org-mode privacy/crypto boundary via a boot-resolved SyncCipher (existing single-user installs keep byte-identical v=1 cloud-sync encryption; the org path stays dormant until an org-membership anchor exists) + partner signing identity + sealed mailbox envelope (#504), and B2 sealed-mailbox relay/transport with cross-tenant SQL-predicate scoping (#505)"
|
|
66
118
|
],
|
|
67
119
|
"security": [],
|
|
68
120
|
"other": [],
|
package/src/commands/exe/call.md
CHANGED
|
@@ -25,10 +25,12 @@ If `TMUX_MISSING`, show this message EXACTLY and STOP — do not launch any empl
|
|
|
25
25
|
claude
|
|
26
26
|
/exe
|
|
27
27
|
|
|
28
|
-
Why:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
Why: parallel work inside a session runs on
|
|
29
|
+
named subagents — no tmux needed. tmux is what
|
|
30
|
+
hosts background employees that outlive this
|
|
31
|
+
session and the instant cross-session messaging
|
|
32
|
+
between them. Without it, no durable employees
|
|
33
|
+
and no cross-session coordination.
|
|
32
34
|
|
|
33
35
|
Install tmux:
|
|
34
36
|
macOS: brew install tmux
|
|
@@ -27,10 +27,12 @@ do not proceed with boot:
|
|
|
27
27
|
Naming: coordinator session names are user-assigned.
|
|
28
28
|
Employees follow the same suffix: <employee>-<coordinator-session>.
|
|
29
29
|
|
|
30
|
-
Why:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
Why: parallel work inside a session runs on
|
|
31
|
+
named subagents — no tmux needed. tmux is what
|
|
32
|
+
hosts background employees that outlive this
|
|
33
|
+
session and the instant cross-session messaging
|
|
34
|
+
between them. Without it, no durable employees
|
|
35
|
+
and no cross-session coordination.
|
|
34
36
|
|
|
35
37
|
Install tmux:
|
|
36
38
|
macOS: brew install tmux
|
|
@@ -50,9 +52,11 @@ Here's how we work together:
|
|
|
50
52
|
|
|
51
53
|
**This session is your command center.** We plan, prioritize, review, and decide here.
|
|
52
54
|
|
|
53
|
-
**When work needs doing:** I
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
**When work needs doing:** I normally hand it to a named subagent — the
|
|
56
|
+
specialist's identity, working in parallel, reporting back to me. For work that
|
|
57
|
+
has to keep running after this session ends, I create a tracked task and launch
|
|
58
|
+
the specialist in a background tmux session instead. Either way you don't manage
|
|
59
|
+
it — I handle dispatch automatically.
|
|
56
60
|
|
|
57
61
|
**Quick reference:**
|
|
58
62
|
- `/exe` — this session (me, your COO)
|
package/src/commands/exe.md
CHANGED
|
@@ -29,17 +29,8 @@ If `NEEDS_SETUP`: run `/exe-setup` inline, then continue below.
|
|
|
29
29
|
|
|
30
30
|
# Coordinator boot
|
|
31
31
|
|
|
32
|
-
Identity, title, and
|
|
33
|
-
command only boots the session.
|
|
34
|
-
|
|
35
|
-
The founder's right hand. Big picture across all projects — priorities, progress,
|
|
36
|
-
risks, blockers. You don't write code. You coordinate, verify, and make sure the
|
|
37
|
-
right work gets done by the right people.
|
|
38
|
-
|
|
39
|
-
Character: No bullshit — say what's true, not what sounds good. Precise: numbers,
|
|
40
|
-
timelines, dependencies. Calm foresight — raise concerns with solutions, not just
|
|
41
|
-
warnings. Direct but never offensive. Always learning — use `recall_my_memory` and
|
|
42
|
-
`ask_team_memory` constantly.
|
|
32
|
+
Identity, title, character, and voice come from your identity file (exe.md) —
|
|
33
|
+
this command only boots the session and does not restate them.
|
|
43
34
|
|
|
44
35
|
## How you operate
|
|
45
36
|
|
|
@@ -49,12 +40,17 @@ Route by role.
|
|
|
49
40
|
|
|
50
41
|
1. **Status / priorities / quick questions** → handle directly. Query memories,
|
|
51
42
|
synthesize across ALL 10-20+ projects.
|
|
52
|
-
2. **Technical work** →
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
2. **Technical work** → the configured CTO (code, architecture, technical audits,
|
|
44
|
+
debugging, DevOps — NOT marketing copy, slides, social media, design).
|
|
45
|
+
3. **Design / content / marketing** → the configured CMO (content, social media,
|
|
46
|
+
slide design, brand, SEO/AEO, visual assets — NOT code, architecture, debugging).
|
|
47
|
+
|
|
48
|
+
**Dispatch — stop at the lowest rung that fits:** (1) do it yourself; (2) **named
|
|
49
|
+
subagent = the DEFAULT** for delegation and parallelism — `Agent(subagent_type:
|
|
50
|
+
"<employee>")` wears that identity, worktree for code, cap 2-3, persist results
|
|
51
|
+
into the task record + memory before finishing; (3) **`create_task` → tmux =
|
|
52
|
+
LEGACY**, only for work that outlives this session or crosses sessions/projects —
|
|
53
|
+
and then it is the ONLY tmux path, never spawn manually.
|
|
58
54
|
|
|
59
55
|
`create_task` auto-dispatches — do NOT manually run `exe-dispatch.js` afterward
|
|
60
56
|
(causes double intercoms). Parse the dispatch status from its output:
|
|
@@ -69,9 +65,9 @@ and the CMO reads from `exe/output/` where those technical deliverables were lef
|
|
|
69
65
|
|
|
70
66
|
## Task rules
|
|
71
67
|
|
|
72
|
-
- **
|
|
73
|
-
task (race conditions). Scope change / added
|
|
74
|
-
employee auto-chains to it.
|
|
68
|
+
- **When rung 3 is right, `create_task` is the only way to assign it.** Never
|
|
69
|
+
modify an employee's in-progress task (race conditions). Scope change / added
|
|
70
|
+
work? Create a NEW task — the employee auto-chains to it.
|
|
75
71
|
- **`close_task`** only when you are acting as reviewer/coordinator finalizing a
|
|
76
72
|
reviewed task — employees report done via `update_task`. `update_task` is low-level —
|
|
77
73
|
status transitions and edge cases only.
|
package/dist/chunk-HISFWAAK.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
EXE_AI_DIR
|
|
3
|
-
} from "./chunk-BRIZ6OZ3.js";
|
|
4
|
-
import {
|
|
5
|
-
enforcePrivateFileSync,
|
|
6
|
-
ensurePrivateDirSync
|
|
7
|
-
} from "./chunk-HSGBZSCA.js";
|
|
8
|
-
|
|
9
|
-
// src/lib/daemon-auth.ts
|
|
10
|
-
import crypto from "crypto";
|
|
11
|
-
import path from "path";
|
|
12
|
-
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
13
|
-
var DAEMON_TOKEN_PATH = path.join(EXE_AI_DIR, "exed.token");
|
|
14
|
-
function normalizeToken(token) {
|
|
15
|
-
if (!token) return null;
|
|
16
|
-
const trimmed = token.trim();
|
|
17
|
-
return trimmed.length > 0 ? trimmed : null;
|
|
18
|
-
}
|
|
19
|
-
function readDaemonToken() {
|
|
20
|
-
try {
|
|
21
|
-
if (!existsSync(DAEMON_TOKEN_PATH)) return null;
|
|
22
|
-
return normalizeToken(readFileSync(DAEMON_TOKEN_PATH, "utf8"));
|
|
23
|
-
} catch {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
function ensureDaemonToken(seed) {
|
|
28
|
-
const existing = readDaemonToken();
|
|
29
|
-
if (existing) return existing;
|
|
30
|
-
const token = normalizeToken(seed) ?? crypto.randomBytes(32).toString("hex");
|
|
31
|
-
ensurePrivateDirSync(EXE_AI_DIR);
|
|
32
|
-
writeFileSync(DAEMON_TOKEN_PATH, `${token}
|
|
33
|
-
`, "utf8");
|
|
34
|
-
enforcePrivateFileSync(DAEMON_TOKEN_PATH);
|
|
35
|
-
return token;
|
|
36
|
-
}
|
|
37
|
-
function isUnclaimedAgentId(agentId) {
|
|
38
|
-
if (!agentId || agentId === "default") return true;
|
|
39
|
-
if (/^\$\{[^}]*\}$/.test(agentId)) return true;
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
function shouldEnforceSessionIdentity(env = process.env) {
|
|
43
|
-
const v = (env.EXE_ENFORCE_SESSION_IDENTITY ?? "").trim().toLowerCase();
|
|
44
|
-
return v === "1" || v === "true" || v === "yes" || v === "on";
|
|
45
|
-
}
|
|
46
|
-
function assessInitialBindIdentity(input) {
|
|
47
|
-
const { agentId, privileged, corroborated, enforce } = input;
|
|
48
|
-
if (!privileged || corroborated) {
|
|
49
|
-
return { allow: true, flagged: false, reject: false };
|
|
50
|
-
}
|
|
51
|
-
const reason = `header-only privileged identity "${agentId}": the X-Agent-Id header claims a management (chain-of-command) role but no launcher-written session-registry entry corroborates it. ${enforce ? "Rejecting handshake" : "Binding with a warning"} (bug 2138232d).`;
|
|
52
|
-
return { allow: !enforce, flagged: true, reject: enforce, reason };
|
|
53
|
-
}
|
|
54
|
-
function reconcileSessionAgentIdentity(boundAgentId, claimedAgentId, enforce = false) {
|
|
55
|
-
const bound = normalizeToken(boundAgentId ?? null);
|
|
56
|
-
if (!bound) {
|
|
57
|
-
return {
|
|
58
|
-
effectiveAgentId: claimedAgentId,
|
|
59
|
-
impersonationDetected: false,
|
|
60
|
-
reject: false,
|
|
61
|
-
claimedAgentId,
|
|
62
|
-
boundAgentId: claimedAgentId
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
if (isUnclaimedAgentId(claimedAgentId) || claimedAgentId === bound) {
|
|
66
|
-
return {
|
|
67
|
-
effectiveAgentId: bound,
|
|
68
|
-
impersonationDetected: false,
|
|
69
|
-
reject: false,
|
|
70
|
-
claimedAgentId,
|
|
71
|
-
boundAgentId: bound
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
return {
|
|
75
|
-
effectiveAgentId: bound,
|
|
76
|
-
impersonationDetected: true,
|
|
77
|
-
reject: enforce,
|
|
78
|
-
claimedAgentId,
|
|
79
|
-
boundAgentId: bound
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export {
|
|
84
|
-
DAEMON_TOKEN_PATH,
|
|
85
|
-
readDaemonToken,
|
|
86
|
-
ensureDaemonToken,
|
|
87
|
-
shouldEnforceSessionIdentity,
|
|
88
|
-
assessInitialBindIdentity,
|
|
89
|
-
reconcileSessionAgentIdentity
|
|
90
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DAEMON_TOKEN_PATH,
|
|
3
|
-
assessInitialBindIdentity,
|
|
4
|
-
ensureDaemonToken,
|
|
5
|
-
readDaemonToken,
|
|
6
|
-
reconcileSessionAgentIdentity,
|
|
7
|
-
shouldEnforceSessionIdentity
|
|
8
|
-
} from "./chunk-HISFWAAK.js";
|
|
9
|
-
import "./chunk-BRIZ6OZ3.js";
|
|
10
|
-
import "./chunk-HSGBZSCA.js";
|
|
11
|
-
import "./chunk-JKKZGDLP.js";
|
|
12
|
-
import "./chunk-MLKGABMK.js";
|
|
13
|
-
export {
|
|
14
|
-
DAEMON_TOKEN_PATH,
|
|
15
|
-
assessInitialBindIdentity,
|
|
16
|
-
ensureDaemonToken,
|
|
17
|
-
readDaemonToken,
|
|
18
|
-
reconcileSessionAgentIdentity,
|
|
19
|
-
shouldEnforceSessionIdentity
|
|
20
|
-
};
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import "./chunk-MLKGABMK.js";
|
|
2
|
-
|
|
3
|
-
// src/lib/session-summary.ts
|
|
4
|
-
var MAX_CHARS = 800;
|
|
5
|
-
var SECTION_BUDGETS = {
|
|
6
|
-
activity: 200,
|
|
7
|
-
tasks: 200,
|
|
8
|
-
traces: 200,
|
|
9
|
-
errors: 100,
|
|
10
|
-
decisions: 100
|
|
11
|
-
};
|
|
12
|
-
var SECTION_PATTERNS = [
|
|
13
|
-
{ key: "activity", re: /^## Recent Activity$/m },
|
|
14
|
-
{ key: "tasks", re: /^## Open \/ Active Tasks$/m },
|
|
15
|
-
{ key: "skip", re: /^## Files Mentioned$/m },
|
|
16
|
-
{ key: "traces", re: /^## Important Recent Traces$/m },
|
|
17
|
-
{ key: "errors", re: /^## Errors \/ Risks$/m },
|
|
18
|
-
{ key: "decisions", re: /^## Decision Candidates$/m },
|
|
19
|
-
// Extra sections appended by checkpoint-orchestrator (e.g., conversation thread)
|
|
20
|
-
{ key: "skip", re: /^## Session-End Warnings$/m },
|
|
21
|
-
{ key: "skip", re: /^## Conversation Thread/m }
|
|
22
|
-
];
|
|
23
|
-
function extractSections(text) {
|
|
24
|
-
const matches = [];
|
|
25
|
-
for (const { key, re } of SECTION_PATTERNS) {
|
|
26
|
-
const m = re.exec(text);
|
|
27
|
-
if (m && m.index !== void 0) {
|
|
28
|
-
matches.push({ key, start: m.index + m[0].length, content: "" });
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
matches.sort((a, b) => a.start - b.start);
|
|
32
|
-
for (let i = 0; i < matches.length; i++) {
|
|
33
|
-
const m = matches[i];
|
|
34
|
-
const next = matches[i + 1];
|
|
35
|
-
const endPos = next ? next.start : text.length;
|
|
36
|
-
const rawContent = text.slice(m.start, endPos);
|
|
37
|
-
m.content = rawContent.replace(/\n## [^\n]+$/, "").trim();
|
|
38
|
-
}
|
|
39
|
-
const result = /* @__PURE__ */ new Map();
|
|
40
|
-
for (const m of matches) {
|
|
41
|
-
if (m.key !== "skip" && m.content.length > 0) {
|
|
42
|
-
result.set(m.key, m.content);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return result;
|
|
46
|
-
}
|
|
47
|
-
function truncate(text, maxChars) {
|
|
48
|
-
if (text.length <= maxChars) return text;
|
|
49
|
-
const cut = text.lastIndexOf(" ", maxChars);
|
|
50
|
-
const pos = cut > maxChars * 0.5 ? cut : maxChars;
|
|
51
|
-
return text.slice(0, pos) + "...";
|
|
52
|
-
}
|
|
53
|
-
function compressBulletSection(content, budget) {
|
|
54
|
-
const lines = content.split("\n").filter((l) => l.trim().length > 0);
|
|
55
|
-
const compressed = [];
|
|
56
|
-
let totalLen = 0;
|
|
57
|
-
for (const line of lines) {
|
|
58
|
-
const trimmed = line.trim();
|
|
59
|
-
if (/^-\s*Memories scanned:/i.test(trimmed)) continue;
|
|
60
|
-
const compact = trimmed.replace(/\s+/g, " ").slice(0, 150);
|
|
61
|
-
if (totalLen + compact.length + 1 > budget) {
|
|
62
|
-
const remaining = budget - totalLen - 4;
|
|
63
|
-
if (remaining > 30) {
|
|
64
|
-
compressed.push(truncate(compact, remaining));
|
|
65
|
-
}
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
compressed.push(compact);
|
|
69
|
-
totalLen += compact.length + 1;
|
|
70
|
-
}
|
|
71
|
-
return compressed.join("\n");
|
|
72
|
-
}
|
|
73
|
-
function extractHeader(text) {
|
|
74
|
-
const lines = text.split("\n");
|
|
75
|
-
const parts = [];
|
|
76
|
-
for (const line of lines.slice(0, 6)) {
|
|
77
|
-
const trimmed = line.trim();
|
|
78
|
-
if (trimmed.startsWith("Project:")) {
|
|
79
|
-
parts.push(trimmed);
|
|
80
|
-
} else if (trimmed.startsWith("Time:")) {
|
|
81
|
-
const timeMatch = /Time:\s*(\d{4}-\d{2}-\d{2}T\d{2}:\d{2})/.exec(trimmed);
|
|
82
|
-
if (timeMatch) parts.push(`Time: ${timeMatch[1]}`);
|
|
83
|
-
else parts.push(trimmed);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return parts.join(" | ");
|
|
87
|
-
}
|
|
88
|
-
function compressCheckpoint(rawText) {
|
|
89
|
-
if (!rawText || rawText.trim().length === 0) return null;
|
|
90
|
-
const sections = extractSections(rawText);
|
|
91
|
-
const header = extractHeader(rawText);
|
|
92
|
-
const parts = [];
|
|
93
|
-
if (header) parts.push(header);
|
|
94
|
-
const activity = sections.get("activity");
|
|
95
|
-
if (activity) {
|
|
96
|
-
const compressed = compressBulletSection(activity, SECTION_BUDGETS.activity);
|
|
97
|
-
if (compressed) parts.push("**Activity:** " + compressed.replace(/^-\s*/gm, "").replace(/\n/g, "; "));
|
|
98
|
-
}
|
|
99
|
-
const tasks = sections.get("tasks");
|
|
100
|
-
if (tasks) {
|
|
101
|
-
const compressed = compressBulletSection(tasks, SECTION_BUDGETS.tasks);
|
|
102
|
-
if (compressed) parts.push("**Tasks:** " + compressed);
|
|
103
|
-
}
|
|
104
|
-
const traces = sections.get("traces");
|
|
105
|
-
if (traces) {
|
|
106
|
-
const compressed = compressBulletSection(traces, SECTION_BUDGETS.traces);
|
|
107
|
-
if (compressed) parts.push("**Recent:** " + compressed);
|
|
108
|
-
}
|
|
109
|
-
const errors = sections.get("errors");
|
|
110
|
-
if (errors) {
|
|
111
|
-
const compressed = compressBulletSection(errors, SECTION_BUDGETS.errors);
|
|
112
|
-
if (compressed) parts.push("**Blockers:** " + compressed);
|
|
113
|
-
}
|
|
114
|
-
const decisions = sections.get("decisions");
|
|
115
|
-
if (decisions) {
|
|
116
|
-
const compressed = compressBulletSection(decisions, SECTION_BUDGETS.decisions);
|
|
117
|
-
if (compressed) parts.push("**Decisions:** " + compressed);
|
|
118
|
-
}
|
|
119
|
-
if (parts.length === 0) return null;
|
|
120
|
-
let result = parts.join("\n");
|
|
121
|
-
if (result.length > MAX_CHARS) {
|
|
122
|
-
result = result.slice(0, MAX_CHARS - 3) + "...";
|
|
123
|
-
}
|
|
124
|
-
return result;
|
|
125
|
-
}
|
|
126
|
-
export {
|
|
127
|
-
compressCheckpoint
|
|
128
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|