@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
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isCrdtSyncEnabled
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RXS2LBKE.js";
|
|
4
4
|
import {
|
|
5
5
|
GHOST_BEHAVIOR_SQL,
|
|
6
6
|
isGhostBehaviorRow
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WF3J6GJZ.js";
|
|
8
8
|
import {
|
|
9
9
|
decryptSyncBlob,
|
|
10
10
|
encryptSyncBlob,
|
|
@@ -13,16 +13,16 @@ import {
|
|
|
13
13
|
} from "./chunk-LO6L5ADL.js";
|
|
14
14
|
import {
|
|
15
15
|
retryOnDaemonTransportError
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-PV7IG4V6.js";
|
|
17
17
|
import {
|
|
18
18
|
getClient,
|
|
19
19
|
loadEmployees,
|
|
20
20
|
registerBinSymlinks,
|
|
21
21
|
saveEmployees
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-QGOMYIVT.js";
|
|
23
23
|
import {
|
|
24
24
|
loadDeviceId
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-BMSAJ2IH.js";
|
|
26
26
|
import {
|
|
27
27
|
EXE_AI_DIR
|
|
28
28
|
} from "./chunk-7Y5UDEVM.js";
|
|
@@ -385,7 +385,16 @@ async function cloudPush(records, maxVersion, config) {
|
|
|
385
385
|
logError("[cloud-sync] PUSH VERSION CONFLICT \u2014 re-pull required before next push");
|
|
386
386
|
return false;
|
|
387
387
|
}
|
|
388
|
-
|
|
388
|
+
if (!resp.ok) {
|
|
389
|
+
let body = "";
|
|
390
|
+
try {
|
|
391
|
+
body = (await resp.text()).slice(0, 500);
|
|
392
|
+
} catch {
|
|
393
|
+
}
|
|
394
|
+
logError(`[cloud-sync] PUSH FAILED: HTTP ${resp.status}${body ? ` \u2014 ${body}` : ""}`);
|
|
395
|
+
return false;
|
|
396
|
+
}
|
|
397
|
+
return true;
|
|
389
398
|
} catch (err) {
|
|
390
399
|
logError(`[cloud-sync] PUSH FAILED: ${err instanceof Error ? err.message : String(err)}`);
|
|
391
400
|
return false;
|
|
@@ -522,6 +531,119 @@ function defaultOnProgress(stage, detail) {
|
|
|
522
531
|
const msg = detail ? `[cloud-sync] ${stage}: ${detail}` : `[cloud-sync] ${stage}`;
|
|
523
532
|
process.stderr.write(msg + "\n");
|
|
524
533
|
}
|
|
534
|
+
function finiteVersion(value, fallback = 0) {
|
|
535
|
+
const n = Number(value ?? fallback);
|
|
536
|
+
return Number.isFinite(n) ? n : fallback;
|
|
537
|
+
}
|
|
538
|
+
async function writeLastCloudPushVersion(client, version) {
|
|
539
|
+
await client.execute({
|
|
540
|
+
sql: "INSERT INTO sync_meta (key, value) VALUES ('last_cloud_push_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",
|
|
541
|
+
args: [String(Math.max(0, version))]
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
async function cloudPushPendingMemories(client, config, options) {
|
|
545
|
+
let pushed = 0;
|
|
546
|
+
let errors = 0;
|
|
547
|
+
let safeCursor = Math.max(0, finiteVersion(options.lastPushVersion, 0));
|
|
548
|
+
let scanVersion = safeCursor;
|
|
549
|
+
let scanRowid = Number.MAX_SAFE_INTEGER;
|
|
550
|
+
try {
|
|
551
|
+
const maxRes = await client.execute(
|
|
552
|
+
"SELECT MAX(version) AS v FROM memories WHERE (scope IS NULL OR scope != 'personal')"
|
|
553
|
+
);
|
|
554
|
+
const localMaxVersion = finiteVersion(maxRes.rows[0]?.v, 0);
|
|
555
|
+
if (safeCursor > localMaxVersion) {
|
|
556
|
+
logError(
|
|
557
|
+
`[cloud-sync] last_cloud_push_version (${safeCursor}) is ahead of local max memory version (${localMaxVersion}); resetting memory push cursor to 0. This can happen after DB restore.`
|
|
558
|
+
);
|
|
559
|
+
await writeLastCloudPushVersion(client, 0);
|
|
560
|
+
safeCursor = 0;
|
|
561
|
+
scanVersion = 0;
|
|
562
|
+
scanRowid = Number.MAX_SAFE_INTEGER;
|
|
563
|
+
}
|
|
564
|
+
} catch (err) {
|
|
565
|
+
process.stderr.write(`[cloud-sync] memory push cursor reconcile failed: ${err instanceof Error ? err.message : String(err)}
|
|
566
|
+
`);
|
|
567
|
+
}
|
|
568
|
+
const nowMs = Date.now();
|
|
569
|
+
const pushCooldownActive = safeCursor > 0 && safeCursor === _lastSyncPushVersion && nowMs - _lastSyncPushTimestamp < SYNC_COOLDOWN_MS;
|
|
570
|
+
if (pushCooldownActive) {
|
|
571
|
+
return { pushed: 0, errors: 0, finalCursor: safeCursor };
|
|
572
|
+
}
|
|
573
|
+
for (; ; ) {
|
|
574
|
+
const recordsResult = await client.execute({
|
|
575
|
+
sql: `SELECT rowid AS __rid, id, agent_id, agent_role, session_id, timestamp,
|
|
576
|
+
tool_name, project_name, has_error, raw_text, version,
|
|
577
|
+
author_device_id, scope, session_scope
|
|
578
|
+
FROM memories
|
|
579
|
+
WHERE (version > ? OR (version = ? AND rowid > ?))
|
|
580
|
+
AND (scope IS NULL OR scope != 'personal')
|
|
581
|
+
ORDER BY version ASC, rowid ASC
|
|
582
|
+
LIMIT ?`,
|
|
583
|
+
args: [scanVersion, scanVersion, scanRowid, PUSH_BATCH_SIZE + 1]
|
|
584
|
+
});
|
|
585
|
+
if (recordsResult.rows.length === 0) break;
|
|
586
|
+
const pageRows = recordsResult.rows;
|
|
587
|
+
const hasExtra = pageRows.length > PUSH_BATCH_SIZE;
|
|
588
|
+
const rowsToPush = hasExtra ? pageRows.slice(0, PUSH_BATCH_SIZE) : pageRows;
|
|
589
|
+
const extraRow = hasExtra ? pageRows[PUSH_BATCH_SIZE] : void 0;
|
|
590
|
+
const records = rowsToPush.map((row) => ({
|
|
591
|
+
id: row.id,
|
|
592
|
+
agent_id: row.agent_id,
|
|
593
|
+
agent_role: row.agent_role,
|
|
594
|
+
session_id: row.session_id,
|
|
595
|
+
timestamp: row.timestamp,
|
|
596
|
+
tool_name: row.tool_name,
|
|
597
|
+
project_name: row.project_name,
|
|
598
|
+
has_error: row.has_error,
|
|
599
|
+
raw_text: row.raw_text,
|
|
600
|
+
version: row.version,
|
|
601
|
+
author_device_id: row.author_device_id,
|
|
602
|
+
scope: row.scope,
|
|
603
|
+
session_scope: row.session_scope
|
|
604
|
+
}));
|
|
605
|
+
const lastRow = rowsToPush[rowsToPush.length - 1];
|
|
606
|
+
const maxVersion = finiteVersion(lastRow.version, scanVersion);
|
|
607
|
+
let pushOk = await cloudPush(records, maxVersion, config);
|
|
608
|
+
if (!pushOk) {
|
|
609
|
+
errors++;
|
|
610
|
+
logError(`[cloud-sync] memory push batch failed at version=${maxVersion}; retrying once after pull`);
|
|
611
|
+
await cloudPull(options.lastPullVersion, config);
|
|
612
|
+
pushOk = await cloudPush(records, maxVersion, config);
|
|
613
|
+
if (!pushOk) {
|
|
614
|
+
errors++;
|
|
615
|
+
logError(`[cloud-sync] memory push batch failed permanently at version=${maxVersion}; cursor remains ${safeCursor}`);
|
|
616
|
+
break;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
try {
|
|
620
|
+
await pushToPostgres(records);
|
|
621
|
+
} catch (e) {
|
|
622
|
+
process.stderr.write("[cloud-sync] Postgres push of local records failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
|
|
623
|
+
}
|
|
624
|
+
pushed += records.length;
|
|
625
|
+
scanVersion = maxVersion;
|
|
626
|
+
scanRowid = finiteVersion(lastRow.__rid, scanRowid);
|
|
627
|
+
const extraVersion = extraRow ? finiteVersion(extraRow.version, maxVersion) : void 0;
|
|
628
|
+
let nextSafeCursor = maxVersion;
|
|
629
|
+
if (hasExtra && extraVersion === maxVersion) {
|
|
630
|
+
const completedVersions = rowsToPush.map((row) => finiteVersion(row.version, scanVersion)).filter((v) => v < maxVersion);
|
|
631
|
+
nextSafeCursor = completedVersions.length > 0 ? Math.max(...completedVersions, safeCursor) : safeCursor;
|
|
632
|
+
}
|
|
633
|
+
if (nextSafeCursor > safeCursor) {
|
|
634
|
+
await writeLastCloudPushVersion(client, nextSafeCursor);
|
|
635
|
+
safeCursor = nextSafeCursor;
|
|
636
|
+
_lastSyncPushVersion = nextSafeCursor;
|
|
637
|
+
_lastSyncPushTimestamp = Date.now();
|
|
638
|
+
}
|
|
639
|
+
if (!hasExtra) break;
|
|
640
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
641
|
+
}
|
|
642
|
+
if (pushed > 0 && errors > 0) {
|
|
643
|
+
logError(`[cloud-sync] memory push completed partially: pushed=${pushed}, errors=${errors}, cursor=${safeCursor}`);
|
|
644
|
+
}
|
|
645
|
+
return { pushed, errors, finalCursor: safeCursor };
|
|
646
|
+
}
|
|
525
647
|
async function cloudSync(config, options) {
|
|
526
648
|
const onProgress = options?.onProgress ?? defaultOnProgress;
|
|
527
649
|
if (_cloudSyncInProgress) {
|
|
@@ -584,7 +706,7 @@ async function cloudSync(config, options) {
|
|
|
584
706
|
let pulled = 0;
|
|
585
707
|
if (pullResult.records.length > 0) {
|
|
586
708
|
if (shouldUseCrdtMergeForCloudSync()) {
|
|
587
|
-
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-
|
|
709
|
+
const { initCrdtDoc, importExistingMemories, readAllMemories } = await import("./crdt-sync-MXHPR6V6.js");
|
|
588
710
|
initCrdtDoc();
|
|
589
711
|
importExistingMemories(
|
|
590
712
|
pullResult.records.map((rec) => ({
|
|
@@ -788,64 +910,11 @@ async function cloudSync(config, options) {
|
|
|
788
910
|
"SELECT value FROM sync_meta WHERE key = 'last_cloud_push_version'"
|
|
789
911
|
);
|
|
790
912
|
const lastPushVersion = pushMeta.rows.length > 0 ? Number(pushMeta.rows[0].value) : 0;
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
} else {
|
|
797
|
-
while (true) {
|
|
798
|
-
const recordsResult = await client.execute({
|
|
799
|
-
sql: `SELECT id, agent_id, agent_role, session_id, timestamp,
|
|
800
|
-
tool_name, project_name, has_error, raw_text, version,
|
|
801
|
-
author_device_id, scope, session_scope
|
|
802
|
-
FROM memories
|
|
803
|
-
WHERE version > ?
|
|
804
|
-
AND (scope IS NULL OR scope != 'personal')
|
|
805
|
-
ORDER BY version ASC
|
|
806
|
-
LIMIT ?`,
|
|
807
|
-
args: [batchCursor, PUSH_BATCH_SIZE]
|
|
808
|
-
});
|
|
809
|
-
if (recordsResult.rows.length === 0) break;
|
|
810
|
-
const records = recordsResult.rows.map((row) => ({
|
|
811
|
-
id: row.id,
|
|
812
|
-
agent_id: row.agent_id,
|
|
813
|
-
agent_role: row.agent_role,
|
|
814
|
-
session_id: row.session_id,
|
|
815
|
-
timestamp: row.timestamp,
|
|
816
|
-
tool_name: row.tool_name,
|
|
817
|
-
project_name: row.project_name,
|
|
818
|
-
has_error: row.has_error,
|
|
819
|
-
raw_text: row.raw_text,
|
|
820
|
-
version: row.version,
|
|
821
|
-
author_device_id: row.author_device_id,
|
|
822
|
-
scope: row.scope,
|
|
823
|
-
session_scope: row.session_scope
|
|
824
|
-
}));
|
|
825
|
-
const maxVersion = Number(records[records.length - 1].version);
|
|
826
|
-
let pushOk = await cloudPush(records, maxVersion, config);
|
|
827
|
-
if (!pushOk) {
|
|
828
|
-
await cloudPull(lastPullVersion, config);
|
|
829
|
-
pushOk = await cloudPush(records, maxVersion, config);
|
|
830
|
-
if (!pushOk) break;
|
|
831
|
-
}
|
|
832
|
-
try {
|
|
833
|
-
await pushToPostgres(records);
|
|
834
|
-
} catch (e) {
|
|
835
|
-
process.stderr.write("[cloud-sync] Postgres push of local records failed: " + (e instanceof Error ? e.message : String(e)) + "\n");
|
|
836
|
-
}
|
|
837
|
-
await client.execute({
|
|
838
|
-
sql: "INSERT INTO sync_meta (key, value) VALUES ('last_cloud_push_version', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",
|
|
839
|
-
args: [String(maxVersion)]
|
|
840
|
-
});
|
|
841
|
-
pushed += records.length;
|
|
842
|
-
batchCursor = maxVersion;
|
|
843
|
-
_lastSyncPushVersion = maxVersion;
|
|
844
|
-
_lastSyncPushTimestamp = Date.now();
|
|
845
|
-
if (recordsResult.rows.length < PUSH_BATCH_SIZE) break;
|
|
846
|
-
await new Promise((resolve) => setImmediate(resolve));
|
|
847
|
-
}
|
|
848
|
-
}
|
|
913
|
+
const memoryPush = await cloudPushPendingMemories(client, config, {
|
|
914
|
+
lastPushVersion,
|
|
915
|
+
lastPullVersion
|
|
916
|
+
});
|
|
917
|
+
const pushed = memoryPush.pushed;
|
|
849
918
|
onProgress("Cloud sync", "merging roster...");
|
|
850
919
|
try {
|
|
851
920
|
await cloudPushRoster(config);
|
|
@@ -1023,7 +1092,7 @@ async function cloudSync(config, options) {
|
|
|
1023
1092
|
}
|
|
1024
1093
|
const totalMemories = await countRows("SELECT COUNT(*) as cnt FROM memories WHERE status = 'active' OR status IS NULL");
|
|
1025
1094
|
try {
|
|
1026
|
-
const { getLatestBackup } = await import("./db-backup-
|
|
1095
|
+
const { getLatestBackup } = await import("./db-backup-XLID57KW.js");
|
|
1027
1096
|
const latestBackup = getLatestBackup();
|
|
1028
1097
|
if (latestBackup) {
|
|
1029
1098
|
const backupSize = statSync(latestBackup).size;
|
|
@@ -2405,6 +2474,7 @@ export {
|
|
|
2405
2474
|
getCloudRelinkRequired,
|
|
2406
2475
|
clearCloudRelinkRequired,
|
|
2407
2476
|
markCloudReuploadRequired,
|
|
2477
|
+
cloudPushPendingMemories,
|
|
2408
2478
|
cloudSync,
|
|
2409
2479
|
recordRosterDeletion,
|
|
2410
2480
|
buildRosterBlob,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordOrchestrationEventBestEffort
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-F6TJIWN5.js";
|
|
4
4
|
import {
|
|
5
5
|
atomicWriteJsonSync
|
|
6
6
|
} from "./chunk-SHIICYJW.js";
|
|
@@ -299,6 +299,63 @@ function cleanupDeadSessions(liveTmuxOverride) {
|
|
|
299
299
|
releaseRegistryLock();
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
|
+
function isCoordinatorRootName(sessionName) {
|
|
303
|
+
if (sessionName.includes("-")) return false;
|
|
304
|
+
const coordName = getCoordinatorNameCached();
|
|
305
|
+
const escaped = coordName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
306
|
+
return new RegExp(`^${escaped}\\d*$`, "i").test(sessionName);
|
|
307
|
+
}
|
|
308
|
+
function reapOrphanedCoordinatorSessions(deps) {
|
|
309
|
+
const result = { orphaned: [], deregistered: [], killed: [] };
|
|
310
|
+
if (!deps.liveTmux || deps.liveTmux.length === 0) return result;
|
|
311
|
+
const liveSet = new Set(deps.liveTmux.filter(Boolean));
|
|
312
|
+
for (const session of deps.liveTmux) {
|
|
313
|
+
if (!liveSet.has(session)) continue;
|
|
314
|
+
if (!isCoordinatorRootName(session)) continue;
|
|
315
|
+
if (deps.paneHasLiveAgent(session)) continue;
|
|
316
|
+
result.orphaned.push(session);
|
|
317
|
+
}
|
|
318
|
+
if (result.orphaned.length === 0) return result;
|
|
319
|
+
if (acquireRegistryLock()) {
|
|
320
|
+
try {
|
|
321
|
+
const sessions = readSessionsUncached();
|
|
322
|
+
const orphanSet = new Set(result.orphaned);
|
|
323
|
+
const survivors = sessions.filter((s) => {
|
|
324
|
+
if (orphanSet.has(s.windowName)) {
|
|
325
|
+
result.deregistered.push(s.windowName);
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
return true;
|
|
329
|
+
});
|
|
330
|
+
if (result.deregistered.length > 0) writeSessions(survivors);
|
|
331
|
+
} finally {
|
|
332
|
+
releaseRegistryLock();
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
if (deps.killTmux) {
|
|
336
|
+
for (const session of result.orphaned) {
|
|
337
|
+
try {
|
|
338
|
+
deps.killTmux(session);
|
|
339
|
+
result.killed.push(session);
|
|
340
|
+
} catch {
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
if (result.orphaned.length > 0) {
|
|
345
|
+
recordOrchestrationEventBestEffort({
|
|
346
|
+
eventType: "registry.coordinator_orphan_reaped",
|
|
347
|
+
source: "session-registry.reapOrphanedCoordinatorSessions",
|
|
348
|
+
severity: "warn",
|
|
349
|
+
attempt: result.orphaned.length,
|
|
350
|
+
payload: {
|
|
351
|
+
orphaned: result.orphaned.slice(0, 10),
|
|
352
|
+
deregistered: result.deregistered.length,
|
|
353
|
+
killed: result.killed.length
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
return result;
|
|
358
|
+
}
|
|
302
359
|
function looksLikeExeOsSession(sessionName) {
|
|
303
360
|
const coordName = getCoordinatorNameCached();
|
|
304
361
|
const escaped = coordName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
@@ -327,5 +384,6 @@ export {
|
|
|
327
384
|
pruneStaleSessions,
|
|
328
385
|
checkSessionRegistryConsistency,
|
|
329
386
|
deregisterSession,
|
|
330
|
-
cleanupDeadSessions
|
|
387
|
+
cleanupDeadSessions,
|
|
388
|
+
reapOrphanedCoordinatorSessions
|
|
331
389
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
computeDaemonHeapCapMb
|
|
3
|
-
} from "./chunk-CMDC5D7S.js";
|
|
4
1
|
import {
|
|
5
2
|
resolveEmbeddingsEnabled
|
|
6
3
|
} from "./chunk-KWOAM7TA.js";
|
|
4
|
+
import {
|
|
5
|
+
computeDaemonHeapCapMb
|
|
6
|
+
} from "./chunk-NLEW62VC.js";
|
|
7
7
|
import {
|
|
8
8
|
isMainModule
|
|
9
9
|
} from "./chunk-6Y4B3QF6.js";
|