@askexenow/exe-os 0.9.342 → 0.9.344
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/dist/{active-agent-PVGE57FY.js → active-agent-WXLJG2WA.js} +5 -5
- package/dist/{active-agent-TNIO6IY3.js → active-agent-YZH3F7NG.js} +5 -5
- package/dist/{agentic-ontology-3FXYMHKW.js → agentic-ontology-UH556ULS.js} +1 -1
- package/dist/assets/com.askexe.exed.plist +3 -5
- package/dist/{backfill-gate-65LSYVE5.js → backfill-gate-UCBL6Q5U.js} +2 -2
- package/dist/{backfill-metadata-ZSMZC45J.js → backfill-metadata-7WFF4Q45.js} +6 -6
- package/dist/{background-jobs-EXR5RVGG.js → background-jobs-QK7NLJ4P.js} +2 -2
- package/dist/{backup-verify-3Y2FHGZU.js → backup-verify-EUMJVTMQ.js} +3 -3
- package/dist/{behaviors-KYRB3NGJ.js → behaviors-GDR3P3XF.js} +7 -7
- package/dist/bin/age-ontology-load.js +2 -2
- package/dist/bin/agentic-ontology-backfill.js +8 -8
- package/dist/bin/agentic-reflection-backfill.js +9 -9
- package/dist/bin/agentic-semantic-label.js +8 -8
- package/dist/bin/backfill-conversations.js +8 -8
- package/dist/bin/backfill-responses.js +8 -8
- package/dist/bin/backfill-vectors.js +17 -17
- package/dist/bin/bulk-sync-postgres.js +16 -16
- package/dist/bin/cc-doctor.js +9 -9
- package/dist/bin/cleanup-stale-review-tasks.js +20 -19
- package/dist/bin/cli.js +75 -61
- package/dist/bin/daemon-restart-handoff.js +27 -0
- package/dist/bin/deferred-daemon-restart.js +121 -93
- package/dist/bin/exe-agent-config.js +5 -5
- package/dist/bin/exe-agent.js +10 -10
- package/dist/bin/exe-assign.js +10 -10
- package/dist/bin/exe-boot.js +268 -195
- package/dist/bin/exe-call.js +7 -7
- package/dist/bin/exe-cloud.js +17 -17
- package/dist/bin/exe-config-dump.js +5 -5
- package/dist/bin/exe-dispatch.js +20 -19
- package/dist/bin/exe-doctor.js +8 -8
- package/dist/bin/exe-export-behaviors.js +11 -11
- package/dist/bin/exe-forget.js +10 -10
- package/dist/bin/exe-gateway.js +9 -9
- package/dist/bin/exe-grant.js +4 -4
- package/dist/bin/exe-healthcheck.js +9 -9
- package/dist/bin/exe-heartbeat.js +76 -20
- package/dist/bin/exe-kill.js +25 -24
- package/dist/bin/exe-launch-agent.js +46 -31
- package/dist/bin/exe-memory-reads.js +6 -6
- package/dist/bin/exe-new-employee.js +11 -11
- package/dist/bin/exe-os-mcp-proxy.js +365 -0
- package/dist/bin/exe-pending-messages.js +21 -20
- package/dist/bin/exe-pending-notifications.js +20 -19
- package/dist/bin/exe-pending-reviews.js +20 -19
- package/dist/bin/exe-rename.js +7 -7
- package/dist/bin/exe-review.js +24 -23
- package/dist/bin/exe-search-quality.js +1 -1
- package/dist/bin/exe-search.js +7 -7
- package/dist/bin/exe-session-cleanup.js +23 -22
- package/dist/bin/exe-settings.js +17 -17
- package/dist/bin/exe-start-codex.js +43 -21
- package/dist/bin/exe-start-opencode.js +10 -10
- package/dist/bin/exe-status.js +21 -20
- package/dist/bin/exe-support.js +4 -4
- package/dist/bin/exe-team.js +5 -5
- package/dist/bin/git-sweep.js +21 -20
- package/dist/bin/graph-backfill.js +9 -9
- package/dist/bin/graph-export.js +9 -9
- package/dist/bin/import-history.js +11 -11
- package/dist/bin/install-launchd.js +3 -1
- package/dist/bin/install.js +105 -104
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +6 -6
- package/dist/bin/postgres-agentic-reflection-backfill.js +4 -4
- package/dist/bin/postgres-agentic-semantic-backfill.js +3 -3
- package/dist/bin/pre-publish.js +1 -1
- package/dist/bin/reconcile-backlog.js +2 -2
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +20 -19
- package/dist/bin/setup.js +3 -3
- package/dist/bin/shard-migrate.js +7 -7
- package/dist/bin/stack-update.js +5 -5
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-BL2ISK4U.js → boot-generation-2IIJMJ7E.js} +5 -5
- package/dist/{boot-review-sections-DBMQJT5N.js → boot-review-sections-3DJFA42B.js} +19 -18
- package/dist/{branch-hygiene-TZWK6QCF.js → branch-hygiene-L3RV6UWM.js} +1 -1
- package/dist/{branding-DVXBGVDH.js → branding-TZIVBXQ5.js} +2 -2
- package/dist/{capability-cards-DN5UIKVN.js → capability-cards-FIEIK5PH.js} +4 -4
- package/dist/{capacity-monitor-ZG5GGFR2.js → capacity-monitor-7RIEIQBE.js} +21 -20
- package/dist/{catchup-brief-D6HH6DWS.js → catchup-brief-ZYYRDIKY.js} +23 -22
- package/dist/{chunk-P5HIWY2E.js → chunk-2JFGW62N.js} +1 -1
- package/dist/{chunk-USSB56WK.js → chunk-2T6WDJV3.js} +1 -1
- package/dist/{chunk-EUS4QUKP.js → chunk-2UWYIZEN.js} +1 -1
- package/dist/{chunk-4ZCD2UWW.js → chunk-3EUIJF5U.js} +3 -3
- package/dist/{chunk-CWXVH7WV.js → chunk-3NVTC4RA.js} +1 -1
- package/dist/{chunk-KGWRTRKC.js → chunk-42GV6K3X.js} +1 -1
- package/dist/chunk-4EI5AHHR.js +37 -0
- package/dist/{chunk-HV4KESRY.js → chunk-4I2BWW2Z.js} +1 -1
- package/dist/{chunk-YTCFACP4.js → chunk-4KNPF6RI.js} +276 -169
- package/dist/{chunk-H6BV5TKD.js → chunk-4XIHTE2R.js} +6 -6
- package/dist/{sweep-budget-WB2FKPYN.js → chunk-4YXTASUU.js} +13 -3
- package/dist/{chunk-2KZNGDSW.js → chunk-54XBWX2U.js} +1 -1
- package/dist/{chunk-FPFPLPUY.js → chunk-5BQMRB3E.js} +5 -5
- package/dist/{chunk-K7KFGDWF.js → chunk-5IGNNFST.js} +1 -1
- package/dist/{chunk-QDGZJ653.js → chunk-5SXVPXTN.js} +4 -4
- package/dist/{chunk-RHWZUUS4.js → chunk-62F3CDXB.js} +5 -5
- package/dist/{chunk-XHK3FS3W.js → chunk-6777GKUZ.js} +1 -1
- package/dist/{chunk-EQHQF5IM.js → chunk-6L6SXVTP.js} +32 -16
- package/dist/{chunk-3SW4OEHB.js → chunk-6NUCIIDR.js} +1 -1
- package/dist/{chunk-RAXVPNMR.js → chunk-7IGFMHNK.js} +1 -1
- package/dist/{chunk-F5O7V7UK.js → chunk-A7UEJSDR.js} +1 -1
- package/dist/{chunk-MOPUCPXK.js → chunk-APRVAUOR.js} +1 -0
- package/dist/{chunk-2WAVZ5UJ.js → chunk-AQ2TNSJ3.js} +1 -1
- package/dist/{chunk-WMESXBJM.js → chunk-BEDUCD7I.js} +127 -30
- package/dist/{chunk-7V4JADD6.js → chunk-BPQBKR2V.js} +3 -3
- package/dist/{chunk-Z6RSN7KS.js → chunk-BUP7NUPL.js} +30 -8
- package/dist/{chunk-TLT7NZCW.js → chunk-BW74OUFZ.js} +3 -3
- package/dist/{chunk-VPZHJCKW.js → chunk-CHFWJS7F.js} +2 -2
- package/dist/{chunk-UEA3LXOB.js → chunk-CITV2SCP.js} +1 -1
- package/dist/{chunk-VSRPS3J7.js → chunk-CNLY3TLP.js} +13 -13
- package/dist/{chunk-L2R3LN2P.js → chunk-DF2VTPZE.js} +1 -1
- package/dist/{chunk-PPCDBE6Z.js → chunk-DKJFW26S.js} +1 -1
- package/dist/{chunk-SQKXKV2Y.js → chunk-DROR4FYJ.js} +2 -2
- package/dist/{chunk-G5T6KDG4.js → chunk-DWECQ5VL.js} +1 -1
- package/dist/{chunk-I26FWCSP.js → chunk-EA47YVXG.js} +183 -2
- package/dist/{chunk-N7QJKQMX.js → chunk-EBZAEAY3.js} +11 -11
- package/dist/{chunk-KW2SD2FL.js → chunk-EQY2SN2P.js} +2 -2
- package/dist/{chunk-VRAQTFD6.js → chunk-EUUYJO3E.js} +1 -1
- package/dist/{chunk-LU2FALL6.js → chunk-FM5QLDG6.js} +28 -4
- package/dist/chunk-FQOLG74E.js +144 -0
- package/dist/chunk-FUQ2OSDV.js +129 -0
- package/dist/{chunk-4VSV5P4D.js → chunk-FWR3BLNB.js} +13 -5
- package/dist/{chunk-QOO5RW3K.js → chunk-GMXNBQC3.js} +9 -3
- package/dist/{chunk-AJYCFKJR.js → chunk-GWVOVGOB.js} +1 -1
- package/dist/{chunk-WZHZCDDO.js → chunk-GXPJELD7.js} +21 -0
- package/dist/{chunk-UUEKJDK6.js → chunk-HHG4YUJ5.js} +2 -2
- package/dist/{chunk-QRYVCDWS.js → chunk-HSUP2KKZ.js} +2 -2
- package/dist/{chunk-H7I47RS5.js → chunk-IBTKZEK4.js} +115 -3
- package/dist/{chunk-GG5NDQNN.js → chunk-IGSX4CFJ.js} +14 -20
- package/dist/{chunk-PQIDGXSG.js → chunk-IHIT5RCW.js} +2 -2
- package/dist/{chunk-KQ4Z2G24.js → chunk-JKOEOHOD.js} +32 -1
- package/dist/{chunk-GDIJE6D7.js → chunk-JPP2NKNI.js} +1 -1
- package/dist/{chunk-UP75Z5X7.js → chunk-JZMFWFNF.js} +154 -73
- package/dist/{chunk-F27XXN6C.js → chunk-KOFH2Z3S.js} +1 -1
- package/dist/{chunk-CNVBKDEY.js → chunk-L35RC5GC.js} +699 -383
- package/dist/{chunk-L4A5DL6Z.js → chunk-L4PWTC3Q.js} +3 -3
- package/dist/{chunk-KADUJ7PE.js → chunk-L5L3WWNM.js} +59 -20
- package/dist/{chunk-7CTRGNLW.js → chunk-LAGMVQUT.js} +2 -2
- package/dist/{chunk-UNXQBELK.js → chunk-LLJU2CZQ.js} +1 -1
- package/dist/chunk-LUQ57SRM.js +127 -0
- package/dist/{chunk-EV46QTD3.js → chunk-LWEQXRYE.js} +1 -1
- package/dist/{chunk-JLZ4RYSD.js → chunk-MBMOYDUD.js} +2 -2
- package/dist/{chunk-X33NYQYJ.js → chunk-MJHXOVM2.js} +2 -2
- package/dist/{chunk-4J4PMPXZ.js → chunk-MKF7VY7H.js} +1 -1
- package/dist/{chunk-MR6LHP4F.js → chunk-N3OZA3HT.js} +1 -1
- package/dist/{chunk-BUCXNV32.js → chunk-NGRY2UKC.js} +1 -1
- package/dist/{chunk-O5V57XYE.js → chunk-NSPHWA4W.js} +1 -1
- package/dist/{chunk-5ERDIOV3.js → chunk-NVCFWR5I.js} +2 -2
- package/dist/{chunk-6WQ3NNCE.js → chunk-NYVO4O24.js} +3 -3
- package/dist/{chunk-PDWS3E22.js → chunk-OBADBSW4.js} +6 -6
- package/dist/{chunk-NX5INHHG.js → chunk-ODATAUFD.js} +1 -1
- package/dist/{chunk-G4RGKBCA.js → chunk-OIEWB4JN.js} +13 -3
- package/dist/{chunk-OZEBAGKR.js → chunk-ONZZF5EQ.js} +31 -13
- package/dist/chunk-PDTJHPN3.js +285 -0
- package/dist/{chunk-6XWTQUO4.js → chunk-PHBE5QNB.js} +19 -8
- package/dist/chunk-PLFLQLF4.js +76 -0
- package/dist/{chunk-6CH3TPHR.js → chunk-PT2JRHTH.js} +4 -4
- package/dist/{chunk-JMYHW3AL.js → chunk-PTVLXA3D.js} +2 -2
- package/dist/chunk-PWRC5XZO.js +161 -0
- package/dist/{chunk-ASAFVDVR.js → chunk-Q3CZKCCC.js} +1 -1
- package/dist/{chunk-C5QAPURN.js → chunk-Q6LDI5JN.js} +1 -1
- package/dist/{chunk-5TY4FPH6.js → chunk-QCP3KEPZ.js} +1 -1
- package/dist/{chunk-JPUZPAAF.js → chunk-REIDGEAX.js} +3 -3
- package/dist/{chunk-YCANDMI2.js → chunk-RGJWTSXB.js} +1 -1
- package/dist/{chunk-CE7F6RHG.js → chunk-RT6HMUJF.js} +11 -11
- package/dist/{chunk-HJ447YER.js → chunk-S3FIQCSM.js} +14 -6
- package/dist/{chunk-MKYFAKDW.js → chunk-SHMDFBG7.js} +4 -4
- package/dist/chunk-SNJLKMCY.js +50 -0
- package/dist/{chunk-V3EEVY4L.js → chunk-ST4LSFXH.js} +1 -1
- package/dist/{chunk-PWUFMX75.js → chunk-T4DCS5J5.js} +11 -5
- package/dist/{chunk-R2NN3JKH.js → chunk-TKUIHTQF.js} +5 -5
- package/dist/{chunk-JGIPOUIK.js → chunk-TN4M6SRF.js} +3 -3
- package/dist/{chunk-OTF44GXL.js → chunk-TSP6GPAK.js} +2 -2
- package/dist/{chunk-XZXBB3TN.js → chunk-UE6JIJOO.js} +2 -2
- package/dist/{chunk-NN2B2QKU.js → chunk-UVMYLXOD.js} +1 -1
- package/dist/{chunk-S7QUM2UK.js → chunk-UVY7DMQN.js} +54 -2
- package/dist/{chunk-QYZJHTNE.js → chunk-VCOLV4CR.js} +9 -9
- package/dist/{chunk-KWZMQACA.js → chunk-VL2ARD7K.js} +3 -3
- package/dist/{chunk-2ZYO73KO.js → chunk-VXBJHPLN.js} +1 -1
- package/dist/{chunk-QQ4E2RYW.js → chunk-WIXWS55C.js} +10 -10
- package/dist/{chunk-IBYL4DHM.js → chunk-X4Z5DPOC.js} +22 -2
- package/dist/{chunk-UUQBZPJJ.js → chunk-X64GUUL4.js} +1 -1
- package/dist/{chunk-OLMQ4UOF.js → chunk-XIUDWV5X.js} +209 -20
- package/dist/{chunk-MZM6EJCU.js → chunk-XL24STS2.js} +4 -4
- package/dist/{chunk-JTBIS4R5.js → chunk-XO4V4HFL.js} +1 -1
- package/dist/{chunk-4CMVFVFC.js → chunk-XOC3Y4TF.js} +4 -4
- package/dist/{chunk-RACAOE2Z.js → chunk-XOMKTUZI.js} +9 -9
- package/dist/{chunk-TTCUG2CF.js → chunk-YEHLGSMN.js} +2 -2
- package/dist/{chunk-HA5R6USD.js → chunk-YHESKZNJ.js} +1 -1
- package/dist/{chunk-AOHXREB7.js → chunk-ZA7WHPN6.js} +189 -70
- package/dist/{chunk-GJ26DULE.js → chunk-ZJSP736C.js} +2 -2
- package/dist/{chunk-GBTTBXAF.js → chunk-ZOBWQPIU.js} +6 -6
- package/dist/{chunk-NXUSDL37.js → chunk-ZVHKVVKG.js} +1 -1
- package/dist/{chunk-X2Q5NLUL.js → chunk-ZVIZQSPE.js} +1 -1
- package/dist/{chunk-HAF2DJYV.js → chunk-ZW2XGLWY.js} +3 -3
- package/dist/{cleanup-graph-garbage-XWUFAMFO.js → cleanup-graph-garbage-JAHNAACN.js} +8 -8
- package/dist/cloud-sync-shutdown-3CXZBBZJ.js +44 -0
- package/dist/cloud-sync-state-DJRZORFI.js +17 -0
- package/dist/{co-activation-ZCHPLLP6.js → co-activation-PGWGMP4X.js} +4 -4
- package/dist/{co-occurrence-KG3LKALN.js → co-occurrence-X7FI7K6K.js} +6 -6
- package/dist/{code-context-index-WSOJQ72R.js → code-context-index-5PY2MI55.js} +8 -4
- package/dist/{conversation-entity-extractor-D3EFTLT4.js → conversation-entity-extractor-FPAMTL3C.js} +2 -2
- package/dist/{conversation-wiki-populator-WQN3IUU6.js → conversation-wiki-populator-U2FKQEWH.js} +1 -1
- package/dist/{crdt-sync-4PFGPZXV.js → crdt-sync-ZIRKX6ZT.js} +1 -1
- package/dist/{crm-webhook-II7Z45Q6.js → crm-webhook-WJ2TNNNX.js} +2 -2
- package/dist/{cto-delegation-gate-JWWOJPNC.js → cto-delegation-gate-YYRGGBU2.js} +19 -18
- package/dist/{daemon-auth-3FEAHFWC.js → daemon-auth-GNT27BDR.js} +2 -2
- package/dist/daemon-health-log-OBHLBKVW.js +15 -0
- package/dist/{daemon-orchestration-FX4XZDR5.js → daemon-orchestration-LSJELXQY.js} +24 -23
- package/dist/{daemon-ready-4JTSFKAY.js → daemon-ready-MFLBXJ5J.js} +1 -1
- package/dist/{daemon-ready-signal-LPAZWQOV.js → daemon-ready-signal-TVCPSG7J.js} +3 -1
- package/dist/{daemon-restart-circuit-breaker-PEGEIP6H.js → daemon-restart-circuit-breaker-5V6B6NLS.js} +1 -1
- package/dist/{daemon-restart-report-F3P5AQS4.js → daemon-restart-report-QDRGKLL6.js} +1 -1
- package/dist/{db-restore-events-MQ2DBGEQ.js → db-restore-events-QYGUSP7Q.js} +1 -1
- package/dist/db-verify-stamp-YTRPEKZ5.js +15 -0
- package/dist/{doc-graph-extractor-F6ODFIID.js → doc-graph-extractor-M72TUSHE.js} +6 -6
- package/dist/{documents-23WX2FPQ.js → documents-V2TR7SKO.js} +10 -10
- package/dist/{dreaming-NWD22UQ5.js → dreaming-K2AUXA6A.js} +20 -19
- package/dist/{exe-drift-CW72FBGE.js → exe-drift-APFIZLEK.js} +5 -5
- package/dist/{exe-export-AUJ7CV7G.js → exe-export-IYSJCRIU.js} +9 -9
- package/dist/{exe-import-JX4I52VE.js → exe-import-EGXUCUPY.js} +9 -9
- package/dist/{exe-key-2N6LY2BU.js → exe-key-ZWPFMA6Z.js} +91 -89
- package/dist/{exe-org-X4CSNCKS.js → exe-org-HP552ZGP.js} +2 -2
- package/dist/{exe-snapshot-XZ7FVCYZ.js → exe-snapshot-GCKN6LOM.js} +23 -22
- package/dist/fast-db-init-NBMBQ7MC.js +9 -0
- package/dist/{founder-context-7L3CFPYN.js → founder-context-A2BARML6.js} +3 -3
- package/dist/gateway/index.js +13 -13
- package/dist/{git-staleness-CI2R4QOJ.js → git-staleness-OEGYSCTM.js} +4 -4
- package/dist/{global-procedures-XQX3LUH6.js → global-procedures-QJ2XVVLH.js} +6 -6
- package/dist/{graph-auto-extract-OURWMGBS.js → graph-auto-extract-NBVCQVWC.js} +6 -6
- package/dist/{graph-rag-JZZAB7PC.js → graph-rag-WAK2BRJH.js} +2 -2
- package/dist/{hook-integrity-XY47IM7G.js → hook-integrity-FYU2AFKC.js} +1 -1
- package/dist/{hook-prefetch-PHRRKY4C.js → hook-prefetch-EM7B2UR3.js} +20 -19
- package/dist/hooks/bug-report-worker.js +24 -23
- package/dist/hooks/codex-stop-task-finalizer.js +43 -25
- package/dist/hooks/commit-complete.js +23 -22
- package/dist/hooks/error-recall.js +13 -13
- package/dist/hooks/exe-heartbeat-hook.js +6 -6
- package/dist/hooks/ingest-worker.js +7 -7
- package/dist/hooks/ingest.js +22 -22
- package/dist/hooks/instructions-loaded.js +7 -7
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +7 -7
- package/dist/hooks/post-compact.js +22 -21
- package/dist/hooks/post-tool-combined.js +24 -11
- package/dist/hooks/pre-compact.js +23 -22
- package/dist/hooks/pre-tool-use.js +28 -27
- package/dist/hooks/prompt-submit.js +54 -41
- package/dist/hooks/session-end.js +28 -27
- package/dist/hooks/session-start.js +17 -17
- package/dist/hooks/stop.js +29 -28
- package/dist/hooks/subagent-stop.js +52 -21
- package/dist/hooks/summary-worker.js +28 -27
- package/dist/index.js +31 -30
- package/dist/{installer-L7EVH5U5.js → installer-CFMBHHKM.js} +8 -8
- package/dist/{installer-JND3RJ6Q.js → installer-GGCNURPW.js} +8 -8
- package/dist/{installer-G3JAO3NT.js → installer-H2ZKIXNP.js} +8 -8
- package/dist/{intercom-queue-ZFEQALR3.js → intercom-queue-WHU3NA4Q.js} +19 -18
- package/dist/{key-backup-status-LOSMVATJ.js → key-backup-status-WECD4KLS.js} +1 -1
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +18 -16
- package/dist/lib/config.js +1 -1
- package/dist/lib/consolidation.js +9 -9
- package/dist/lib/database.js +14 -6
- package/dist/{db-backup-W2QFSYQC.js → lib/db-backup.js} +16 -4
- package/dist/lib/db-checkpoint-worker.js +57 -0
- package/dist/lib/db-daemon-client.js +4 -4
- package/dist/lib/db-write-worker-client.js +17 -0
- package/dist/lib/db-write-worker.js +216 -0
- package/dist/lib/db.js +14 -6
- package/dist/lib/device-registry.js +2 -2
- package/dist/lib/embed-worker.js +1 -1
- package/dist/lib/embedder.js +4 -4
- package/dist/lib/employee-templates.js +7 -7
- package/dist/lib/employees.js +4 -4
- package/dist/lib/exe-daemon-client.js +3 -3
- package/dist/lib/exe-daemon.js +1168 -398
- package/dist/lib/hybrid-search.js +7 -7
- package/dist/lib/identity.js +4 -4
- package/dist/lib/license.js +3 -3
- package/dist/lib/messaging.js +20 -19
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +5 -5
- package/dist/lib/schedules.js +7 -7
- package/dist/lib/session-registry.js +6 -6
- package/dist/lib/skill-learning.js +8 -8
- package/dist/lib/status-brief.js +3 -3
- package/dist/lib/store.js +6 -6
- package/dist/lib/task-router.js +5 -5
- package/dist/lib/tasks.js +21 -20
- package/dist/lib/tmux-routing.js +19 -18
- package/dist/lib/token-spend.js +5 -5
- package/dist/{license-gate-QTRQHV4F.js → license-gate-FU5VUYE7.js} +4 -4
- package/dist/{license-sync-N3UJFWAW.js → license-sync-BL63T3PA.js} +3 -3
- package/dist/mcp/register-tools.js +88 -86
- package/dist/mcp/server.js +90 -88
- package/dist/mcp/tools/complete-reminder.js +6 -6
- package/dist/mcp/tools/create-reminder.js +6 -6
- package/dist/mcp/tools/create-task.js +23 -22
- package/dist/mcp/tools/deactivate-behavior.js +9 -9
- package/dist/mcp/tools/list-reminders.js +6 -6
- package/dist/mcp/tools/list-tasks.js +23 -22
- package/dist/mcp/tools/send-message.js +22 -21
- package/dist/mcp/tools/update-task.js +22 -21
- package/dist/{mcp-http-config-BDL36JZ3.js → mcp-http-config-6X6AP2CK.js} +9 -7
- package/dist/{mcp-port-config-6HYY6J7K.js → mcp-port-config-PA3W3BJK.js} +7 -1
- package/dist/{mcp-session-identity-T7H2EKFQ.js → mcp-session-identity-5OVODESZ.js} +19 -18
- package/dist/mcp-session-persist-PS7BIG44.js +62 -0
- package/dist/mcp-stale-flag-ZM23XRSJ.js +11 -0
- package/dist/{memory-cards-ZRDW7QBX.js → memory-cards-H3BGNJXL.js} +6 -6
- package/dist/{memory-graph-extractor-QLXDMHRS.js → memory-graph-extractor-AQRAE5TJ.js} +7 -7
- package/dist/{memory-poisoning-defense-HJTXYCWH.js → memory-poisoning-defense-E2V5XSTO.js} +4 -4
- package/dist/{memory-pressure-watchdog-HN5X7AVN.js → memory-pressure-watchdog-BWSUJVL6.js} +20 -19
- package/dist/{memory-queue-2UOOF27L.js → memory-queue-4IS42XOE.js} +2 -2
- package/dist/{memory-queue-client-O5U6F6XP.js → memory-queue-client-R7PJ7IOE.js} +5 -5
- package/dist/{memory-reflection-WVNFBJAA.js → memory-reflection-PAA55BXW.js} +4 -4
- package/dist/{monitor-grants-E3ELDEWD.js → monitor-grants-7XHXOANT.js} +2 -2
- package/dist/{notification-ledger-SZEPGJQ7.js → notification-ledger-CX6OIZ7A.js} +20 -19
- package/dist/{notifications-4UT53CDG.js → notifications-R4HDUWL2.js} +19 -18
- package/dist/{orchestration-events-WV4NWKZH.js → orchestration-events-W6LW4AD2.js} +5 -5
- package/dist/{orchestration-phase-AWBXPO52.js → orchestration-phase-JX4TWS6C.js} +2 -2
- package/dist/{orchestrator-UAC3RW2T.js → orchestrator-3W4ZKNEX.js} +21 -20
- package/dist/{pipeline-router-LM53NMWJ.js → pipeline-router-E4EZVRQQ.js} +5 -5
- package/dist/{plan-limits-2FEY2GOS.js → plan-limits-YSDBXZYI.js} +7 -7
- package/dist/{platform-procedures-X5DFJFV7.js → platform-procedures-VDW2R65H.js} +1 -1
- package/dist/{project-boot-4NUH5FRU.js → project-boot-MRITBQQP.js} +1 -1
- package/dist/{projection-worker-FZ7YSN3G.js → projection-worker-QQW2RVTN.js} +4 -4
- package/dist/{prospective-memory-6D2ASWM3.js → prospective-memory-NIZWIZM4.js} +4 -4
- package/dist/{push-notifications-U6FIBQRW.js → push-notifications-A46ZXS2Q.js} +2 -2
- package/dist/{reranker-GYYRPANK.js → reranker-3C6RUROG.js} +2 -2
- package/dist/{retrieval-health-4Z242P3B.js → retrieval-health-HALV3M2U.js} +1 -1
- package/dist/review-polling-MOJAI3BZ.js +55 -0
- package/dist/runtime/index.js +27 -26
- package/dist/{session-events-O3BV56ZX.js → session-events-NTCFPCJV.js} +20 -19
- package/dist/{session-kill-telemetry-AELE4JDK.js → session-kill-telemetry-NFKJOQKH.js} +20 -19
- package/dist/{session-scope-5EAPUT45.js → session-scope-BINQT6W4.js} +19 -18
- package/dist/{setup-wizard-NB6R4QVS.js → setup-wizard-PUA24CMQ.js} +3 -3
- package/dist/{shard-manager-35PWFR3B.js → shard-manager-QFUFI6EA.js} +2 -2
- package/dist/{skill-refinement-DVSYXBBP.js → skill-refinement-ABFBHUVE.js} +5 -5
- package/dist/{stack-update-ATCJFOEK.js → stack-update-CLUGX5NZ.js} +4 -4
- package/dist/{steward-gate-3GQ5XKMJ.js → steward-gate-EMKM4LRS.js} +5 -5
- package/dist/{support-inbox-4L62P4EP.js → support-inbox-VCJOV6II.js} +4 -4
- package/dist/sweep-budget-74FIUNX3.js +17 -0
- package/dist/{task-enforcement-IPIZX2MM.js → task-enforcement-FHMDUP7M.js} +20 -19
- package/dist/{task-scope-FOIW25HR.js → task-scope-7ZV6UP7R.js} +19 -18
- package/dist/{tasks-crud-HBDKE6C5.js → tasks-crud-67ZINIOW.js} +21 -18
- package/dist/{tasks-notify-G2U2U2YA.js → tasks-notify-KWCVQCUS.js} +20 -19
- package/dist/{tasks-review-27SFX5XN.js → tasks-review-KHGYJ2Y3.js} +19 -18
- package/dist/{telemetry-upload-ZOXHRWR5.js → telemetry-upload-44DD2QNW.js} +9 -9
- package/dist/{token-budget-5Y4YPDO3.js → token-budget-HM2EUB4W.js} +5 -5
- package/dist/{tool-capability-index-VYF5GNJ2.js → tool-capability-index-MUJXMJZQ.js} +1 -1
- package/dist/{tool-telemetry-KBXSBDTK.js → tool-telemetry-S6LJIL7X.js} +1 -1
- package/dist/tui/App.js +33 -32
- package/dist/{tui-data-NLFMBIQI.js → tui-data-75HBG2OG.js} +19 -18
- package/dist/{update-support-UVUSZG7R.js → update-support-FXOSSAQ2.js} +16 -16
- package/dist/{worker-gate-3KUBAU32.js → worker-gate-F7M24XHO.js} +2 -2
- package/dist/{workflow-engine-YITHXZR5.js → workflow-engine-LVNVV2TH.js} +2 -2
- package/dist/{worktree-LL62PLQB.js → worktree-IAKAVD7N.js} +8 -6
- package/dist/{worktree-sweep-WTK3MTKH.js → worktree-sweep-B4MKSCKY.js} +7 -7
- package/package.json +3 -2
- package/release-notes.json +63 -23
- package/dist/chunk-GIBYNT6W.js +0 -23
- package/dist/fast-db-init-4CWHSOOR.js +0 -7
- package/dist/review-polling-HXAFJZDA.js +0 -138
- package/dist/{chunk-MGGOSFCR.js → chunk-2CCMWJXP.js} +0 -0
- package/dist/{chunk-A4DVMPYB.js → chunk-7UMCQQWS.js} +3 -3
- /package/dist/{chunk-H73TUI4Y.js → chunk-BBMTVAE3.js} +0 -0
- /package/dist/{chunk-JRM4TAGS.js → chunk-DN6HP26X.js} +0 -0
- /package/dist/{chunk-KP3U5QGJ.js → chunk-EKWFUXLY.js} +0 -0
- /package/dist/{chunk-QIFYLIUF.js → chunk-HP7TB3P2.js} +0 -0
- /package/dist/{chunk-NBZL5CGA.js → chunk-MRFM6A4G.js} +0 -0
- /package/dist/{core-memory-GAC6EWOQ.js → core-memory-TP43DUIL.js} +0 -0
- /package/dist/{entity-boost-NT6UO2Z3.js → entity-boost-2Q4B3H3T.js} +0 -0
- /package/dist/{message-queue-client-4EOQRUXW.js → message-queue-client-KJGHJAPD.js} +0 -0
- /package/dist/{oauth-server-67YBDP32.js → oauth-server-EV2YHI5J.js} +0 -0
- /package/dist/{webhook-pipe-LEXMUQ5B.js → webhook-pipe-CQXXTB2G.js} +0 -0
- /package/dist/{wiki-acl-74BLWG6J.js → wiki-acl-3MD443NV.js} +0 -0
- /package/dist/{wiki-client-EAN7F5LV.js → wiki-client-TVE6MPKC.js} +0 -0
package/dist/bin/exe-boot.js
CHANGED
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
generateStatusBrief
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-BEDUCD7I.js";
|
|
5
|
+
import {
|
|
6
|
+
countTieredReviewReceipts
|
|
7
|
+
} from "../chunk-PDTJHPN3.js";
|
|
8
|
+
import {
|
|
9
|
+
resolveCloudSyncStatus
|
|
10
|
+
} from "../chunk-FUQ2OSDV.js";
|
|
11
|
+
import {
|
|
12
|
+
querySubagentCheckpointCounts
|
|
13
|
+
} from "../chunk-FQOLG74E.js";
|
|
5
14
|
import {
|
|
6
15
|
DEFAULT_EXE,
|
|
7
16
|
getSessionPrompt
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
17
|
+
} from "../chunk-6777GKUZ.js";
|
|
18
|
+
import "../chunk-ZJSP736C.js";
|
|
19
|
+
import "../chunk-6L6SXVTP.js";
|
|
11
20
|
import {
|
|
12
21
|
initStore
|
|
13
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-CNLY3TLP.js";
|
|
14
23
|
import "../chunk-CHCA3ZM2.js";
|
|
15
24
|
import "../chunk-OTVEIJUQ.js";
|
|
16
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-PHBE5QNB.js";
|
|
17
26
|
import {
|
|
18
27
|
cleanupSessionMarkers,
|
|
19
28
|
writeActiveAgent
|
|
20
|
-
} from "../chunk-
|
|
29
|
+
} from "../chunk-NVCFWR5I.js";
|
|
21
30
|
import "../chunk-4QCFFW2H.js";
|
|
22
31
|
import {
|
|
23
32
|
cleanupOldNotifications,
|
|
@@ -29,32 +38,33 @@ import {
|
|
|
29
38
|
resolveExeSession,
|
|
30
39
|
sessionScopeFilter,
|
|
31
40
|
updateTaskStatus
|
|
32
|
-
} from "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import "../chunk-
|
|
41
|
+
} from "../chunk-JZMFWFNF.js";
|
|
42
|
+
import "../chunk-DF2VTPZE.js";
|
|
43
|
+
import "../chunk-EA47YVXG.js";
|
|
44
|
+
import "../chunk-LWEQXRYE.js";
|
|
36
45
|
import "../chunk-E23LNUWJ.js";
|
|
37
46
|
import "../chunk-4JERP7NT.js";
|
|
38
47
|
import "../chunk-EIKATSE4.js";
|
|
39
48
|
import {
|
|
40
49
|
pruneStaleSessions,
|
|
41
50
|
registerSession
|
|
42
|
-
} from "../chunk-
|
|
51
|
+
} from "../chunk-42GV6K3X.js";
|
|
43
52
|
import "../chunk-AD2VCHSS.js";
|
|
44
53
|
import "../chunk-WOYADZF5.js";
|
|
45
54
|
import "../chunk-SKGMF2SO.js";
|
|
46
|
-
import "../chunk-
|
|
47
|
-
import "../chunk-
|
|
55
|
+
import "../chunk-AQ2TNSJ3.js";
|
|
56
|
+
import "../chunk-YHESKZNJ.js";
|
|
48
57
|
import "../chunk-AM7S2TY6.js";
|
|
49
|
-
import "../chunk-
|
|
58
|
+
import "../chunk-TN4M6SRF.js";
|
|
50
59
|
import "../chunk-GWDSB25T.js";
|
|
60
|
+
import "../chunk-4YXTASUU.js";
|
|
51
61
|
import "../chunk-CVYC6DUW.js";
|
|
52
|
-
import "../chunk-
|
|
53
|
-
import "../chunk-
|
|
62
|
+
import "../chunk-MBMOYDUD.js";
|
|
63
|
+
import "../chunk-IBTKZEK4.js";
|
|
54
64
|
import "../chunk-OPU3NYOO.js";
|
|
55
|
-
import "../chunk-
|
|
65
|
+
import "../chunk-OIEWB4JN.js";
|
|
56
66
|
import "../chunk-AFNRE2RV.js";
|
|
57
|
-
import "../chunk-
|
|
67
|
+
import "../chunk-ZVIZQSPE.js";
|
|
58
68
|
import "../chunk-NLEW62VC.js";
|
|
59
69
|
import "../chunk-HYZV25LY.js";
|
|
60
70
|
import "../chunk-GJV3WDWM.js";
|
|
@@ -66,23 +76,23 @@ import {
|
|
|
66
76
|
isCoordinatorName,
|
|
67
77
|
loadEmployees,
|
|
68
78
|
saveEmployees
|
|
69
|
-
} from "../chunk-
|
|
79
|
+
} from "../chunk-ZA7WHPN6.js";
|
|
70
80
|
import "../chunk-2I23RPSI.js";
|
|
71
|
-
import "../chunk-
|
|
81
|
+
import "../chunk-XIUDWV5X.js";
|
|
72
82
|
import "../chunk-PNQDP3OA.js";
|
|
73
|
-
import "../chunk-H73TUI4Y.js";
|
|
74
83
|
import "../chunk-7HLWBYH7.js";
|
|
84
|
+
import "../chunk-BBMTVAE3.js";
|
|
75
85
|
import "../chunk-FXU7JOXK.js";
|
|
76
|
-
import "../chunk-
|
|
86
|
+
import "../chunk-NSPHWA4W.js";
|
|
77
87
|
import "../chunk-QWVXN224.js";
|
|
78
88
|
import "../chunk-NGP6LSV2.js";
|
|
79
|
-
import "../chunk-
|
|
80
|
-
import "../chunk-
|
|
89
|
+
import "../chunk-IHIT5RCW.js";
|
|
90
|
+
import "../chunk-5IGNNFST.js";
|
|
81
91
|
import {
|
|
82
92
|
EXE_AI_DIR,
|
|
83
93
|
loadConfig,
|
|
84
94
|
loadConfigSync
|
|
85
|
-
} from "../chunk-
|
|
95
|
+
} from "../chunk-GXPJELD7.js";
|
|
86
96
|
import "../chunk-BYTDMAGB.js";
|
|
87
97
|
import {
|
|
88
98
|
isMainModule
|
|
@@ -128,11 +138,25 @@ async function boot(options) {
|
|
|
128
138
|
}
|
|
129
139
|
const coordinatorEmployee = getCoordinatorEmployee(employees) ?? DEFAULT_EXE;
|
|
130
140
|
const coordinatorName = coordinatorEmployee.name;
|
|
141
|
+
let bootClient = null;
|
|
142
|
+
let briefIncompleteReason;
|
|
131
143
|
try {
|
|
132
|
-
const { fastDbInit } = await import("../fast-db-init-
|
|
133
|
-
await fastDbInit();
|
|
134
|
-
|
|
135
|
-
|
|
144
|
+
const { fastDbInit, isNoopFastDbClient } = await import("../fast-db-init-NBMBQ7MC.js");
|
|
145
|
+
const client2 = await fastDbInit({ daemonOnly: false, caller: "cli" });
|
|
146
|
+
if (isNoopFastDbClient(client2)) {
|
|
147
|
+
briefIncompleteReason = "Daemon unavailable, brief incomplete";
|
|
148
|
+
process.stderr.write("[exe-boot] daemon unavailable; rendering an incomplete brief instead of silently returning empty DB data.\n");
|
|
149
|
+
}
|
|
150
|
+
bootClient = client2;
|
|
151
|
+
} catch (err) {
|
|
152
|
+
try {
|
|
153
|
+
await initStore();
|
|
154
|
+
bootClient = getClient();
|
|
155
|
+
} catch (initErr) {
|
|
156
|
+
briefIncompleteReason = `Daemon unavailable, brief incomplete (${initErr instanceof Error ? initErr.message : String(initErr)})`;
|
|
157
|
+
process.stderr.write(`[exe-boot] DB init failed; rendering incomplete brief: ${initErr instanceof Error ? initErr.message : String(initErr)}
|
|
158
|
+
`);
|
|
159
|
+
}
|
|
136
160
|
}
|
|
137
161
|
cleanupSessionMarkers();
|
|
138
162
|
writeActiveAgent(coordinatorName, coordinatorEmployee.role);
|
|
@@ -195,7 +219,16 @@ async function boot(options) {
|
|
|
195
219
|
pruneStaleSessions();
|
|
196
220
|
} catch {
|
|
197
221
|
}
|
|
198
|
-
|
|
222
|
+
let client;
|
|
223
|
+
try {
|
|
224
|
+
client = bootClient ?? getClient();
|
|
225
|
+
} catch (err) {
|
|
226
|
+
const { fastDbInit } = await import("../fast-db-init-NBMBQ7MC.js");
|
|
227
|
+
client = await fastDbInit({ daemonOnly: true, caller: "cli" });
|
|
228
|
+
briefIncompleteReason = `Daemon unavailable, brief incomplete (${err instanceof Error ? err.message : String(err)})`;
|
|
229
|
+
process.stderr.write(`[exe-boot] ${briefIncompleteReason}
|
|
230
|
+
`);
|
|
231
|
+
}
|
|
199
232
|
const briefData = {
|
|
200
233
|
pendingReviews: [],
|
|
201
234
|
globalTasks: [],
|
|
@@ -208,7 +241,8 @@ async function boot(options) {
|
|
|
208
241
|
exeSession: resolveExeSession() ?? void 0,
|
|
209
242
|
plan: licensePlan,
|
|
210
243
|
employeeLimit,
|
|
211
|
-
planChangeNotice
|
|
244
|
+
planChangeNotice,
|
|
245
|
+
...briefIncompleteReason ? { briefIncompleteReason } : {}
|
|
212
246
|
};
|
|
213
247
|
try {
|
|
214
248
|
const config = await loadConfig();
|
|
@@ -217,181 +251,183 @@ async function boot(options) {
|
|
|
217
251
|
briefData.orchestrationPhase = "phase_1_coo";
|
|
218
252
|
}
|
|
219
253
|
if (!briefOnly) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
254
|
+
if (!briefIncompleteReason) {
|
|
255
|
+
await migrateJsonNotifications();
|
|
256
|
+
await markDoneTaskNotificationsAsRead(briefData.exeSession);
|
|
257
|
+
try {
|
|
258
|
+
const orphanScope = sessionScopeFilter();
|
|
259
|
+
await client.execute({
|
|
260
|
+
sql: `DELETE FROM notifications
|
|
226
261
|
WHERE task_file IS NOT NULL
|
|
227
262
|
AND task_file NOT IN (SELECT task_file FROM tasks WHERE task_file IS NOT NULL)
|
|
228
263
|
${orphanScope.sql}`,
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
} catch {
|
|
232
|
-
}
|
|
233
|
-
try {
|
|
234
|
-
const { readdirSync: readdirSync2, readFileSync: readFs, statSync } = await import("fs");
|
|
235
|
-
const { STATUS_RE, PRIORITY_RE, TITLE_RE } = await import("../task-scanner-QEM5CO2Y.js");
|
|
236
|
-
const { getProjectName } = await import("../project-name-EWG5KAZP.js");
|
|
237
|
-
const defaultProjectName = getProjectName(process.cwd());
|
|
238
|
-
const exeDir = "exe";
|
|
239
|
-
const entries = readdirSync2(exeDir, { withFileTypes: true });
|
|
240
|
-
const employeeDirs = entries.filter((e) => e.isDirectory() && !["output", "research"].includes(e.name));
|
|
241
|
-
const taskFiles = [];
|
|
242
|
-
for (const dir of employeeDirs) {
|
|
243
|
-
const employee = dir.name;
|
|
244
|
-
const taskDir = path.join(exeDir, employee);
|
|
245
|
-
let files;
|
|
246
|
-
try {
|
|
247
|
-
files = readdirSync2(taskDir).filter((f) => f.endsWith(".md"));
|
|
248
|
-
} catch {
|
|
249
|
-
continue;
|
|
250
|
-
}
|
|
251
|
-
for (const file of files) {
|
|
252
|
-
const absPath = path.join(taskDir, file);
|
|
253
|
-
let mtimeMs = 0;
|
|
254
|
-
try {
|
|
255
|
-
mtimeMs = statSync(absPath).mtimeMs;
|
|
256
|
-
} catch {
|
|
257
|
-
continue;
|
|
258
|
-
}
|
|
259
|
-
taskFiles.push({ employee, file, taskFilePath: `exe/${employee}/${file}`, absPath, mtimeMs });
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
let dbTaskFileCount = -1;
|
|
263
|
-
try {
|
|
264
|
-
const countRes = await client.execute("SELECT COUNT(*) AS c FROM tasks WHERE task_file IS NOT NULL");
|
|
265
|
-
dbTaskFileCount = Number(countRes.rows[0]?.c ?? -1);
|
|
264
|
+
args: [...orphanScope.args]
|
|
265
|
+
});
|
|
266
266
|
} catch {
|
|
267
267
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
|
|
268
|
+
try {
|
|
269
|
+
const { readdirSync: readdirSync2, readFileSync: readFs, statSync } = await import("fs");
|
|
270
|
+
const { STATUS_RE, PRIORITY_RE, TITLE_RE } = await import("../task-scanner-QEM5CO2Y.js");
|
|
271
|
+
const { getProjectName } = await import("../project-name-EWG5KAZP.js");
|
|
272
|
+
const defaultProjectName = getProjectName(process.cwd());
|
|
273
|
+
const exeDir = "exe";
|
|
274
|
+
const entries = readdirSync2(exeDir, { withFileTypes: true });
|
|
275
|
+
const employeeDirs = entries.filter((e) => e.isDirectory() && !["output", "research"].includes(e.name));
|
|
276
|
+
const taskFiles = [];
|
|
277
|
+
for (const dir of employeeDirs) {
|
|
278
|
+
const employee = dir.name;
|
|
279
|
+
const taskDir = path.join(exeDir, employee);
|
|
280
|
+
let files;
|
|
276
281
|
try {
|
|
277
|
-
|
|
282
|
+
files = readdirSync2(taskDir).filter((f) => f.endsWith(".md"));
|
|
278
283
|
} catch {
|
|
279
284
|
continue;
|
|
280
285
|
}
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
const
|
|
317
|
-
const
|
|
318
|
-
const
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
286
|
+
for (const file of files) {
|
|
287
|
+
const absPath = path.join(taskDir, file);
|
|
288
|
+
let mtimeMs = 0;
|
|
289
|
+
try {
|
|
290
|
+
mtimeMs = statSync(absPath).mtimeMs;
|
|
291
|
+
} catch {
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
taskFiles.push({ employee, file, taskFilePath: `exe/${employee}/${file}`, absPath, mtimeMs });
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
let dbTaskFileCount = -1;
|
|
298
|
+
try {
|
|
299
|
+
const countRes = await client.execute("SELECT COUNT(*) AS c FROM tasks WHERE task_file IS NOT NULL");
|
|
300
|
+
dbTaskFileCount = Number(countRes.rows[0]?.c ?? -1);
|
|
301
|
+
} catch {
|
|
302
|
+
}
|
|
303
|
+
const signature = reconcileSignature(
|
|
304
|
+
taskFiles.map((t) => ({ path: t.taskFilePath, mtimeMs: t.mtimeMs })),
|
|
305
|
+
dbTaskFileCount
|
|
306
|
+
);
|
|
307
|
+
if (dbTaskFileCount < 0 || readReconcileStamp() !== signature) {
|
|
308
|
+
const existingByFile = await fetchTasksByFile(client, taskFiles.map((t) => t.taskFilePath));
|
|
309
|
+
for (const { employee, file, taskFilePath, absPath } of taskFiles) {
|
|
310
|
+
let content;
|
|
311
|
+
try {
|
|
312
|
+
content = readFs(absPath, "utf8");
|
|
313
|
+
} catch {
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
const statusMatch = content.match(STATUS_RE);
|
|
317
|
+
const status = statusMatch?.[1]?.toLowerCase() ?? "open";
|
|
318
|
+
const titleMatch = content.match(TITLE_RE);
|
|
319
|
+
const title = titleMatch?.[1] ?? file.replace(/\.md$/, "").replace(/-/g, " ");
|
|
320
|
+
const priMatch = content.match(PRIORITY_RE);
|
|
321
|
+
const priority = priMatch?.[1]?.toLowerCase() ?? "p1";
|
|
322
|
+
const assignedByMatch = content.match(/^\*\*Assigned by:\*\*\s*(\w+)/m);
|
|
323
|
+
const assignedBy = assignedByMatch?.[1] ?? coordinatorName;
|
|
324
|
+
const projMatch = content.match(/^\*\*Project:\*\*\s*(.+)/m);
|
|
325
|
+
const projectName = projMatch?.[1]?.trim() ?? defaultProjectName;
|
|
326
|
+
const existing = existingByFile.get(taskFilePath);
|
|
327
|
+
if (!existing) {
|
|
328
|
+
const { createTask } = await import("../lib/tasks.js");
|
|
329
|
+
await createTask({
|
|
330
|
+
title,
|
|
331
|
+
assignedTo: employee,
|
|
332
|
+
assignedBy,
|
|
333
|
+
projectName,
|
|
334
|
+
priority,
|
|
335
|
+
context: "",
|
|
336
|
+
taskFile: taskFilePath,
|
|
337
|
+
skipDispatch: true
|
|
324
338
|
});
|
|
339
|
+
} else {
|
|
340
|
+
const dbStatus = existing.status;
|
|
341
|
+
const STATUS_RANK = {
|
|
342
|
+
open: 0,
|
|
343
|
+
in_progress: 1,
|
|
344
|
+
needs_review: 2,
|
|
345
|
+
done: 2,
|
|
346
|
+
// alias for needs_review
|
|
347
|
+
closed: 3,
|
|
348
|
+
blocked: 3,
|
|
349
|
+
cancelled: 3
|
|
350
|
+
};
|
|
351
|
+
const normalizedMd = status === "done" ? "needs_review" : status;
|
|
352
|
+
const dbRank = STATUS_RANK[dbStatus] ?? 0;
|
|
353
|
+
const mdRank = STATUS_RANK[status] ?? 0;
|
|
354
|
+
const dbIsTerminal = dbStatus === "closed" || dbStatus === "blocked" || dbStatus === "cancelled";
|
|
355
|
+
if (normalizedMd !== dbStatus && mdRank > dbRank && !dbIsTerminal) {
|
|
356
|
+
await client.execute({
|
|
357
|
+
sql: "UPDATE tasks SET status = ?, updated_at = ? WHERE task_file = ?",
|
|
358
|
+
args: [normalizedMd, (/* @__PURE__ */ new Date()).toISOString(), taskFilePath]
|
|
359
|
+
});
|
|
360
|
+
}
|
|
325
361
|
}
|
|
326
362
|
}
|
|
363
|
+
writeReconcileStamp(signature);
|
|
327
364
|
}
|
|
328
|
-
|
|
365
|
+
} catch (e) {
|
|
366
|
+
process.stderr.write("[exe-boot] task reconciliation: " + (e instanceof Error ? e.message : String(e)) + "\n");
|
|
329
367
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
const staleRevScope = sessionScopeFilter();
|
|
335
|
-
await client.execute({
|
|
336
|
-
sql: `UPDATE tasks SET status = 'done', updated_at = ?
|
|
368
|
+
try {
|
|
369
|
+
const staleRevScope = sessionScopeFilter();
|
|
370
|
+
await client.execute({
|
|
371
|
+
sql: `UPDATE tasks SET status = 'done', updated_at = ?
|
|
337
372
|
WHERE (assigned_to = ? OR assigned_to = ?)
|
|
338
373
|
AND status = 'in_progress'
|
|
339
374
|
AND task_file LIKE '%review-%'
|
|
340
375
|
AND updated_at < datetime('now', '-1 hour')
|
|
341
376
|
${staleRevScope.sql}`,
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
377
|
+
args: [(/* @__PURE__ */ new Date()).toISOString(), coordinatorName, DEFAULT_COORDINATOR_TEMPLATE_NAME, ...staleRevScope.args]
|
|
378
|
+
});
|
|
379
|
+
} catch {
|
|
380
|
+
}
|
|
381
|
+
try {
|
|
382
|
+
const staleScope = sessionScopeFilter();
|
|
383
|
+
const staleReviews = await client.execute({
|
|
384
|
+
sql: `SELECT id, title, priority FROM tasks
|
|
350
385
|
WHERE status = 'needs_review'
|
|
351
386
|
AND task_file LIKE '%review-%'
|
|
352
387
|
AND updated_at < datetime('now', '-24 hours')${staleScope.sql}`,
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
388
|
+
args: [...staleScope.args]
|
|
389
|
+
});
|
|
390
|
+
for (const r of staleReviews.rows) {
|
|
391
|
+
const pri = String(r.priority).toLowerCase();
|
|
392
|
+
if (pri !== "p0") {
|
|
393
|
+
try {
|
|
394
|
+
await updateTaskStatus({ taskId: String(r.id), status: "done", skipReviewCreation: true });
|
|
395
|
+
} catch {
|
|
396
|
+
await client.execute({
|
|
397
|
+
sql: "UPDATE tasks SET status = 'done', updated_at = ? WHERE id = ?",
|
|
398
|
+
args: [(/* @__PURE__ */ new Date()).toISOString(), String(r.id)]
|
|
399
|
+
});
|
|
400
|
+
}
|
|
365
401
|
}
|
|
366
402
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
403
|
+
if (staleReviews.rows.length > 0) {
|
|
404
|
+
const p0Count = staleReviews.rows.filter((r) => String(r.priority).toLowerCase() === "p0").length;
|
|
405
|
+
const autoApprovedCount = staleReviews.rows.length - p0Count;
|
|
406
|
+
if (autoApprovedCount > 0) {
|
|
407
|
+
briefData.autoApprovedReviews = [
|
|
408
|
+
...briefData.autoApprovedReviews ?? [],
|
|
409
|
+
`${autoApprovedCount} stale review(s) auto-approved (>24h)`
|
|
410
|
+
];
|
|
411
|
+
}
|
|
376
412
|
}
|
|
413
|
+
} catch {
|
|
377
414
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
} catch {
|
|
415
|
+
try {
|
|
416
|
+
for (const reviewDirName of /* @__PURE__ */ new Set(["exe", coordinatorName])) {
|
|
417
|
+
const reviewDir = path.join(process.cwd(), "exe", reviewDirName);
|
|
418
|
+
if (existsSync(reviewDir)) {
|
|
419
|
+
for (const f of readdirSync(reviewDir)) {
|
|
420
|
+
if (f.startsWith("review-") && f.endsWith(".md")) {
|
|
421
|
+
try {
|
|
422
|
+
unlinkSync(path.join(reviewDir, f));
|
|
423
|
+
} catch {
|
|
424
|
+
}
|
|
389
425
|
}
|
|
390
426
|
}
|
|
391
427
|
}
|
|
392
428
|
}
|
|
429
|
+
} catch {
|
|
393
430
|
}
|
|
394
|
-
} catch {
|
|
395
431
|
}
|
|
396
432
|
}
|
|
397
433
|
let lastBootTimestamp = null;
|
|
@@ -532,12 +568,24 @@ async function boot(options) {
|
|
|
532
568
|
} catch {
|
|
533
569
|
}
|
|
534
570
|
})(),
|
|
571
|
+
(async () => {
|
|
572
|
+
try {
|
|
573
|
+
const { getProjectName } = await import("../project-name-EWG5KAZP.js");
|
|
574
|
+
briefData.tieredReviewReceipts = await countTieredReviewReceipts(
|
|
575
|
+
client,
|
|
576
|
+
briefData.exeSession,
|
|
577
|
+
getProjectName() || null
|
|
578
|
+
);
|
|
579
|
+
} catch {
|
|
580
|
+
briefData.tieredReviewReceipts = { autoClosed: 0, spotChecksPending: 0 };
|
|
581
|
+
}
|
|
582
|
+
})(),
|
|
535
583
|
// Global task queue — all open/in_progress/blocked tasks
|
|
536
584
|
(async () => {
|
|
537
585
|
const qScope = sessionScopeFilter(void 0, "t");
|
|
538
586
|
try {
|
|
539
587
|
const result = await client.execute({
|
|
540
|
-
sql: `SELECT t.assigned_to, t.project_name, t.title, t.priority, t.status,
|
|
588
|
+
sql: `SELECT t.id, t.assigned_to, t.project_name, t.title, t.priority, t.status,
|
|
541
589
|
b.task_file as blocker_file, t.parent_task_id, t.updated_at
|
|
542
590
|
FROM tasks t
|
|
543
591
|
LEFT JOIN tasks b ON t.blocked_by = b.id
|
|
@@ -546,6 +594,7 @@ async function boot(options) {
|
|
|
546
594
|
args: [...qScope.args]
|
|
547
595
|
});
|
|
548
596
|
briefData.globalTasks = result.rows.map((row) => ({
|
|
597
|
+
taskId: String(row.id),
|
|
549
598
|
assignedTo: String(row.assigned_to),
|
|
550
599
|
projectName: String(row.project_name),
|
|
551
600
|
title: String(row.title),
|
|
@@ -555,6 +604,18 @@ async function boot(options) {
|
|
|
555
604
|
parentTaskId: row.parent_task_id ? String(row.parent_task_id) : void 0,
|
|
556
605
|
updatedAt: row.updated_at ? String(row.updated_at) : void 0
|
|
557
606
|
}));
|
|
607
|
+
try {
|
|
608
|
+
const { getProjectName } = await import("../project-name-EWG5KAZP.js");
|
|
609
|
+
const subagentCounts = await querySubagentCheckpointCounts(client, {
|
|
610
|
+
projectName: getProjectName(process.cwd())
|
|
611
|
+
});
|
|
612
|
+
const countByTaskId = new Map(subagentCounts.map((row) => [row.taskId, row.count]));
|
|
613
|
+
for (const task of briefData.globalTasks) {
|
|
614
|
+
const count = task.taskId ? countByTaskId.get(task.taskId) : void 0;
|
|
615
|
+
if (count && task.status === "in_progress") task.subagentEventCount = count;
|
|
616
|
+
}
|
|
617
|
+
} catch {
|
|
618
|
+
}
|
|
558
619
|
} catch {
|
|
559
620
|
briefData.globalTasks = [];
|
|
560
621
|
}
|
|
@@ -934,15 +995,26 @@ async function boot(options) {
|
|
|
934
995
|
process.env.EXE_OS_DIR ?? process.env.EXE_MEM_DIR ?? path.join(os.homedir(), ".exe-os"),
|
|
935
996
|
"config.json"
|
|
936
997
|
);
|
|
998
|
+
let cloudConfigured = false;
|
|
937
999
|
if (existsSync(configPath)) {
|
|
938
1000
|
const raw = JSON.parse(readFileSync(configPath, "utf8"));
|
|
939
|
-
|
|
1001
|
+
cloudConfigured = !!(raw.cloud || raw.turso);
|
|
940
1002
|
}
|
|
1003
|
+
const cloudSync = resolveCloudSyncStatus({ cloudConfigured });
|
|
1004
|
+
briefData.cloudConnected = cloudConfigured;
|
|
1005
|
+
briefData.cloudSyncStatus = cloudSync.status;
|
|
1006
|
+
briefData.cloudLastSuccessAt = cloudSync.lastSuccessAt;
|
|
1007
|
+
briefData.cloudLastError = cloudSync.lastError;
|
|
1008
|
+
briefData.cloudPausedAt = cloudSync.pausedAt;
|
|
941
1009
|
} catch {
|
|
942
1010
|
}
|
|
943
1011
|
try {
|
|
944
1012
|
const backfillFlagPath = path.join(EXE_AI_DIR, "session-cache", "needs-backfill");
|
|
945
1013
|
const isBackfillNeeded = () => existsSync(backfillFlagPath);
|
|
1014
|
+
const { resolveEmbeddingsEnabled: resolveEmbed } = await import("../embeddings-config-FANLORDH.js");
|
|
1015
|
+
const { loadConfigSync: loadCfgForEmbed } = await import("../lib/config.js");
|
|
1016
|
+
const embedCfg = loadCfgForEmbed();
|
|
1017
|
+
const embeddingsOn = resolveEmbed(process.env.EXE_EMBEDDINGS, embedCfg);
|
|
946
1018
|
const totalResult = await client.execute({
|
|
947
1019
|
sql: "SELECT COUNT(*) as total FROM memories",
|
|
948
1020
|
args: []
|
|
@@ -1037,19 +1109,16 @@ async function boot(options) {
|
|
|
1037
1109
|
daemonRequestsServed,
|
|
1038
1110
|
totalMemories,
|
|
1039
1111
|
memoriesWithVectors,
|
|
1040
|
-
backfillRunning: nullCount > 0 && isBackfillNeeded(),
|
|
1112
|
+
backfillRunning: embeddingsOn && nullCount > 0 && isBackfillNeeded(),
|
|
1041
1113
|
recent24hTotal,
|
|
1042
|
-
recent24hWithVectors
|
|
1114
|
+
recent24hWithVectors,
|
|
1115
|
+
embeddingsEnabled: embeddingsOn
|
|
1043
1116
|
};
|
|
1044
|
-
const {
|
|
1045
|
-
const { loadConfigSync: loadCfgForEmbed } = await import("../lib/config.js");
|
|
1046
|
-
const embedCfg = loadCfgForEmbed();
|
|
1047
|
-
const embeddingsOn = resolveEmbed(process.env.EXE_EMBEDDINGS, embedCfg);
|
|
1048
|
-
const { backfillKillSwitchEnabled, countActionableNullVectors } = await import("../backfill-gate-65LSYVE5.js");
|
|
1117
|
+
const { backfillKillSwitchEnabled, countActionableNullVectors } = await import("../backfill-gate-UCBL6Q5U.js");
|
|
1049
1118
|
const actionableNullCount = nullCount > 0 ? await countActionableNullVectors(client) : 0;
|
|
1050
1119
|
if (actionableNullCount > 0 && embeddingsOn && !backfillKillSwitchEnabled()) {
|
|
1051
1120
|
try {
|
|
1052
|
-
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("../worker-gate-
|
|
1121
|
+
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("../worker-gate-F7M24XHO.js");
|
|
1053
1122
|
if (!tryAcquireWorkerSlot()) {
|
|
1054
1123
|
process.stderr.write("[exe-boot] Backfill needed but worker gate full \u2014 skipping\n");
|
|
1055
1124
|
} else {
|
|
@@ -1120,7 +1189,7 @@ async function boot(options) {
|
|
|
1120
1189
|
} catch {
|
|
1121
1190
|
}
|
|
1122
1191
|
try {
|
|
1123
|
-
const { scanUnmergedBranchesCached } = await import("../branch-hygiene-
|
|
1192
|
+
const { scanUnmergedBranchesCached } = await import("../branch-hygiene-L3RV6UWM.js");
|
|
1124
1193
|
const STALE_HOURS = 24;
|
|
1125
1194
|
const scan = await scanUnmergedBranchesCached(process.cwd(), { staleHours: STALE_HOURS });
|
|
1126
1195
|
if (scan.total > 0) {
|
|
@@ -1168,7 +1237,7 @@ async function boot(options) {
|
|
|
1168
1237
|
} catch {
|
|
1169
1238
|
}
|
|
1170
1239
|
try {
|
|
1171
|
-
const { countKillsSince } = await import("../session-kill-telemetry-
|
|
1240
|
+
const { countKillsSince } = await import("../session-kill-telemetry-NFKJOQKH.js");
|
|
1172
1241
|
const { listSessions: listRegistrySessions } = await import("../lib/session-registry.js");
|
|
1173
1242
|
const todayStart = /* @__PURE__ */ new Date();
|
|
1174
1243
|
todayStart.setHours(0, 0, 0, 0);
|
|
@@ -1214,7 +1283,7 @@ ${ccWarning}`);
|
|
|
1214
1283
|
${brief}`;
|
|
1215
1284
|
await writeFile(path.join(sessionDir, "CLAUDE.md"), claudeMdContent, "utf-8");
|
|
1216
1285
|
try {
|
|
1217
|
-
const { getPlatformReferenceMarkdown } = await import("../platform-procedures-
|
|
1286
|
+
const { getPlatformReferenceMarkdown } = await import("../platform-procedures-VDW2R65H.js");
|
|
1218
1287
|
const referenceDir = path.join(EXE_AI_DIR, "reference");
|
|
1219
1288
|
await mkdir(referenceDir, { recursive: true });
|
|
1220
1289
|
await writeFile(
|
|
@@ -1225,12 +1294,16 @@ ${brief}`;
|
|
|
1225
1294
|
} catch {
|
|
1226
1295
|
}
|
|
1227
1296
|
const notificationSessionScope = resolveExeSession();
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1297
|
+
if (!briefIncompleteReason) {
|
|
1298
|
+
const unread = await readUnreadNotifications(void 0, notificationSessionScope);
|
|
1299
|
+
if (unread.length > 0) {
|
|
1300
|
+
console.log(`\u{1F4EC} ${unread.length} unread notification${unread.length === 1 ? "" : "s"}`);
|
|
1301
|
+
await markAsRead(unread.map((n) => n.id), notificationSessionScope);
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
if (!briefIncompleteReason) {
|
|
1305
|
+
await cleanupOldNotifications(void 0, notificationSessionScope);
|
|
1232
1306
|
}
|
|
1233
|
-
await cleanupOldNotifications(void 0, notificationSessionScope);
|
|
1234
1307
|
console.log(brief);
|
|
1235
1308
|
if (ccWarning) console.log(`
|
|
1236
1309
|
${ccWarning}`);
|
|
@@ -1283,7 +1356,7 @@ async function updateIdleKillSuspectStreak(client, killsToday, liveSessions, tod
|
|
|
1283
1356
|
IDLE_KILL_STREAK_META_KEY,
|
|
1284
1357
|
computeIdleKillSuspectStreak,
|
|
1285
1358
|
parseStreakState
|
|
1286
|
-
} = await import("../session-kill-telemetry-
|
|
1359
|
+
} = await import("../session-kill-telemetry-NFKJOQKH.js");
|
|
1287
1360
|
const prevResult = await client.execute({
|
|
1288
1361
|
sql: "SELECT value FROM sync_meta WHERE key = ?",
|
|
1289
1362
|
args: [IDLE_KILL_STREAK_META_KEY]
|