@askexenow/exe-os 0.9.322 → 0.9.324
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deploy/compose/.env.customer.example +1 -1
- package/deploy/compose/.env.example +18 -1
- package/deploy/compose/PROTECTED_FILES.md +4 -1
- package/deploy/compose/add-routes.sh +22 -0
- package/deploy/compose/cloudflared/config.yml.example +6 -3
- package/deploy/compose/docker-compose.yml +36 -1
- package/deploy/compose/generate-env.ts +40 -2
- package/deploy/compose/sso-edge/default.conf.template +11 -0
- package/deploy/compose/sso-edge/sso-redirect.conf +90 -21
- package/deploy/stack-manifests/v0.9.json +110 -2
- package/dist/{active-agent-M5NJFEBM.js → active-agent-CVSB2EER.js} +3 -3
- package/dist/{active-agent-SHM4QSRJ.js → active-agent-IUVRZOSF.js} +3 -3
- package/dist/{agentic-ontology-HQKCU7LG.js → agentic-ontology-2QFPBIQP.js} +1 -1
- package/dist/backfill-gate-J7UXFNXU.js +19 -0
- package/dist/{backfill-metadata-CXWFCTBO.js → backfill-metadata-W3PRQPVV.js} +4 -4
- package/dist/{behaviors-J47D342W.js → behaviors-MQCADHAD.js} +5 -5
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +11 -11
- package/dist/bin/backfill-responses.js +11 -11
- package/dist/bin/backfill-vectors.js +102 -22
- package/dist/bin/bulk-sync-postgres.js +14 -14
- package/dist/bin/cc-doctor.js +5 -5
- package/dist/bin/cleanup-stale-review-tasks.js +20 -13
- package/dist/bin/cli.js +28 -31
- package/dist/bin/customer-readiness.js +1 -0
- package/dist/bin/deferred-daemon-restart.js +80 -77
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +5 -5
- package/dist/bin/exe-assign.js +10 -10
- package/dist/bin/exe-boot.js +32 -23
- package/dist/bin/exe-call.js +5 -5
- package/dist/bin/exe-cloud.js +120 -47
- package/dist/bin/exe-config-dump.js +3 -3
- package/dist/bin/exe-dispatch.js +48 -14
- package/dist/bin/exe-doctor.js +4 -4
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +8 -8
- package/dist/bin/exe-healthcheck.js +17 -8
- package/dist/bin/exe-heartbeat.js +20 -13
- package/dist/bin/exe-kill.js +23 -16
- package/dist/bin/exe-launch-agent.js +30 -27
- package/dist/bin/exe-new-employee.js +9 -9
- package/dist/bin/exe-pending-messages.js +21 -14
- package/dist/bin/exe-pending-notifications.js +20 -13
- package/dist/bin/exe-pending-reviews.js +20 -13
- package/dist/bin/exe-rename.js +5 -5
- package/dist/bin/exe-review.js +22 -15
- package/dist/bin/exe-search.js +8 -13
- package/dist/bin/exe-session-cleanup.js +39 -22
- package/dist/bin/exe-settings.js +15 -15
- package/dist/bin/exe-start-codex.js +51 -34
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +21 -14
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/exe-watchdog.js +278 -39
- package/dist/bin/git-sweep.js +21 -14
- package/dist/bin/graph-backfill.js +4 -4
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +7 -7
- package/dist/bin/install-launchd.js +2 -2
- package/dist/bin/install.js +121 -88
- 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/pre-publish.js +1 -1
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +20 -13
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{capability-cards-H7H3MU74.js → capability-cards-STD3NMCR.js} +2 -2
- package/dist/{capacity-monitor-WAEHVBL7.js → capacity-monitor-6O3PWYNM.js} +21 -14
- package/dist/{catchup-brief-L42STIDR.js → catchup-brief-EDQ3VZCF.js} +23 -16
- package/dist/{chunk-HKSJSW2V.js → chunk-2E2NKFXK.js} +1 -1
- package/dist/{chunk-NYFPFOYM.js → chunk-2NY7LZT7.js} +1 -1
- package/dist/{chunk-DGFIXJ4S.js → chunk-2QD5M47V.js} +3 -3
- package/dist/{chunk-3M73L663.js → chunk-2YWUZPHE.js} +2 -2
- package/dist/{chunk-LB77CSLO.js → chunk-2ZW4AQ24.js} +3 -3
- package/dist/{chunk-E32KARET.js → chunk-376J36IW.js} +4 -4
- package/dist/{chunk-CWQAXO3O.js → chunk-5RACW3LX.js} +28 -3
- package/dist/{chunk-VSXGFHJY.js → chunk-5VT45EV6.js} +1 -1
- package/dist/{chunk-X62GD6QW.js → chunk-5YCOEPEX.js} +2 -2
- package/dist/{chunk-TKBWBHFV.js → chunk-6FWMLTF2.js} +1 -1
- package/dist/chunk-6IWLAQ7O.js +40 -0
- package/dist/{chunk-WFHYAKEU.js → chunk-6XAAJ5OV.js} +1 -1
- package/dist/{chunk-4Z47UMMM.js → chunk-7M6TXYRQ.js} +23 -23
- package/dist/{chunk-HWC5W34K.js → chunk-7PLMYXPG.js} +1 -1
- package/dist/{chunk-DDKDN4HV.js → chunk-A47MXY2I.js} +7 -0
- package/dist/{chunk-SQ5JWDJ2.js → chunk-AEFZEJKW.js} +1 -1
- package/dist/{chunk-657AQEPY.js → chunk-AVKZIG4A.js} +1 -1
- package/dist/{chunk-EPBB2OD3.js → chunk-BB5IKY7B.js} +2 -2
- package/dist/{chunk-3JW3ZXCP.js → chunk-BC7IIR3A.js} +65 -39
- package/dist/{chunk-WSYKLS2Y.js → chunk-BDJQWBWF.js} +3 -3
- package/dist/{chunk-VY7345RO.js → chunk-BMSAJ2IH.js} +1 -1
- package/dist/{chunk-OI63OVCR.js → chunk-C7B44DJI.js} +1 -1
- package/dist/{chunk-GA76RGSP.js → chunk-CS6MYGNB.js} +5 -5
- package/dist/{chunk-6N4LYEDI.js → chunk-CSPHV5DJ.js} +1 -1
- package/dist/{chunk-HGM6NZQH.js → chunk-DYUISOIT.js} +1 -1
- package/dist/{signal-paths-4GOIRLGH.js → chunk-EIKATSE4.js} +3 -4
- package/dist/{chunk-G5TP2D2U.js → chunk-EWDTTTZP.js} +3 -3
- package/dist/{chunk-TI6YX3L5.js → chunk-F2RK5YWB.js} +36 -27
- package/dist/{chunk-HV5CUDOE.js → chunk-F6TJIWN5.js} +1 -1
- package/dist/{chunk-WCCR5IFR.js → chunk-FPTBCPI3.js} +2 -2
- package/dist/{chunk-QVFJCFNM.js → chunk-FROUDYRT.js} +33 -2
- package/dist/{chunk-T6AUMO5X.js → chunk-GIFDGNIL.js} +1 -1
- package/dist/{chunk-OFR7KQ37.js → chunk-HAYDXMW6.js} +3 -3
- package/dist/{chunk-V2ESQU3S.js → chunk-HBKYKN3S.js} +3 -3
- package/dist/{chunk-LCZ55G5G.js → chunk-HZ5J2GFE.js} +136 -66
- package/dist/{chunk-EOPSIIEH.js → chunk-ID3V4BWS.js} +1 -1
- package/dist/{chunk-ABGDTMKC.js → chunk-JRD7ARQ6.js} +60 -2
- package/dist/{chunk-7FBPLVHM.js → chunk-KADUJ7PE.js} +3 -3
- package/dist/{chunk-KLG53B63.js → chunk-KJOQLNX2.js} +1 -1
- package/dist/{chunk-AZL3EUR3.js → chunk-KK67DSCO.js} +229 -29
- package/dist/{chunk-H2SD2EA7.js → chunk-KLDQFOFY.js} +23 -9
- package/dist/chunk-KPIN44GZ.js +67 -0
- package/dist/{chunk-PLBDXCYZ.js → chunk-KUJGADX6.js} +1491 -606
- package/dist/{chunk-GN3IWZDH.js → chunk-KWWHRJGG.js} +660 -539
- package/dist/{chunk-ERSFOJGC.js → chunk-LUOQCGBO.js} +20 -11
- package/dist/{chunk-CXXERHNC.js → chunk-LWAGAC3H.js} +1 -1
- package/dist/{chunk-7BZ6TOZN.js → chunk-MB2YT5VQ.js} +3 -3
- package/dist/{chunk-KXP3CUTL.js → chunk-MCEXBLLK.js} +3 -3
- package/dist/{chunk-A3KUGBDP.js → chunk-MIWPKWXQ.js} +1 -1
- package/dist/{chunk-7CUF27OT.js → chunk-MKIFYIXC.js} +1 -1
- package/dist/{chunk-ONKIWA3R.js → chunk-ML4S5SHZ.js} +3 -1
- package/dist/{chunk-BFHBHQFA.js → chunk-MWIX3YKA.js} +5 -5
- package/dist/{chunk-6UQRJCKK.js → chunk-NBDTQVWU.js} +2 -2
- package/dist/{chunk-KK4ZOYXJ.js → chunk-NGACCR2M.js} +80 -40
- package/dist/{chunk-CMDC5D7S.js → chunk-NLEW62VC.js} +6 -0
- package/dist/{chunk-QYLDCPNG.js → chunk-PGFYWVOB.js} +1 -1
- package/dist/{chunk-XEBN5CPD.js → chunk-PGUISLOT.js} +3 -3
- package/dist/{chunk-MYMA23KC.js → chunk-PJTEZLAM.js} +1 -1
- package/dist/{chunk-QNUHDEPI.js → chunk-POOMY3CS.js} +4 -4
- package/dist/{chunk-2GBGIXKH.js → chunk-PV7IG4V6.js} +1 -1
- package/dist/{chunk-SENJA7BZ.js → chunk-QDI77B3E.js} +54 -7
- package/dist/{chunk-XLNF3CIO.js → chunk-QGOMYIVT.js} +119 -24
- package/dist/{chunk-HIOO7DZ2.js → chunk-QQFZ32WS.js} +5 -5
- package/dist/{chunk-KL5WYWS3.js → chunk-SOXUF34Y.js} +2 -2
- package/dist/{chunk-6XM6PZXQ.js → chunk-SPO2RLOB.js} +1 -1
- package/dist/{chunk-ROMB2HH4.js → chunk-T3XHH5FE.js} +6 -6
- package/dist/{chunk-6SXJZHRJ.js → chunk-TA3A4UQL.js} +1 -1
- package/dist/{chunk-XP53WEXP.js → chunk-TGVKQ3QB.js} +3 -3
- package/dist/{chunk-XC7C3GQ2.js → chunk-TNS6U2K7.js} +30 -19
- package/dist/{chunk-JXEMAB4M.js → chunk-UAIMI7CK.js} +1 -1
- package/dist/{chunk-YIFZZYQD.js → chunk-UBYAKNRF.js} +2 -2
- package/dist/{chunk-6IBUQBMY.js → chunk-UXYQLOFW.js} +198 -39
- package/dist/{chunk-C4BIZXKB.js → chunk-UYOW7U24.js} +1 -1
- package/dist/{chunk-NFM6VHL7.js → chunk-V4VYIHSL.js} +1 -1
- package/dist/{chunk-QQOH3I4A.js → chunk-VDUHWQFA.js} +1 -1
- package/dist/{chunk-EVUXF2G4.js → chunk-W5GBB23I.js} +1 -1
- package/dist/{chunk-FANIBYUO.js → chunk-WF3J6GJZ.js} +2 -2
- package/dist/{chunk-NAHAOFTY.js → chunk-WGHTISNK.js} +3 -3
- package/dist/{chunk-F5FAD2YR.js → chunk-WGOAILWE.js} +2 -2
- package/dist/{chunk-LOE2N23P.js → chunk-WJICX53Z.js} +1 -1
- package/dist/{skill-refinement-YLIAY7V4.js → chunk-Y2KBHLEO.js} +3 -11
- package/dist/{chunk-PISGLNV7.js → chunk-Y34FDPOY.js} +5 -5
- package/dist/{chunk-ORC5AO7E.js → chunk-YBHOWK3L.js} +2 -2
- package/dist/{chunk-7SDS5VCL.js → chunk-ZDNJ3TSB.js} +7 -7
- package/dist/{chunk-CHSRSESS.js → chunk-ZRZ2Z6RZ.js} +1 -1
- package/dist/{cleanup-graph-garbage-MX5JDTJA.js → cleanup-graph-garbage-2YH52ADR.js} +4 -4
- package/dist/{co-activation-K44LGZ7A.js → co-activation-7F3J2GC7.js} +2 -2
- package/dist/{co-occurrence-N62HJTRP.js → co-occurrence-B36Q5GY3.js} +2 -2
- package/dist/{code-context-index-6YQ3DGCN.js → code-context-index-2PUBBQOE.js} +3 -3
- package/dist/{crdt-sync-BO76VVRX.js → crdt-sync-MXHPR6V6.js} +1 -1
- package/dist/{crm-bridge-BVTB6LZK.js → crm-bridge-CZLEW2LW.js} +1 -1
- package/dist/{crm-webhook-UZLTHXAS.js → crm-webhook-56MWGMRY.js} +2 -2
- package/dist/{cto-delegation-gate-NVMRONA2.js → cto-delegation-gate-26BD7NEE.js} +19 -12
- package/dist/{daemon-orchestration-JI3RD5EZ.js → daemon-orchestration-IBP6PWEG.js} +31 -16
- package/dist/{db-backup-ITRADB2J.js → db-backup-XLID57KW.js} +1 -1
- package/dist/{doc-graph-extractor-L7YESUSI.js → doc-graph-extractor-VBZ6XTTE.js} +2 -2
- package/dist/{documents-7BFXA6V3.js → documents-C5LYSJT3.js} +10 -10
- package/dist/{dreaming-NRTMPNPZ.js → dreaming-LMVDIC5C.js} +20 -13
- package/dist/{exe-drift-GLJIM7EI.js → exe-drift-T3K6WA47.js} +3 -3
- package/dist/{exe-export-THIAYHXK.js → exe-export-QCTASWXI.js} +7 -7
- package/dist/{exe-import-3Y4VOUYL.js → exe-import-WNP5A7VA.js} +7 -7
- package/dist/{exe-key-IPGY4RMU.js → exe-key-JM3JXE2E.js} +78 -75
- package/dist/{exe-snapshot-2ZEWCDYK.js → exe-snapshot-ODDJUEM5.js} +23 -16
- package/dist/{fast-db-init-TLYUWCDE.js → fast-db-init-O6A3TK3F.js} +1 -1
- package/dist/{founder-context-J362DNU4.js → founder-context-FYTF4IMD.js} +2 -2
- package/dist/gateway/index.js +9 -9
- package/dist/{git-staleness-BRDHTHNS.js → git-staleness-YA5J6VYJ.js} +2 -2
- package/dist/{global-procedures-FNUKY2LF.js → global-procedures-76NDWTYN.js} +4 -4
- package/dist/{graph-auto-extract-AJZUV3PO.js → graph-auto-extract-I7QL2TY5.js} +2 -2
- package/dist/hooks/bug-report-worker.js +22 -15
- package/dist/hooks/codex-stop-task-finalizer.js +22 -15
- package/dist/hooks/commit-complete.js +22 -15
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest-worker.js +6 -6
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +21 -14
- package/dist/hooks/post-tool-combined.js +8 -8
- package/dist/hooks/pre-compact.js +22 -21
- package/dist/hooks/pre-tool-use.js +29 -19
- package/dist/hooks/prompt-submit.js +89 -72
- package/dist/hooks/session-end.js +27 -26
- package/dist/hooks/session-start.js +13 -13
- package/dist/hooks/stop.js +28 -21
- package/dist/hooks/subagent-stop.js +24 -41
- package/dist/hooks/summary-worker.js +27 -25
- package/dist/index.js +30 -23
- package/dist/{installer-SC7CQBYY.js → installer-3EYHBKWB.js} +5 -5
- package/dist/{installer-UEF44TWQ.js → installer-3VZMDDMJ.js} +5 -5
- package/dist/{installer-2EKTDQZB.js → installer-GYABVCB7.js} +5 -5
- package/dist/intercom-queue-ZCNT4LYU.js +53 -0
- package/dist/lib/agent-config.js +7 -1
- package/dist/lib/cloud-sync.js +16 -14
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +10 -2
- package/dist/lib/db-daemon-client.js +3 -3
- package/dist/lib/db.js +10 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embed-worker.js +28 -0
- package/dist/lib/embedder.js +3 -3
- package/dist/lib/employee-templates.js +5 -5
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +2 -2
- package/dist/lib/exe-daemon.js +393 -140
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +20 -13
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +6 -4
- package/dist/lib/skill-learning.js +6 -6
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +21 -14
- package/dist/lib/tmux-routing.js +29 -12
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-YUUSIPJ7.js → license-gate-73XGUIVP.js} +3 -3
- package/dist/{license-sync-LX73IEBH.js → license-sync-CG5YRUVH.js} +2 -2
- package/dist/mcp/register-tools.js +75 -72
- package/dist/mcp/server.js +96 -130
- 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 +37 -18
- package/dist/mcp/tools/deactivate-behavior.js +7 -7
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +23 -16
- package/dist/mcp/tools/send-message.js +22 -15
- package/dist/mcp/tools/update-task.js +22 -15
- package/dist/{mcp-http-config-MBG5AQNH.js → mcp-http-config-TT7PXZLX.js} +3 -3
- package/dist/{memory-cards-MGZ4P3AA.js → memory-cards-6NGUDUDN.js} +4 -4
- package/dist/{memory-graph-extractor-44P2ATID.js → memory-graph-extractor-FIMS3VQR.js} +3 -3
- package/dist/{memory-poisoning-defense-3CYFKNLA.js → memory-poisoning-defense-M3LOQ3XU.js} +2 -2
- package/dist/{memory-pressure-watchdog-6PFLEOUO.js → memory-pressure-watchdog-45GABDWH.js} +20 -13
- package/dist/{memory-queue-client-BZD6MXA5.js → memory-queue-client-BDYKFNB4.js} +3 -3
- package/dist/{memory-reflection-AYPJRPU7.js → memory-reflection-LANCFYK2.js} +7 -9
- package/dist/{notifications-BBQ23ORD.js → notifications-N5NKUYAU.js} +19 -12
- package/dist/{orchestration-events-O5P5NEKS.js → orchestration-events-KVNRNIPR.js} +3 -3
- package/dist/{orchestrator-SERM6FDY.js → orchestrator-VTF5BR26.js} +21 -14
- package/dist/{pipeline-router-T673WGL3.js → pipeline-router-KQAYWDPH.js} +3 -3
- package/dist/{plan-limits-QWBN2EKH.js → plan-limits-EUZI4X5W.js} +5 -5
- package/dist/{projection-worker-K6TILAZH.js → projection-worker-FG6G226D.js} +12 -2
- package/dist/{prospective-memory-XRNRMEDL.js → prospective-memory-FVDNUSIL.js} +2 -2
- package/dist/{reranker-3XC5UM4F.js → reranker-54Q3L32E.js} +1 -1
- package/dist/{retrieval-health-ULVVOIPL.js → retrieval-health-YJ7CXYVD.js} +1 -1
- package/dist/{review-polling-5YGDPJUX.js → review-polling-TKXYSXH6.js} +20 -13
- package/dist/runtime/index.js +23 -16
- package/dist/{session-events-D52HNUJK.js → session-events-WQHTP65R.js} +20 -13
- package/dist/{session-kill-telemetry-IBNCJSI7.js → session-kill-telemetry-2HSE7IGH.js} +20 -13
- package/dist/{session-scope-5FWZ4AYR.js → session-scope-RBKAC75W.js} +19 -12
- package/dist/{setup-wizard-KVTLSSRD.js → setup-wizard-AA6ZV57H.js} +1 -1
- package/dist/signal-paths-4G53QTII.js +11 -0
- package/dist/skill-refinement-QI35LMTZ.js +20 -0
- package/dist/{stack-update-OWWGTYRB.js → stack-update-BE6PX4AG.js} +9 -3
- package/dist/{steward-gate-3ZITRYVH.js → steward-gate-2XD5BXH6.js} +3 -3
- package/dist/{support-outbox-QPQQK7F7.js → support-outbox-MGUVVGHT.js} +96 -44
- package/dist/sweep-budget-WB2FKPYN.js +64 -0
- package/dist/{task-enforcement-L4YTDOOX.js → task-enforcement-DMOCBRLB.js} +191 -17
- package/dist/{task-scope-OIHLMQOQ.js → task-scope-ULBNFBFH.js} +25 -12
- package/dist/{tasks-crud-QUIIRWE3.js → tasks-crud-6SJOKES5.js} +25 -12
- package/dist/{tasks-notify-ANYLB5GU.js → tasks-notify-TESRABUM.js} +20 -13
- package/dist/{tasks-review-BWSCXFMB.js → tasks-review-INDAGLWJ.js} +27 -14
- package/dist/{telemetry-upload-XLDBCD7B.js → telemetry-upload-6XB3Q3IH.js} +7 -7
- package/dist/{token-budget-OQCLPV3A.js → token-budget-NOF27AZC.js} +3 -3
- package/dist/{tool-capability-index-3UWKZZED.js → tool-capability-index-EFBBPTBI.js} +1 -1
- package/dist/{tool-telemetry-AQTFWOWG.js → tool-telemetry-OEK6KQFF.js} +1 -1
- package/dist/tui/App.js +28 -21
- package/dist/{tui-data-3Y5L5LJB.js → tui-data-EG6LEZFF.js} +19 -12
- package/dist/{worker-gate-WJS2MFNA.js → worker-gate-YA35VMAN.js} +1 -1
- package/dist/{workflow-engine-EPPZ226V.js → workflow-engine-3AVKRE5I.js} +2 -2
- package/dist/{worktree-OYGDGJP7.js → worktree-72QYYL5L.js} +4 -4
- package/dist/{worktree-sweep-KV4H4766.js → worktree-sweep-GDISKGQ2.js} +5 -5
- package/package.json +1 -1
- package/release-notes.json +45 -45
- package/dist/chunk-4FVVJ7ME.js +0 -193
- package/dist/completion-nudge-dedup-DBZF24MM.js +0 -74
- package/dist/git-task-sweep-7GVUKDBW.js +0 -47
- package/dist/intercom-queue-6M5IRX3Y.js +0 -17
- /package/dist/{chunk-QTEHH4LG.js → chunk-24WPWCD6.js} +0 -0
- /package/dist/{chunk-IZY6V4FI.js → chunk-4O3N7I5Z.js} +0 -0
- /package/dist/{chunk-WXRVHXVP.js → chunk-7577GDDG.js} +0 -0
- /package/dist/{chunk-Q5YKWFVO.js → chunk-EWKZKO7F.js} +0 -0
- /package/dist/{chunk-DY3J6GQO.js → chunk-H43BPGIV.js} +0 -0
- /package/dist/{chunk-DQJ3WZRK.js → chunk-IHRXCNSC.js} +0 -0
- /package/dist/{chunk-RRQI5PSJ.js → chunk-NIB2N6L2.js} +0 -0
- /package/dist/{chunk-ZU6767WK.js → chunk-QMUSJESS.js} +0 -0
- /package/dist/{chunk-72LWCZTJ.js → chunk-RXS2LBKE.js} +0 -0
- /package/dist/{chunk-SJZT66LM.js → chunk-SNFYZFXY.js} +0 -0
- /package/dist/{chunk-SIJSFULW.js → chunk-TSYMWC53.js} +0 -0
- /package/dist/{core-memory-DARTILJG.js → core-memory-NKKP2XUB.js} +0 -0
- /package/dist/{entity-boost-VR5YOQCT.js → entity-boost-DRIUFTYB.js} +0 -0
- /package/dist/{message-queue-client-HVFR67QH.js → message-queue-client-4ERC7HLX.js} +0 -0
- /package/dist/{oauth-server-UQHCFVHT.js → oauth-server-PECJREY2.js} +0 -0
- /package/dist/{project-boot-22ZZL2GE.js → project-boot-SFKP2MFW.js} +0 -0
- /package/dist/{wiki-acl-EZMGL6KW.js → wiki-acl-QIBDNXSM.js} +0 -0
package/dist/tui/App.js
CHANGED
|
@@ -1,27 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
getSessionPrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-WJICX53Z.js";
|
|
5
|
+
import "../chunk-YBHOWK3L.js";
|
|
6
|
+
import "../chunk-A47MXY2I.js";
|
|
7
7
|
import {
|
|
8
8
|
sessionScopeFilter
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-KUJGADX6.js";
|
|
10
|
+
import "../chunk-7PLMYXPG.js";
|
|
11
|
+
import "../chunk-KJOQLNX2.js";
|
|
12
|
+
import "../chunk-Y2KBHLEO.js";
|
|
13
|
+
import "../chunk-EIKATSE4.js";
|
|
13
14
|
import "../chunk-E23LNUWJ.js";
|
|
14
15
|
import "../chunk-4JERP7NT.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-JRD7ARQ6.js";
|
|
16
17
|
import "../chunk-SSTLTIF3.js";
|
|
17
18
|
import "../chunk-RMOBQ6A5.js";
|
|
18
19
|
import "../chunk-54QCG45Y.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-F6TJIWN5.js";
|
|
21
|
+
import "../chunk-FROUDYRT.js";
|
|
21
22
|
import "../chunk-NGP6LSV2.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-BB5IKY7B.js";
|
|
23
24
|
import "../chunk-CVYC6DUW.js";
|
|
25
|
+
import "../chunk-GIFDGNIL.js";
|
|
26
|
+
import "../chunk-HCJCW7X4.js";
|
|
24
27
|
import "../chunk-OPU3NYOO.js";
|
|
28
|
+
import "../chunk-BC7IIR3A.js";
|
|
29
|
+
import "../chunk-AFNRE2RV.js";
|
|
30
|
+
import "../chunk-3NGZ4PL7.js";
|
|
31
|
+
import "../chunk-NLEW62VC.js";
|
|
25
32
|
import "../chunk-HYZV25LY.js";
|
|
26
33
|
import "../chunk-GJV3WDWM.js";
|
|
27
34
|
import {
|
|
@@ -30,15 +37,15 @@ import {
|
|
|
30
37
|
import {
|
|
31
38
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
32
39
|
isCoordinatorName
|
|
33
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-QGOMYIVT.js";
|
|
34
41
|
import "../chunk-2I23RPSI.js";
|
|
35
|
-
import "../chunk-
|
|
42
|
+
import "../chunk-7577GDDG.js";
|
|
36
43
|
import "../chunk-PNQDP3OA.js";
|
|
37
44
|
import "../chunk-H73TUI4Y.js";
|
|
38
45
|
import "../chunk-7HLWBYH7.js";
|
|
39
46
|
import "../chunk-FXU7JOXK.js";
|
|
40
|
-
import "../chunk-
|
|
41
|
-
import "../chunk-
|
|
47
|
+
import "../chunk-BMSAJ2IH.js";
|
|
48
|
+
import "../chunk-IHRXCNSC.js";
|
|
42
49
|
import {
|
|
43
50
|
THEME_MODES,
|
|
44
51
|
tuiPalette
|
|
@@ -7411,7 +7418,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7411
7418
|
let cancelled = false;
|
|
7412
7419
|
async function init() {
|
|
7413
7420
|
try {
|
|
7414
|
-
const { MultiAgentOrchestrator } = await import("../orchestrator-
|
|
7421
|
+
const { MultiAgentOrchestrator } = await import("../orchestrator-VTF5BR26.js");
|
|
7415
7422
|
const { getCoordinatorName, isCoordinatorRole, loadEmployees } = await import("../lib/employees.js");
|
|
7416
7423
|
const { isExeSession } = await import("../lib/tmux-routing.js");
|
|
7417
7424
|
const { listTmuxSessions, inTmux } = await import("../lib/tmux-status.js");
|
|
@@ -7452,7 +7459,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7452
7459
|
setTotalInProgress(health.totalInProgress);
|
|
7453
7460
|
try {
|
|
7454
7461
|
const { getClient } = await import("../lib/database.js");
|
|
7455
|
-
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-
|
|
7462
|
+
const { sessionScopeFilter: sessionScopeFilter2 } = await import("../task-scope-ULBNFBFH.js");
|
|
7456
7463
|
const client = getClient();
|
|
7457
7464
|
const uoScope = sessionScopeFilter2();
|
|
7458
7465
|
const result = await client.execute({
|
|
@@ -7484,7 +7491,7 @@ function useOrchestrator(enabled = true) {
|
|
|
7484
7491
|
const spawnSession = useCallback5(
|
|
7485
7492
|
async (agentId) => {
|
|
7486
7493
|
try {
|
|
7487
|
-
const { createTaskCore } = await import("../tasks-crud-
|
|
7494
|
+
const { createTaskCore } = await import("../tasks-crud-6SJOKES5.js");
|
|
7488
7495
|
const { ensureEmployee } = await import("../lib/tmux-routing.js");
|
|
7489
7496
|
const { getCoordinatorName } = await import("../lib/employees.js");
|
|
7490
7497
|
await createTaskCore({
|
|
@@ -8108,7 +8115,7 @@ function TasksView({ onBack }) {
|
|
|
8108
8115
|
const { withTrace } = await import("../telemetry-43X3GT3R.js");
|
|
8109
8116
|
return withTrace("tui.tasks.loadTasks", async () => {
|
|
8110
8117
|
try {
|
|
8111
|
-
const { loadTaskList } = await import("../tui-data-
|
|
8118
|
+
const { loadTaskList } = await import("../tui-data-EG6LEZFF.js");
|
|
8112
8119
|
const tasks = await loadTaskList();
|
|
8113
8120
|
setAllTasks(
|
|
8114
8121
|
tasks.map((task) => ({
|
|
@@ -8941,7 +8948,7 @@ function TeamView({ onBack, onViewSessions }) {
|
|
|
8941
8948
|
let projectsByEmployee = /* @__PURE__ */ new Map();
|
|
8942
8949
|
let currentTaskByEmployee = /* @__PURE__ */ new Map();
|
|
8943
8950
|
try {
|
|
8944
|
-
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-
|
|
8951
|
+
const { loadTeamBadgeCounts, loadTeamDetailMetrics } = await import("../tui-data-EG6LEZFF.js");
|
|
8945
8952
|
setBadgeInFlight(true);
|
|
8946
8953
|
const badgeCountsPromise = loadTeamBadgeCounts();
|
|
8947
8954
|
const detailsPromise = loadTeamDetailMetrics(roster.map((emp) => emp.name));
|
|
@@ -9307,7 +9314,7 @@ function WikiView({ onBack }) {
|
|
|
9307
9314
|
}
|
|
9308
9315
|
setSearchLoading(true);
|
|
9309
9316
|
try {
|
|
9310
|
-
const { searchWikiMemoryRows } = await import("../tui-data-
|
|
9317
|
+
const { searchWikiMemoryRows } = await import("../tui-data-EG6LEZFF.js");
|
|
9311
9318
|
setSearchResults(await searchWikiMemoryRows(query));
|
|
9312
9319
|
} catch {
|
|
9313
9320
|
setSearchResults([]);
|
|
@@ -1,35 +1,42 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionScopeFilter
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-KUJGADX6.js";
|
|
4
|
+
import "./chunk-7PLMYXPG.js";
|
|
5
|
+
import "./chunk-KJOQLNX2.js";
|
|
6
|
+
import "./chunk-Y2KBHLEO.js";
|
|
7
|
+
import "./chunk-EIKATSE4.js";
|
|
7
8
|
import "./chunk-E23LNUWJ.js";
|
|
8
9
|
import "./chunk-4JERP7NT.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-JRD7ARQ6.js";
|
|
10
11
|
import "./chunk-SSTLTIF3.js";
|
|
11
12
|
import "./chunk-RMOBQ6A5.js";
|
|
12
13
|
import "./chunk-54QCG45Y.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-F6TJIWN5.js";
|
|
15
|
+
import "./chunk-FROUDYRT.js";
|
|
15
16
|
import "./chunk-NGP6LSV2.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-BB5IKY7B.js";
|
|
17
18
|
import "./chunk-CVYC6DUW.js";
|
|
19
|
+
import "./chunk-GIFDGNIL.js";
|
|
20
|
+
import "./chunk-HCJCW7X4.js";
|
|
18
21
|
import "./chunk-OPU3NYOO.js";
|
|
22
|
+
import "./chunk-BC7IIR3A.js";
|
|
23
|
+
import "./chunk-AFNRE2RV.js";
|
|
24
|
+
import "./chunk-3NGZ4PL7.js";
|
|
25
|
+
import "./chunk-NLEW62VC.js";
|
|
19
26
|
import "./chunk-HYZV25LY.js";
|
|
20
27
|
import "./chunk-GJV3WDWM.js";
|
|
21
28
|
import "./chunk-MP2AFCGL.js";
|
|
22
29
|
import {
|
|
23
30
|
getClient
|
|
24
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-QGOMYIVT.js";
|
|
25
32
|
import "./chunk-2I23RPSI.js";
|
|
26
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-7577GDDG.js";
|
|
27
34
|
import "./chunk-PNQDP3OA.js";
|
|
28
35
|
import "./chunk-H73TUI4Y.js";
|
|
29
36
|
import "./chunk-7HLWBYH7.js";
|
|
30
37
|
import "./chunk-FXU7JOXK.js";
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-BMSAJ2IH.js";
|
|
39
|
+
import "./chunk-IHRXCNSC.js";
|
|
33
40
|
import "./chunk-7Y5UDEVM.js";
|
|
34
41
|
import "./chunk-SHIICYJW.js";
|
|
35
42
|
import "./chunk-MLKGABMK.js";
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
persistWorkflows,
|
|
11
11
|
runWorkflow,
|
|
12
12
|
startWorkflow
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-DYUISOIT.js";
|
|
14
|
+
import "./chunk-4O3N7I5Z.js";
|
|
15
15
|
import "./chunk-MLKGABMK.js";
|
|
16
16
|
export {
|
|
17
17
|
advanceWorkflow,
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
parseInstanceLabel,
|
|
8
8
|
worktreeBranch,
|
|
9
9
|
worktreePath
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-KJOQLNX2.js";
|
|
11
|
+
import "./chunk-F6TJIWN5.js";
|
|
12
|
+
import "./chunk-QGOMYIVT.js";
|
|
13
13
|
import "./chunk-2I23RPSI.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-7577GDDG.js";
|
|
15
15
|
import "./chunk-PNQDP3OA.js";
|
|
16
16
|
import "./chunk-H73TUI4Y.js";
|
|
17
17
|
import "./chunk-7HLWBYH7.js";
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
cleanupAgentWorktree,
|
|
3
3
|
discoverRepoPaths,
|
|
4
4
|
sweepWorktrees
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-UYOW7U24.js";
|
|
6
|
+
import "./chunk-KJOQLNX2.js";
|
|
7
|
+
import "./chunk-F6TJIWN5.js";
|
|
8
|
+
import "./chunk-QGOMYIVT.js";
|
|
9
9
|
import "./chunk-2I23RPSI.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-7577GDDG.js";
|
|
11
11
|
import "./chunk-PNQDP3OA.js";
|
|
12
12
|
import "./chunk-H73TUI4Y.js";
|
|
13
13
|
import "./chunk-7HLWBYH7.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askexenow/exe-os",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.324",
|
|
4
4
|
"description": "AI employee operating system — persistent memory, task management, and multi-agent coordination for Claude Code.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
package/release-notes.json
CHANGED
|
@@ -1,6 +1,50 @@
|
|
|
1
1
|
{
|
|
2
|
-
"current": "0.9.
|
|
2
|
+
"current": "0.9.324",
|
|
3
3
|
"notes": {
|
|
4
|
+
"0.9.324": {
|
|
5
|
+
"version": "0.9.324",
|
|
6
|
+
"date": "2026-07-04",
|
|
7
|
+
"features": [
|
|
8
|
+
"admin-only set_customer_plan MCP tool + POST /admin/customer/plan (feature 46497a13)",
|
|
9
|
+
"add license plan-refresh procedure so all agents know how to pick up a plan change"
|
|
10
|
+
],
|
|
11
|
+
"fixes": [
|
|
12
|
+
"fix codex spawn and lane affinity checks",
|
|
13
|
+
"bound skill sweep and harden db lock release",
|
|
14
|
+
"fix daemon client reconnect persistence",
|
|
15
|
+
"isolate MCP request path from event-loop lag + reap orphaned coordinator sessions (bug 6c46d301)"
|
|
16
|
+
],
|
|
17
|
+
"security": [],
|
|
18
|
+
"other": [
|
|
19
|
+
"release: bump npm for v0.9.29 stack manifest",
|
|
20
|
+
"release(stack): v0.9.29 — today's merged daemon/gateway/crm/wiki fixes, signed",
|
|
21
|
+
"add merge_group trigger to enable GitHub Merge Queue (batches PRs, ends per-push runner storms; runs on self-hosted build-my, zero hosted minutes)"
|
|
22
|
+
],
|
|
23
|
+
"migration_notes": []
|
|
24
|
+
},
|
|
25
|
+
"0.9.323": {
|
|
26
|
+
"version": "0.9.323",
|
|
27
|
+
"date": "2026-07-03",
|
|
28
|
+
"features": [],
|
|
29
|
+
"fixes": [
|
|
30
|
+
"Watchdog: self-reloads on new builds, daemon.ready heartbeat liveness, readiness-gated boot grace, 60-120s SIGTERM grace, booting-daemon probe before kickstart -k — ends the daemon kill loop / MCP session loss (bugs f06fa50e, a77bbb7d follow-up)",
|
|
31
|
+
"Review nudges: cleanup invalidates notifications/signal files/dedup/queued intercoms; 48h signal TTL sweep; drains revalidate against scoped review count; no more phantom 'employee completed work' (bug 880a3483)",
|
|
32
|
+
"Intercom: coordinator sessions never keystroke-injected; input-buffer guard for employees; hook delivers nudges as context (P0 prompt-pollution fix)",
|
|
33
|
+
"Tasks: atomic completion write before side effects; durable dispatch journal + replay warnings; dead-coordinator tasks escalate/re-parent; dead-scope rescue; stale-flip nudge suppression (bugs d053f8a8, f20406b1)",
|
|
34
|
+
"Retrieval: searchMode=fts keeps selfQueryRouter/graph/reranker pillars (bugs 5d204108/1087e86d); document ingest works via daemon client (bug ab6a46f5)",
|
|
35
|
+
"Embeddings: poison backfill rows parked so the flag clears; adaptive CPU backfill; EXE_DISABLE_BACKFILL kill-switch; embed-worker RSS backstop default-ON at 5120MB (bugs ec9d477c/ba661f20/0db188f2)",
|
|
36
|
+
"Stack: third-party images tag-pinned + per-pull re-auth (bug af65c007); stable exe-db host port (bug ad645206); CRM_API_TOKEN passthrough + loud bridge warning (bug 0b66164c)",
|
|
37
|
+
"Cloud CLI: /health preflight fail-fast + hard timeouts — no more infinite hang (bug 2d2143a3 client half)"
|
|
38
|
+
],
|
|
39
|
+
"security": [
|
|
40
|
+
"SSO edge validates access tokens against GoTrue via auth_request (was: presence-only bypass, P0 bug 462d3273)",
|
|
41
|
+
"Cloudflare templates route auth.<domain> through exe-auth, not raw GoTrue (bug 802661a5)"
|
|
42
|
+
],
|
|
43
|
+
"other": [
|
|
44
|
+
"CI: per-SHA concurrency on main so release CI runs are never cancelled (bug 252e93ae)"
|
|
45
|
+
],
|
|
46
|
+
"migration_notes": []
|
|
47
|
+
},
|
|
4
48
|
"0.9.322": {
|
|
5
49
|
"version": "0.9.322",
|
|
6
50
|
"date": "2026-07-03",
|
|
@@ -46,50 +90,6 @@
|
|
|
46
90
|
"security": [],
|
|
47
91
|
"other": [],
|
|
48
92
|
"migration_notes": []
|
|
49
|
-
},
|
|
50
|
-
"0.9.319": {
|
|
51
|
-
"version": "0.9.319",
|
|
52
|
-
"date": "2026-07-01",
|
|
53
|
-
"features": [
|
|
54
|
-
"add production-readiness rotating blind-spot audit methodology"
|
|
55
|
-
],
|
|
56
|
-
"fixes": [
|
|
57
|
-
"keep reranker resident — stop native-memory reload-churn leak (8GB overnight OOM root cause, bug 0db188f2)",
|
|
58
|
-
"bound auto-wake state — taskRetries Record keyed by UUID grew unbounded (memory leak)",
|
|
59
|
-
"make typescript import optional — prevent daemon crash-loop on fresh install",
|
|
60
|
-
"real fallback-model routing in Mode-2 agent loop (bug cab68472)",
|
|
61
|
-
"cluster stack-update-safety — scope volume cleanup, require signed prod manifests, guard image-env drift",
|
|
62
|
-
"fail-closed MCP scoping + additive-only roster sync + corrupted-scope repair (cluster mcp-session-scope)",
|
|
63
|
-
"isolate test temp dirs + mock missing CLI binaries (9 CI failures)",
|
|
64
|
-
"remediate P0 re-audit blocker 32d6e02f — digest pins, DB boundary, role attribution, otel healthcheck, secret guard"
|
|
65
|
-
],
|
|
66
|
-
"security": [],
|
|
67
|
-
"other": [
|
|
68
|
-
"release(stack): sign v0.9.27 manifest (ed25519, keyId exe-stack-1) + commit public key",
|
|
69
|
-
"release(stack): v0.9.27 — all 7 app services rebuilt from today's merged code, digest-pinned",
|
|
70
|
-
"release(stack): v0.9.26 manifest — restore erp service, all images digest-pinned, 26 merged PRs",
|
|
71
|
-
"hybrid runner routing, parallelism caps, caching, release-path slot hygiene (#286)",
|
|
72
|
-
"use shared resolveClaudeBinaryPath from cc-binary-detect"
|
|
73
|
-
],
|
|
74
|
-
"migration_notes": []
|
|
75
|
-
},
|
|
76
|
-
"0.9.318": {
|
|
77
|
-
"version": "0.9.318",
|
|
78
|
-
"date": "2026-06-30",
|
|
79
|
-
"features": [
|
|
80
|
-
"Wave 2: 6 additive non-breaking features (#277) — white-label branding in setup wizard + CLI (config-driven, default 'Exe OS'), /exe-timers timer-health dashboard, structured play/explore session mode, knowledge-graph garbage cleanup (opt-in, dry-run default) + extractor fix, memory-pressure watchdog (3rd kill tier; default off + dry-run), and event-loop-block 503 health reporting",
|
|
81
|
-
"Incremental cloud sync for all data types (#278): versioned push-skip avoids full-table scans on unchanged data (schema v8 version columns/triggers)"
|
|
82
|
-
],
|
|
83
|
-
"fixes": [
|
|
84
|
-
"cloud-sync: write version on pull + strict version guards to stop perpetual cross-device re-push ping-pong on 5 tables",
|
|
85
|
-
"v8 migration: prevent entities_fts SQLITE_CORRUPT_VTAB on version-bump — scoped entities_fts_au to AFTER UPDATE OF name; schema v9 with idempotent trigger repair for already-v8 DBs (#279)",
|
|
86
|
-
"orchestration: stop silent no-spawn from a leaked spawn lock; daemon liveness probe via GET /health; native-installer claude binary resolution for employee spawn; break daemon starvation restart spiral"
|
|
87
|
-
],
|
|
88
|
-
"security": [],
|
|
89
|
-
"other": [],
|
|
90
|
-
"migration_notes": [
|
|
91
|
-
"Schema auto-migrates v7→v9 on first boot: additive incremental-sync version columns + triggers (no data loss), and an entities_fts trigger-scope repair. No action required."
|
|
92
|
-
]
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
}
|
package/dist/chunk-4FVVJ7ME.js
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
// src/lib/intercom-queue.ts
|
|
2
|
-
import { readFileSync, writeFileSync, renameSync, existsSync, mkdirSync, appendFileSync, openSync, closeSync, writeSync, unlinkSync, constants, statSync } from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import os from "os";
|
|
5
|
-
var QUEUE_PATH = path.join(os.homedir(), ".exe-os", "intercom-queue.json");
|
|
6
|
-
var QUEUE_LOCK_PATH = `${QUEUE_PATH}.lock`;
|
|
7
|
-
var MAX_RETRIES = 10;
|
|
8
|
-
var TTL_MS = 60 * 60 * 1e3;
|
|
9
|
-
function ensureDir() {
|
|
10
|
-
const dir = path.dirname(QUEUE_PATH);
|
|
11
|
-
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
12
|
-
}
|
|
13
|
-
function acquireQueueLock() {
|
|
14
|
-
ensureDir();
|
|
15
|
-
const data = JSON.stringify({ pid: process.pid, timestamp: Date.now() });
|
|
16
|
-
const deadline = Date.now() + 250;
|
|
17
|
-
while (Date.now() < deadline) {
|
|
18
|
-
try {
|
|
19
|
-
const fd = openSync(QUEUE_LOCK_PATH, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL, 384);
|
|
20
|
-
writeSync(fd, data);
|
|
21
|
-
closeSync(fd);
|
|
22
|
-
return true;
|
|
23
|
-
} catch (err) {
|
|
24
|
-
if (err.code !== "EEXIST") return false;
|
|
25
|
-
try {
|
|
26
|
-
const lock = JSON.parse(readFileSync(QUEUE_LOCK_PATH, "utf8"));
|
|
27
|
-
if (Date.now() - Number(lock.timestamp ?? 0) > 3e4) unlinkSync(QUEUE_LOCK_PATH);
|
|
28
|
-
} catch {
|
|
29
|
-
try {
|
|
30
|
-
unlinkSync(QUEUE_LOCK_PATH);
|
|
31
|
-
} catch {
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 25);
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
function releaseQueueLock() {
|
|
40
|
-
try {
|
|
41
|
-
unlinkSync(QUEUE_LOCK_PATH);
|
|
42
|
-
} catch {
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function readQueue() {
|
|
46
|
-
try {
|
|
47
|
-
if (!existsSync(QUEUE_PATH)) return [];
|
|
48
|
-
return JSON.parse(readFileSync(QUEUE_PATH, "utf8"));
|
|
49
|
-
} catch {
|
|
50
|
-
return [];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function writeQueue(queue) {
|
|
54
|
-
ensureDir();
|
|
55
|
-
const tmp = `${QUEUE_PATH}.tmp`;
|
|
56
|
-
writeFileSync(tmp, JSON.stringify(queue, null, 2), { mode: 384 });
|
|
57
|
-
renameSync(tmp, QUEUE_PATH);
|
|
58
|
-
}
|
|
59
|
-
function queueIntercom(targetSession, reason, intercomReason = "nudge") {
|
|
60
|
-
if (!acquireQueueLock()) return;
|
|
61
|
-
try {
|
|
62
|
-
const queue = readQueue();
|
|
63
|
-
const existing = queue.find((q) => q.targetSession === targetSession);
|
|
64
|
-
if (existing) {
|
|
65
|
-
existing.attempts++;
|
|
66
|
-
existing.queuedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
67
|
-
existing.reason = reason;
|
|
68
|
-
existing.intercomReason = intercomReason;
|
|
69
|
-
} else {
|
|
70
|
-
queue.push({
|
|
71
|
-
targetSession,
|
|
72
|
-
queuedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
73
|
-
attempts: 0,
|
|
74
|
-
reason,
|
|
75
|
-
intercomReason
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
writeQueue(queue);
|
|
79
|
-
} finally {
|
|
80
|
-
releaseQueueLock();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
var _draining = false;
|
|
84
|
-
function drainQueue(isSessionBusy, sendKeys) {
|
|
85
|
-
if (_draining) {
|
|
86
|
-
logQueue("SKIP_DRAIN \u2014 previous drain still running (possible tmux hang)");
|
|
87
|
-
return { drained: 0, failed: 0 };
|
|
88
|
-
}
|
|
89
|
-
_draining = true;
|
|
90
|
-
const remaining = [];
|
|
91
|
-
let drained = 0;
|
|
92
|
-
let failed = 0;
|
|
93
|
-
let lockAcquired = false;
|
|
94
|
-
try {
|
|
95
|
-
lockAcquired = acquireQueueLock();
|
|
96
|
-
if (!lockAcquired) return { drained: 0, failed: 0 };
|
|
97
|
-
const queue = readQueue();
|
|
98
|
-
if (queue.length === 0) return { drained: 0, failed: 0 };
|
|
99
|
-
for (const item of queue) {
|
|
100
|
-
const age = Date.now() - new Date(item.queuedAt).getTime();
|
|
101
|
-
if (age > TTL_MS) {
|
|
102
|
-
logQueue(`EXPIRED \u2192 ${item.targetSession} (${Math.round(age / 6e4)}min old, reason: ${item.reason})`);
|
|
103
|
-
failed++;
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
if (!isSessionBusy(item.targetSession)) {
|
|
108
|
-
const success = sendKeys(item.targetSession, item);
|
|
109
|
-
if (success) {
|
|
110
|
-
logQueue(`DRAINED \u2192 ${item.targetSession} (after ${item.attempts} retries)`);
|
|
111
|
-
drained++;
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
} catch {
|
|
116
|
-
}
|
|
117
|
-
item.attempts++;
|
|
118
|
-
if (item.attempts >= MAX_RETRIES) {
|
|
119
|
-
logQueue(`PENDING \u2192 ${item.targetSession} (${MAX_RETRIES} retries exhausted, keeping queued, reason: ${item.reason})`);
|
|
120
|
-
item.attempts = MAX_RETRIES;
|
|
121
|
-
remaining.push(item);
|
|
122
|
-
failed++;
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
remaining.push(item);
|
|
126
|
-
}
|
|
127
|
-
writeQueue(remaining);
|
|
128
|
-
} finally {
|
|
129
|
-
if (lockAcquired) releaseQueueLock();
|
|
130
|
-
_draining = false;
|
|
131
|
-
}
|
|
132
|
-
return { drained, failed };
|
|
133
|
-
}
|
|
134
|
-
function drainForSession(targetSession, sendKeys) {
|
|
135
|
-
if (!acquireQueueLock()) return false;
|
|
136
|
-
try {
|
|
137
|
-
const queue = readQueue();
|
|
138
|
-
const match = queue.findIndex((q) => q.targetSession === targetSession);
|
|
139
|
-
if (match < 0) return false;
|
|
140
|
-
const item = queue[match];
|
|
141
|
-
const success = sendKeys(targetSession, item);
|
|
142
|
-
if (success) {
|
|
143
|
-
queue.splice(match, 1);
|
|
144
|
-
writeQueue(queue);
|
|
145
|
-
logQueue(`DRAINED \u2192 ${targetSession} (prompt-submit trigger)`);
|
|
146
|
-
return true;
|
|
147
|
-
}
|
|
148
|
-
return false;
|
|
149
|
-
} finally {
|
|
150
|
-
releaseQueueLock();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
function clearQueueForAgent(agentName) {
|
|
154
|
-
if (!acquireQueueLock()) return;
|
|
155
|
-
try {
|
|
156
|
-
const queue = readQueue();
|
|
157
|
-
const before = queue.length;
|
|
158
|
-
const filtered = queue.filter((q) => !q.targetSession.startsWith(`${agentName}-`));
|
|
159
|
-
if (filtered.length < before) {
|
|
160
|
-
writeQueue(filtered);
|
|
161
|
-
logQueue(`CLEARED ${before - filtered.length} stale item(s) for ${agentName}`);
|
|
162
|
-
}
|
|
163
|
-
} finally {
|
|
164
|
-
releaseQueueLock();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function _resetDrainGuard() {
|
|
168
|
-
_draining = false;
|
|
169
|
-
}
|
|
170
|
-
var INTERCOM_LOG = path.join(os.homedir(), ".exe-os", "intercom.log");
|
|
171
|
-
var INTERCOM_LOG_MAX_BYTES = 1024 * 1024;
|
|
172
|
-
function logQueue(msg) {
|
|
173
|
-
const line = `[${(/* @__PURE__ */ new Date()).toISOString()}] [queue] ${msg}
|
|
174
|
-
`;
|
|
175
|
-
process.stderr.write(`[intercom-queue] ${msg}
|
|
176
|
-
`);
|
|
177
|
-
try {
|
|
178
|
-
if (existsSync(INTERCOM_LOG) && statSync(INTERCOM_LOG).size > INTERCOM_LOG_MAX_BYTES) {
|
|
179
|
-
renameSync(INTERCOM_LOG, `${INTERCOM_LOG}.1`);
|
|
180
|
-
}
|
|
181
|
-
appendFileSync(INTERCOM_LOG, line);
|
|
182
|
-
} catch {
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export {
|
|
187
|
-
readQueue,
|
|
188
|
-
queueIntercom,
|
|
189
|
-
drainQueue,
|
|
190
|
-
drainForSession,
|
|
191
|
-
clearQueueForAgent,
|
|
192
|
-
_resetDrainGuard
|
|
193
|
-
};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import "./chunk-MLKGABMK.js";
|
|
2
|
-
|
|
3
|
-
// src/lib/completion-nudge-dedup.ts
|
|
4
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
5
|
-
import { join, dirname } from "path";
|
|
6
|
-
import { homedir } from "os";
|
|
7
|
-
var STATE_PATH = join(homedir(), ".exe-os", "completion-nudge-state.json");
|
|
8
|
-
var COMPLETION_NUDGE_COOLDOWN_MS = Number(process.env.EXE_COMPLETION_NUDGE_COOLDOWN_MS) || 6 * 60 * 60 * 1e3;
|
|
9
|
-
var _state = null;
|
|
10
|
-
function load() {
|
|
11
|
-
if (_state) return _state;
|
|
12
|
-
_state = {};
|
|
13
|
-
try {
|
|
14
|
-
if (existsSync(STATE_PATH)) {
|
|
15
|
-
const raw = JSON.parse(readFileSync(STATE_PATH, "utf8"));
|
|
16
|
-
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
17
|
-
for (const [k, v] of Object.entries(raw)) {
|
|
18
|
-
if (typeof v === "number") _state[k] = v;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
} catch {
|
|
23
|
-
}
|
|
24
|
-
return _state;
|
|
25
|
-
}
|
|
26
|
-
function persist(state) {
|
|
27
|
-
try {
|
|
28
|
-
mkdirSync(dirname(STATE_PATH), { recursive: true });
|
|
29
|
-
writeFileSync(STATE_PATH, JSON.stringify(state), "utf8");
|
|
30
|
-
} catch {
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function prune(state, now) {
|
|
34
|
-
const cutoff = now - 2 * COMPLETION_NUDGE_COOLDOWN_MS;
|
|
35
|
-
for (const [k, ts] of Object.entries(state)) {
|
|
36
|
-
if (ts < cutoff) delete state[k];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function claimCompletionNudge(taskId, now = Date.now()) {
|
|
40
|
-
if (!taskId) return true;
|
|
41
|
-
const state = load();
|
|
42
|
-
const last = state[taskId] ?? 0;
|
|
43
|
-
if (now - last < COMPLETION_NUDGE_COOLDOWN_MS) return false;
|
|
44
|
-
state[taskId] = now;
|
|
45
|
-
prune(state, now);
|
|
46
|
-
persist(state);
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
function recordCompletionNudge(taskId, now = Date.now()) {
|
|
50
|
-
if (!taskId) return;
|
|
51
|
-
const state = load();
|
|
52
|
-
state[taskId] = now;
|
|
53
|
-
prune(state, now);
|
|
54
|
-
persist(state);
|
|
55
|
-
}
|
|
56
|
-
function clearCompletionNudge(taskId) {
|
|
57
|
-
if (!taskId) return;
|
|
58
|
-
const state = load();
|
|
59
|
-
if (state[taskId] !== void 0) {
|
|
60
|
-
delete state[taskId];
|
|
61
|
-
persist(state);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
function _resetCompletionNudgeState() {
|
|
65
|
-
_state = {};
|
|
66
|
-
persist(_state);
|
|
67
|
-
}
|
|
68
|
-
export {
|
|
69
|
-
COMPLETION_NUDGE_COOLDOWN_MS,
|
|
70
|
-
_resetCompletionNudgeState,
|
|
71
|
-
claimCompletionNudge,
|
|
72
|
-
clearCompletionNudge,
|
|
73
|
-
recordCompletionNudge
|
|
74
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
extractKeywords,
|
|
3
|
-
findBestMatch,
|
|
4
|
-
getRecentCommits,
|
|
5
|
-
matchScore,
|
|
6
|
-
pushUnpushedCommits,
|
|
7
|
-
sweepTasks
|
|
8
|
-
} from "./chunk-3M73L663.js";
|
|
9
|
-
import "./chunk-PLBDXCYZ.js";
|
|
10
|
-
import "./chunk-HWC5W34K.js";
|
|
11
|
-
import "./chunk-KLG53B63.js";
|
|
12
|
-
import "./chunk-4FVVJ7ME.js";
|
|
13
|
-
import "./chunk-E23LNUWJ.js";
|
|
14
|
-
import "./chunk-4JERP7NT.js";
|
|
15
|
-
import "./chunk-ABGDTMKC.js";
|
|
16
|
-
import "./chunk-SSTLTIF3.js";
|
|
17
|
-
import "./chunk-RMOBQ6A5.js";
|
|
18
|
-
import "./chunk-54QCG45Y.js";
|
|
19
|
-
import "./chunk-HV5CUDOE.js";
|
|
20
|
-
import "./chunk-QVFJCFNM.js";
|
|
21
|
-
import "./chunk-NGP6LSV2.js";
|
|
22
|
-
import "./chunk-EPBB2OD3.js";
|
|
23
|
-
import "./chunk-CVYC6DUW.js";
|
|
24
|
-
import "./chunk-OPU3NYOO.js";
|
|
25
|
-
import "./chunk-HYZV25LY.js";
|
|
26
|
-
import "./chunk-GJV3WDWM.js";
|
|
27
|
-
import "./chunk-MP2AFCGL.js";
|
|
28
|
-
import "./chunk-XLNF3CIO.js";
|
|
29
|
-
import "./chunk-2I23RPSI.js";
|
|
30
|
-
import "./chunk-WXRVHXVP.js";
|
|
31
|
-
import "./chunk-PNQDP3OA.js";
|
|
32
|
-
import "./chunk-H73TUI4Y.js";
|
|
33
|
-
import "./chunk-7HLWBYH7.js";
|
|
34
|
-
import "./chunk-FXU7JOXK.js";
|
|
35
|
-
import "./chunk-VY7345RO.js";
|
|
36
|
-
import "./chunk-DQJ3WZRK.js";
|
|
37
|
-
import "./chunk-7Y5UDEVM.js";
|
|
38
|
-
import "./chunk-SHIICYJW.js";
|
|
39
|
-
import "./chunk-MLKGABMK.js";
|
|
40
|
-
export {
|
|
41
|
-
extractKeywords,
|
|
42
|
-
findBestMatch,
|
|
43
|
-
getRecentCommits,
|
|
44
|
-
matchScore,
|
|
45
|
-
pushUnpushedCommits,
|
|
46
|
-
sweepTasks
|
|
47
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
_resetDrainGuard,
|
|
3
|
-
clearQueueForAgent,
|
|
4
|
-
drainForSession,
|
|
5
|
-
drainQueue,
|
|
6
|
-
queueIntercom,
|
|
7
|
-
readQueue
|
|
8
|
-
} from "./chunk-4FVVJ7ME.js";
|
|
9
|
-
import "./chunk-MLKGABMK.js";
|
|
10
|
-
export {
|
|
11
|
-
_resetDrainGuard,
|
|
12
|
-
clearQueueForAgent,
|
|
13
|
-
drainForSession,
|
|
14
|
-
drainQueue,
|
|
15
|
-
queueIntercom,
|
|
16
|
-
readQueue
|
|
17
|
-
};
|