@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
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isPaneBusy
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RWG7DLOG.js";
|
|
4
4
|
import {
|
|
5
5
|
recordSessionKill
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RWKAHHIX.js";
|
|
7
7
|
import {
|
|
8
8
|
updateTask
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QDBKMEYY.js";
|
|
10
10
|
import {
|
|
11
11
|
BUSY_PATTERN,
|
|
12
12
|
countPendingReviews,
|
|
@@ -24,27 +24,29 @@ import {
|
|
|
24
24
|
sessionScopeFilter,
|
|
25
25
|
strictSessionScopeFilter,
|
|
26
26
|
writeNotification
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-QDVLVLXP.js";
|
|
28
28
|
import {
|
|
29
29
|
LEASE_MINUTES,
|
|
30
30
|
isLeaseExpired
|
|
31
31
|
} from "./chunk-E23LNUWJ.js";
|
|
32
32
|
import {
|
|
33
33
|
listSessions
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-637FL62O.js";
|
|
35
35
|
import {
|
|
36
36
|
capturePaneLinesAsync,
|
|
37
|
+
capturePaneLinesStrictAsync,
|
|
38
|
+
getPanePidAsync,
|
|
37
39
|
listTmuxSessions,
|
|
38
40
|
listTmuxSessionsAsync,
|
|
39
41
|
parseContextPercentage,
|
|
40
42
|
parseContextPercentageAsync
|
|
41
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-6L4VIYLZ.js";
|
|
42
44
|
import {
|
|
43
45
|
getTransport
|
|
44
46
|
} from "./chunk-VI4ATC6I.js";
|
|
45
47
|
import {
|
|
46
48
|
recordOrchestrationEventBestEffort
|
|
47
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-DPYZW42H.js";
|
|
48
50
|
import {
|
|
49
51
|
checkDispatchStatus,
|
|
50
52
|
readTerminalLauncherFailure,
|
|
@@ -53,7 +55,7 @@ import {
|
|
|
53
55
|
} from "./chunk-T5SM4RXY.js";
|
|
54
56
|
import {
|
|
55
57
|
getAgentRuntime
|
|
56
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-GWAN2BDB.js";
|
|
57
59
|
import {
|
|
58
60
|
isValidSessionScope
|
|
59
61
|
} from "./chunk-BTSWFMEH.js";
|
|
@@ -72,7 +74,7 @@ import {
|
|
|
72
74
|
getCoordinatorName,
|
|
73
75
|
isCoordinatorName,
|
|
74
76
|
shouldAutoInstance
|
|
75
|
-
} from "./chunk-
|
|
77
|
+
} from "./chunk-3UD3OF3X.js";
|
|
76
78
|
import {
|
|
77
79
|
eventLoopBlockedMarkerPath
|
|
78
80
|
} from "./chunk-ZQEJ4IX2.js";
|
|
@@ -225,6 +227,109 @@ async function collectAgentSignals(client, agentId, sessionName, intercomAckWind
|
|
|
225
227
|
};
|
|
226
228
|
}
|
|
227
229
|
|
|
230
|
+
// src/lib/kill-authority.ts
|
|
231
|
+
function classifyPidProbe(err) {
|
|
232
|
+
if (err === null || err === void 0) return "exists";
|
|
233
|
+
const code = err?.code;
|
|
234
|
+
if (code === "ESRCH") return "gone";
|
|
235
|
+
if (code === "EPERM") return "exists";
|
|
236
|
+
return "unverified";
|
|
237
|
+
}
|
|
238
|
+
function probePid(pid) {
|
|
239
|
+
if (!Number.isFinite(pid) || pid <= 0) return "unverified";
|
|
240
|
+
try {
|
|
241
|
+
process.kill(pid, 0);
|
|
242
|
+
return classifyPidProbe(null);
|
|
243
|
+
} catch (err) {
|
|
244
|
+
return classifyPidProbe(err);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
function resolveKillAuthority(reading) {
|
|
248
|
+
const note = reading.note ? ` (${reading.note})` : "";
|
|
249
|
+
if (reading.sessionExists === "unknown") {
|
|
250
|
+
return {
|
|
251
|
+
authorised: false,
|
|
252
|
+
reason: "unverified",
|
|
253
|
+
detail: `tmux session probe failed at kill time${note} \u2014 cannot determine whether anything is there`
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
if (reading.sessionExists === false) {
|
|
257
|
+
return {
|
|
258
|
+
authorised: false,
|
|
259
|
+
reason: "unverified",
|
|
260
|
+
detail: "tmux session vanished between grading and kill \u2014 nothing left to destroy"
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
switch (reading.pidProbe) {
|
|
264
|
+
case "gone":
|
|
265
|
+
return { authorised: true, evidence: "pane process probe returned ESRCH \u2014 provably gone" };
|
|
266
|
+
case "unverified":
|
|
267
|
+
return {
|
|
268
|
+
authorised: false,
|
|
269
|
+
reason: "unverified",
|
|
270
|
+
detail: `pane process probe was uninterpretable${note} \u2014 refusing to destroy on an unreadable answer`
|
|
271
|
+
};
|
|
272
|
+
case "exists":
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
if (reading.freshPane === null) {
|
|
276
|
+
return {
|
|
277
|
+
authorised: false,
|
|
278
|
+
reason: "unverified",
|
|
279
|
+
detail: `pane capture failed at kill time${note} \u2014 a failed capture is not proof of a quiet pane`
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
if (reading.freshPane.working) {
|
|
283
|
+
return {
|
|
284
|
+
authorised: false,
|
|
285
|
+
reason: "alive",
|
|
286
|
+
detail: "pane is WORKING at kill time \u2014 it recovered after being graded unreachable"
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
return { authorised: true, evidence: "pane process exists and reads not-working in a capture taken at the act" };
|
|
290
|
+
}
|
|
291
|
+
function normalizeKillAuthority(value) {
|
|
292
|
+
if (value === true) return { authorised: true, evidence: "guard returned true" };
|
|
293
|
+
if (value === false) {
|
|
294
|
+
return { authorised: false, reason: "alive", detail: "guard refused the destructive action" };
|
|
295
|
+
}
|
|
296
|
+
return value;
|
|
297
|
+
}
|
|
298
|
+
async function resolveKillAuthorityAt(sessionName, io) {
|
|
299
|
+
let sessionExists;
|
|
300
|
+
let note;
|
|
301
|
+
try {
|
|
302
|
+
sessionExists = await io.sessionExists(sessionName);
|
|
303
|
+
} catch (err) {
|
|
304
|
+
sessionExists = "unknown";
|
|
305
|
+
note = err instanceof Error ? err.message : String(err);
|
|
306
|
+
}
|
|
307
|
+
if (sessionExists !== true) {
|
|
308
|
+
return resolveKillAuthority({ sessionExists, pidProbe: "unverified", freshPane: null, note });
|
|
309
|
+
}
|
|
310
|
+
let pidProbe;
|
|
311
|
+
try {
|
|
312
|
+
const pid = await io.panePid(sessionName);
|
|
313
|
+
pidProbe = pid === null ? "unverified" : io.probePid(pid);
|
|
314
|
+
if (pid === null) note = note ?? "pane pid unreadable";
|
|
315
|
+
} catch (err) {
|
|
316
|
+
pidProbe = "unverified";
|
|
317
|
+
note = note ?? (err instanceof Error ? err.message : String(err));
|
|
318
|
+
}
|
|
319
|
+
if (pidProbe !== "exists") {
|
|
320
|
+
return resolveKillAuthority({ sessionExists: true, pidProbe, freshPane: null, note });
|
|
321
|
+
}
|
|
322
|
+
let freshPane;
|
|
323
|
+
try {
|
|
324
|
+
freshPane = await io.capturePane(sessionName);
|
|
325
|
+
if (freshPane === null) note = note ?? "pane capture returned nothing";
|
|
326
|
+
} catch (err) {
|
|
327
|
+
freshPane = null;
|
|
328
|
+
note = note ?? (err instanceof Error ? err.message : String(err));
|
|
329
|
+
}
|
|
330
|
+
return resolveKillAuthority({ sessionExists: true, pidProbe: "exists", freshPane, note });
|
|
331
|
+
}
|
|
332
|
+
|
|
228
333
|
// src/lib/daemon-orchestration.ts
|
|
229
334
|
var cpuCount = () => osCpus().length;
|
|
230
335
|
function parseVmStatAvailableGB(vmStatOutput) {
|
|
@@ -310,6 +415,12 @@ function shouldKillIdleSession(input) {
|
|
|
310
415
|
if (input.idleTicks < input.ticksRequired) return false;
|
|
311
416
|
return true;
|
|
312
417
|
}
|
|
418
|
+
function describeKillRefusal(authority) {
|
|
419
|
+
if (authority.authorised) {
|
|
420
|
+
return "daemon-loop backoff refused destructive action (authority itself was granted)";
|
|
421
|
+
}
|
|
422
|
+
return authority.reason === "alive" ? `REFUSED, TARGET ALIVE: ${authority.detail}` : `REFUSED, UNVERIFIED: ${authority.detail}`;
|
|
423
|
+
}
|
|
313
424
|
function isEventLoopBlockedRecently(nowMs = Date.now(), windowMs = Number(process.env.EXE_UNREACHABLE_BLOCK_BACKOFF_MS) || 3e4) {
|
|
314
425
|
try {
|
|
315
426
|
const age = nowMs - statSync2(eventLoopBlockedMarkerPath()).mtimeMs;
|
|
@@ -418,10 +529,10 @@ async function checkSessionTTL(deps, wedgeObservations = /* @__PURE__ */ new Map
|
|
|
418
529
|
});
|
|
419
530
|
} else {
|
|
420
531
|
wedgeObservations.delete(entry.windowName);
|
|
421
|
-
const
|
|
422
|
-
if (!
|
|
532
|
+
const authority = deps.canKillUnreachable ? normalizeKillAuthority(await deps.canKillUnreachable(entry.windowName, snapshot)) : { authorised: true, evidence: "no guard configured" };
|
|
533
|
+
if (!authority.authorised || deps.eventLoopBlockedRecently?.(Date.now())) {
|
|
423
534
|
process.stderr.write(
|
|
424
|
-
`[exed] Session TTL: unreachable KILL SUPPRESSED for ${entry.windowName} \u2014
|
|
535
|
+
`[exed] Session TTL: unreachable KILL SUPPRESSED for ${entry.windowName} \u2014 ${describeKillRefusal(authority)}
|
|
425
536
|
`
|
|
426
537
|
);
|
|
427
538
|
continue;
|
|
@@ -455,10 +566,10 @@ async function checkSessionTTL(deps, wedgeObservations = /* @__PURE__ */ new Map
|
|
|
455
566
|
const pendingInput = await deps.hasPendingInput?.(entry.windowName) ?? false;
|
|
456
567
|
if (isUnreachableActiveTaskSession({ ageHours, state, hasPendingInput: pendingInput })) {
|
|
457
568
|
telemetryReason = "unreachable";
|
|
458
|
-
const
|
|
459
|
-
if (!
|
|
569
|
+
const authority = deps.canKillUnreachable ? normalizeKillAuthority(await deps.canKillUnreachable(entry.windowName, snapshot)) : { authorised: true, evidence: "no guard configured" };
|
|
570
|
+
if (!authority.authorised || deps.eventLoopBlockedRecently?.(Date.now())) {
|
|
460
571
|
process.stderr.write(
|
|
461
|
-
`[exed] Session TTL: unreachable override SUPPRESSED for ${entry.windowName} \u2014
|
|
572
|
+
`[exed] Session TTL: unreachable override SUPPRESSED for ${entry.windowName} \u2014 ${describeKillRefusal(authority)}
|
|
462
573
|
`
|
|
463
574
|
);
|
|
464
575
|
continue;
|
|
@@ -534,6 +645,32 @@ async function checkSessionTTL(deps, wedgeObservations = /* @__PURE__ */ new Map
|
|
|
534
645
|
});
|
|
535
646
|
} else if (unreachableCandidates.length === 1) {
|
|
536
647
|
const c = unreachableCandidates[0];
|
|
648
|
+
const authority = deps.canKillUnreachable ? normalizeKillAuthority(await deps.canKillUnreachable(c.sessionName, null)) : { authorised: true, evidence: "no guard configured" };
|
|
649
|
+
if (!authority.authorised || deps.eventLoopBlockedRecently?.(Date.now())) {
|
|
650
|
+
const refusal = describeKillRefusal(authority);
|
|
651
|
+
process.stderr.write(
|
|
652
|
+
`[exed] Session TTL: unreachable KILL REFUSED AT THE ACT for ${c.sessionName} \u2014 ${refusal}
|
|
653
|
+
`
|
|
654
|
+
);
|
|
655
|
+
recordOrchestrationEventBestEffort({
|
|
656
|
+
eventType: "session.unreachable_kill_refused",
|
|
657
|
+
source: "daemon-orchestration.checkSessionTTL",
|
|
658
|
+
severity: authority.authorised === false && authority.reason === "unverified" ? "error" : "warn",
|
|
659
|
+
agentId: c.agentId,
|
|
660
|
+
tmuxSession: c.sessionName,
|
|
661
|
+
sessionScope: c.scope,
|
|
662
|
+
payload: {
|
|
663
|
+
ageHours: parseFloat(c.ageHours.toFixed(2)),
|
|
664
|
+
contextPct: c.contextPct,
|
|
665
|
+
// Two-valued on purpose: "alive" means leave it alone, "unverified"
|
|
666
|
+
// means the probe itself needs looking at. Opposite responses.
|
|
667
|
+
refusalReason: authority.authorised === false ? authority.reason : "loop_backoff",
|
|
668
|
+
refusal,
|
|
669
|
+
...c.payload
|
|
670
|
+
}
|
|
671
|
+
});
|
|
672
|
+
return killed;
|
|
673
|
+
}
|
|
537
674
|
process.stderr.write(
|
|
538
675
|
`[exed] Session TTL: killing ${c.sessionName} (age=${c.ageHours.toFixed(1)}h, context=${c.contextPct}%, reason=unreachable)
|
|
539
676
|
`
|
|
@@ -943,7 +1080,21 @@ function createIdleNudgeRealDeps(_getClient) {
|
|
|
943
1080
|
}
|
|
944
1081
|
};
|
|
945
1082
|
}
|
|
946
|
-
|
|
1083
|
+
var realKillProbeIo = {
|
|
1084
|
+
// Throwing propagates to resolveKillAuthorityAt as "unknown" — a transport
|
|
1085
|
+
// that cannot answer is not a transport saying "gone".
|
|
1086
|
+
sessionExists: (sessionName) => getTransport().isAlive(sessionName),
|
|
1087
|
+
panePid: (sessionName) => getPanePidAsync(sessionName),
|
|
1088
|
+
probePid,
|
|
1089
|
+
// Strict twin on purpose. capturePaneLinesAsync answers [] for BOTH "the pane
|
|
1090
|
+
// is empty" and "tmux did not answer", and [] derives a snapshot with
|
|
1091
|
+
// working:false — so a capture that exits non-zero or outruns its 3s budget
|
|
1092
|
+
// would read as a quiet pane and authorise the kill of a live agent. Throwing
|
|
1093
|
+
// propagates to resolveKillAuthorityAt as freshPane:null → UNVERIFIED, with
|
|
1094
|
+
// the tmux error carried out as the refusal detail.
|
|
1095
|
+
capturePane: async (sessionName) => derivePaneSnapshot((await capturePaneLinesStrictAsync(sessionName, 12)).join("\n"))
|
|
1096
|
+
};
|
|
1097
|
+
function createSessionTTLRealDeps(getClient, killProbeIo = realKillProbeIo) {
|
|
947
1098
|
return {
|
|
948
1099
|
listRegisteredSessions: () => listSessions(),
|
|
949
1100
|
// Bug 1c870c78: TTL runs on a 5-min timer — list sessions async (execFile).
|
|
@@ -1006,17 +1157,18 @@ function createSessionTTLRealDeps(getClient) {
|
|
|
1006
1157
|
return null;
|
|
1007
1158
|
}
|
|
1008
1159
|
},
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1160
|
+
// Bug bc98f61f. This used to read:
|
|
1161
|
+
//
|
|
1162
|
+
// const checked = snapshot ?? derivePaneSnapshot(await capture(...));
|
|
1163
|
+
//
|
|
1164
|
+
// i.e. it PREFERRED the snapshot that graded the session and treated a
|
|
1165
|
+
// fresh capture as the fallback. That snapshot predates several awaits, so
|
|
1166
|
+
// a pane that recovered, restarted, or was merely slow to answer the first
|
|
1167
|
+
// probe was destroyed on a reading taken before we started waiting. The
|
|
1168
|
+
// `snapshot` argument is now deliberately ignored for the verdict — every
|
|
1169
|
+
// reading below is taken here, at the act — and the outcome is three-
|
|
1170
|
+
// valued so a refusal says WHICH kind it is.
|
|
1171
|
+
canKillUnreachable: async (sessionName, _gradingSnapshotIgnored) => resolveKillAuthorityAt(sessionName, killProbeIo),
|
|
1020
1172
|
eventLoopBlockedRecently: (nowMs) => isEventLoopBlockedRecently(nowMs),
|
|
1021
1173
|
// de5d9fe8: non-destructive recovery — clear the stuck input buffer (C-u, no
|
|
1022
1174
|
// Enter) so the queued nudge can land. Never submits anything. execFileSync ->
|
|
@@ -1605,8 +1757,23 @@ async function pollOrphanedTasks(deps, nowMs = Date.now()) {
|
|
|
1605
1757
|
}
|
|
1606
1758
|
const retries = _autoWakeTaskRetries.get(topTask.taskId) ?? 0;
|
|
1607
1759
|
if (retries >= AUTO_WAKE_MAX_RETRIES || terminalFailure) {
|
|
1608
|
-
|
|
1609
|
-
|
|
1760
|
+
if (deps.liveSessionHoldingTask) {
|
|
1761
|
+
let liveHolder = null;
|
|
1762
|
+
try {
|
|
1763
|
+
liveHolder = await deps.liveSessionHoldingTask(topTask.taskId, topTask.sessionScope);
|
|
1764
|
+
} catch {
|
|
1765
|
+
liveHolder = null;
|
|
1766
|
+
}
|
|
1767
|
+
if (liveHolder) {
|
|
1768
|
+
process.stderr.write(
|
|
1769
|
+
`[auto-wake] REFUSING to route ${agentId} task ${topTask.taskId} after ${retries} retries \u2014 session ${liveHolder} is confirmed alive and holds this task; not marking it reviewed/abandoned and not releasing its ownership
|
|
1770
|
+
`
|
|
1771
|
+
);
|
|
1772
|
+
continue;
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
const reviewReason = terminalFailure ? `Terminal launcher failure (${terminalFailure.runtime}) \u2014 ${terminalFailure.reason}` : `Auto-wake could not reach a session for this task ${AUTO_WAKE_MAX_RETRIES} times; a deliverable was already recorded. Routed here for a human to judge \u2014 this is NOT a completion claim.`;
|
|
1776
|
+
const abandonReason = terminalFailure ? `Terminal launcher failure (${terminalFailure.runtime}) \u2014 ${terminalFailure.reason}${terminalFailure.detail ? ` [${terminalFailure.detail}]` : ""}` : `Auto-wake could not reach a session for this task ${AUTO_WAKE_MAX_RETRIES} times and NO deliverable was recorded. Blocked for manual re-dispatch (not a completed review).`;
|
|
1610
1777
|
let routed = "needs_review";
|
|
1611
1778
|
try {
|
|
1612
1779
|
routed = await routeUnrecoverableTask(deps, topTask.taskId, reviewReason, abandonReason);
|
|
@@ -3557,7 +3724,7 @@ async function reapOrphanedWorktrees(deps, nowMs = Date.now()) {
|
|
|
3557
3724
|
}
|
|
3558
3725
|
async function createWorktreeReaperRealDeps() {
|
|
3559
3726
|
const { getPaneCwdAsync } = await import("./lib/tmux-status.js");
|
|
3560
|
-
const { getGitRootAsync, isWorktreeDirtyAsync, GIT_CRYPT_SMUDGE_BYPASS_ARGS } = await import("./worktree-
|
|
3727
|
+
const { getGitRootAsync, isWorktreeDirtyAsync, GIT_CRYPT_SMUDGE_BYPASS_ARGS } = await import("./worktree-NMWDVT6N.js");
|
|
3561
3728
|
const { statSync: statSync3 } = await import("fs");
|
|
3562
3729
|
const { basename: basename2 } = await import("path");
|
|
3563
3730
|
const { promisify: promisify2 } = await import("util");
|
|
@@ -3804,7 +3971,7 @@ function shouldNotifyTaskGroupViaIntercom(executionMode) {
|
|
|
3804
3971
|
}
|
|
3805
3972
|
async function pollTaskGroupBarriers() {
|
|
3806
3973
|
try {
|
|
3807
|
-
const { checkAndFireBarriers } = await import("./tasks-crud-
|
|
3974
|
+
const { checkAndFireBarriers } = await import("./tasks-crud-CYKUKS3F.js");
|
|
3808
3975
|
const firedGroupIds = await checkAndFireBarriers();
|
|
3809
3976
|
if (firedGroupIds.length === 0) return 0;
|
|
3810
3977
|
const { getClient } = await import("./lib/database.js");
|
|
@@ -3887,6 +4054,7 @@ export {
|
|
|
3887
4054
|
WEDGE_RECOVERY_TICKS_REQUIRED,
|
|
3888
4055
|
clearInputBufferArgs,
|
|
3889
4056
|
shouldKillIdleSession,
|
|
4057
|
+
describeKillRefusal,
|
|
3890
4058
|
isEventLoopBlockedRecently,
|
|
3891
4059
|
pollIdleEmployees,
|
|
3892
4060
|
checkSessionTTL,
|
|
@@ -3900,6 +4068,7 @@ export {
|
|
|
3900
4068
|
saveNudgeState,
|
|
3901
4069
|
createReviewNudgeRealDeps,
|
|
3902
4070
|
createIdleNudgeRealDeps,
|
|
4071
|
+
realKillProbeIo,
|
|
3903
4072
|
createSessionTTLRealDeps,
|
|
3904
4073
|
createIdleKillRealDeps,
|
|
3905
4074
|
AUTO_WAKE_COOLDOWN_MS,
|