@askexenow/exe-os 0.9.345 → 0.9.347
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/clickhouse-config.xml +14 -0
- package/dist/{active-agent-6ZH2D6IP.js → active-agent-CMY7WTJL.js} +3 -3
- package/dist/{active-agent-BAWQYSNJ.js → active-agent-US4KO4LV.js} +3 -3
- package/dist/{agentic-ontology-IUFSZUI6.js → agentic-ontology-3Y37SQYR.js} +1 -1
- package/dist/{backfill-metadata-CWMJBLNQ.js → backfill-metadata-GK66TYQE.js} +5 -5
- package/dist/{backup-verify-NMXFX6NR.js → backup-verify-72XBKKHL.js} +1 -1
- package/dist/{behaviors-XZOZKID2.js → behaviors-G7TR6LBM.js} +6 -6
- package/dist/bin/agentic-ontology-backfill.js +6 -6
- package/dist/bin/agentic-reflection-backfill.js +7 -7
- package/dist/bin/agentic-semantic-label.js +6 -6
- package/dist/bin/backfill-conversations.js +5 -5
- package/dist/bin/backfill-responses.js +5 -5
- package/dist/bin/backfill-vectors.js +6 -6
- package/dist/bin/bulk-sync-postgres.js +10 -10
- package/dist/bin/cc-doctor.js +4 -4
- package/dist/bin/cleanup-stale-review-tasks.js +17 -16
- package/dist/bin/cli.js +18 -18
- package/dist/bin/deferred-daemon-restart.js +72 -71
- package/dist/bin/exe-agent-config.js +4 -4
- package/dist/bin/exe-agent.js +7 -7
- package/dist/bin/exe-assign.js +6 -6
- package/dist/bin/exe-boot.js +29 -28
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +10 -10
- package/dist/bin/exe-config-dump.js +4 -4
- package/dist/bin/exe-dispatch.js +17 -16
- package/dist/bin/exe-doctor.js +4 -4
- package/dist/bin/exe-export-behaviors.js +8 -8
- package/dist/bin/exe-forget.js +7 -7
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +4 -4
- package/dist/bin/exe-heartbeat.js +19 -18
- package/dist/bin/exe-kill.js +21 -20
- package/dist/bin/exe-launch-agent.js +26 -25
- package/dist/bin/exe-mcp.js +494 -0
- package/dist/bin/exe-memory-reads.js +5 -5
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-os-mcp-proxy.js +46 -10
- package/dist/bin/exe-pending-messages.js +18 -17
- package/dist/bin/exe-pending-notifications.js +17 -16
- package/dist/bin/exe-pending-reviews.js +17 -16
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +20 -19
- package/dist/bin/exe-search.js +6 -6
- package/dist/bin/exe-session-cleanup.js +21 -20
- package/dist/bin/exe-settings.js +12 -12
- package/dist/bin/exe-start-codex.js +54 -28
- package/dist/bin/exe-start-opencode.js +10 -10
- package/dist/bin/exe-status.js +18 -17
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +18 -17
- package/dist/bin/graph-backfill.js +6 -6
- package/dist/bin/graph-export.js +6 -6
- package/dist/bin/import-history.js +9 -9
- package/dist/bin/install.js +74 -73
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.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 +17 -16
- package/dist/bin/setup.js +2 -2
- package/dist/bin/shard-migrate.js +5 -5
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-OTC2ESGV.js → boot-generation-KG43UYL4.js} +3 -3
- package/dist/{boot-review-sections-RXFU3QRA.js → boot-review-sections-56BRURLM.js} +16 -15
- package/dist/{capability-cards-HOOLOBCU.js → capability-cards-4MN3IVJO.js} +2 -2
- package/dist/{capacity-monitor-SFLPNE7M.js → capacity-monitor-4NJTN5QQ.js} +18 -17
- package/dist/{catchup-brief-YUCZX3CR.js → catchup-brief-AMBXLHXU.js} +21 -20
- package/dist/{chunk-REH7YNV4.js → chunk-2BOEUPL6.js} +1 -1
- package/dist/{chunk-W5SRIJU4.js → chunk-2ESYTX6F.js} +1 -1
- package/dist/{chunk-6YH44JOY.js → chunk-2LZMDOC6.js} +55 -10
- package/dist/{chunk-ZXQRVYRS.js → chunk-3EMAJBBN.js} +10 -6
- package/dist/{chunk-4SBOGUGG.js → chunk-3HGAAWNZ.js} +5 -5
- package/dist/{chunk-6RYNOXTC.js → chunk-3LQMUO5D.js} +3 -3
- package/dist/{chunk-CKZ7CI55.js → chunk-3T4BRBSH.js} +1 -1
- package/dist/{chunk-B77H77VF.js → chunk-4K2PLZKF.js} +1 -1
- package/dist/{chunk-GGVP2B2O.js → chunk-4P7NUL4D.js} +5 -2
- package/dist/{chunk-XM3EARTG.js → chunk-4VLRGKNY.js} +2 -2
- package/dist/{chunk-PISA226N.js → chunk-53VXPGZ2.js} +2 -2
- package/dist/{chunk-XQASVF7H.js → chunk-7667KFAG.js} +77 -22
- package/dist/{chunk-FABOJ6IJ.js → chunk-7AD4GSRT.js} +3 -3
- package/dist/{chunk-IGF7YLMD.js → chunk-7DAJHBFH.js} +1 -1
- package/dist/{chunk-DWNRLCUQ.js → chunk-AHR3F7HW.js} +1 -1
- package/dist/{chunk-O7LWR36Z.js → chunk-AJIXH5JF.js} +122 -19
- package/dist/{chunk-6Z6ZVYHA.js → chunk-BMTUSSHV.js} +1 -1
- package/dist/{chunk-SDC5XIA5.js → chunk-BRVDGE7N.js} +4 -4
- package/dist/{chunk-ENVO4NIX.js → chunk-CNIAEIWV.js} +1 -1
- package/dist/{chunk-5A5LNAMW.js → chunk-DBDMZTU5.js} +1 -1
- package/dist/{chunk-WT6YYIEL.js → chunk-DNN27P35.js} +4 -4
- package/dist/{chunk-TLQDDKU4.js → chunk-DSGFX3RT.js} +40 -10
- package/dist/{chunk-YESAKOJE.js → chunk-DZJL775P.js} +1 -1
- package/dist/{chunk-VNYSLHHX.js → chunk-EWWCMMES.js} +488 -77
- package/dist/{chunk-MJJJSU6M.js → chunk-EYWB6526.js} +3 -3
- package/dist/{chunk-Q5I5MLKV.js → chunk-F4ZW76IX.js} +1 -1
- package/dist/{chunk-T5BGKRYS.js → chunk-F6NABQJ4.js} +2 -2
- package/dist/{chunk-E5XAVXQG.js → chunk-FAH7JUNS.js} +171 -46
- package/dist/{chunk-RF3O2OZL.js → chunk-FBSAXAXQ.js} +2 -2
- package/dist/{chunk-ORVC4XVZ.js → chunk-FDOURKUO.js} +1 -1
- package/dist/{chunk-OYDXYENC.js → chunk-FJPZ7KHN.js} +1 -1
- package/dist/{chunk-7IE3NPBV.js → chunk-FM4ZI5ZP.js} +1 -1
- package/dist/{chunk-R26I3YCN.js → chunk-G4HOMQY7.js} +1 -1
- package/dist/{chunk-EK2R7ORH.js → chunk-G6IANQKD.js} +1 -1
- package/dist/{chunk-AEVN4MPT.js → chunk-H44V3Y6D.js} +1 -1
- package/dist/{chunk-XDO4DVSB.js → chunk-HWK5GKE6.js} +1 -1
- package/dist/{chunk-NLVOLANR.js → chunk-I3XN3G3H.js} +208 -162
- package/dist/{chunk-P376KDEZ.js → chunk-ILLBFFY6.js} +2 -2
- package/dist/{chunk-DUO4WGDT.js → chunk-IMHERTUL.js} +3 -3
- package/dist/{chunk-7DZYO3Z5.js → chunk-IRMJHC23.js} +2 -2
- package/dist/{chunk-MI7OSFOA.js → chunk-JLYQD2XF.js} +1 -1
- package/dist/{chunk-437JTUZZ.js → chunk-JYFBQH5O.js} +9 -9
- package/dist/{chunk-442L6MA5.js → chunk-K3ZHVW26.js} +4 -4
- package/dist/{chunk-4YXTASUU.js → chunk-KI5PFRG6.js} +26 -1
- package/dist/{chunk-4LZLQ3ZK.js → chunk-KWRO4RMT.js} +3 -3
- package/dist/{chunk-QGNOYTSU.js → chunk-LJGHAZYU.js} +7 -7
- package/dist/{chunk-W4IUPJJ2.js → chunk-M3NSYVE3.js} +5 -5
- package/dist/{chunk-UBJRI2UU.js → chunk-M722B4DA.js} +1 -1
- package/dist/{chunk-U6NQ6OEU.js → chunk-MESFJRIT.js} +1 -1
- package/dist/{chunk-SDPOSTDC.js → chunk-MT6YGWJ6.js} +1 -1
- package/dist/{chunk-MHTDXXXW.js → chunk-OE6D2IJI.js} +5 -5
- package/dist/{chunk-GWDSB25T.js → chunk-OSKWCKUC.js} +1 -1
- package/dist/{chunk-WYMGEGOM.js → chunk-PEVOVM3W.js} +4 -4
- package/dist/{chunk-MDIVCWQW.js → chunk-PO64LWTM.js} +9 -9
- package/dist/{chunk-WD6PJ7IY.js → chunk-PRUZNNEF.js} +4 -4
- package/dist/{chunk-BG4Q4ZUW.js → chunk-PYNWGP72.js} +1 -1
- package/dist/{chunk-ILBB65TX.js → chunk-QFGUAJ6T.js} +2 -2
- package/dist/{chunk-IYCE7UES.js → chunk-QIALRZZG.js} +1 -1
- package/dist/{chunk-CBWJ5DRL.js → chunk-QZA5NG6Z.js} +1 -1
- package/dist/{chunk-LF4DHB5A.js → chunk-SUG5P42S.js} +14 -4
- package/dist/{chunk-SNJLKMCY.js → chunk-SVFNWBLF.js} +26 -4
- package/dist/{chunk-GY6VSMMB.js → chunk-T7ZLJZAO.js} +1 -1
- package/dist/{chunk-XWD6F6EZ.js → chunk-TQSAPNFW.js} +40 -30
- package/dist/{chunk-SFT7M6MC.js → chunk-UMK7TNCF.js} +107 -47
- package/dist/{chunk-B3Z6LHVV.js → chunk-UO56K55W.js} +31 -6
- package/dist/{chunk-CBZPE5J4.js → chunk-UVPLZ6AK.js} +2 -2
- package/dist/{chunk-PW557TJV.js → chunk-VA3ZUIWG.js} +1 -1
- package/dist/{chunk-V3AZC2K6.js → chunk-VALVWYAK.js} +104 -11
- package/dist/{chunk-TNZSK6L7.js → chunk-VBHLE3TR.js} +1 -0
- package/dist/{chunk-JFLUUBQK.js → chunk-VDJUATQJ.js} +1 -1
- package/dist/{chunk-LOK3PZP3.js → chunk-VDKDW5IA.js} +17 -18
- package/dist/{chunk-IM6FMNTO.js → chunk-VMTKHDFM.js} +3 -3
- package/dist/{chunk-7TZ6HV4G.js → chunk-VTMSGELG.js} +6 -3
- package/dist/{chunk-4FYXYJUX.js → chunk-W666YWFU.js} +3 -3
- package/dist/{chunk-UHUODLGJ.js → chunk-W7HKGDJO.js} +3 -3
- package/dist/{chunk-NGP6LSV2.js → chunk-WNBZJSQT.js} +10 -1
- package/dist/{chunk-Q7LTWGQK.js → chunk-WOKPKILI.js} +1 -1
- package/dist/{chunk-JELPA53I.js → chunk-XDVLCS64.js} +1 -1
- package/dist/{chunk-OJBWWOSM.js → chunk-XOVHWGPV.js} +1 -1
- package/dist/{chunk-QEHVKL27.js → chunk-XRX7F7XW.js} +1 -1
- package/dist/{chunk-LEESW32W.js → chunk-Y7637VDZ.js} +2 -2
- package/dist/{chunk-QHDUGZVP.js → chunk-YJK4JZ35.js} +3 -3
- package/dist/{chunk-BLV57HND.js → chunk-YSTIPPZK.js} +1 -1
- package/dist/{chunk-7WGEZ5WM.js → chunk-Z7DWUHDP.js} +1 -1
- package/dist/{chunk-RSMOYIVR.js → chunk-ZK53K7OR.js} +1 -1
- package/dist/{chunk-3BO6S3L2.js → chunk-ZY2ABBVR.js} +144 -103
- package/dist/{chunk-WFEOKA2T.js → chunk-ZYNQXN73.js} +4 -4
- package/dist/{cleanup-graph-garbage-EVPEOMIW.js → cleanup-graph-garbage-5HKGGUS3.js} +10 -6
- package/dist/{cloud-sync-shutdown-QVXYVLWQ.js → cloud-sync-shutdown-2JAEIAW6.js} +2 -2
- package/dist/{co-activation-XGBTXQAN.js → co-activation-SYSIFY66.js} +2 -2
- package/dist/{co-occurrence-ZQAKCA5V.js → co-occurrence-QZFT5ORJ.js} +8 -4
- package/dist/{conversation-entity-extractor-CVJ43JCX.js → conversation-entity-extractor-YC3A2ODD.js} +6 -2
- package/dist/{crdt-sync-FQIHFFCI.js → crdt-sync-W45AKWCU.js} +1 -1
- package/dist/{crm-webhook-IA2N224B.js → crm-webhook-ZAGDYWB3.js} +2 -2
- package/dist/{cto-delegation-gate-5OUCWJYA.js → cto-delegation-gate-PLSICYEK.js} +16 -15
- package/dist/{daemon-orchestration-7XWMZXN4.js → daemon-orchestration-QX3FS4L2.js} +26 -21
- package/dist/{daemon-ready-QGU7MZZB.js → daemon-ready-56VAPZU6.js} +1 -1
- package/dist/{db-verify-stamp-YTRPEKZ5.js → db-verify-stamp-P2FCVTXK.js} +1 -1
- package/dist/{dispatch-ack-VYH3ONSS.js → dispatch-ack-AZL3WKCK.js} +1 -1
- package/dist/{doc-graph-extractor-VZ6SE7BC.js → doc-graph-extractor-NK6CP4LE.js} +8 -4
- package/dist/{documents-7ZVGEZ2X.js → documents-FGXV6BDL.js} +6 -6
- package/dist/{dreaming-GANGWVRH.js → dreaming-YIESEME7.js} +20 -19
- package/dist/{exe-drift-X62H7KFD.js → exe-drift-TLY7MCXW.js} +3 -3
- package/dist/{exe-export-DZNDPQ7I.js → exe-export-32J4WPS6.js} +7 -7
- package/dist/{exe-import-JZ4BOQUV.js → exe-import-MDEWE325.js} +7 -7
- package/dist/{exe-key-RWMZZOJI.js → exe-key-NW42YUA3.js} +72 -71
- package/dist/{exe-snapshot-VTGR53OI.js → exe-snapshot-NNEEAGYI.js} +21 -20
- package/dist/{fast-db-init-CZSSDWDG.js → fast-db-init-O7AECNTB.js} +1 -1
- package/dist/{founder-context-7OKZVVEH.js → founder-context-3WDZ6LIS.js} +2 -2
- package/dist/gateway/index.js +11 -11
- package/dist/{git-staleness-JN7YOMDP.js → git-staleness-GEJ7U4MW.js} +2 -2
- package/dist/{global-procedures-NOJL7AQ7.js → global-procedures-HY3BJXY4.js} +3 -3
- package/dist/{graph-auto-extract-DNY7O7YL.js → graph-auto-extract-DBAIFNDK.js} +8 -4
- package/dist/{graph-rag-HHNAX7YO.js → graph-rag-LWKKHY72.js} +6 -2
- package/dist/{hook-prefetch-LYJMDLRJ.js → hook-prefetch-KNHZNI4L.js} +17 -16
- package/dist/hooks/bug-report-worker.js +19 -19
- package/dist/hooks/codex-stop-task-finalizer.js +20 -20
- package/dist/hooks/commit-complete.js +19 -18
- package/dist/hooks/error-recall.js +7 -7
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +18 -17
- package/dist/hooks/post-tool-combined.js +9 -9
- package/dist/hooks/pre-compact.js +19 -18
- package/dist/hooks/pre-tool-use.js +84 -44
- package/dist/hooks/prompt-submit.js +36 -35
- package/dist/hooks/session-end.js +23 -22
- package/dist/hooks/session-start.js +44 -23
- package/dist/hooks/stop.js +22 -21
- package/dist/hooks/subagent-stop.js +20 -19
- package/dist/hooks/summary-worker.js +23 -22
- package/dist/index.js +28 -27
- package/dist/{installer-KBK7EE3F.js → installer-AWALPCAX.js} +5 -5
- package/dist/{installer-EWFK5EBH.js → installer-R2S64Q6T.js} +5 -5
- package/dist/{installer-6O3XLAQ5.js → installer-SQF5I6YS.js} +5 -5
- package/dist/{intercom-queue-EOYSBHUA.js → intercom-queue-SJL4G3J5.js} +16 -15
- package/dist/lib/agent-config.js +2 -2
- package/dist/lib/cloud-sync.js +14 -10
- package/dist/lib/consolidation.js +7 -7
- package/dist/lib/database.js +2 -2
- package/dist/lib/db-backup.js +1 -1
- package/dist/lib/db-write-worker.js +2 -2
- package/dist/lib/db.js +2 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon.js +248 -194
- package/dist/lib/hybrid-search.js +6 -6
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +17 -16
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/runtime-table.js +9 -3
- package/dist/lib/schedules.js +6 -6
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +7 -7
- package/dist/lib/store.js +5 -5
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +18 -18
- package/dist/lib/tmux-routing.js +16 -15
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-WO3NO5FX.js → license-gate-ZYZQGPKW.js} +3 -3
- package/dist/{license-sync-QRG2TCBR.js → license-sync-GU3L66JR.js} +2 -2
- package/dist/mcp/register-tools.js +71 -70
- package/dist/mcp/server.js +72 -71
- package/dist/mcp/tools/complete-reminder.js +4 -4
- package/dist/mcp/tools/create-reminder.js +4 -4
- package/dist/mcp/tools/create-task.js +20 -20
- package/dist/mcp/tools/deactivate-behavior.js +8 -8
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +20 -20
- package/dist/mcp/tools/send-message.js +19 -18
- package/dist/mcp/tools/update-task.js +19 -19
- package/dist/{mcp-http-config-A2SKBXA6.js → mcp-http-config-BV2GO7P4.js} +3 -3
- package/dist/{mcp-session-identity-PGAE4IB2.js → mcp-session-identity-3QQPOGNI.js} +16 -15
- package/dist/{memory-cards-BMHZILXL.js → memory-cards-NISTO4EP.js} +5 -5
- package/dist/{memory-graph-extractor-5EDOSSZH.js → memory-graph-extractor-CO3R5K7L.js} +9 -5
- package/dist/{memory-poisoning-defense-OV75EWM6.js → memory-poisoning-defense-QZCG3BMC.js} +2 -2
- package/dist/{memory-pressure-watchdog-MEB53N4D.js → memory-pressure-watchdog-VWQM3GXR.js} +17 -16
- package/dist/{memory-reflection-KRYBPDHC.js → memory-reflection-G32OQ3X3.js} +2 -2
- package/dist/{notification-ledger-XPT4GVNX.js → notification-ledger-C3J4HFMM.js} +17 -16
- package/dist/{notifications-XTLG4LEM.js → notifications-JIARMDZ5.js} +16 -15
- package/dist/{orchestration-events-ZZQZCV4J.js → orchestration-events-AL7AWHBX.js} +3 -3
- package/dist/{orchestrator-YXNVVWAA.js → orchestrator-LWVALDUO.js} +18 -17
- package/dist/{pipeline-router-4RBSYZND.js → pipeline-router-HK5BI3LQ.js} +3 -3
- package/dist/{plan-limits-5P5GMLKB.js → plan-limits-4LMRHOUW.js} +5 -5
- package/dist/{projection-worker-72KRZL37.js → projection-worker-Z5U6UWCE.js} +2 -2
- package/dist/{prospective-memory-HEF2QHEU.js → prospective-memory-UDQWFP5Y.js} +2 -2
- package/dist/{reranker-DA7FSOUJ.js → reranker-FX4QOK2G.js} +1 -1
- package/dist/{retrieval-health-MHNE5SSF.js → retrieval-health-2LIKKDMW.js} +1 -1
- package/dist/{review-polling-GYKRBUX2.js → review-polling-B2EP4KGE.js} +17 -16
- package/dist/runtime/index.js +24 -23
- package/dist/{session-events-Q5IYAH44.js → session-events-HVYX42HD.js} +17 -16
- package/dist/{session-kill-telemetry-P3P3U6TE.js → session-kill-telemetry-BHKUHSK2.js} +17 -16
- package/dist/{session-scope-GHM4GKYR.js → session-scope-TXCBVOSN.js} +16 -15
- package/dist/{setup-wizard-5D56CWVZ.js → setup-wizard-QMKBAK6B.js} +2 -2
- package/dist/{skill-refinement-M24DG2TN.js → skill-refinement-G6BPD6QK.js} +3 -3
- package/dist/{stack-update-ABMTXOZR.js → stack-update-CBP5S5BG.js} +3 -3
- package/dist/{steward-gate-DYQP3BWO.js → steward-gate-CGP6U7KC.js} +3 -3
- package/dist/{support-inbox-5AG4QTKQ.js → support-inbox-3ATAP7KN.js} +3 -3
- package/dist/{sweep-budget-74FIUNX3.js → sweep-budget-KMPJ7O5Z.js} +5 -1
- package/dist/{task-enforcement-6FLLHH43.js → task-enforcement-YINAK3T6.js} +17 -16
- package/dist/{task-scope-RR34UA2U.js → task-scope-5OSP2MUP.js} +16 -15
- package/dist/{tasks-crud-VI7Q65IE.js → tasks-crud-PTN36B5F.js} +22 -15
- package/dist/{tasks-notify-MLE2AVHJ.js → tasks-notify-QCJXVZCJ.js} +17 -17
- package/dist/{tasks-review-WR3XEADY.js → tasks-review-ZY3S65OV.js} +16 -15
- package/dist/{telemetry-upload-LIJY4IB7.js → telemetry-upload-Z47OEELW.js} +7 -7
- package/dist/{token-budget-JTSFQTWP.js → token-budget-B3OKOYDA.js} +3 -3
- package/dist/{tool-telemetry-L62XZXK5.js → tool-telemetry-KIHAHUPT.js} +1 -1
- package/dist/tui/App.js +24 -23
- package/dist/{tui-data-LY27NK2Z.js → tui-data-YIFXHE2D.js} +16 -15
- package/dist/{update-support-G2XWFHEH.js → update-support-IZUWVU2U.js} +9 -9
- package/dist/{work-state-heartbeat-QCLCEQV3.js → work-state-heartbeat-WIURKX3N.js} +1 -1
- package/dist/{worker-gate-XJJXOMUN.js → worker-gate-NZRA426F.js} +1 -1
- package/dist/{workflow-engine-55LTMEXZ.js → workflow-engine-LAB6TGBZ.js} +2 -2
- package/dist/{worktree-EEW45PPV.js → worktree-TBUUZJHY.js} +4 -4
- package/dist/{worktree-sweep-PBDRKK7L.js → worktree-sweep-LXDNIZPM.js} +5 -5
- package/package.json +1 -1
- package/release-notes.json +53 -89
- package/dist/exe-mcp-GCZLSGCO.js +0 -286
- /package/dist/{chunk-IGAODB3D.js → chunk-CYI2YR56.js} +0 -0
- /package/dist/{chunk-EJVVGC6C.js → chunk-D4UCBR4O.js} +0 -0
- /package/dist/{chunk-IUMAJIHE.js → chunk-FFUEDKYK.js} +0 -0
- /package/dist/{chunk-4RM3364E.js → chunk-G4JZ22KK.js} +0 -0
- /package/dist/{chunk-SPV2RTA4.js → chunk-MA22RV3T.js} +0 -0
- /package/dist/{chunk-KHIBBGMT.js → chunk-MDK7E653.js} +0 -0
- /package/dist/{chunk-5OVON46B.js → chunk-OG2RT4IY.js} +0 -0
- /package/dist/{chunk-V7RT3NZH.js → chunk-QPNXYGWG.js} +0 -0
- /package/dist/{chunk-DQOBH5VO.js → chunk-SJLZ53ZR.js} +0 -0
- /package/dist/{core-memory-X3FUV5X3.js → core-memory-FOW4BCPN.js} +0 -0
- /package/dist/{oauth-server-XKEJ4LE5.js → oauth-server-OR4RAQYM.js} +0 -0
- /package/dist/{project-boot-XBUAQWVL.js → project-boot-WP54EOAG.js} +0 -0
- /package/dist/{wiki-acl-D3CNNLP5.js → wiki-acl-4DQQCP4V.js} +0 -0
|
@@ -138,7 +138,8 @@ async function writeContinuityCheckpoint(input) {
|
|
|
138
138
|
timestamp: now,
|
|
139
139
|
importance: importanceForReason(input.reason, input.importance),
|
|
140
140
|
task_id: input.taskId,
|
|
141
|
-
memory_type: "checkpoint"
|
|
141
|
+
memory_type: "checkpoint",
|
|
142
|
+
session_scope: process.env.EXE_SESSION || process.env.EXE_SESSION_NAME?.split("-").pop() || void 0
|
|
142
143
|
});
|
|
143
144
|
const decisionLimit = input.reason === "periodic" ? 3 : 5;
|
|
144
145
|
for (const decisionText of result.decisionTexts.slice(0, decisionLimit)) {
|
|
@@ -161,7 +162,9 @@ async function checkpointActiveTask(input) {
|
|
|
161
162
|
await writeCheckpoint({
|
|
162
163
|
taskId: input.taskId,
|
|
163
164
|
step: input.step ?? "pre-compaction-checkpoint",
|
|
164
|
-
contextSummary: `Auto-checkpoint before context compaction. Task: ${input.taskTitle}. Session: ${input.sessionId}. Project: ${input.projectName}
|
|
165
|
+
contextSummary: `Auto-checkpoint before context compaction. Task: ${input.taskTitle}. Session: ${input.sessionId}. Project: ${input.projectName}.`,
|
|
166
|
+
callerSession: process.env.EXE_SESSION_NAME ?? process.env.MY_TMUX_SESSION ?? null,
|
|
167
|
+
sessionInstanceId: input.sessionId
|
|
165
168
|
});
|
|
166
169
|
}
|
|
167
170
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
vectorToSqlLiteral
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TQSAPNFW.js";
|
|
4
4
|
import {
|
|
5
5
|
blobToVector
|
|
6
6
|
} from "./chunk-OTVEIJUQ.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZY2ABBVR.js";
|
|
10
10
|
|
|
11
11
|
// src/lib/behaviors.ts
|
|
12
12
|
import crypto from "crypto";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ingest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7AD4GSRT.js";
|
|
4
4
|
import {
|
|
5
5
|
listWorkflowDefinitions,
|
|
6
6
|
runWorkflow,
|
|
7
7
|
startWorkflow
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-G6IANQKD.js";
|
|
9
9
|
import {
|
|
10
10
|
initCRMBridge
|
|
11
11
|
} from "./chunk-ML4S5SHZ.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordOrchestrationEventBestEffort
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MT6YGWJ6.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/worktree.ts
|
|
6
|
-
import { execFile, execSync } from "child_process";
|
|
6
|
+
import { execFile, execFileSync, execSync } from "child_process";
|
|
7
7
|
import { promisify } from "util";
|
|
8
8
|
import { existsSync, readFileSync, appendFileSync, mkdirSync, realpathSync, statSync, writeFileSync, chmodSync } from "fs";
|
|
9
9
|
import path from "path";
|
|
@@ -17,6 +17,79 @@ async function gitAsync(args, cwd) {
|
|
|
17
17
|
});
|
|
18
18
|
return String(stdout ?? "");
|
|
19
19
|
}
|
|
20
|
+
function gitSync(args, cwd) {
|
|
21
|
+
return String(execFileSync("git", args, {
|
|
22
|
+
cwd,
|
|
23
|
+
encoding: "utf-8",
|
|
24
|
+
timeout: GIT_TIMEOUT_MS,
|
|
25
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
26
|
+
}) ?? "");
|
|
27
|
+
}
|
|
28
|
+
var GIT_CRYPT_SMUDGE_BYPASS_ARGS = [
|
|
29
|
+
"-c",
|
|
30
|
+
"filter.git-crypt.smudge=cat",
|
|
31
|
+
"-c",
|
|
32
|
+
"filter.git-crypt.process=",
|
|
33
|
+
"-c",
|
|
34
|
+
"filter.git-crypt.required=false"
|
|
35
|
+
];
|
|
36
|
+
function gitErrorText(err) {
|
|
37
|
+
if (!err || typeof err !== "object") return String(err);
|
|
38
|
+
const e = err;
|
|
39
|
+
const parts = [e.message, e.stderr, e.stdout].map((part) => Buffer.isBuffer(part) ? part.toString("utf8") : String(part ?? "")).filter(Boolean);
|
|
40
|
+
return parts.join("\n");
|
|
41
|
+
}
|
|
42
|
+
function isGitCryptSmudgeFailure(err) {
|
|
43
|
+
const text = gitErrorText(err);
|
|
44
|
+
return /git-crypt/i.test(text) && /smudge|filter/i.test(text);
|
|
45
|
+
}
|
|
46
|
+
function worktreeAddArgs(wtPath, branch, branchExists) {
|
|
47
|
+
return branchExists ? ["worktree", "add", wtPath, branch] : ["worktree", "add", wtPath, "-b", branch, "HEAD"];
|
|
48
|
+
}
|
|
49
|
+
function removePartialWorktreeSync(repoRoot, wtPath) {
|
|
50
|
+
try {
|
|
51
|
+
if (existsSync(wtPath)) gitSync(["worktree", "remove", "--force", wtPath], repoRoot);
|
|
52
|
+
} catch {
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function removePartialWorktreeAsync(repoRoot, wtPath) {
|
|
56
|
+
try {
|
|
57
|
+
if (existsSync(wtPath)) await gitAsync(["worktree", "remove", "--force", wtPath], repoRoot);
|
|
58
|
+
} catch {
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function addWorktreeSync(repoRoot, wtPath, branch, branchExists) {
|
|
62
|
+
try {
|
|
63
|
+
gitSync(worktreeAddArgs(wtPath, branch, branchExists), repoRoot);
|
|
64
|
+
} catch (err) {
|
|
65
|
+
if (!isGitCryptSmudgeFailure(err)) throw err;
|
|
66
|
+
removePartialWorktreeSync(repoRoot, wtPath);
|
|
67
|
+
const retryBranchExists = branchExists || branchExistsLocally(repoRoot, branch);
|
|
68
|
+
gitSync([...GIT_CRYPT_SMUDGE_BYPASS_ARGS, ...worktreeAddArgs(wtPath, branch, retryBranchExists)], repoRoot);
|
|
69
|
+
recordOrchestrationEventBestEffort({
|
|
70
|
+
eventType: "worktree.gitcrypt_smudge_bypassed",
|
|
71
|
+
source: "worktree.ensureWorktree",
|
|
72
|
+
severity: "warn",
|
|
73
|
+
payload: { branch }
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function addWorktreeAsync(repoRoot, wtPath, branch, branchExists) {
|
|
78
|
+
try {
|
|
79
|
+
await gitAsync(worktreeAddArgs(wtPath, branch, branchExists), repoRoot);
|
|
80
|
+
} catch (err) {
|
|
81
|
+
if (!isGitCryptSmudgeFailure(err)) throw err;
|
|
82
|
+
await removePartialWorktreeAsync(repoRoot, wtPath);
|
|
83
|
+
const retryBranchExists = branchExists || await branchExistsLocallyAsync(repoRoot, branch);
|
|
84
|
+
await gitAsync([...GIT_CRYPT_SMUDGE_BYPASS_ARGS, ...worktreeAddArgs(wtPath, branch, retryBranchExists)], repoRoot);
|
|
85
|
+
recordOrchestrationEventBestEffort({
|
|
86
|
+
eventType: "worktree.gitcrypt_smudge_bypassed",
|
|
87
|
+
source: "worktree.ensureWorktreeAsync",
|
|
88
|
+
severity: "warn",
|
|
89
|
+
payload: { branch }
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
20
93
|
function classifyGitFailure(err) {
|
|
21
94
|
if (!err || typeof err !== "object") return "unavailable";
|
|
22
95
|
const e = err;
|
|
@@ -350,21 +423,7 @@ function ensureWorktree(projectDir, employeeName, instance) {
|
|
|
350
423
|
}
|
|
351
424
|
const branchExists = branchExistsLocally(repoRoot, branch);
|
|
352
425
|
try {
|
|
353
|
-
|
|
354
|
-
execSync(`git worktree add "${wtPath}" "${branch}"`, {
|
|
355
|
-
cwd: repoRoot,
|
|
356
|
-
encoding: "utf-8",
|
|
357
|
-
timeout: GIT_TIMEOUT_MS,
|
|
358
|
-
stdio: ["pipe", "pipe", "pipe"]
|
|
359
|
-
});
|
|
360
|
-
} else {
|
|
361
|
-
execSync(`git worktree add "${wtPath}" -b "${branch}" HEAD`, {
|
|
362
|
-
cwd: repoRoot,
|
|
363
|
-
encoding: "utf-8",
|
|
364
|
-
timeout: GIT_TIMEOUT_MS,
|
|
365
|
-
stdio: ["pipe", "pipe", "pipe"]
|
|
366
|
-
});
|
|
367
|
-
}
|
|
426
|
+
addWorktreeSync(repoRoot, wtPath, branch, branchExists);
|
|
368
427
|
recordOrchestrationEventBestEffort({
|
|
369
428
|
eventType: "worktree.created",
|
|
370
429
|
source: "worktree.ensureWorktree",
|
|
@@ -469,11 +528,7 @@ async function ensureWorktreeAsync(projectDir, employeeName, instance) {
|
|
|
469
528
|
}
|
|
470
529
|
const branchExists = await branchExistsLocallyAsync(repoRoot, branch);
|
|
471
530
|
try {
|
|
472
|
-
|
|
473
|
-
await gitAsync(["worktree", "add", wtPath, branch], repoRoot);
|
|
474
|
-
} else {
|
|
475
|
-
await gitAsync(["worktree", "add", wtPath, "-b", branch, "HEAD"], repoRoot);
|
|
476
|
-
}
|
|
531
|
+
await addWorktreeAsync(repoRoot, wtPath, branch, branchExists);
|
|
477
532
|
recordOrchestrationEventBestEffort({
|
|
478
533
|
eventType: "worktree.created",
|
|
479
534
|
source: "worktree.ensureWorktreeAsync",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZY2ABBVR.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/pipeline-router.ts
|
|
6
6
|
import crypto from "crypto";
|
|
@@ -140,8 +140,8 @@ Agent response: ${agentResponse}` : ""
|
|
|
140
140
|
}
|
|
141
141
|
async function sinkEntityExtraction(msg, agentResponse, agentName) {
|
|
142
142
|
try {
|
|
143
|
-
const { extractFromConversation } = await import("./conversation-entity-extractor-
|
|
144
|
-
const { storeExtraction } = await import("./graph-rag-
|
|
143
|
+
const { extractFromConversation } = await import("./conversation-entity-extractor-YC3A2ODD.js");
|
|
144
|
+
const { storeExtraction } = await import("./graph-rag-LWKKHY72.js");
|
|
145
145
|
if ((msg.text?.length ?? 0) < 20) return false;
|
|
146
146
|
if (msg.isHistorical) return false;
|
|
147
147
|
const extraction = await extractFromConversation(msg, agentResponse, agentName);
|
|
@@ -1,25 +1,90 @@
|
|
|
1
1
|
// src/lib/dispatch-ack.ts
|
|
2
2
|
import {
|
|
3
|
-
existsSync,
|
|
4
|
-
mkdirSync,
|
|
3
|
+
existsSync as existsSync2,
|
|
4
|
+
mkdirSync as mkdirSync2,
|
|
5
5
|
readFileSync,
|
|
6
6
|
writeFileSync,
|
|
7
|
-
unlinkSync,
|
|
8
|
-
readdirSync,
|
|
7
|
+
unlinkSync as unlinkSync2,
|
|
8
|
+
readdirSync as readdirSync2,
|
|
9
9
|
rmSync
|
|
10
10
|
} from "fs";
|
|
11
11
|
import path from "path";
|
|
12
12
|
import os from "os";
|
|
13
|
+
|
|
14
|
+
// src/lib/dispatch-journal.ts
|
|
15
|
+
import { appendFileSync, existsSync, mkdirSync, readdirSync, renameSync, statSync, unlinkSync } from "fs";
|
|
16
|
+
import { join } from "path";
|
|
17
|
+
import { homedir } from "os";
|
|
18
|
+
var MAX_JSONL_BYTES = Number(process.env.EXE_DISPATCH_JOURNAL_MAX_BYTES) || 1e6;
|
|
19
|
+
var MAX_ARCHIVES = Number(process.env.EXE_DISPATCH_JOURNAL_MAX_ARCHIVES) || 3;
|
|
20
|
+
function dispatchJournalDir() {
|
|
21
|
+
const base = process.env.EXE_OS_DIR || join(homedir(), ".exe-os");
|
|
22
|
+
return join(base, "dispatch-journal");
|
|
23
|
+
}
|
|
24
|
+
function journalPath() {
|
|
25
|
+
return join(dispatchJournalDir(), "events.jsonl");
|
|
26
|
+
}
|
|
27
|
+
function rotateIfNeeded(file) {
|
|
28
|
+
try {
|
|
29
|
+
if (!existsSync(file)) return;
|
|
30
|
+
if (statSync(file).size < MAX_JSONL_BYTES) return;
|
|
31
|
+
for (let i = MAX_ARCHIVES; i >= 1; i--) {
|
|
32
|
+
const src = `${file}.${i}`;
|
|
33
|
+
const dst = `${file}.${i + 1}`;
|
|
34
|
+
if (!existsSync(src)) continue;
|
|
35
|
+
if (i === MAX_ARCHIVES) unlinkSync(src);
|
|
36
|
+
else renameSync(src, dst);
|
|
37
|
+
}
|
|
38
|
+
renameSync(file, `${file}.1`);
|
|
39
|
+
} catch {
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function appendDispatchJournalEvent(input) {
|
|
43
|
+
try {
|
|
44
|
+
const dir = dispatchJournalDir();
|
|
45
|
+
mkdirSync(dir, { recursive: true });
|
|
46
|
+
const file = journalPath();
|
|
47
|
+
rotateIfNeeded(file);
|
|
48
|
+
appendFileSync(
|
|
49
|
+
file,
|
|
50
|
+
JSON.stringify({
|
|
51
|
+
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
52
|
+
...input
|
|
53
|
+
}) + "\n",
|
|
54
|
+
"utf-8"
|
|
55
|
+
);
|
|
56
|
+
for (const entry of readdirSync(dir)) {
|
|
57
|
+
const match = entry.match(/^events\.jsonl\.(\d+)$/);
|
|
58
|
+
if (match && Number(match[1]) > MAX_ARCHIVES) {
|
|
59
|
+
try {
|
|
60
|
+
unlinkSync(join(dir, entry));
|
|
61
|
+
} catch {
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
} catch {
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// src/lib/dispatch-ack.ts
|
|
13
70
|
function ackDir() {
|
|
14
71
|
return process.env.EXE_DISPATCH_ACK_DIR || path.join(os.homedir(), ".exe-os", "dispatch-acks");
|
|
15
72
|
}
|
|
16
73
|
var DISPATCH_DEDUP_WINDOW_MS = 90 * 1e3;
|
|
17
74
|
function ensureAckDir() {
|
|
18
75
|
const dir = ackDir();
|
|
19
|
-
if (!
|
|
76
|
+
if (!existsSync2(dir)) mkdirSync2(dir, { recursive: true });
|
|
20
77
|
}
|
|
21
78
|
function writeDispatchPending(taskId, assignedTo, sessionName) {
|
|
22
79
|
ensureAckDir();
|
|
80
|
+
try {
|
|
81
|
+
unlinkSync2(path.join(ackDir(), `${taskId}.failed`));
|
|
82
|
+
} catch {
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
unlinkSync2(path.join(ackDir(), `${taskId}.ack`));
|
|
86
|
+
} catch {
|
|
87
|
+
}
|
|
23
88
|
const signal = {
|
|
24
89
|
taskId,
|
|
25
90
|
assignedTo,
|
|
@@ -27,6 +92,13 @@ function writeDispatchPending(taskId, assignedTo, sessionName) {
|
|
|
27
92
|
sessionName
|
|
28
93
|
};
|
|
29
94
|
writeFileSync(path.join(ackDir(), `${taskId}.pending`), JSON.stringify(signal), "utf-8");
|
|
95
|
+
appendDispatchJournalEvent({
|
|
96
|
+
event: "dispatch.pending",
|
|
97
|
+
taskId,
|
|
98
|
+
agentId: assignedTo,
|
|
99
|
+
sessionName: sessionName ?? null,
|
|
100
|
+
sessionScope: sessionName?.includes("-") ? sessionName.slice(sessionName.indexOf("-") + 1) : sessionName ?? null
|
|
101
|
+
});
|
|
30
102
|
}
|
|
31
103
|
function spawnLockName(taskId, bucket) {
|
|
32
104
|
return `${taskId}.spawnlock.b${bucket}`;
|
|
@@ -52,11 +124,11 @@ function tryAcquireDispatchClaim(taskId, assignedTo, sessionName, windowMs = DIS
|
|
|
52
124
|
const curLock = path.join(dir, spawnLockName(taskId, bucket));
|
|
53
125
|
const prevLock = path.join(dir, spawnLockName(taskId, bucket - 1));
|
|
54
126
|
try {
|
|
55
|
-
if (
|
|
127
|
+
if (existsSync2(prevLock) && ownerPidAlive(prevLock)) return false;
|
|
56
128
|
} catch {
|
|
57
129
|
}
|
|
58
130
|
try {
|
|
59
|
-
|
|
131
|
+
mkdirSync2(curLock);
|
|
60
132
|
} catch (err) {
|
|
61
133
|
if (err?.code === "EEXIST") return false;
|
|
62
134
|
return true;
|
|
@@ -73,13 +145,20 @@ function tryAcquireDispatchClaim(taskId, assignedTo, sessionName, windowMs = DIS
|
|
|
73
145
|
writeDispatchPending(taskId, assignedTo, sessionName);
|
|
74
146
|
} catch {
|
|
75
147
|
}
|
|
148
|
+
appendDispatchJournalEvent({
|
|
149
|
+
event: "dispatch.claim_acquired",
|
|
150
|
+
taskId,
|
|
151
|
+
agentId: assignedTo,
|
|
152
|
+
sessionName: sessionName ?? null,
|
|
153
|
+
sessionScope: sessionName?.includes("-") ? sessionName.slice(sessionName.indexOf("-") + 1) : sessionName ?? null
|
|
154
|
+
});
|
|
76
155
|
return true;
|
|
77
156
|
}
|
|
78
157
|
function removeSpawnLockdirs(taskId) {
|
|
79
158
|
const dir = ackDir();
|
|
80
159
|
try {
|
|
81
160
|
const prefix = `${taskId}.spawnlock.b`;
|
|
82
|
-
for (const entry of
|
|
161
|
+
for (const entry of readdirSync2(dir)) {
|
|
83
162
|
if (entry.startsWith(prefix)) {
|
|
84
163
|
try {
|
|
85
164
|
rmSync(path.join(dir, entry), { recursive: true, force: true });
|
|
@@ -97,6 +176,13 @@ function releaseDispatchClaim(taskId, assignedTo, reason = "dispatch failed") {
|
|
|
97
176
|
writeDispatchFailed(taskId, assignedTo, reason);
|
|
98
177
|
} catch {
|
|
99
178
|
}
|
|
179
|
+
appendDispatchJournalEvent({
|
|
180
|
+
event: "dispatch.claim_released",
|
|
181
|
+
taskId,
|
|
182
|
+
agentId: assignedTo,
|
|
183
|
+
result: "released",
|
|
184
|
+
reason
|
|
185
|
+
});
|
|
100
186
|
}
|
|
101
187
|
function writeDispatchAck(taskId, agentId) {
|
|
102
188
|
ensureAckDir();
|
|
@@ -111,10 +197,17 @@ function writeDispatchAck(taskId, agentId) {
|
|
|
111
197
|
signal.ackedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
112
198
|
writeFileSync(ackPath, JSON.stringify(signal), "utf-8");
|
|
113
199
|
try {
|
|
114
|
-
|
|
200
|
+
unlinkSync2(pendingPath);
|
|
115
201
|
} catch {
|
|
116
202
|
}
|
|
117
203
|
removeSpawnLockdirs(taskId);
|
|
204
|
+
appendDispatchJournalEvent({
|
|
205
|
+
event: "dispatch.acked",
|
|
206
|
+
taskId,
|
|
207
|
+
agentId,
|
|
208
|
+
sessionName: signal.sessionName ?? null,
|
|
209
|
+
sessionScope: signal.sessionName?.includes("-") ? signal.sessionName.slice(signal.sessionName.indexOf("-") + 1) : signal.sessionName ?? null
|
|
210
|
+
});
|
|
118
211
|
}
|
|
119
212
|
function writeDispatchFailed(taskId, assignedTo, error, sessionName) {
|
|
120
213
|
ensureAckDir();
|
|
@@ -130,16 +223,25 @@ function writeDispatchFailed(taskId, assignedTo, error, sessionName) {
|
|
|
130
223
|
if (sessionName) signal.sessionName = sessionName;
|
|
131
224
|
writeFileSync(path.join(ackDir(), `${taskId}.failed`), JSON.stringify(signal), "utf-8");
|
|
132
225
|
try {
|
|
133
|
-
|
|
226
|
+
unlinkSync2(pendingPath);
|
|
134
227
|
} catch {
|
|
135
228
|
}
|
|
229
|
+
appendDispatchJournalEvent({
|
|
230
|
+
event: "dispatch.failed",
|
|
231
|
+
taskId,
|
|
232
|
+
agentId: assignedTo,
|
|
233
|
+
sessionName: signal.sessionName ?? null,
|
|
234
|
+
sessionScope: signal.sessionName?.includes("-") ? signal.sessionName.slice(signal.sessionName.indexOf("-") + 1) : signal.sessionName ?? null,
|
|
235
|
+
result: "failed",
|
|
236
|
+
reason: error
|
|
237
|
+
});
|
|
136
238
|
}
|
|
137
239
|
function checkDispatchStatus(taskId) {
|
|
138
240
|
ensureAckDir();
|
|
139
241
|
const ackPath = path.join(ackDir(), `${taskId}.ack`);
|
|
140
242
|
const failedPath = path.join(ackDir(), `${taskId}.failed`);
|
|
141
243
|
const pendingPath = path.join(ackDir(), `${taskId}.pending`);
|
|
142
|
-
if (
|
|
244
|
+
if (existsSync2(ackPath)) {
|
|
143
245
|
try {
|
|
144
246
|
const signal = JSON.parse(readFileSync(ackPath, "utf-8"));
|
|
145
247
|
return { status: "acked", signal };
|
|
@@ -147,7 +249,7 @@ function checkDispatchStatus(taskId) {
|
|
|
147
249
|
return { status: "acked" };
|
|
148
250
|
}
|
|
149
251
|
}
|
|
150
|
-
if (
|
|
252
|
+
if (existsSync2(failedPath)) {
|
|
151
253
|
try {
|
|
152
254
|
const signal = JSON.parse(readFileSync(failedPath, "utf-8"));
|
|
153
255
|
return { status: "failed", signal };
|
|
@@ -155,7 +257,7 @@ function checkDispatchStatus(taskId) {
|
|
|
155
257
|
return { status: "failed" };
|
|
156
258
|
}
|
|
157
259
|
}
|
|
158
|
-
if (
|
|
260
|
+
if (existsSync2(pendingPath)) {
|
|
159
261
|
try {
|
|
160
262
|
const signal = JSON.parse(readFileSync(pendingPath, "utf-8"));
|
|
161
263
|
return { status: "pending", signal };
|
|
@@ -173,7 +275,7 @@ function terminalFailurePath(agentId, scope, baseDir) {
|
|
|
173
275
|
}
|
|
174
276
|
function writeTerminalLauncherFailure(rec, baseDir = TERMINAL_FAILURE_DIR) {
|
|
175
277
|
try {
|
|
176
|
-
if (!
|
|
278
|
+
if (!existsSync2(baseDir)) mkdirSync2(baseDir, { recursive: true });
|
|
177
279
|
const payload = {
|
|
178
280
|
reason: rec.reason,
|
|
179
281
|
...rec.detail ? { detail: rec.detail } : {},
|
|
@@ -190,7 +292,7 @@ function readTerminalLauncherFailure(agentId, scope, opts) {
|
|
|
190
292
|
const now = opts?.now ?? Date.now();
|
|
191
293
|
try {
|
|
192
294
|
const p = terminalFailurePath(agentId, scope, baseDir);
|
|
193
|
-
if (!
|
|
295
|
+
if (!existsSync2(p)) return null;
|
|
194
296
|
const rec = JSON.parse(readFileSync(p, "utf-8"));
|
|
195
297
|
if (!rec || typeof rec.reason !== "string" || rec.reason.trim().length === 0) return null;
|
|
196
298
|
if (typeof rec.ts !== "string") return null;
|
|
@@ -205,7 +307,7 @@ function readTerminalLauncherFailure(agentId, scope, opts) {
|
|
|
205
307
|
}
|
|
206
308
|
function clearTerminalLauncherFailure(agentId, scope, baseDir = TERMINAL_FAILURE_DIR) {
|
|
207
309
|
try {
|
|
208
|
-
|
|
310
|
+
unlinkSync2(terminalFailurePath(agentId, scope, baseDir));
|
|
209
311
|
} catch {
|
|
210
312
|
}
|
|
211
313
|
}
|
|
@@ -215,7 +317,7 @@ function cleanStaleDispatchAcks(maxAgeMs = 60 * 60 * 1e3) {
|
|
|
215
317
|
let cleaned = 0;
|
|
216
318
|
try {
|
|
217
319
|
const dir = ackDir();
|
|
218
|
-
for (const file of
|
|
320
|
+
for (const file of readdirSync2(dir)) {
|
|
219
321
|
const fullPath = path.join(dir, file);
|
|
220
322
|
if (file.includes(".spawnlock.b")) {
|
|
221
323
|
try {
|
|
@@ -238,12 +340,12 @@ function cleanStaleDispatchAcks(maxAgeMs = 60 * 60 * 1e3) {
|
|
|
238
340
|
const signal = JSON.parse(readFileSync(fullPath, "utf-8"));
|
|
239
341
|
const ts = signal.ackedAt ?? signal.dispatchedAt;
|
|
240
342
|
if (now - new Date(ts).getTime() > maxAgeMs) {
|
|
241
|
-
|
|
343
|
+
unlinkSync2(fullPath);
|
|
242
344
|
cleaned++;
|
|
243
345
|
}
|
|
244
346
|
} catch {
|
|
245
347
|
try {
|
|
246
|
-
|
|
348
|
+
unlinkSync2(fullPath);
|
|
247
349
|
cleaned++;
|
|
248
350
|
} catch {
|
|
249
351
|
}
|
|
@@ -255,6 +357,7 @@ function cleanStaleDispatchAcks(maxAgeMs = 60 * 60 * 1e3) {
|
|
|
255
357
|
}
|
|
256
358
|
|
|
257
359
|
export {
|
|
360
|
+
appendDispatchJournalEvent,
|
|
258
361
|
DISPATCH_DEDUP_WINDOW_MS,
|
|
259
362
|
writeDispatchPending,
|
|
260
363
|
tryAcquireDispatchClaim,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isExeSession,
|
|
3
3
|
strictSessionScopeFilter
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EWWCMMES.js";
|
|
5
5
|
import {
|
|
6
6
|
recordOrchestrationEventBestEffort
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-MT6YGWJ6.js";
|
|
8
8
|
import {
|
|
9
9
|
getProjectName
|
|
10
10
|
} from "./chunk-OPU3NYOO.js";
|
|
11
11
|
import {
|
|
12
12
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
13
13
|
getCoordinatorName
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ZY2ABBVR.js";
|
|
15
15
|
import {
|
|
16
16
|
loadConfigSync
|
|
17
17
|
} from "./chunk-BCZF3AGJ.js";
|
|
@@ -260,7 +260,7 @@ function createRealDeps(getClient) {
|
|
|
260
260
|
});
|
|
261
261
|
},
|
|
262
262
|
createReviewForOrphan: async (task) => {
|
|
263
|
-
const { createReviewForCompletedTask } = await import("./tasks-review-
|
|
263
|
+
const { createReviewForCompletedTask } = await import("./tasks-review-ZY3S65OV.js");
|
|
264
264
|
const cwd = process.cwd();
|
|
265
265
|
await createReviewForCompletedTask(
|
|
266
266
|
task,
|
|
@@ -212,7 +212,7 @@ async function main(args) {
|
|
|
212
212
|
console.log("[health-gate] Starting rollback...");
|
|
213
213
|
restorePreDeployBackup();
|
|
214
214
|
try {
|
|
215
|
-
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-
|
|
215
|
+
const { rollbackStackUpdate, defaultStackPaths } = await import("./stack-update-CBP5S5BG.js");
|
|
216
216
|
const paths = defaultStackPaths();
|
|
217
217
|
await rollbackStackUpdate({
|
|
218
218
|
manifestRef: paths.manifestRef,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatDegradations,
|
|
3
3
|
getRetrievalHealth
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CYI2YR56.js";
|
|
5
5
|
import {
|
|
6
6
|
buildRestartReport,
|
|
7
7
|
formatRestartReport
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./chunk-OTVEIJUQ.js";
|
|
21
21
|
import {
|
|
22
22
|
offloadReadIfMain
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-ZY2ABBVR.js";
|
|
24
24
|
import {
|
|
25
25
|
isMainModule
|
|
26
26
|
} from "./chunk-6Y4B3QF6.js";
|
|
@@ -1023,7 +1023,7 @@ function formatReport(report, flags) {
|
|
|
1023
1023
|
return lines.join("\n");
|
|
1024
1024
|
}
|
|
1025
1025
|
async function fixNullVectors() {
|
|
1026
|
-
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-
|
|
1026
|
+
const { tryAcquireWorkerSlot, registerWorkerPid } = await import("./worker-gate-NZRA426F.js");
|
|
1027
1027
|
if (!tryAcquireWorkerSlot()) {
|
|
1028
1028
|
process.stderr.write("[exe-doctor] Worker gate full \u2014 waiting for existing backfill workers to finish\n");
|
|
1029
1029
|
await new Promise((r) => setTimeout(r, 5e3));
|
|
@@ -1209,7 +1209,7 @@ async function main(argv = process.argv.slice(2)) {
|
|
|
1209
1209
|
console.log(formatRestartReport(restartReport));
|
|
1210
1210
|
return emptyAuditReport();
|
|
1211
1211
|
}
|
|
1212
|
-
const { fastDbInit } = await import("./fast-db-init-
|
|
1212
|
+
const { fastDbInit } = await import("./fast-db-init-O7AECNTB.js");
|
|
1213
1213
|
const client = await fastDbInit();
|
|
1214
1214
|
const report = await runAudit(client, flags);
|
|
1215
1215
|
console.log(formatReport(report, flags));
|