@askexenow/exe-os 0.9.384 → 0.9.389
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.askexe-control-plane.example +6 -0
- package/deploy/compose/.env.customer.example +1 -1
- package/deploy/compose/.env.example +1 -1
- package/deploy/compose/docker-compose.yml +16 -0
- package/deploy/compose/generate-env.ts +1 -1
- package/deploy/compose/sso-edge/sso-redirect.conf +18 -3
- package/deploy/stack-manifests/v0.9.json +1160 -1
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-F5V4E4UL.js → active-agent-RZ24KSJN.js} +8 -6
- package/dist/{active-agent-YTBB4ZQM.js → active-agent-YWSWPIEA.js} +8 -6
- package/dist/{agent-defs-generator-7TFISIJQ.js → agent-defs-generator-GY3UBREJ.js} +8 -6
- package/dist/{agent-heartbeat-CQPGJIFF.js → agent-heartbeat-GUVUUQVM.js} +1 -1
- package/dist/{agent-loop-EZ7LDAGD.js → agent-loop-HPNCH3HK.js} +1 -1
- package/dist/{agentic-ontology-XVTUVV7W.js → agentic-ontology-RHYNXEKE.js} +1 -1
- package/dist/{artifact-backup-TF6YWQT2.js → artifact-backup-HGUFSIJH.js} +19 -6
- package/dist/{backfill-metadata-J6MXIDCW.js → backfill-metadata-XLFASEOD.js} +11 -9
- package/dist/{backup-verify-6DVBQMDP.js → backup-verify-TUQEICWA.js} +1 -1
- package/dist/{behavior-injection-XDA7ZCYN.js → behavior-injection-GXO7ERGN.js} +14 -12
- package/dist/{behavior-promotion-4VLQ7LXK.js → behavior-promotion-V63WIZ4N.js} +13 -11
- package/dist/{behaviors-SCCZP7RZ.js → behaviors-RMLDPLOF.js} +18 -11
- package/dist/bin/agentic-ontology-backfill.js +12 -10
- package/dist/bin/agentic-reflection-backfill.js +13 -11
- package/dist/bin/agentic-semantic-label.js +12 -10
- package/dist/bin/backfill-conversations.js +11 -9
- package/dist/bin/backfill-responses.js +11 -9
- package/dist/bin/backfill-vectors.js +13 -11
- package/dist/bin/bulk-sync-postgres.js +20 -18
- package/dist/bin/cc-doctor.js +15 -13
- package/dist/bin/cleanup-stale-review-tasks.js +44 -32
- package/dist/bin/cli.js +109 -30
- package/dist/bin/customer-readiness.js +55 -25
- package/dist/bin/deferred-daemon-restart.js +111 -108
- package/dist/bin/exe-actions.js +7 -1
- package/dist/bin/exe-agent-config.js +8 -6
- package/dist/bin/exe-agent.js +18 -16
- package/dist/bin/exe-assign.js +13 -11
- package/dist/bin/exe-boot.js +49 -47
- package/dist/bin/exe-call.js +9 -7
- package/dist/bin/exe-cicd.js +19 -8
- package/dist/bin/exe-cloud.js +59 -25
- package/dist/bin/exe-config-dump.js +8 -6
- package/dist/bin/exe-dispatch.js +23 -21
- package/dist/bin/exe-doctor.js +11 -8
- package/dist/bin/exe-export-behaviors.js +16 -14
- package/dist/bin/exe-forget.js +14 -12
- package/dist/bin/exe-gateway.js +12 -10
- package/dist/bin/exe-grant.js +6 -6
- package/dist/bin/exe-healthcheck.js +15 -13
- package/dist/bin/exe-heartbeat.js +28 -26
- package/dist/bin/exe-kill.js +28 -26
- package/dist/bin/exe-launch-agent.js +35 -33
- package/dist/bin/exe-mcp.js +9 -7
- package/dist/bin/exe-memory-reads.js +11 -9
- package/dist/bin/exe-new-employee.js +13 -11
- package/dist/bin/exe-os-mcp-proxy.js +9 -7
- package/dist/bin/exe-pending-messages.js +23 -21
- package/dist/bin/exe-pending-notifications.js +22 -20
- package/dist/bin/exe-pending-reviews.js +23 -21
- package/dist/bin/exe-preflight.js +1 -1
- package/dist/bin/exe-rename.js +9 -7
- package/dist/bin/exe-review.js +59 -55
- package/dist/bin/exe-search-quality.js +16 -3
- package/dist/bin/exe-search.js +13 -11
- package/dist/bin/exe-session-cleanup.js +29 -27
- package/dist/bin/exe-settings.js +22 -20
- package/dist/bin/exe-start-codex.js +23 -21
- package/dist/bin/exe-start-opencode.js +21 -19
- package/dist/bin/exe-status.js +24 -22
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +8 -6
- package/dist/bin/exe-verify-running-images.js +644 -17
- package/dist/bin/git-sweep.js +24 -22
- package/dist/bin/graph-backfill.js +12 -10
- package/dist/bin/graph-export.js +12 -10
- package/dist/bin/hooks-cli.js +4 -4
- package/dist/bin/import-history.js +16 -14
- package/dist/bin/install.js +113 -110
- package/dist/bin/intercom-check.js +5 -5
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +8 -6
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/pre-build-guard.js +55 -16
- package/dist/bin/pre-publish.js +1 -1
- package/dist/bin/prune-orphan-chunks.js +154 -28
- package/dist/bin/reconcile-backlog.js +5 -3
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/repair-document-chunks.js +11 -9
- package/dist/bin/scan-tasks.js +23 -21
- package/dist/bin/setup.js +3 -3
- package/dist/bin/shard-migrate.js +12 -10
- package/dist/bin/stack-update.js +622 -43
- package/dist/bin/verify-stack.js +2 -2
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-Q7LGQ3AO.js → boot-generation-VCQXVYGT.js} +7 -5
- package/dist/{boot-review-sections-G5774FR5.js → boot-review-sections-3QO6Q7MP.js} +21 -19
- package/dist/{branch-hygiene-44WLSOZR.js → branch-hygiene-DDXXI6ZA.js} +59 -21
- package/dist/bug-landed-reconciler-TQVNOUCU.js +353 -0
- package/dist/build-manifest.json +1269 -1194
- package/dist/{capability-cards-I3RHCF4F.js → capability-cards-XPDLT6LU.js} +6 -4
- package/dist/{capacity-monitor-7I7GDONU.js → capacity-monitor-N3AW242L.js} +23 -21
- package/dist/{catchup-brief-3T5PARIR.js → catchup-brief-3PKX7FUP.js} +29 -27
- package/dist/{chunk-C5ISP5FO.js → chunk-2BKJAOO4.js} +11 -1
- package/dist/{chunk-JJTPPAZY.js → chunk-2CUQHG6H.js} +1609 -1356
- package/dist/{chunk-HU3VD4MQ.js → chunk-2Q2GGYBX.js} +1 -1
- package/dist/{chunk-CHIUS5QB.js → chunk-36LMIOVU.js} +9 -9
- package/dist/{chunk-46VSBDUW.js → chunk-3DCBDG4T.js} +2 -2
- package/dist/{chunk-W3KPQE7H.js → chunk-3GL3E4TD.js} +3 -3
- package/dist/{chunk-GL47M7NY.js → chunk-3UD3OF3X.js} +202 -117
- package/dist/{chunk-WNBZJSQT.js → chunk-3VW5ZP2F.js} +1 -1
- package/dist/{chunk-JDDM6C57.js → chunk-3X74IQBU.js} +1 -1
- package/dist/{chunk-NVFNADTX.js → chunk-3ZL4MDQ6.js} +18 -4
- package/dist/{chunk-R5E7WNAC.js → chunk-4ESNDGMB.js} +3 -3
- package/dist/{chunk-CYCIX7AW.js → chunk-4FLLIQRQ.js} +2 -2
- package/dist/{chunk-3RGTLZNO.js → chunk-4GAKF7KR.js} +99 -74
- package/dist/{chunk-RVO5O5SR.js → chunk-4S3A52AV.js} +38 -10
- package/dist/{chunk-7J2ZQ4XN.js → chunk-4VQ3QR6B.js} +29 -28
- package/dist/{chunk-MROSARM5.js → chunk-5BJBTFFQ.js} +7 -1
- package/dist/chunk-5LQZABW5.js +6 -0
- package/dist/chunk-5ONMHTNI.js +236 -0
- package/dist/{chunk-APL7HUE3.js → chunk-5QQJUO3F.js} +200 -31
- package/dist/{chunk-UOPCVFVR.js → chunk-5RK75SWH.js} +205 -278
- package/dist/{chunk-T5FEAQES.js → chunk-5TYJYGS5.js} +1 -1
- package/dist/{chunk-P3QQ52QK.js → chunk-5U6EOTZV.js} +3 -3
- package/dist/{chunk-ALRHGEAJ.js → chunk-637FL62O.js} +1 -1
- package/dist/{chunk-PUBA5B4M.js → chunk-6L4VIYLZ.js} +33 -19
- package/dist/{chunk-VF2KRROX.js → chunk-754P2UXM.js} +1 -1
- package/dist/{chunk-CM7N5MBY.js → chunk-7FZG7WP4.js} +5 -5
- package/dist/{chunk-NYLJQ2M2.js → chunk-7NEBFB3L.js} +4 -4
- package/dist/{chunk-E7C2WNR5.js → chunk-AEIOFFFX.js} +5 -5
- package/dist/{chunk-VOVFUKEB.js → chunk-AIB2EWO2.js} +5 -5
- package/dist/{chunk-EGOEB42T.js → chunk-AP2C4OGS.js} +3 -3
- package/dist/{chunk-MPZ2AVNS.js → chunk-ATNV3BVZ.js} +1 -1
- package/dist/{chunk-F4BBMIPG.js → chunk-B4XJQBQB.js} +2 -2
- package/dist/{chunk-BPVFZ6Q4.js → chunk-B5EGDNG6.js} +2 -2
- package/dist/{chunk-AGC2V7JS.js → chunk-B6CBN6EF.js} +1 -1
- package/dist/{chunk-KTKIFXIP.js → chunk-B7FDRN7G.js} +1 -1
- package/dist/{chunk-C5HUMAA7.js → chunk-B7WVYLAQ.js} +67 -15
- package/dist/chunk-BGVP5RMT.js +185 -0
- package/dist/{chunk-FVLNNNH6.js → chunk-BNI4LIU5.js} +35 -4
- package/dist/{chunk-P4XLIPB7.js → chunk-BU5JRLZT.js} +1 -1
- package/dist/{chunk-PHUHIVD5.js → chunk-C6U7XWOC.js} +34 -5
- package/dist/chunk-C7GHNJPW.js +8 -0
- package/dist/{chunk-4AR5XKCH.js → chunk-CL2MU3OX.js} +1 -1
- package/dist/{chunk-ZPP63JSQ.js → chunk-CL3AB7Z2.js} +1 -1
- package/dist/{chunk-FHIFTSPL.js → chunk-CP7XUSOF.js} +8 -3
- package/dist/{chunk-3OX34OC3.js → chunk-CUDNRHHT.js} +30 -10
- package/dist/chunk-CYUUNIEL.js +21 -0
- package/dist/{chunk-P2UY34XE.js → chunk-D4C57S2H.js} +5 -5
- package/dist/{chunk-XSUALA32.js → chunk-DDYFNBYV.js} +3 -3
- package/dist/{chunk-LSNBTGW4.js → chunk-DPYZW42H.js} +1 -1
- package/dist/{chunk-FMIYFHLE.js → chunk-E2PRXEZK.js} +9 -3
- package/dist/{chunk-L63V25HS.js → chunk-E54SPUYJ.js} +3 -3
- package/dist/{chunk-DMUOTCDN.js → chunk-E5CKRHIZ.js} +1 -1
- package/dist/{chunk-BV2IET6B.js → chunk-EVMOKRBC.js} +15 -2
- package/dist/{chunk-YLFCH3VA.js → chunk-FDWI3T6I.js} +133 -31
- package/dist/{chunk-PWC3C5ME.js → chunk-FNJTCJGY.js} +4 -4
- package/dist/{chunk-TNS63ATU.js → chunk-FWRPDSO3.js} +350 -50
- package/dist/{chunk-JA3Y5TV6.js → chunk-GDLB6BPM.js} +141 -74
- package/dist/{chunk-IGJMS7C5.js → chunk-GOVGG7HU.js} +2 -2
- package/dist/{chunk-MB47DRF5.js → chunk-GP7CTIUK.js} +2 -2
- package/dist/{chunk-L5EPGGDP.js → chunk-GWAN2BDB.js} +4 -4
- package/dist/{chunk-YRQ26MNP.js → chunk-H3YF7X4J.js} +12 -5
- package/dist/{chunk-VLBHZ6TF.js → chunk-H6PLIFUE.js} +2 -2
- package/dist/{chunk-GSLFH4AI.js → chunk-HRNM3N4Y.js} +6 -15
- package/dist/chunk-IG2ISRTF.js +48 -0
- package/dist/{chunk-MWEIBVBS.js → chunk-IJCWBYA5.js} +14 -1
- package/dist/{chunk-NKEFYE4R.js → chunk-IPTUKX3N.js} +1 -1
- package/dist/{chunk-RB3J2WYQ.js → chunk-IVE7H6KA.js} +1 -1
- package/dist/{chunk-HA63SH5W.js → chunk-IWY2OGQG.js} +1 -1
- package/dist/{chunk-BQEZPRUC.js → chunk-IZWMWJZT.js} +64 -46
- package/dist/{chunk-AHESD3KW.js → chunk-J4UVI652.js} +1 -1
- package/dist/{chunk-PLII76NJ.js → chunk-JBUCA4OX.js} +33 -6
- package/dist/{chunk-2PZTMSMG.js → chunk-JOF4HQDF.js} +5 -5
- package/dist/{chunk-OBBO6EJR.js → chunk-JQN3QGSF.js} +1 -1
- package/dist/{chunk-P4PIZOL2.js → chunk-JWYIH5DR.js} +3 -3
- package/dist/{chunk-3XY57PKT.js → chunk-KZLKE7I3.js} +210 -48
- package/dist/{chunk-DYVLEMKS.js → chunk-L3GXMYBK.js} +1 -1
- package/dist/{chunk-72V3S44T.js → chunk-LUA4SLJY.js} +46 -19
- package/dist/{chunk-ZT4LFTUJ.js → chunk-LW3JCBXP.js} +20 -3
- package/dist/{chunk-YLB365YX.js → chunk-M5XHN4OM.js} +3 -3
- package/dist/{chunk-VHHX4UCP.js → chunk-MDTWARSF.js} +22 -93
- package/dist/{chunk-JFJP6ATJ.js → chunk-MWKXQSF6.js} +3 -2
- package/dist/{chunk-VJEJ7JNB.js → chunk-N32DVIKY.js} +1 -1
- package/dist/{chunk-MUCNYSJP.js → chunk-NRLJOV7M.js} +32 -4
- package/dist/{chunk-PL4CFSQ7.js → chunk-NSXJOSH7.js} +1 -1
- package/dist/{chunk-NF5FOSLD.js → chunk-NVTG66CK.js} +1 -1
- package/dist/chunk-O45GBJEH.js +1500 -0
- package/dist/{chunk-4AAMFWJT.js → chunk-OHZSTZXN.js} +4 -2
- package/dist/chunk-OSIS7ZQW.js +344 -0
- package/dist/{chunk-E3ZM32LF.js → chunk-P22VFGFK.js} +14 -5
- package/dist/{chunk-KILR4FBR.js → chunk-PAFLR7WD.js} +3 -3
- package/dist/{chunk-R3CZWFFC.js → chunk-PEYQ6MWO.js} +15 -3
- package/dist/{chunk-RDWIKDMY.js → chunk-PZR54BEI.js} +8 -20
- package/dist/{chunk-2FKU4ZEO.js → chunk-QDBKMEYY.js} +9 -9
- package/dist/{chunk-7UHZBVP3.js → chunk-QDVLVLXP.js} +97 -31
- package/dist/{chunk-PRDDPQLC.js → chunk-QLXEQRHD.js} +5 -5
- package/dist/{chunk-MUAWCFW6.js → chunk-QNPDXV5V.js} +5 -2
- package/dist/{chunk-LR5O2XWZ.js → chunk-QUZYLDNJ.js} +5 -5
- package/dist/chunk-RBQUXHYK.js +48 -0
- package/dist/{chunk-3SUPEE6H.js → chunk-RDMBSHGG.js} +3 -3
- package/dist/{chunk-I5XIW2BP.js → chunk-RGUM474V.js} +7 -7
- package/dist/{chunk-OAFENIHN.js → chunk-RJ67XAJU.js} +76 -28
- package/dist/{chunk-LFUBEHFW.js → chunk-RT57D7C4.js} +39 -1
- package/dist/{chunk-MKM6D7JM.js → chunk-RWG7DLOG.js} +42 -5
- package/dist/{chunk-P3UX5EH4.js → chunk-RWKAHHIX.js} +3 -3
- package/dist/{chunk-XEBKIWI7.js → chunk-RYNT3HB7.js} +12 -12
- package/dist/{chunk-EUGEFBGV.js → chunk-S2V272KJ.js} +3 -3
- package/dist/{chunk-W6BZ4UGA.js → chunk-SGYEM2PD.js} +1 -1
- package/dist/{chunk-VROK4X2L.js → chunk-SJP57MQM.js} +1 -1
- package/dist/{chunk-5MVKTNZP.js → chunk-SL4JWAMQ.js} +54 -4
- package/dist/{chunk-MOANZQXF.js → chunk-SLMKLEU6.js} +1 -1
- package/dist/{chunk-RZN2LEAK.js → chunk-SQA7XCYI.js} +3 -3
- package/dist/{chunk-4YNA3CM6.js → chunk-SSFS4NCH.js} +262 -56
- package/dist/{chunk-6FIC57PH.js → chunk-T4P2G3PO.js} +1 -1
- package/dist/{chunk-5U2IJBFV.js → chunk-TA3B4N24.js} +1 -1
- package/dist/{chunk-ZOTTYCP5.js → chunk-TEWWBVQP.js} +40 -4
- package/dist/{chunk-SDYWZRPN.js → chunk-TLSFGXXE.js} +1 -1
- package/dist/{chunk-L3VUW5M4.js → chunk-TQS2YHLB.js} +1 -1
- package/dist/{chunk-KXYKSLW4.js → chunk-TU4M757W.js} +399 -116
- package/dist/{chunk-MC4IM2CC.js → chunk-TYD4F4XU.js} +6 -6
- package/dist/{chunk-TKS5GMYA.js → chunk-U44Y7RC7.js} +2 -0
- package/dist/{chunk-B7AMNZTC.js → chunk-UKBPEEEQ.js} +2 -2
- package/dist/{chunk-ZBPZDADW.js → chunk-UWVXQEQQ.js} +467 -78
- package/dist/{chunk-P2VVMGMI.js → chunk-V4WH3FV7.js} +35 -16
- package/dist/{worktree-ownership-guard-O6JQF2CL.js → chunk-V6F4I2XY.js} +13 -14
- package/dist/{chunk-JFTUAV4J.js → chunk-VBKUESIW.js} +1 -1
- package/dist/{chunk-AZSTIAVL.js → chunk-VBPYYJPC.js} +1 -1
- package/dist/{chunk-LKTN22L6.js → chunk-VIP4LKLO.js} +57 -24
- package/dist/{chunk-L5CGXEZC.js → chunk-WAAGVFFN.js} +63 -71
- package/dist/{chunk-D3LXVAIQ.js → chunk-WC7AE3PT.js} +244 -103
- package/dist/{chunk-EOTZSAQL.js → chunk-WUCUDHKR.js} +1 -1
- package/dist/{chunk-VF3BZOZK.js → chunk-X7HZHKY4.js} +50 -3
- package/dist/{chunk-LFBLQE2P.js → chunk-XCAKYVKI.js} +1 -1
- package/dist/{chunk-UXN4BICC.js → chunk-XMX5J52Z.js} +1 -1
- package/dist/{chunk-6YDY6ZTD.js → chunk-XTCXGWTV.js} +9 -4
- package/dist/{chunk-XUZK23V7.js → chunk-XW2FW6LS.js} +2 -2
- package/dist/{chunk-CH7BUBP3.js → chunk-XWVHUDEK.js} +5 -4
- package/dist/{chunk-S26CV7BE.js → chunk-YA5LK6KB.js} +45 -8
- package/dist/{chunk-ELCRJGCH.js → chunk-YMRQIENV.js} +2 -2
- package/dist/{chunk-QNZ4562V.js → chunk-Z3LXWCB7.js} +1 -1
- package/dist/{chunk-EYMFVITZ.js → chunk-Z7I6NQMA.js} +2 -2
- package/dist/{chunk-6BJCDWSM.js → chunk-ZB4FS2EG.js} +1 -1
- package/dist/{chunk-ZAEUEDTN.js → chunk-ZD6FZ3WL.js} +1 -1
- package/dist/{chunk-FEU6QEEL.js → chunk-ZM6EZAVY.js} +1 -0
- package/dist/{chunk-2KY7WZZF.js → chunk-ZPA4R2UI.js} +1 -1
- package/dist/chunk-ZPPPHVSU.js +285 -0
- package/dist/{chunk-ELEGH4DX.js → chunk-ZUGQPYUY.js} +51 -4
- package/dist/{chunk-UX2EO653.js → chunk-ZZWFZ46U.js} +66 -8
- package/dist/{cleanup-graph-garbage-VQAJ2RBT.js → cleanup-graph-garbage-HFUD5ZQT.js} +12 -10
- package/dist/{cloud-sync-command-J7NEFUY7.js → cloud-sync-command-3JHJJKPN.js} +25 -3
- package/dist/{cloud-sync-db-init-KWEMNMGA.js → cloud-sync-db-init-2LHIQOSF.js} +1 -1
- package/dist/{cloud-sync-shutdown-P63AUTUI.js → cloud-sync-shutdown-ZXAXA3Z7.js} +6 -4
- package/dist/{cloud-sync-state-QF3TMMJ4.js → cloud-sync-state-VSQFGPP6.js} +1 -1
- package/dist/{co-activation-7IHRPBZN.js → co-activation-NX4EH4AP.js} +6 -4
- package/dist/{co-occurrence-R5AG4OAU.js → co-occurrence-5LBYCW3U.js} +10 -8
- package/dist/{consent-passphrase-5ZBDJ5G7.js → consent-passphrase-65W3DJIJ.js} +2 -2
- package/dist/{content-extractor-ZLXC6GNR.js → content-extractor-OGXETBOX.js} +2 -2
- package/dist/{conversation-entity-extractor-7FRKLLBD.js → conversation-entity-extractor-FQCOAH4F.js} +5 -4
- package/dist/conversations-retention-XTBFJBUM.js +166 -0
- package/dist/{crdt-sync-IFRZOEIS.js → crdt-sync-7TDUBTLH.js} +4 -4
- package/dist/{crm-webhook-L2S63ASV.js → crm-webhook-776JTY55.js} +2 -2
- package/dist/{cto-delegation-gate-3WU7OHX7.js → cto-delegation-gate-ZNUWVYCN.js} +25 -23
- package/dist/{daemon-orchestration-3VQYKLOR.js → daemon-orchestration-76BOFDEP.js} +30 -24
- package/dist/{doc-graph-extractor-YIR5E7OF.js → doc-graph-extractor-F724KZJX.js} +10 -8
- package/dist/{documents-QEHPTYIY.js → documents-Q24V4GRD.js} +13 -11
- package/dist/{dreaming-LNFE7DTN.js → dreaming-IY6NQTSP.js} +27 -25
- package/dist/{employee-boot-brief-ZTXDYNWM.js → employee-boot-brief-CCTXO5DQ.js} +35 -29
- package/dist/{entity-boost-R5N6JWXD.js → entity-boost-XGOB7HDM.js} +1 -1
- package/dist/{exe-drift-WYSJVZFO.js → exe-drift-NEPXLNGP.js} +7 -5
- package/dist/{exe-export-GOLNAEAV.js → exe-export-ZHJQFKR2.js} +14 -12
- package/dist/{exe-import-U4BSI6OH.js → exe-import-7SVNI4FW.js} +14 -12
- package/dist/{exe-key-V42G3NGO.js → exe-key-QJKU56WZ.js} +119 -108
- package/dist/{exe-org-U4GLQ6OP.js → exe-org-SJXHLV6K.js} +76 -51
- package/dist/{exe-snapshot-U7ONBYNY.js → exe-snapshot-EFWPXTXE.js} +45 -36
- package/dist/{fast-db-init-W3NGKAEU.js → fast-db-init-BQZOQNT3.js} +1 -1
- package/dist/{founder-context-ZSIBRVDM.js → founder-context-KG2ZAOXY.js} +2 -2
- package/dist/{founder-monitor-envelope-L3IWZLFY.js → founder-monitor-envelope-NYB5LLU4.js} +4 -4
- package/dist/gateway/index.js +20 -18
- package/dist/{gateway-client-DJFCVIPT.js → gateway-client-ODMUXUL3.js} +1 -1
- package/dist/{git-staleness-OF24QXFZ.js → git-staleness-OPGEAJA7.js} +6 -4
- package/dist/{global-procedures-WSIOWO43.js → global-procedures-3KXY4LL6.js} +8 -6
- package/dist/{graph-auto-extract-IEVVN3L3.js → graph-auto-extract-I7H2F5NJ.js} +10 -8
- package/dist/{graph-query-JDZWAVCU.js → graph-query-E7JBSNY5.js} +1 -1
- package/dist/{graph-rag-BKAD2XQA.js → graph-rag-H24CMFP2.js} +5 -4
- package/dist/{hook-integrity-TPWDGX2M.js → hook-integrity-PGQ3OX4S.js} +1 -1
- package/dist/{hook-prefetch-FD6VGJJA.js → hook-prefetch-7AZJER6Z.js} +23 -21
- package/dist/hook-registration-liveness-NGQRFKAA.js +11 -0
- package/dist/hooks/bug-report-worker.js +26 -24
- package/dist/hooks/codex-stop-task-finalizer.js +28 -26
- package/dist/hooks/commit-complete.js +26 -24
- package/dist/hooks/error-recall.js +16 -14
- package/dist/hooks/exe-heartbeat-hook.js +9 -7
- package/dist/hooks/ingest-worker.js +12 -10
- package/dist/hooks/ingest.js +22 -17
- package/dist/hooks/instructions-loaded.js +11 -9
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +10 -8
- package/dist/hooks/post-compact.js +9 -7
- package/dist/hooks/post-tool-combined.js +14 -14
- package/dist/hooks/pre-compact.js +26 -24
- package/dist/hooks/pre-tool-use.js +2 -2
- package/dist/hooks/prompt-submit.js +47 -41
- package/dist/hooks/session-end.js +38 -42
- package/dist/hooks/session-start.js +26 -18
- package/dist/hooks/stop.js +29 -27
- package/dist/hooks/subagent-stop.js +29 -27
- package/dist/hooks/summary-worker.js +32 -30
- package/dist/index.js +37 -35
- package/dist/{installer-OTI5SA43.js → installer-2ZS3LHCU.js} +12 -9
- package/dist/{installer-NMOBSEZ2.js → installer-NH3A3HWC.js} +14 -9
- package/dist/{installer-SRJGE4GU.js → installer-UJ73PGRD.js} +21 -9
- package/dist/{intercom-queue-4FFXCBHO.js → intercom-queue-OE25GJF2.js} +21 -19
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +24 -18
- package/dist/lib/consolidation.js +13 -11
- package/dist/lib/crypto.js +3 -3
- package/dist/lib/database.js +6 -4
- package/dist/lib/db-backup.js +1 -1
- package/dist/lib/db-write-worker-client.js +3 -1
- package/dist/lib/db-write-worker.js +65 -89
- package/dist/lib/db.js +6 -4
- package/dist/lib/delivery-truth.js +5 -1
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +2 -2
- package/dist/lib/employee-templates.js +9 -7
- package/dist/lib/employees.js +6 -4
- package/dist/lib/exe-daemon.js +425 -314
- package/dist/lib/file-grep.js +15 -21
- package/dist/lib/hybrid-search.js +19 -13
- package/dist/lib/identity-templates.js +1 -1
- package/dist/lib/identity.js +6 -4
- package/dist/lib/keychain.js +1 -1
- package/dist/lib/license.js +22 -6
- package/dist/lib/messaging.js +22 -20
- package/dist/lib/post-tool-memory.js +10 -8
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +7 -5
- package/dist/lib/runtime-table.js +1 -1
- package/dist/lib/schedules.js +12 -10
- package/dist/lib/session-registry.js +8 -6
- package/dist/lib/skill-learning.js +13 -11
- package/dist/lib/status-brief.js +2 -2
- package/dist/lib/store.js +17 -9
- package/dist/lib/task-router.js +7 -5
- package/dist/lib/tasks.js +23 -21
- package/dist/lib/tmux-routing.js +21 -19
- package/dist/lib/tmux-status.js +4 -1
- package/dist/lib/token-spend.js +7 -5
- package/dist/lib/ws-client.js +1 -1
- package/dist/{license-gate-R4JWTWM4.js → license-gate-XQ2KN5I5.js} +3 -3
- package/dist/{license-recheck-3MBJ4IJX.js → license-recheck-IIBKR2V5.js} +1 -1
- package/dist/{license-sync-BVSG3WMW.js → license-sync-76JVI2M5.js} +151 -8
- package/dist/{local-secret-inventory-JWNBHZZ4.js → local-secret-inventory-MJT7NJLY.js} +2 -2
- package/dist/{mailbox-inbox-MTAT4MXX.js → mailbox-inbox-BPZP4GIZ.js} +1 -1
- package/dist/maintenance-worker-54VZTFIK.js +371 -0
- package/dist/mcp/register-tools.js +110 -107
- package/dist/mcp/server.js +113 -110
- package/dist/mcp/tools/complete-reminder.js +8 -6
- package/dist/mcp/tools/create-reminder.js +8 -6
- package/dist/mcp/tools/create-task.js +26 -24
- package/dist/mcp/tools/deactivate-behavior.js +15 -13
- package/dist/mcp/tools/list-reminders.js +8 -6
- package/dist/mcp/tools/list-tasks.js +26 -24
- package/dist/mcp/tools/send-message.js +25 -23
- package/dist/mcp/tools/update-task.js +24 -22
- package/dist/{mcp-child-registry-TIZERM7O.js → mcp-child-registry-5VUG5ATZ.js} +1 -1
- package/dist/{mcp-http-config-VUMSFWFH.js → mcp-http-config-SKXESWHA.js} +9 -7
- package/dist/{mcp-session-identity-DZHWEJRV.js → mcp-session-identity-HYMLJXXA.js} +21 -19
- package/dist/{memory-cards-JVXTMSAT.js → memory-cards-PAZDUQ3B.js} +16 -32
- package/dist/{memory-graph-extractor-PPBJMYFJ.js → memory-graph-extractor-BC6QKBY6.js} +11 -9
- package/dist/{memory-poisoning-defense-K5Q74XQ4.js → memory-poisoning-defense-BRGIHF6J.js} +9 -7
- package/dist/{memory-pressure-watchdog-YMJH5CSA.js → memory-pressure-watchdog-HR6TPOMT.js} +22 -20
- package/dist/{memory-reflection-7BZWIHRE.js → memory-reflection-LO7VFBL3.js} +38 -59
- package/dist/memory-write-repository-J25USX63.js +16 -0
- package/dist/{monitor-grants-Q7X3MYQP.js → monitor-grants-YQTO6NWR.js} +3 -3
- package/dist/{monitor-identity-ZQB4IXEE.js → monitor-identity-POVTG76Y.js} +2 -2
- package/dist/{notification-ledger-XRAXL5OI.js → notification-ledger-KLD6GZTG.js} +22 -20
- package/dist/{notifications-JE3PX55X.js → notifications-3R6HNHDR.js} +21 -19
- package/dist/{orchestration-events-JCQ5F5IJ.js → orchestration-events-CHY3GOJD.js} +7 -5
- package/dist/{orchestrator-X65INDTR.js → orchestrator-GAL3HOAD.js} +23 -21
- package/dist/{org-brief-session-3PQ22UIX.js → org-brief-session-LQ2DBYVF.js} +17 -15
- package/dist/{org-consent-policy-VGELJ7K7.js → org-consent-policy-KFUP7QPG.js} +5 -5
- package/dist/{org-join-6TO5ZYUZ.js → org-join-MXZCIQWX.js} +8 -8
- package/dist/{org-key-admin-XHYVRRAZ.js → org-key-admin-4UK6QUT7.js} +9 -9
- package/dist/{org-key-pin-TTTYGTQL.js → org-key-pin-ZOX4OM3O.js} +3 -3
- package/dist/{org-membership-Y7T2BS57.js → org-membership-D5TPN45F.js} +4 -4
- package/dist/{org-partner-config-OP4NEUNF.js → org-partner-config-3FXSYPQA.js} +7 -7
- package/dist/{org-partner-runtime-YNVUNT2R.js → org-partner-runtime-TH3LMPII.js} +20 -16
- package/dist/{org-row-visibility-JBBXNYXD.js → org-row-visibility-Y5R33C5U.js} +1 -1
- package/dist/{pipeline-router-EIBB7QNG.js → pipeline-router-E2JZLDK6.js} +7 -5
- package/dist/{plan-limits-MEWXYLEN.js → plan-limits-NYI6R4IK.js} +9 -7
- package/dist/{platform-procedures-Z7ZGBJWN.js → platform-procedures-RTD5E3BD.js} +5 -3
- package/dist/{pre-tool-use-impl-C6KJY22W.js → pre-tool-use-impl-LT4FRXBP.js} +127 -83
- package/dist/{project-boot-VEYFCCSL.js → project-boot-LIMXQKAF.js} +25 -17
- package/dist/{project-name-UYORSNGE.js → project-name-V62GWALX.js} +7 -5
- package/dist/{projection-worker-WYFDWS57.js → projection-worker-KLE3IZQ2.js} +5 -2
- package/dist/{prospective-memory-E6XBQFJA.js → prospective-memory-HRN7JFT2.js} +6 -4
- package/dist/{push-notifications-M7YU63FY.js → push-notifications-XC6EQEXF.js} +22 -20
- package/dist/{reproject-worktree-memories-B5XMGJSD.js → reproject-worktree-memories-4CAVZSFE.js} +21 -19
- package/dist/{reranker-SRA4BR7N.js → reranker-2RU6IIX2.js} +1 -1
- package/dist/{retrieval-health-P2JPZUPV.js → retrieval-health-4Q5TOV2S.js} +1 -1
- package/dist/{review-polling-KQPN7IQE.js → review-polling-WOWIMBCL.js} +22 -20
- package/dist/runtime/index.js +30 -28
- package/dist/{session-events-6LDDKKY3.js → session-events-OPMS2C5F.js} +22 -20
- package/dist/{session-kill-telemetry-5DSRGWCL.js → session-kill-telemetry-3GWATSIX.js} +22 -20
- package/dist/{session-scope-XG5R3P3D.js → session-scope-TIRGR4MH.js} +21 -19
- package/dist/{setup-wizard-7QFLZIKT.js → setup-wizard-B2JBVGNH.js} +3 -3
- package/dist/{shard-manager-HHHHV2KZ.js → shard-manager-C7LYX6E4.js} +5 -1
- package/dist/{skill-refinement-I5RMAHSC.js → skill-refinement-FWQFYNBI.js} +7 -5
- package/dist/skill-retrieval-PPLFC5RY.js +166 -0
- package/dist/skill-usage-NDB67PU2.js +25 -0
- package/dist/{stack-generate-manifest-AKMZ3AUX.js → stack-generate-manifest-AXI55MEQ.js} +6 -6
- package/dist/{stack-promote-34CE2HHF.js → stack-promote-6N23OGZY.js} +6 -6
- package/dist/stack-release-2CXFYVWM.js +2770 -0
- package/dist/{stack-update-ZQQ5YYPJ.js → stack-update-U53FBVCQ.js} +13 -5
- package/dist/{steward-gate-AQJ6KT2C.js → steward-gate-TUA3QCN7.js} +7 -5
- package/dist/{subagent-brief-injection-3GU7YAWY.js → subagent-brief-injection-N52RWYFZ.js} +34 -32
- package/dist/{subagent-spawn-ledger-52I66CLW.js → subagent-spawn-ledger-OI23OT4I.js} +1 -1
- package/dist/support-bug-actions-XWCJI6S5.js +30 -0
- package/dist/support-inbox-MMVTCXRX.js +77 -0
- package/dist/{support-outbox-KNI3FR3G.js → support-outbox-2TG2UV6J.js} +2 -2
- package/dist/{task-enforcement-CAA6D2MH.js → task-enforcement-JDMBAAOY.js} +22 -20
- package/dist/{task-request-inbox-QBZVU66E.js → task-request-inbox-PKJCYKJV.js} +9 -5
- package/dist/{task-scope-NHXB4ZRN.js → task-scope-32HQEV6W.js} +27 -19
- package/dist/{tasks-crud-JHSWL5NM.js → tasks-crud-CYKUKS3F.js} +21 -19
- package/dist/{tasks-notify-7PBE4U7T.js → tasks-notify-YND5MKWJ.js} +22 -20
- package/dist/{tasks-review-PPPVEE62.js → tasks-review-CG2A5GM3.js} +23 -19
- package/dist/{telemetry-upload-YU2VRNHX.js → telemetry-upload-WLUMEFAB.js} +11 -9
- package/dist/{token-budget-QCMWKG3K.js → token-budget-3YHAY5LL.js} +7 -5
- package/dist/{tool-capability-index-7AWQAJRP.js → tool-capability-index-2ADOWH43.js} +2 -2
- package/dist/{tool-gates-5Q3RSQEG.js → tool-gates-7ENOOYMR.js} +5 -3
- package/dist/{tool-gates-QD26D2NE.js → tool-gates-EKJTLVGN.js} +1 -1
- package/dist/{tool-telemetry-LTOIC64I.js → tool-telemetry-VUP7S6HC.js} +1 -1
- package/dist/tui/App.js +59 -35
- package/dist/{tui-data-NDBXD6U7.js → tui-data-BOQTOW2G.js} +25 -23
- package/dist/{update-support-BMJM4NG7.js → update-support-WT3S3AQ4.js} +21 -21
- package/dist/{whatsapp-QQLDAHUX.js → whatsapp-OZGIF2EM.js} +2 -2
- package/dist/{wiki-acl-W6WDCVCP.js → wiki-acl-LTEQJVDA.js} +1 -1
- package/dist/{work-claims-6DM32MGO.js → work-claims-CMV2GWIW.js} +8 -6
- package/dist/{work-state-heartbeat-HG7D4AWJ.js → work-state-heartbeat-S45TXK4M.js} +1 -1
- package/dist/{worker-gate-FTMW7GBB.js → worker-gate-7Z6NMM3G.js} +1 -1
- package/dist/{workflow-engine-ZWC6CCXE.js → workflow-engine-ZSQDXZQ7.js} +2 -2
- package/dist/{worktree-EMQCPGFE.js → worktree-NMWDVT6N.js} +8 -6
- package/dist/worktree-ownership-guard-ZVIWJAOP.js +35 -0
- package/dist/{worktree-sweep-XVUJZBXV.js → worktree-sweep-Q62ZIT3U.js} +9 -7
- package/package.json +14 -8
- package/release-notes.json +7 -41
- package/src/commands/exe/afk.md +6 -0
- package/src/commands/exe/call.md +6 -0
- package/src/commands/exe/employee-heartbeat.md +6 -0
- package/src/commands/exe/intercom.md +6 -0
- package/src/commands/exe/kill.md +6 -0
- package/src/commands/exe/launch.md +6 -0
- package/src/commands/exe/logs.md +1 -1
- package/src/commands/exe/sessions.md +6 -0
- package/src/commands/exe/setup.md +7 -3
- package/src/commands/exe/status.md +6 -0
- package/src/commands/exe-reference.md +25 -36
- package/src/commands/exe.md +19 -28
- package/stack.release.json +11 -11
- package/dist/chunk-3B6FLNLV.js +0 -30
- package/dist/chunk-FXU7JOXK.js +0 -6
- package/dist/chunk-QFAFKEB5.js +0 -820
- package/dist/conversations-retention-C4BLKFEL.js +0 -54
- package/dist/stack-release-5PGWV5D4.js +0 -1607
- package/dist/support-inbox-NY5TB3FN.js +0 -51
- /package/dist/{chunk-U2D6PJ5T.js → chunk-65G7ZTGE.js} +0 -0
- /package/dist/{chunk-DN3ZR3UE.js → chunk-CP7Z35MJ.js} +0 -0
- /package/dist/{chunk-XDVOGDBC.js → chunk-KBBWALJV.js} +0 -0
- /package/dist/{chunk-JRIH6I7D.js → chunk-LZXYPTY4.js} +0 -0
- /package/dist/{chunk-GIRD7O5X.js → chunk-MCWEW2SG.js} +0 -0
- /package/dist/{chunk-TKAU7IJ2.js → chunk-MQHUJLCA.js} +0 -0
- /package/dist/{chunk-M4XY4JRK.js → chunk-O53LTOXK.js} +0 -0
- /package/dist/{chunk-DZN7SDY2.js → chunk-OSVTH3SG.js} +0 -0
- /package/dist/{chunk-AJK2PVQW.js → chunk-QXXEXGX3.js} +0 -0
- /package/dist/{chunk-AWWDKF22.js → chunk-SFWNTO2F.js} +0 -0
- /package/dist/{chunk-2Q2CD6CD.js → chunk-WC5HF2FN.js} +0 -0
- /package/dist/{core-memory-O6D5UC3T.js → core-memory-MMMW3TF3.js} +0 -0
- /package/dist/{memory-isolation-EBFFC6HF.js → memory-isolation-67ACKQ2M.js} +0 -0
- /package/dist/{oauth-server-ZKBUHDFI.js → oauth-server-OILIKR7D.js} +0 -0
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
grantsRegistryStatus,
|
|
3
3
|
listGrants,
|
|
4
4
|
revokeGrant
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2Q2GGYBX.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveExeDataDir
|
|
8
8
|
} from "./chunk-NPXIS2RY.js";
|
|
@@ -23,27 +23,58 @@ var ORG_MODE_ANCHOR_FILENAME = ".exe-os-install-state";
|
|
|
23
23
|
var _anchorSeen = false;
|
|
24
24
|
var _keychainChecked = false;
|
|
25
25
|
var _keychainResult = false;
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
var _keychainRetryAt = 0;
|
|
27
|
+
var KEYCHAIN_RETRY_DELAY_MS = 3e4;
|
|
28
|
+
function isExpiry(err) {
|
|
29
|
+
const e = err;
|
|
30
|
+
if (!e) return false;
|
|
31
|
+
return e.code === "ETIMEDOUT" || e.signal === "SIGTERM" || e.signal === "SIGKILL";
|
|
32
|
+
}
|
|
33
|
+
var _notedExpiry = false;
|
|
34
|
+
function noteExpiryOnce(what) {
|
|
35
|
+
if (_notedExpiry) return;
|
|
36
|
+
_notedExpiry = true;
|
|
37
|
+
process.stderr.write(
|
|
38
|
+
`[exe-os] keychain probe (${what}) did not complete within its budget \u2014 recorded as UNKNOWN, not as "absent". It will be asked again after a retry delay.
|
|
39
|
+
`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function runKeychainProbe(cmd, args, input) {
|
|
29
43
|
try {
|
|
30
|
-
const
|
|
44
|
+
const stdout = execFileSync(cmd, args, {
|
|
31
45
|
encoding: "utf-8",
|
|
32
46
|
timeout: 5e3,
|
|
33
|
-
stdio: ["pipe", "pipe", "ignore"]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
47
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
48
|
+
...input === void 0 ? {} : { input }
|
|
49
|
+
});
|
|
50
|
+
return { status: "ok", stdout: (stdout ?? "").toString().trim() };
|
|
51
|
+
} catch (err) {
|
|
52
|
+
if (isExpiry(err)) {
|
|
53
|
+
noteExpiryOnce(`${cmd} ${args[0] ?? ""}`.trim());
|
|
54
|
+
return { status: "unknown", why: "probe expired before it could answer" };
|
|
55
|
+
}
|
|
56
|
+
return { status: "absent" };
|
|
38
57
|
}
|
|
39
|
-
return _macDefaultKeychainProbe;
|
|
40
58
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
if (
|
|
46
|
-
|
|
59
|
+
var _macDefaultKeychainProbe = null;
|
|
60
|
+
function macDefaultKeychainState() {
|
|
61
|
+
if (_macDefaultKeychainProbe !== null) return _macDefaultKeychainProbe ? "present" : "absent";
|
|
62
|
+
const res = runKeychainProbe("security", ["default-keychain"]);
|
|
63
|
+
if (res.status === "unknown") return "unknown";
|
|
64
|
+
const present = res.status === "ok" && res.stdout.length > 0;
|
|
65
|
+
_macDefaultKeychainProbe = present;
|
|
66
|
+
return present ? "present" : "absent";
|
|
67
|
+
}
|
|
68
|
+
function nativeKeychainState() {
|
|
69
|
+
if (process.env.EXE_OS_DISABLE_NATIVE_KEYCHAIN === "1") return "denied";
|
|
70
|
+
if (process.env.EXE_IS_DAEMON === "1") return "denied";
|
|
71
|
+
if (process.env.SSH_CONNECTION || process.env.SSH_TTY) return "denied";
|
|
72
|
+
if (process.platform === "darwin") {
|
|
73
|
+
const state = macDefaultKeychainState();
|
|
74
|
+
if (state === "absent") return "denied";
|
|
75
|
+
if (state === "unknown") return "unknown";
|
|
76
|
+
}
|
|
77
|
+
return "allowed";
|
|
47
78
|
}
|
|
48
79
|
function anchorFilePath() {
|
|
49
80
|
return path.join(os.homedir(), ORG_MODE_ANCHOR_FILENAME);
|
|
@@ -57,58 +88,57 @@ function repairAnchorPermissions(p) {
|
|
|
57
88
|
}
|
|
58
89
|
function keychainHasAnchor() {
|
|
59
90
|
if (_keychainChecked) return _keychainResult;
|
|
60
|
-
|
|
91
|
+
if (performance.now() < _keychainRetryAt) return "unknown";
|
|
92
|
+
const probe = keychainGet();
|
|
93
|
+
if (probe.status === "unknown") {
|
|
94
|
+
_keychainRetryAt = performance.now() + KEYCHAIN_RETRY_DELAY_MS;
|
|
95
|
+
return "unknown";
|
|
96
|
+
}
|
|
97
|
+
_keychainRetryAt = 0;
|
|
98
|
+
_keychainResult = probe.status === "ok" && probe.stdout === ANCHOR_VALUE;
|
|
61
99
|
_keychainChecked = true;
|
|
62
100
|
return _keychainResult;
|
|
63
101
|
}
|
|
64
102
|
var _probeCount = 0;
|
|
65
103
|
function keychainGet() {
|
|
66
104
|
_probeCount++;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
"secret-tool",
|
|
79
|
-
["lookup", "service", SERVICE, "account", ANCHOR_ACCOUNT],
|
|
80
|
-
{ encoding: "utf-8", timeout: 5e3, stdio: ["pipe", "pipe", "ignore"] }
|
|
81
|
-
).trim();
|
|
82
|
-
}
|
|
83
|
-
} catch {
|
|
105
|
+
const allowed = nativeKeychainState();
|
|
106
|
+
if (allowed === "denied") return { status: "absent" };
|
|
107
|
+
if (allowed === "unknown") return { status: "unknown", why: "keychain availability unknown" };
|
|
108
|
+
if (process.platform === "darwin") {
|
|
109
|
+
return runKeychainProbe(
|
|
110
|
+
"security",
|
|
111
|
+
["find-generic-password", "-s", SERVICE, "-a", ANCHOR_ACCOUNT, "-w"]
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
if (process.platform === "linux") {
|
|
115
|
+
return runKeychainProbe("secret-tool", ["lookup", "service", SERVICE, "account", ANCHOR_ACCOUNT]);
|
|
84
116
|
}
|
|
85
|
-
return
|
|
117
|
+
return { status: "absent" };
|
|
86
118
|
}
|
|
87
119
|
function keychainSet() {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
} catch {
|
|
120
|
+
const allowed = nativeKeychainState();
|
|
121
|
+
if (allowed === "denied") return "failed";
|
|
122
|
+
if (allowed === "unknown") return "unknown";
|
|
123
|
+
if (process.platform === "darwin") {
|
|
124
|
+
const res = runKeychainProbe(
|
|
125
|
+
"security",
|
|
126
|
+
["add-generic-password", "-U", "-s", SERVICE, "-a", ANCHOR_ACCOUNT, "-w", ANCHOR_VALUE]
|
|
127
|
+
);
|
|
128
|
+
return res.status === "ok" ? "ok" : res.status === "unknown" ? "unknown" : "failed";
|
|
129
|
+
}
|
|
130
|
+
if (process.platform === "linux") {
|
|
131
|
+
const res = runKeychainProbe(
|
|
132
|
+
"secret-tool",
|
|
133
|
+
["store", "--label", "exe-os org mode", "service", SERVICE, "account", ANCHOR_ACCOUNT],
|
|
134
|
+
ANCHOR_VALUE
|
|
135
|
+
);
|
|
136
|
+
return res.status === "ok" ? "ok" : res.status === "unknown" ? "unknown" : "failed";
|
|
107
137
|
}
|
|
108
|
-
return
|
|
138
|
+
return "failed";
|
|
109
139
|
}
|
|
110
140
|
function keychainClear() {
|
|
111
|
-
if (
|
|
141
|
+
if (nativeKeychainState() !== "allowed") return;
|
|
112
142
|
try {
|
|
113
143
|
if (process.platform === "darwin") {
|
|
114
144
|
execFileSync("security", ["delete-generic-password", "-s", SERVICE, "-a", ANCHOR_ACCOUNT], {
|
|
@@ -124,25 +154,33 @@ function keychainClear() {
|
|
|
124
154
|
} catch {
|
|
125
155
|
}
|
|
126
156
|
}
|
|
127
|
-
function
|
|
128
|
-
if (_anchorSeen) return
|
|
157
|
+
function orgModeAnchorState() {
|
|
158
|
+
if (_anchorSeen) return "present";
|
|
129
159
|
const fp = anchorFilePath();
|
|
130
160
|
if (existsSync(fp)) {
|
|
131
161
|
repairAnchorPermissions(fp);
|
|
132
162
|
_anchorSeen = true;
|
|
133
|
-
return
|
|
163
|
+
return "present";
|
|
134
164
|
}
|
|
135
|
-
|
|
165
|
+
const kc = keychainHasAnchor();
|
|
166
|
+
if (kc === true) {
|
|
136
167
|
_anchorSeen = true;
|
|
137
|
-
return
|
|
168
|
+
return "present";
|
|
138
169
|
}
|
|
139
|
-
return
|
|
170
|
+
return kc === "unknown" ? "unknown" : "absent";
|
|
171
|
+
}
|
|
172
|
+
function orgModeAnchorPresent() {
|
|
173
|
+
return orgModeAnchorState() === "present";
|
|
140
174
|
}
|
|
141
175
|
function writeOrgModeAnchor() {
|
|
142
176
|
_anchorSeen = true;
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
177
|
+
const setResult = keychainSet();
|
|
178
|
+
const keychainOk = setResult === "ok";
|
|
179
|
+
if (setResult !== "unknown") {
|
|
180
|
+
_keychainRetryAt = 0;
|
|
181
|
+
_keychainChecked = keychainOk;
|
|
182
|
+
_keychainResult = keychainOk;
|
|
183
|
+
}
|
|
146
184
|
try {
|
|
147
185
|
writeFileSync(
|
|
148
186
|
anchorFilePath(),
|
|
@@ -164,6 +202,7 @@ function clearOrgModeAnchor() {
|
|
|
164
202
|
_anchorSeen = false;
|
|
165
203
|
_keychainChecked = true;
|
|
166
204
|
_keychainResult = false;
|
|
205
|
+
_keychainRetryAt = 0;
|
|
167
206
|
}
|
|
168
207
|
|
|
169
208
|
// src/lib/org-membership.ts
|
|
@@ -259,11 +298,20 @@ function establishOrgMode(orgIds = []) {
|
|
|
259
298
|
const cp = configPath();
|
|
260
299
|
let cfg = {};
|
|
261
300
|
if (existsSync2(cp)) {
|
|
301
|
+
let parsed;
|
|
262
302
|
try {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
303
|
+
parsed = JSON.parse(readFileSync2(cp, "utf8"));
|
|
304
|
+
} catch (err) {
|
|
305
|
+
throw new Error(
|
|
306
|
+
`the config at ${cp} exists but could not be read (${err instanceof Error ? err.message : String(err)}); refusing to rewrite it from an empty object`
|
|
307
|
+
);
|
|
308
|
+
}
|
|
309
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
310
|
+
throw new Error(
|
|
311
|
+
`the config at ${cp} did not parse to a JSON object; refusing to rewrite it from an empty object`
|
|
312
|
+
);
|
|
266
313
|
}
|
|
314
|
+
cfg = parsed;
|
|
267
315
|
}
|
|
268
316
|
if (cfg.org_mode_established !== true) {
|
|
269
317
|
cfg.org_mode_established = true;
|
|
@@ -281,12 +329,20 @@ var QUARANTINE_DONE_KEY = "grants_quarantined_at";
|
|
|
281
329
|
function readMarker() {
|
|
282
330
|
const mp = markerPath();
|
|
283
331
|
if (!existsSync2(mp)) return {};
|
|
332
|
+
let parsed;
|
|
284
333
|
try {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
334
|
+
parsed = JSON.parse(readFileSync2(mp, "utf8"));
|
|
335
|
+
} catch (err) {
|
|
336
|
+
throw new Error(
|
|
337
|
+
`the org-mode marker at ${mp} exists but could not be read (${err instanceof Error ? err.message : String(err)}); refusing to treat it as empty, because every caller writes this value back and would drop the org ids it holds`
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
341
|
+
throw new Error(
|
|
342
|
+
`the org-mode marker at ${mp} did not parse to a JSON object; refusing to treat it as empty`
|
|
343
|
+
);
|
|
289
344
|
}
|
|
345
|
+
return parsed;
|
|
290
346
|
}
|
|
291
347
|
function recordQuarantineDone() {
|
|
292
348
|
try {
|
|
@@ -297,7 +353,18 @@ function recordQuarantineDone() {
|
|
|
297
353
|
}
|
|
298
354
|
}
|
|
299
355
|
function ensureGrantsQuarantined() {
|
|
300
|
-
|
|
356
|
+
let doneAt;
|
|
357
|
+
try {
|
|
358
|
+
doneAt = readMarker()[QUARANTINE_DONE_KEY];
|
|
359
|
+
} catch (err) {
|
|
360
|
+
_quarantinePending = true;
|
|
361
|
+
warnQuarantineDeferredOnce(
|
|
362
|
+
`[exe-os] \u26A0 org mode: the quarantine-completion record could not be read (${err instanceof Error ? err.message : String(err)}) \u2014 quarantine deferred and will retry. Grants are inert meanwhile (the monitoring writer refuses to run in org mode).
|
|
363
|
+
`
|
|
364
|
+
);
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
if (typeof doneAt === "string") {
|
|
301
368
|
_quarantinePending = false;
|
|
302
369
|
return;
|
|
303
370
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
registerScopedQueryChokepoint,
|
|
3
3
|
scopedQueryChokepointStatus
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FDWI3T6I.js";
|
|
5
5
|
import {
|
|
6
6
|
getClient
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3UD3OF3X.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/org-scoped-rows.ts
|
|
10
10
|
var SCOPED_QUERY_MAX_LIMIT = 200;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getCurrentSessionScope,
|
|
3
3
|
strictSessionScopeFilter
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-QDVLVLXP.js";
|
|
5
5
|
import {
|
|
6
6
|
getProjectName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ZZWFZ46U.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/session-events.ts
|
|
10
10
|
import { randomUUID } from "crypto";
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_RUNTIME,
|
|
8
8
|
RUNTIME_TABLE
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3VW5ZP2F.js";
|
|
10
10
|
import {
|
|
11
11
|
EXE_AI_DIR
|
|
12
12
|
} from "./chunk-MMS2HBRT.js";
|
|
@@ -93,10 +93,10 @@ var RUNTIME_LABELS = {
|
|
|
93
93
|
var DEFAULT_MODELS = {
|
|
94
94
|
// Bug ac1f9c80: claude-sonnet-4 was RETIRED 2026-06-15. It was the fallback
|
|
95
95
|
// default here, so any agent without an explicit config booted onto a dead
|
|
96
|
-
// model and idled forever. Default now points at the live claude-sonnet-
|
|
97
|
-
claude: "claude-sonnet-
|
|
96
|
+
// model and idled forever. Default now points at the live claude-sonnet-5.
|
|
97
|
+
claude: "claude-sonnet-5",
|
|
98
98
|
codex: CODEX_DEFAULT_MODEL,
|
|
99
|
-
opencode: RUNTIME_TABLE.opencode?.defaultModel ?? "anthropic/claude-sonnet-
|
|
99
|
+
opencode: RUNTIME_TABLE.opencode?.defaultModel ?? "anthropic/claude-sonnet-5"
|
|
100
100
|
};
|
|
101
101
|
function loadAgentConfig() {
|
|
102
102
|
if (!existsSync(AGENT_CONFIG_PATH)) return {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ingest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SQA7XCYI.js";
|
|
4
4
|
import {
|
|
5
5
|
listWorkflowDefinitions,
|
|
6
6
|
runWorkflow,
|
|
7
7
|
startWorkflow
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-TQS2YHLB.js";
|
|
9
9
|
import {
|
|
10
10
|
initCRMBridge
|
|
11
11
|
} from "./chunk-ML4S5SHZ.js";
|
|
@@ -1300,13 +1300,20 @@ function buildExecAssistantTools() {
|
|
|
1300
1300
|
{
|
|
1301
1301
|
name: "create_reminder",
|
|
1302
1302
|
description: "Create a reminder.",
|
|
1303
|
+
// Bug f80e50b5: these names MUST match the tool this advertisement names.
|
|
1304
|
+
// The MCP tool `create_reminder` (src/mcp/tools/create-reminder.ts) takes
|
|
1305
|
+
// `text` / `due_date` / `daily_push`. This block previously advertised
|
|
1306
|
+
// `content` / `due_at`, which exist nowhere on the receiving side — so an
|
|
1307
|
+
// executor forwarding these arguments would drop both the reminder body
|
|
1308
|
+
// and its due date. Pinned by tests/gateway/bot-tool-contract.test.ts.
|
|
1303
1309
|
input_schema: {
|
|
1304
1310
|
type: "object",
|
|
1305
1311
|
properties: {
|
|
1306
|
-
|
|
1307
|
-
|
|
1312
|
+
text: { type: "string", description: "What to remind about" },
|
|
1313
|
+
due_date: { type: "string", description: "Optional due date \u2014 ISO date (2026-04-01), or omit for persistent" },
|
|
1314
|
+
daily_push: { type: "string", description: 'Optional daily push schedule \u2014 JSON {"hours":[9,18]} (0\u201323, founder timezone)' }
|
|
1308
1315
|
},
|
|
1309
|
-
required: ["
|
|
1316
|
+
required: ["text"]
|
|
1310
1317
|
}
|
|
1311
1318
|
},
|
|
1312
1319
|
{
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionScopeFilter
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QDVLVLXP.js";
|
|
4
4
|
import {
|
|
5
5
|
leaseExpiryIso
|
|
6
6
|
} from "./chunk-E23LNUWJ.js";
|
|
7
7
|
import {
|
|
8
8
|
getProjectName
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZZWFZ46U.js";
|
|
10
10
|
|
|
11
11
|
// src/lib/subagent-observability.ts
|
|
12
12
|
var MAX_RESULT_DIGEST_CHARS = 200;
|
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
} from "./chunk-7OTR2OET.js";
|
|
12
12
|
import {
|
|
13
13
|
buildDeployStalenessBanner,
|
|
14
|
-
|
|
15
|
-
} from "./chunk-
|
|
14
|
+
resolveDeployStalenessVerdict
|
|
15
|
+
} from "./chunk-B7WVYLAQ.js";
|
|
16
16
|
|
|
17
17
|
// src/lib/status-brief.ts
|
|
18
18
|
import pathMod from "path";
|
|
@@ -126,7 +126,7 @@ async function generateStatusBrief(employees, data, _activeAgentIds) {
|
|
|
126
126
|
sections.push([` EXE STATUS BRIEF \u2014 ${dateStr}${sessionTag}`]);
|
|
127
127
|
const degradedLines = buildDegradedBanner(data);
|
|
128
128
|
if (degradedLines.length > 0) sections.push(degradedLines);
|
|
129
|
-
const staleDeployLines = buildDeployStalenessBanner(
|
|
129
|
+
const staleDeployLines = buildDeployStalenessBanner(resolveDeployStalenessVerdict());
|
|
130
130
|
if (staleDeployLines.length > 0) sections.push(staleDeployLines);
|
|
131
131
|
const orchestrationLines = buildOrchestrationPhase(data, employees);
|
|
132
132
|
if (orchestrationLines.length > 0) sections.push(orchestrationLines);
|
|
@@ -424,19 +424,10 @@ function buildOrchestrationPhase(data, employees) {
|
|
|
424
424
|
}
|
|
425
425
|
function buildDispatchLadder(data) {
|
|
426
426
|
const lines = [
|
|
427
|
-
"\u{1FA9C} DISPATCH \u2014 stop at the
|
|
428
|
-
" 1 do it yourself \xB7 2
|
|
429
|
-
"
|
|
427
|
+
"\u{1FA9C} DISPATCH \u2014 stop at the lower rung that fits",
|
|
428
|
+
" 1 do it yourself \xB7 2 Agent(subagent_type='<employee>') = the ONLY delegation path",
|
|
429
|
+
" create_task = durable checklist row for tracking \u2014 it never dispatches"
|
|
430
430
|
];
|
|
431
|
-
const liveTmuxDispatches = data.globalTasks.filter(
|
|
432
|
-
(t) => t.executionMode !== "checklist" && (t.status === "open" || t.status === "in_progress")
|
|
433
|
-
).length;
|
|
434
|
-
const TMUX_SKEW_THRESHOLD = 4;
|
|
435
|
-
if (liveTmuxDispatches >= TMUX_SKEW_THRESHOLD) {
|
|
436
|
-
lines.push(
|
|
437
|
-
` \u{1F7E0} ${liveTmuxDispatches} live tmux dispatches \u2014 bounded work belongs on rung 2`
|
|
438
|
-
);
|
|
439
|
-
}
|
|
440
431
|
const subagentTasks = data.globalTasks.filter(
|
|
441
432
|
(t) => t.status === "in_progress" && (t.subagentEventCount ?? 0) > 0
|
|
442
433
|
);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getClient
|
|
3
|
+
} from "./chunk-3UD3OF3X.js";
|
|
4
|
+
|
|
5
|
+
// src/lib/skill-usage.ts
|
|
6
|
+
async function recordBehaviorsConsulted(behaviorIds) {
|
|
7
|
+
const ids = [...new Set(behaviorIds.filter((id) => typeof id === "string" && id.length > 0))];
|
|
8
|
+
if (ids.length === 0) return;
|
|
9
|
+
try {
|
|
10
|
+
const client = getClient();
|
|
11
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
12
|
+
for (const id of ids) {
|
|
13
|
+
await client.execute({
|
|
14
|
+
sql: `UPDATE behaviors SET consulted_count = coalesce(consulted_count, 0) + 1, last_consulted_at = ? WHERE id = ?`,
|
|
15
|
+
args: [now, id]
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
} catch (err) {
|
|
19
|
+
process.stderr.write(
|
|
20
|
+
`[skill-usage] Failed to record consulted: ${err instanceof Error ? err.message : String(err)}
|
|
21
|
+
`
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function recordBehaviorApplied(behaviorId) {
|
|
26
|
+
const id = (behaviorId ?? "").trim();
|
|
27
|
+
if (!id) return false;
|
|
28
|
+
try {
|
|
29
|
+
const client = getClient();
|
|
30
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
31
|
+
const result = await client.execute({
|
|
32
|
+
sql: `UPDATE behaviors SET applied_count = coalesce(applied_count, 0) + 1, last_applied_at = ? WHERE id = ?`,
|
|
33
|
+
args: [now, id]
|
|
34
|
+
});
|
|
35
|
+
return (result.rowsAffected ?? 0) > 0;
|
|
36
|
+
} catch (err) {
|
|
37
|
+
process.stderr.write(
|
|
38
|
+
`[skill-usage] Failed to record applied for ${id}: ${err instanceof Error ? err.message : String(err)}
|
|
39
|
+
`
|
|
40
|
+
);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export {
|
|
46
|
+
recordBehaviorsConsulted,
|
|
47
|
+
recordBehaviorApplied
|
|
48
|
+
};
|
|
@@ -28,7 +28,9 @@ function normalizeState(value) {
|
|
|
28
28
|
updatedAt,
|
|
29
29
|
// Optional and only present when actually set, so existing readers that
|
|
30
30
|
// compare whole state objects are unaffected by the new field.
|
|
31
|
-
...typeof raw.pendingSliceAt === "string" && raw.pendingSliceAt !== "" ? { pendingSliceAt: raw.pendingSliceAt } : {}
|
|
31
|
+
...typeof raw.pendingSliceAt === "string" && raw.pendingSliceAt !== "" ? { pendingSliceAt: raw.pendingSliceAt } : {},
|
|
32
|
+
...typeof raw.pullIncompleteReason === "string" && raw.pullIncompleteReason !== "" ? { pullIncompleteReason: raw.pullIncompleteReason } : {},
|
|
33
|
+
...typeof raw.pullIncompleteMaxVersion === "number" && Number.isFinite(raw.pullIncompleteMaxVersion) ? { pullIncompleteMaxVersion: raw.pullIncompleteMaxVersion } : {}
|
|
32
34
|
};
|
|
33
35
|
}
|
|
34
36
|
function readCloudSyncState(statePath = resolveCloudSyncStatePath()) {
|
|
@@ -114,6 +116,17 @@ function resolveCloudSyncStatus(options) {
|
|
|
114
116
|
updatedAt: state.updatedAt
|
|
115
117
|
};
|
|
116
118
|
}
|
|
119
|
+
const pullIncompleteReason = state.pullIncompleteReason ?? void 0;
|
|
120
|
+
if (pullIncompleteReason) {
|
|
121
|
+
return {
|
|
122
|
+
status: "partial",
|
|
123
|
+
lastSuccessAt,
|
|
124
|
+
lastError: state.lastError ?? void 0,
|
|
125
|
+
intervalMs,
|
|
126
|
+
updatedAt: state.updatedAt,
|
|
127
|
+
pullIncompleteReason
|
|
128
|
+
};
|
|
129
|
+
}
|
|
117
130
|
const lastSuccessMs = lastSuccessAt ? Date.parse(lastSuccessAt) : NaN;
|
|
118
131
|
if (Number.isFinite(lastSuccessMs) && nowMs - lastSuccessMs <= intervalMs * 2) {
|
|
119
132
|
return {
|