@askexenow/exe-os 0.9.357 → 0.9.359
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/stack-manifests/v0.9.json +3 -3
- package/dist/.dist-verified.json +6 -0
- package/dist/{active-agent-PYMOMGQ7.js → active-agent-DMKNHGSG.js} +6 -4
- package/dist/{active-agent-LCRV3HVS.js → active-agent-Y3DCBD7J.js} +6 -4
- package/dist/{agentic-ontology-TNKI4FOM.js → agentic-ontology-3233PNKV.js} +1 -1
- package/dist/{backfill-metadata-SFS4ARNR.js → backfill-metadata-4DS4A5U3.js} +8 -6
- package/dist/{backup-verify-7NLKR4S6.js → backup-verify-JNYKXIU2.js} +6 -1
- package/dist/{behavior-injection-OT7VX7M6.js → behavior-injection-CGAMI552.js} +10 -8
- package/dist/{behaviors-6GW5AFG4.js → behaviors-57AMN5IP.js} +9 -7
- package/dist/bin/agentic-ontology-backfill.js +9 -7
- package/dist/bin/agentic-reflection-backfill.js +10 -8
- package/dist/bin/agentic-semantic-label.js +9 -7
- package/dist/bin/backfill-conversations.js +8 -6
- package/dist/bin/backfill-responses.js +8 -6
- package/dist/bin/backfill-vectors.js +9 -7
- package/dist/bin/bulk-sync-postgres.js +18 -14
- package/dist/bin/cc-doctor.js +7 -5
- package/dist/bin/cleanup-stale-review-tasks.js +16 -14
- package/dist/bin/cli.js +19 -19
- package/dist/bin/deferred-daemon-restart.js +81 -77
- package/dist/bin/exe-agent-config.js +5 -3
- package/dist/bin/exe-agent.js +14 -12
- package/dist/bin/exe-assign.js +9 -7
- package/dist/bin/exe-boot.js +62 -28
- package/dist/bin/exe-call.js +8 -6
- package/dist/bin/exe-cloud.js +20 -16
- package/dist/bin/exe-config-dump.js +5 -3
- package/dist/bin/exe-dispatch.js +16 -14
- package/dist/bin/exe-doctor.js +9 -6
- package/dist/bin/exe-export-behaviors.js +11 -9
- package/dist/bin/exe-forget.js +10 -8
- package/dist/bin/exe-gateway.js +10 -8
- package/dist/bin/exe-grant.js +17 -4
- package/dist/bin/exe-healthcheck.js +7 -5
- package/dist/bin/exe-heartbeat.js +18 -16
- package/dist/bin/exe-kill.js +20 -18
- package/dist/bin/exe-launch-agent.js +27 -25
- package/dist/bin/exe-memory-reads.js +8 -6
- package/dist/bin/exe-new-employee.js +12 -10
- package/dist/bin/exe-os-mcp-proxy.js +6 -4
- package/dist/bin/exe-pending-messages.js +17 -15
- package/dist/bin/exe-pending-notifications.js +16 -14
- package/dist/bin/exe-pending-reviews.js +16 -14
- package/dist/bin/exe-rename.js +8 -6
- package/dist/bin/exe-review.js +19 -17
- package/dist/bin/exe-search.js +9 -7
- package/dist/bin/exe-session-cleanup.js +20 -18
- package/dist/bin/exe-settings.js +18 -14
- package/dist/bin/exe-start-codex.js +16 -14
- package/dist/bin/exe-start-opencode.js +12 -10
- package/dist/bin/exe-status.js +17 -15
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +6 -4
- package/dist/bin/exe-timers.js +2 -1
- package/dist/bin/git-sweep.js +17 -15
- package/dist/bin/graph-backfill.js +10 -8
- package/dist/bin/graph-export.js +9 -7
- package/dist/bin/import-history.js +13 -11
- package/dist/bin/install.js +83 -79
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +7 -5
- 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/reconcile-backlog.js +2 -2
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +16 -14
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +9 -7
- package/dist/bin/stack-update.js +4 -4
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-7ZI7JYGR.js → boot-generation-4D3CTT7X.js} +6 -4
- package/dist/{boot-review-sections-3MSXM6V7.js → boot-review-sections-NDFE5443.js} +15 -13
- package/dist/build-manifest.json +2961 -0
- package/dist/{capability-cards-4RD2SB2K.js → capability-cards-OBB7BMMX.js} +5 -3
- package/dist/{capacity-monitor-5XUR3JTN.js → capacity-monitor-QLPEL6S5.js} +17 -15
- package/dist/{catchup-brief-AYJWMQUZ.js → catchup-brief-EN7QR6MP.js} +20 -18
- package/dist/{chunk-ZMVVKOOS.js → chunk-2EAYZ3BK.js} +7 -7
- package/dist/{chunk-4KCLB4TY.js → chunk-2KLVTRY2.js} +1 -1
- package/dist/{chunk-4VU2VCEU.js → chunk-2OVTGZYH.js} +1 -1
- package/dist/{chunk-5Q2J6P4T.js → chunk-2YGAKBRG.js} +3 -3
- package/dist/{chunk-2TL5RKMC.js → chunk-3BAGFZFN.js} +1 -1
- package/dist/{chunk-PM4TIRCR.js → chunk-3ODATKWH.js} +1 -1
- package/dist/{chunk-RUBXKPOT.js → chunk-3ZEVMZ4G.js} +1 -1
- package/dist/{chunk-H4ZSOAP6.js → chunk-44WFVMZ5.js} +1 -1
- package/dist/{chunk-Y4JA5V22.js → chunk-46RPEWTH.js} +1 -1
- package/dist/{chunk-EHL4RCND.js → chunk-4DYJ6NOK.js} +6 -5
- package/dist/{chunk-ZWXSO4FN.js → chunk-4FQIWAXA.js} +9 -9
- package/dist/{chunk-YG4LS7TI.js → chunk-4WSUP4CC.js} +8 -8
- package/dist/{chunk-EWOMZLR6.js → chunk-57GRYGDU.js} +1 -1
- package/dist/{chunk-VCKIV5WG.js → chunk-5I3YC7ER.js} +2 -2
- package/dist/{chunk-UQCYG6EI.js → chunk-5UAMBMNR.js} +1 -1
- package/dist/chunk-5YEUPUV4.js +53 -0
- package/dist/{chunk-34MIJGQS.js → chunk-6EOLGE7T.js} +1 -1
- package/dist/{chunk-AWB7M62V.js → chunk-6KREY2Q7.js} +4 -4
- package/dist/{chunk-FWJFKWYA.js → chunk-6LY3QSJA.js} +2 -2
- package/dist/{chunk-7FKC2TIB.js → chunk-6SK4MM5B.js} +1 -1
- package/dist/{chunk-P7EUKYSQ.js → chunk-6WHYSLGF.js} +1 -1
- package/dist/{chunk-YSUHXDQU.js → chunk-74R44E4S.js} +21 -19
- package/dist/{chunk-DF5K4JJL.js → chunk-A5WEEND7.js} +3 -3
- package/dist/{chunk-OBWTTM7E.js → chunk-AL7JMA54.js} +2 -2
- package/dist/{chunk-JZXHLDQN.js → chunk-APR556TY.js} +1 -1
- package/dist/{chunk-G2MXTLOD.js → chunk-C5YZMYQH.js} +1 -1
- package/dist/{chunk-X7CWCQ5S.js → chunk-CAEWPEBA.js} +1 -1
- package/dist/{chunk-SFSB64NK.js → chunk-DKRSKC5R.js} +1 -1
- package/dist/{chunk-IIHFSNL4.js → chunk-DQ75MEPU.js} +1 -1
- package/dist/{chunk-H4IZKSOY.js → chunk-DWKH2H7W.js} +1 -1
- package/dist/{chunk-M5DPPJLS.js → chunk-EA5FVACM.js} +39 -7
- package/dist/{chunk-S3THSOWV.js → chunk-EUQF3JOH.js} +28 -100
- package/dist/{chunk-2LM5GO5R.js → chunk-EX2SSLNU.js} +5 -5
- package/dist/{chunk-4GGP4Q5N.js → chunk-F3QTF4T7.js} +2 -2
- package/dist/{chunk-EQQYCP6D.js → chunk-FASR2WLT.js} +1 -1
- package/dist/{chunk-NT4GET5B.js → chunk-G2KK64UB.js} +4 -4
- package/dist/{chunk-ABM3DZF3.js → chunk-G37RG543.js} +1 -1
- package/dist/{chunk-AW3WT3TJ.js → chunk-GD7VXXW6.js} +141 -140
- package/dist/{chunk-IT4TFJTK.js → chunk-GSVQBBE5.js} +3 -3
- package/dist/{chunk-LVZZ7YS3.js → chunk-HK7SQDKJ.js} +5 -5
- package/dist/chunk-HKK7LLS5.js +408 -0
- package/dist/{chunk-W3IXTUCL.js → chunk-HLEZ5O5P.js} +77 -37
- package/dist/{chunk-A5P2MMII.js → chunk-HNPHPGGF.js} +2 -2
- package/dist/{chunk-QGLAMWQJ.js → chunk-HPHF5VTT.js} +3 -3
- package/dist/{chunk-IO5FR7BZ.js → chunk-IQWAYXVF.js} +3 -3
- package/dist/{chunk-PNTRRXAN.js → chunk-JBAMYKBL.js} +1 -1
- package/dist/{chunk-2WWGTOVP.js → chunk-JE34CB5H.js} +19 -1
- package/dist/{chunk-APRVAUOR.js → chunk-JY5GAZYC.js} +1 -0
- package/dist/{chunk-PUAA3P47.js → chunk-KIXNMTGC.js} +4 -4
- package/dist/{chunk-ES4XE6AU.js → chunk-LPKTGK7L.js} +4 -4
- package/dist/{chunk-KT4RUFYO.js → chunk-LRETL4I3.js} +3 -3
- package/dist/{chunk-JO6TS75M.js → chunk-LXG37RB2.js} +1 -1
- package/dist/{chunk-CI3YVCUY.js → chunk-MCNDZU5W.js} +1 -1
- package/dist/{chunk-JLXJMDKG.js → chunk-NE57GONM.js} +1 -1
- package/dist/{chunk-72GUU6Z4.js → chunk-NKDKB2RT.js} +3 -3
- package/dist/{chunk-KP3PLOGC.js → chunk-NP2Y7P3I.js} +2 -2
- package/dist/{chunk-ES6PDSEK.js → chunk-OAYTQ4RY.js} +8 -8
- package/dist/{chunk-Z5DTZ464.js → chunk-OIS5VIAH.js} +6 -0
- package/dist/{chunk-VPMAC5VB.js → chunk-OY2PWHYR.js} +1 -1
- package/dist/{chunk-YQ7IZPVC.js → chunk-PDRIIEFV.js} +1 -1
- package/dist/{chunk-W3REQ37P.js → chunk-PLOEFBFW.js} +2 -2
- package/dist/{chunk-X4EDW3FH.js → chunk-POZGQQEZ.js} +1 -1
- package/dist/{chunk-AJGTBW3N.js → chunk-QH2XAUZ5.js} +1 -1
- package/dist/{chunk-6CZXY5BD.js → chunk-QROIFRKI.js} +5 -5
- package/dist/{chunk-P2Y6S53G.js → chunk-R6LNQAUG.js} +1 -1
- package/dist/{chunk-JKOEOHOD.js → chunk-R7F6HKTH.js} +6 -21
- package/dist/{chunk-6WAJJN5W.js → chunk-RFUTLZ2U.js} +3 -3
- package/dist/{chunk-CQPFNVWY.js → chunk-RJ67HG2P.js} +3 -3
- package/dist/{chunk-6H4ZEU7P.js → chunk-SHEWTDPC.js} +4 -4
- package/dist/{chunk-XPGUSSG7.js → chunk-SIGAQQHW.js} +1 -1
- package/dist/{chunk-PUNCHUEX.js → chunk-SNWV44E5.js} +3 -3
- package/dist/{chunk-WJIGSNJM.js → chunk-SQBNN44X.js} +12 -12
- package/dist/{chunk-6UTP7AIH.js → chunk-STFR72YH.js} +1 -1
- package/dist/chunk-TWMWHDOY.js +79 -0
- package/dist/{chunk-RZSPCNLY.js → chunk-UZ5RJYL3.js} +1 -1
- package/dist/chunk-V3W3SATA.js +135 -0
- package/dist/{chunk-WL3CT5KX.js → chunk-VCCZQDCU.js} +2 -2
- package/dist/{chunk-VU2MZ7BP.js → chunk-VNK3MNZE.js} +40 -3
- package/dist/{chunk-MVYB76QG.js → chunk-VRTCVZND.js} +16 -20
- package/dist/{chunk-UEXJYSJX.js → chunk-VXL7PJ56.js} +39 -2
- package/dist/{chunk-4OMIENRX.js → chunk-VY5VU7SX.js} +1 -1
- package/dist/{chunk-JUE37LOD.js → chunk-W3XUU36X.js} +4 -4
- package/dist/{chunk-WHQYVFE2.js → chunk-W5YV2PZE.js} +22 -15
- package/dist/{chunk-DZNXWCJN.js → chunk-WA2MJGPT.js} +1 -1
- package/dist/{chunk-LDRMNJJJ.js → chunk-WCP4OQUL.js} +2 -2
- package/dist/{chunk-25X4JD2V.js → chunk-WDA2KAV7.js} +20 -3
- package/dist/{chunk-YNYISUMW.js → chunk-WRP5AG4D.js} +1 -1
- package/dist/{chunk-HAOZB4W6.js → chunk-X2F6Q7TW.js} +1 -1
- package/dist/{chunk-TQ4O5A4S.js → chunk-XV42EAVK.js} +1 -1
- package/dist/{chunk-TAR5J7WI.js → chunk-XVTKJEI2.js} +4 -4
- package/dist/{chunk-XQAELSOQ.js → chunk-XWWNRFRF.js} +2 -2
- package/dist/{chunk-6SAQSXT2.js → chunk-YKRNH5LU.js} +1 -1
- package/dist/{chunk-QXAE6S3A.js → chunk-YMCIZCNK.js} +3 -3
- package/dist/chunk-YQGMSXT5.js +33 -0
- package/dist/{chunk-LLXYWNCH.js → chunk-Z2PAVJJ4.js} +1 -1
- package/dist/{cleanup-graph-garbage-XUNHVCRR.js → cleanup-graph-garbage-XFGY4EEE.js} +11 -9
- package/dist/{cloud-sync-shutdown-JRAERBUO.js → cloud-sync-shutdown-XCOATIJW.js} +5 -3
- package/dist/{co-activation-5AN2CF23.js → co-activation-XNBLOGK3.js} +5 -3
- package/dist/{co-occurrence-A7E774ZX.js → co-occurrence-HO4PGQC4.js} +9 -7
- package/dist/{conversation-entity-extractor-2XI2GC4N.js → conversation-entity-extractor-5G5DGRJU.js} +4 -4
- package/dist/{crdt-sync-2IUU6GZ6.js → crdt-sync-6TD7LSZW.js} +3 -2
- package/dist/{crm-webhook-BQCP77TI.js → crm-webhook-WZAV5776.js} +2 -2
- package/dist/{cto-delegation-gate-UHHNMWCL.js → cto-delegation-gate-UHMYFM4D.js} +15 -13
- package/dist/{daemon-orchestration-7WS3X5DQ.js → daemon-orchestration-DT5M2ZAR.js} +20 -19
- package/dist/{daemon-ready-signal-TVCPSG7J.js → daemon-ready-signal-CKXPUMJ2.js} +3 -1
- package/dist/{daemon-restart-report-QDRGKLL6.js → daemon-restart-report-HZU5LWXN.js} +2 -1
- package/dist/{daemon-timer-report-NM44WQRH.js → daemon-timer-report-TNJH5SFY.js} +2 -1
- package/dist/{doc-graph-extractor-NFERAJNP.js → doc-graph-extractor-FNCYPFKY.js} +9 -7
- package/dist/{documents-SW2MJUXY.js → documents-GKDZDUED.js} +9 -7
- package/dist/{dreaming-KSNJVNFH.js → dreaming-WPMQJAXW.js} +19 -17
- package/dist/{exe-drift-NBLYKQBQ.js → exe-drift-QTKD2FHT.js} +6 -4
- package/dist/{exe-export-44IWTJHL.js → exe-export-ESJ6KP6J.js} +11 -9
- package/dist/{exe-import-PPECH3KO.js → exe-import-N4X3GEQB.js} +11 -9
- package/dist/{exe-key-ZCRJQYA7.js → exe-key-KZCCHX3W.js} +84 -77
- package/dist/{exe-snapshot-OVINJ6MC.js → exe-snapshot-SCRPHCPZ.js} +20 -18
- package/dist/{fast-db-init-B5Q3SJQG.js → fast-db-init-6H67K76Q.js} +1 -1
- package/dist/{founder-context-5OFTZNDO.js → founder-context-C7X7IRDA.js} +2 -2
- package/dist/founder-monitor-envelope-DHSUMBWU.js +83 -0
- package/dist/gateway/index.js +11 -9
- package/dist/{git-staleness-XQJTOSGZ.js → git-staleness-JCKVMWPO.js} +5 -3
- package/dist/{global-procedures-YCJ3JPAP.js → global-procedures-BR7WGSE7.js} +7 -5
- package/dist/{graph-auto-extract-XJN6PQH3.js → graph-auto-extract-EOXWQRBZ.js} +9 -7
- package/dist/{graph-rag-HCQCZ2W7.js → graph-rag-5FVC5JXH.js} +4 -4
- package/dist/{hook-prefetch-FKXDTCDS.js → hook-prefetch-2CN3MK4H.js} +16 -14
- package/dist/hooks/bug-report-worker.js +18 -16
- package/dist/hooks/codex-stop-task-finalizer.js +19 -17
- package/dist/hooks/commit-complete.js +18 -16
- package/dist/hooks/error-recall.js +10 -8
- package/dist/hooks/exe-heartbeat-hook.js +6 -4
- package/dist/hooks/ingest.js +14 -102
- package/dist/hooks/instructions-loaded.js +7 -5
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +7 -5
- package/dist/hooks/post-compact.js +17 -15
- package/dist/hooks/post-tool-combined.js +10 -10
- package/dist/hooks/pre-compact.js +18 -16
- package/dist/hooks/pre-tool-use.js +23 -21
- package/dist/hooks/prompt-submit.js +34 -38
- package/dist/hooks/session-end.js +22 -20
- package/dist/hooks/session-start.js +13 -18
- package/dist/hooks/stop.js +21 -19
- package/dist/hooks/subagent-stop.js +19 -17
- package/dist/hooks/summary-worker.js +22 -25
- package/dist/index.js +25 -23
- package/dist/{installer-YSCUE6MT.js → installer-7UV3CNWZ.js} +8 -6
- package/dist/{installer-YTT5OSRL.js → installer-VPNTM3X6.js} +8 -6
- package/dist/{installer-G3DVMNC6.js → installer-YDLSXGD2.js} +8 -6
- package/dist/{intercom-queue-5D52JF3Q.js → intercom-queue-KHKJJYCQ.js} +15 -13
- package/dist/lib/cloud-sync.js +18 -14
- package/dist/lib/consolidation.js +11 -9
- package/dist/lib/crypto.js +2 -1
- package/dist/lib/database.js +9 -3
- package/dist/lib/db-backup.js +1 -1
- package/dist/lib/db-checkpoint-worker.js +4 -0
- package/dist/lib/db-daemon-client.js +3 -1
- package/dist/lib/db-read-worker.js +4 -0
- package/dist/lib/db-write-worker.js +3 -3
- package/dist/lib/db.js +9 -3
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/employee-templates.js +8 -6
- package/dist/lib/employees.js +5 -3
- package/dist/lib/exe-daemon.js +202 -93
- package/dist/lib/hybrid-search.js +9 -7
- package/dist/lib/identity.js +5 -3
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +16 -14
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +6 -4
- package/dist/lib/schedules.js +9 -7
- package/dist/lib/session-registry.js +7 -5
- package/dist/lib/skill-learning.js +10 -8
- package/dist/lib/store.js +8 -6
- package/dist/lib/task-router.js +6 -4
- package/dist/lib/tasks.js +17 -15
- package/dist/lib/tmux-routing.js +15 -13
- package/dist/lib/token-spend.js +8 -4
- package/dist/{license-gate-DKYHCAMN.js → license-gate-YXUSNA2I.js} +3 -3
- package/dist/{license-sync-JVEXPDHN.js → license-sync-XFDOXL3Z.js} +2 -2
- package/dist/mcp/register-tools.js +80 -76
- package/dist/mcp/server.js +81 -77
- package/dist/mcp/tools/complete-reminder.js +7 -5
- package/dist/mcp/tools/create-reminder.js +7 -5
- package/dist/mcp/tools/create-task.js +19 -17
- package/dist/mcp/tools/deactivate-behavior.js +11 -9
- package/dist/mcp/tools/list-reminders.js +7 -5
- package/dist/mcp/tools/list-tasks.js +19 -17
- package/dist/mcp/tools/send-message.js +18 -16
- package/dist/mcp/tools/update-task.js +18 -16
- package/dist/{mcp-health-WDOB6XUB.js → mcp-health-HNVSWKFA.js} +6 -1
- package/dist/{mcp-http-config-L5RDDU6P.js → mcp-http-config-HIP5CEDV.js} +6 -4
- package/dist/{mcp-session-identity-S6UCHBER.js → mcp-session-identity-RTNZ2ZLW.js} +15 -13
- package/dist/{memory-cards-65RGFT5M.js → memory-cards-KG4TPNKK.js} +8 -6
- package/dist/{memory-graph-extractor-ZDZ5VQUX.js → memory-graph-extractor-6HTBLO2N.js} +10 -8
- package/dist/{memory-poisoning-defense-EQUQNXRE.js → memory-poisoning-defense-3ZT57RSJ.js} +5 -3
- package/dist/{memory-pressure-watchdog-CC344JBH.js → memory-pressure-watchdog-ZOZBIMKC.js} +16 -14
- package/dist/{memory-reflection-Q4OT4V55.js → memory-reflection-EQC4FXSW.js} +5 -3
- package/dist/{monitor-grants-NWSQ7ZCQ.js → monitor-grants-BDLVFVDR.js} +3 -1
- package/dist/{notification-ledger-GL3ZPZNR.js → notification-ledger-NZ4HO3M5.js} +16 -14
- package/dist/{notifications-FGYNO2FY.js → notifications-74YECZ4V.js} +15 -13
- package/dist/{orchestration-events-N5FQ4SKU.js → orchestration-events-KRQI4ED5.js} +6 -4
- package/dist/{orchestrator-XUJDK4EW.js → orchestrator-WV2YCHTK.js} +17 -15
- package/dist/org-membership-B32NS5NI.js +34 -0
- package/dist/{pipeline-router-YQOZ4M62.js → pipeline-router-6ZZV7JMA.js} +6 -4
- package/dist/{plan-limits-VBHKYKSK.js → plan-limits-B7AZKZ6U.js} +8 -6
- package/dist/{platform-procedures-F3XB6WWM.js → platform-procedures-2VQGBJU7.js} +1 -1
- package/dist/{projection-worker-NJUNGEXE.js → projection-worker-LRFFQ6JB.js} +2 -2
- package/dist/{prospective-memory-3MKUPDVI.js → prospective-memory-A4GDTIWG.js} +5 -3
- package/dist/{reranker-LGSIL6TX.js → reranker-YVTLJCFC.js} +1 -1
- package/dist/{retrieval-health-AEEQ5IO6.js → retrieval-health-PK2ODTXM.js} +1 -1
- package/dist/{review-polling-2RMEZ5QO.js → review-polling-JFWRNQF6.js} +16 -14
- package/dist/runtime/index.js +19 -17
- package/dist/{session-events-5XSYCV4I.js → session-events-VMQBCUH3.js} +16 -14
- package/dist/{session-kill-telemetry-QJUHG3IG.js → session-kill-telemetry-Z3W256T5.js} +16 -14
- package/dist/{session-scope-LIJ746K2.js → session-scope-2ADEVY3C.js} +15 -13
- package/dist/{setup-wizard-RLUCGGA7.js → setup-wizard-26B36FMC.js} +1 -1
- package/dist/{shard-manager-3L2NMJVJ.js → shard-manager-DFLCDZT5.js} +2 -1
- package/dist/{skill-refinement-FMN3WFSG.js → skill-refinement-APBYOSGX.js} +6 -4
- package/dist/{stack-promote-BGDGAYKG.js → stack-promote-SZYIPTFT.js} +29 -4
- package/dist/{stack-release-SOIHMI3I.js → stack-release-EYRDEGPD.js} +4 -4
- package/dist/{stack-update-AXFHJRK5.js → stack-update-YWK2YXP6.js} +3 -3
- package/dist/{steward-gate-R2XWABMV.js → steward-gate-CIOBPNX6.js} +6 -4
- package/dist/{support-inbox-IITW66TG.js → support-inbox-OAWGFRKW.js} +3 -3
- package/dist/{support-outbox-WHGPUYL2.js → support-outbox-DSWU3IXH.js} +1 -1
- package/dist/{task-enforcement-SFZGBY27.js → task-enforcement-YAU6ZGDC.js} +16 -14
- package/dist/{task-scope-74ZIFQRH.js → task-scope-44N7XP5N.js} +15 -13
- package/dist/{tasks-crud-N54JZCXU.js → tasks-crud-IWVDREXG.js} +15 -13
- package/dist/{tasks-notify-62IJZW55.js → tasks-notify-WK5HA77D.js} +16 -14
- package/dist/{tasks-review-3LHBE6ZJ.js → tasks-review-VDFWFETP.js} +15 -13
- package/dist/{telemetry-upload-HR3QIWZV.js → telemetry-upload-3X5ESEKM.js} +20 -180
- package/dist/{token-budget-DBXHLCMN.js → token-budget-WZGO22ME.js} +6 -4
- package/dist/{tool-telemetry-UFUTCNE3.js → tool-telemetry-F7RWUNVK.js} +1 -1
- package/dist/tui/App.js +24 -22
- package/dist/{tui-data-BPXEJKRQ.js → tui-data-KT7YGVQS.js} +15 -13
- package/dist/{update-support-HLZ7KMVM.js → update-support-ZVRMECNQ.js} +13 -11
- package/dist/{work-state-heartbeat-IQI3LCHN.js → work-state-heartbeat-CA4CN7DQ.js} +1 -1
- package/dist/{worker-gate-5ABYGLC2.js → worker-gate-52MVKYGZ.js} +1 -1
- package/dist/{workflow-engine-XSUWZK6I.js → workflow-engine-ZAFBPVUP.js} +2 -2
- package/dist/{worktree-EUYBBABA.js → worktree-NNVXVV6A.js} +7 -5
- package/dist/{worktree-sweep-LSKFA2PK.js → worktree-sweep-IM2ZQG6Z.js} +8 -6
- package/package.json +14 -4
- package/release-notes.json +34 -30
- package/dist/chunk-7HLWBYH7.js +0 -60
- /package/dist/{chunk-AK77MITT.js → chunk-6JTKIXLU.js} +0 -0
- /package/dist/{chunk-HABPXFHZ.js → chunk-BGYCUZYK.js} +0 -0
- /package/dist/{chunk-GVU3BW6N.js → chunk-COHHVCFA.js} +0 -0
- /package/dist/{chunk-VML2UQK7.js → chunk-FVWI2AR4.js} +0 -0
- /package/dist/{chunk-2267TRAO.js → chunk-R62ITJDQ.js} +0 -0
- /package/dist/{chunk-HMBMHZ3S.js → chunk-U7RZIY74.js} +0 -0
- /package/dist/{chunk-7GOSAV25.js → chunk-XLEYCOHX.js} +0 -0
- /package/dist/{chunk-A627QFOE.js → chunk-YBX3G5OP.js} +0 -0
- /package/dist/{chunk-IHKRHGKT.js → chunk-ZMYXQU4L.js} +0 -0
- /package/dist/{core-memory-KXE4QMOA.js → core-memory-AATZRQEY.js} +0 -0
- /package/dist/{memory-isolation-VSKUKTN4.js → memory-isolation-CF6FYSXD.js} +0 -0
- /package/dist/{oauth-server-JELOVN5D.js → oauth-server-VE5ELXTF.js} +0 -0
- /package/dist/{project-boot-LQ4CF6BI.js → project-boot-WEQSKDD7.js} +0 -0
- /package/dist/{wiki-acl-VR4AFJ3T.js → wiki-acl-GNIXYWHJ.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ensureAgentSymlink
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CAEWPEBA.js";
|
|
4
4
|
import {
|
|
5
5
|
ensureWorktree,
|
|
6
6
|
ensureWorktreeAsync,
|
|
@@ -8,10 +8,14 @@ import {
|
|
|
8
8
|
getMainRepoRoot,
|
|
9
9
|
isInsideGitRepo,
|
|
10
10
|
isWorktreeDirty
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XV42EAVK.js";
|
|
12
12
|
import {
|
|
13
13
|
incrementSkillSuccess
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6WHYSLGF.js";
|
|
15
|
+
import {
|
|
16
|
+
reviewSignalPath,
|
|
17
|
+
taskSignalDir
|
|
18
|
+
} from "./chunk-EIKATSE4.js";
|
|
15
19
|
import {
|
|
16
20
|
LEASE_MINUTES,
|
|
17
21
|
isLeaseExpired,
|
|
@@ -21,14 +25,10 @@ import {
|
|
|
21
25
|
buildTaskResult,
|
|
22
26
|
serializeMessage
|
|
23
27
|
} from "./chunk-4JERP7NT.js";
|
|
24
|
-
import {
|
|
25
|
-
reviewSignalPath,
|
|
26
|
-
taskSignalDir
|
|
27
|
-
} from "./chunk-EIKATSE4.js";
|
|
28
28
|
import {
|
|
29
29
|
listSessions,
|
|
30
30
|
registerSession
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-3ODATKWH.js";
|
|
32
32
|
import {
|
|
33
33
|
getTransport
|
|
34
34
|
} from "./chunk-UXLO7VHX.js";
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "./chunk-SKGMF2SO.js";
|
|
38
38
|
import {
|
|
39
39
|
recordOrchestrationEventBestEffort
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-POZGQQEZ.js";
|
|
41
41
|
import {
|
|
42
42
|
appendDispatchJournalEvent,
|
|
43
43
|
releaseDispatchClaim,
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
import {
|
|
54
54
|
PlanLimitError,
|
|
55
55
|
assertEmployeeLimitSync
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-F3QTF4T7.js";
|
|
57
57
|
import {
|
|
58
58
|
BUSY_PATTERN
|
|
59
59
|
} from "./chunk-OSKWCKUC.js";
|
|
@@ -89,13 +89,13 @@ import {
|
|
|
89
89
|
loadEmployeesSync,
|
|
90
90
|
offloadReadIfMain,
|
|
91
91
|
offloadReadQuery
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-EA5FVACM.js";
|
|
93
93
|
import {
|
|
94
94
|
RUNTIME_TABLE
|
|
95
95
|
} from "./chunk-WNBZJSQT.js";
|
|
96
96
|
import {
|
|
97
97
|
loadDeviceId
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-2OVTGZYH.js";
|
|
99
99
|
import {
|
|
100
100
|
EXE_AI_DIR
|
|
101
101
|
} from "./chunk-BCZF3AGJ.js";
|
|
@@ -414,6 +414,8 @@ function eventIcon(event) {
|
|
|
414
414
|
return "Task group:";
|
|
415
415
|
case "capacity_relaunch":
|
|
416
416
|
return "Relaunched:";
|
|
417
|
+
case "spend_cap_alert":
|
|
418
|
+
return "Spend cap:";
|
|
417
419
|
}
|
|
418
420
|
}
|
|
419
421
|
function formatTimeAgo(timestamp) {
|
|
@@ -1513,7 +1515,7 @@ async function createTaskCore(input) {
|
|
|
1513
1515
|
if (isCoordinatorSession) {
|
|
1514
1516
|
earlySessionScope = resolved;
|
|
1515
1517
|
} else {
|
|
1516
|
-
const { getSessionProject } = await import("./session-scope-
|
|
1518
|
+
const { getSessionProject } = await import("./session-scope-2ADEVY3C.js");
|
|
1517
1519
|
const sessionProject = getSessionProject(resolved);
|
|
1518
1520
|
if (sessionProject && sessionProject !== input.projectName) {
|
|
1519
1521
|
scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
|
|
@@ -1810,7 +1812,7 @@ async function buildTaskRowsStatement(opts) {
|
|
|
1810
1812
|
}
|
|
1811
1813
|
if (opts.founderId !== null) {
|
|
1812
1814
|
try {
|
|
1813
|
-
const { founderScopeFilter } = await import("./founder-context-
|
|
1815
|
+
const { founderScopeFilter } = await import("./founder-context-C7X7IRDA.js");
|
|
1814
1816
|
const founderFilter = founderScopeFilter(opts.founderId);
|
|
1815
1817
|
const cleaned = founderFilter.sql.replace(/^\s*AND\s+/, "");
|
|
1816
1818
|
conditions.push(cleaned);
|
|
@@ -5142,7 +5144,7 @@ async function verifyPaneAtCapacity(sessionName) {
|
|
|
5142
5144
|
reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
|
|
5143
5145
|
};
|
|
5144
5146
|
}
|
|
5145
|
-
const { isAtCapacity } = await import("./capacity-monitor-
|
|
5147
|
+
const { isAtCapacity } = await import("./capacity-monitor-QLPEL6S5.js");
|
|
5146
5148
|
if (!isAtCapacity(pane)) {
|
|
5147
5149
|
return {
|
|
5148
5150
|
atCapacity: false,
|
|
@@ -5376,7 +5378,7 @@ async function countScopedPendingReviews(targetSession, reviewer) {
|
|
|
5376
5378
|
}
|
|
5377
5379
|
async function countScopedOpenTasks(targetSession, agentId) {
|
|
5378
5380
|
try {
|
|
5379
|
-
const { fastDbInit } = await import("./fast-db-init-
|
|
5381
|
+
const { fastDbInit } = await import("./fast-db-init-6H67K76Q.js");
|
|
5380
5382
|
const client = await fastDbInit();
|
|
5381
5383
|
const scope = extractRootExe(targetSession);
|
|
5382
5384
|
if (!scope) return 0;
|
|
@@ -5431,7 +5433,7 @@ function buildScopedInProgressTaskQuery(targetSession) {
|
|
|
5431
5433
|
async function findScopedInProgressTaskId(targetSession) {
|
|
5432
5434
|
const q = buildScopedInProgressTaskQuery(targetSession);
|
|
5433
5435
|
if (!q) return null;
|
|
5434
|
-
const { fastDbInit } = await import("./fast-db-init-
|
|
5436
|
+
const { fastDbInit } = await import("./fast-db-init-6H67K76Q.js");
|
|
5435
5437
|
const client = await fastDbInit();
|
|
5436
5438
|
const result = await client.execute(q);
|
|
5437
5439
|
const id = result.rows[0]?.id;
|
|
@@ -5551,7 +5553,7 @@ function sendIntercom(targetSession, opts) {
|
|
|
5551
5553
|
}
|
|
5552
5554
|
if ((process.env.EXE_NOTIFICATION_LEDGER ?? "").trim().toLowerCase() === "shadow") {
|
|
5553
5555
|
const shadowScope = opts && "callerSessionScope" in opts ? opts.callerSessionScope : void 0;
|
|
5554
|
-
void import("./notification-ledger-
|
|
5556
|
+
void import("./notification-ledger-NZ4HO3M5.js").then((m) => m.recordShadowNudge(targetSession, reason, shadowScope)).catch(() => {
|
|
5555
5557
|
});
|
|
5556
5558
|
}
|
|
5557
5559
|
if (!opts?.force && isDebounced(targetSession)) {
|
|
@@ -5687,7 +5689,7 @@ function scheduleDeferredSpawnNudge(input) {
|
|
|
5687
5689
|
return;
|
|
5688
5690
|
}
|
|
5689
5691
|
queueIntercom(input.sessionName, `spawn nudge failed after ${attempt} attempts: ${msg}`, "signal");
|
|
5690
|
-
void import("./notifications-
|
|
5692
|
+
void import("./notifications-74YECZ4V.js").then(({ writeNotification: writeNotification2 }) => writeNotification2({
|
|
5691
5693
|
agentId: getCoordinatorName(),
|
|
5692
5694
|
agentRole: "COO",
|
|
5693
5695
|
event: "error_spike",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
routeTask
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-46RPEWTH.js";
|
|
4
4
|
import {
|
|
5
5
|
createTaskCore,
|
|
6
6
|
employeeSessionName,
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
isEmployeeAlive,
|
|
10
10
|
sessionScopeFilter,
|
|
11
11
|
updateTaskStatus
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-74R44E4S.js";
|
|
13
13
|
import {
|
|
14
14
|
DEFAULT_COORDINATOR_TEMPLATE_NAME,
|
|
15
15
|
getCoordinatorName
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-EA5FVACM.js";
|
|
17
17
|
|
|
18
18
|
// src/runtime/orchestrator.ts
|
|
19
19
|
var STALE_THRESHOLD_MS = 2 * 60 * 60 * 1e3;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ingest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NKDKB2RT.js";
|
|
4
4
|
import {
|
|
5
5
|
listWorkflowDefinitions,
|
|
6
6
|
runWorkflow,
|
|
7
7
|
startWorkflow
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-44WFVMZ5.js";
|
|
9
9
|
import {
|
|
10
10
|
initCRMBridge
|
|
11
11
|
} from "./chunk-ML4S5SHZ.js";
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertValidDbPath
|
|
3
3
|
} from "./chunk-2I23RPSI.js";
|
|
4
|
+
import {
|
|
5
|
+
recordDbOpen
|
|
6
|
+
} from "./chunk-5YEUPUV4.js";
|
|
4
7
|
import {
|
|
5
8
|
listBackups
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Z2PAVJJ4.js";
|
|
7
10
|
import {
|
|
8
11
|
getEmotionalBaseline,
|
|
9
12
|
renderEmotionalBaselineSection
|
|
10
13
|
} from "./chunk-OMXJMOBD.js";
|
|
11
|
-
import {
|
|
12
|
-
isDaemonAlive
|
|
13
|
-
} from "./chunk-7HLWBYH7.js";
|
|
14
14
|
import {
|
|
15
15
|
logDaemonHealth
|
|
16
16
|
} from "./chunk-BBMTVAE3.js";
|
|
17
17
|
import {
|
|
18
18
|
isPostgresBackendEnabled
|
|
19
19
|
} from "./chunk-YMUZWC33.js";
|
|
20
|
+
import {
|
|
21
|
+
directWriterAllowed,
|
|
22
|
+
isDaemonAlive
|
|
23
|
+
} from "./chunk-V3W3SATA.js";
|
|
20
24
|
import {
|
|
21
25
|
EMBEDDING_DIM
|
|
22
26
|
} from "./chunk-FXU7JOXK.js";
|
|
@@ -1329,7 +1333,7 @@ async function migrateReflectionDedup(client) {
|
|
|
1329
1333
|
"ALTER TABLE memory_reflections ADD COLUMN dedup_key TEXT",
|
|
1330
1334
|
"migration add memory_reflections.dedup_key"
|
|
1331
1335
|
);
|
|
1332
|
-
const { reflectionDedupKey } = await import("./memory-reflection-
|
|
1336
|
+
const { reflectionDedupKey } = await import("./memory-reflection-EQC4FXSW.js");
|
|
1333
1337
|
const keyForRow = (row) => {
|
|
1334
1338
|
let sources = [];
|
|
1335
1339
|
try {
|
|
@@ -1751,6 +1755,7 @@ async function _attemptBackupRestore(config) {
|
|
|
1751
1755
|
opts.encryptionKey = config.encryptionKey;
|
|
1752
1756
|
}
|
|
1753
1757
|
const testClient = createClient(opts);
|
|
1758
|
+
recordDbOpen({ dbPath: config.dbPath, source: "auto-restore-verify", writeCapable: true, checkpointTimer: false });
|
|
1754
1759
|
await testClient.execute("PRAGMA busy_timeout = 30000");
|
|
1755
1760
|
await testClient.execute("PRAGMA journal_mode = WAL");
|
|
1756
1761
|
const isCorrupt = await _checkDbIntegrity(testClient);
|
|
@@ -1914,6 +1919,11 @@ async function initDatabase(config) {
|
|
|
1914
1919
|
cleanupLegacyPlaintextStubs(dirname(config.dbPath), config.dbPath);
|
|
1915
1920
|
} catch {
|
|
1916
1921
|
}
|
|
1922
|
+
if (process.env.EXE_BACKGROUND_CLOUD_SYNC === "1" && !isPostgresBackendEnabled() && !await directWriterAllowed()) {
|
|
1923
|
+
throw new Error(
|
|
1924
|
+
"Background cloud-sync child refused a direct SQLite WRITER open: the daemon is alive and owns the single writer connection. Cloud-sync writes must route through the daemon socket (fastDbInit); a direct open would be an unsanctioned second writer (bug 4a6f8aaf). This is safe to retry once the daemon socket is reachable."
|
|
1925
|
+
);
|
|
1926
|
+
}
|
|
1917
1927
|
await acquireDbLock();
|
|
1918
1928
|
if (existsSync4(config.dbPath)) {
|
|
1919
1929
|
const dbStat = statSync(config.dbPath);
|
|
@@ -1976,6 +1986,15 @@ async function initDatabase(config) {
|
|
|
1976
1986
|
opts.encryptionKey = config.encryptionKey;
|
|
1977
1987
|
}
|
|
1978
1988
|
_client = createClient(opts);
|
|
1989
|
+
recordDbOpen({
|
|
1990
|
+
dbPath: config.dbPath,
|
|
1991
|
+
source: config.telemetrySource ?? "initDatabase",
|
|
1992
|
+
writeCapable: config.telemetryWriteCapable ?? process.env.EXE_DB_READONLY !== "1",
|
|
1993
|
+
// Must mirror the ACTUAL timer gate below (bug df26c896: daemon-only by
|
|
1994
|
+
// default) — a telemetry flag that disagrees with the real decision would
|
|
1995
|
+
// poison the regression tripwire.
|
|
1996
|
+
checkpointTimer: config.telemetryCheckpointTimer ?? ((process.env.EXE_IS_DAEMON === "1" || process.env.EXE_DB_CHECKPOINT_TIMER === "1") && process.env.EXE_DB_NO_CHECKPOINT_TIMER !== "1")
|
|
1997
|
+
});
|
|
1979
1998
|
_resilientClient = wrapWithRetry(_client);
|
|
1980
1999
|
_adapterClient = _resilientClient;
|
|
1981
2000
|
await _client.execute("PRAGMA busy_timeout = 30000");
|
|
@@ -2033,7 +2052,8 @@ async function initDatabase(config) {
|
|
|
2033
2052
|
}
|
|
2034
2053
|
}
|
|
2035
2054
|
if (_walCheckpointTimer) clearInterval(_walCheckpointTimer);
|
|
2036
|
-
|
|
2055
|
+
const checkpointTimerAllowed = process.env.EXE_IS_DAEMON === "1" || process.env.EXE_DB_CHECKPOINT_TIMER === "1";
|
|
2056
|
+
if (checkpointTimerAllowed && process.env.EXE_DB_NO_CHECKPOINT_TIMER !== "1") {
|
|
2037
2057
|
_walCheckpointTimer = setInterval(() => {
|
|
2038
2058
|
void runWalCheckpoint(_client, config.dbPath, false).catch(() => {
|
|
2039
2059
|
});
|
|
@@ -2061,6 +2081,9 @@ async function initDatabase(config) {
|
|
|
2061
2081
|
}
|
|
2062
2082
|
releaseDbLock();
|
|
2063
2083
|
}
|
|
2084
|
+
function _isWalCheckpointTimerActive() {
|
|
2085
|
+
return _walCheckpointTimer !== null;
|
|
2086
|
+
}
|
|
2064
2087
|
function isInitialized() {
|
|
2065
2088
|
return _adapterClient !== null || _client !== null;
|
|
2066
2089
|
}
|
|
@@ -2109,7 +2132,7 @@ async function sweepExpiredSoftDeletedMemories(client, options = {}) {
|
|
|
2109
2132
|
const purgeArchived = archDays !== void 0;
|
|
2110
2133
|
const BATCH_SIZE = 2e3;
|
|
2111
2134
|
const MAX_BATCHES = 500;
|
|
2112
|
-
const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-
|
|
2135
|
+
const { cleanupCardsForMemories, cleanupGraphLinksForMemories } = await import("./graph-rag-5FVC5JXH.js");
|
|
2113
2136
|
const softCutoff = `-${softDays} days`;
|
|
2114
2137
|
const selectArgsBase = [softCutoff];
|
|
2115
2138
|
let predicate = `status = 'deleted' AND COALESCE(deleted_at, timestamp) < datetime('now', ?)`;
|
|
@@ -2178,9 +2201,13 @@ function getClient() {
|
|
|
2178
2201
|
} catch {
|
|
2179
2202
|
}
|
|
2180
2203
|
if (daemonAlive) {
|
|
2204
|
+
if (_daemonClient) {
|
|
2205
|
+
return _daemonClient;
|
|
2206
|
+
}
|
|
2181
2207
|
process.stderr.write(
|
|
2182
2208
|
"[database] INFO: daemon running \u2014 CLI taking direct SQLite access (single-writer CLI mode).\n"
|
|
2183
2209
|
);
|
|
2210
|
+
return _resilientClient;
|
|
2184
2211
|
} else {
|
|
2185
2212
|
process.stderr.write(
|
|
2186
2213
|
"[database] WARN: daemon unavailable \u2014 using direct SQLite (single-writer CLI mode).\n"
|
|
@@ -2224,6 +2251,9 @@ async function initDaemonClient() {
|
|
|
2224
2251
|
);
|
|
2225
2252
|
}
|
|
2226
2253
|
}
|
|
2254
|
+
function isDaemonRoutingActive() {
|
|
2255
|
+
return _daemonClient !== null && _daemonClient._isDaemonActive();
|
|
2256
|
+
}
|
|
2227
2257
|
function getRawClient() {
|
|
2228
2258
|
if (!_client) {
|
|
2229
2259
|
throw new Error("Database client not initialized. Call initDatabase() first.");
|
|
@@ -4259,6 +4289,7 @@ export {
|
|
|
4259
4289
|
optimizeFtsIndexes,
|
|
4260
4290
|
initTurso,
|
|
4261
4291
|
initDatabase,
|
|
4292
|
+
_isWalCheckpointTimerActive,
|
|
4262
4293
|
isInitialized,
|
|
4263
4294
|
setExternalClient,
|
|
4264
4295
|
initPostgresOnlyDatabase,
|
|
@@ -4270,6 +4301,7 @@ export {
|
|
|
4270
4301
|
getClient,
|
|
4271
4302
|
getCurrentDatabaseConfig,
|
|
4272
4303
|
initDaemonClient,
|
|
4304
|
+
isDaemonRoutingActive,
|
|
4273
4305
|
getRawClient,
|
|
4274
4306
|
tryGetRawClient,
|
|
4275
4307
|
_getMigrationBlockRuns,
|
|
@@ -1,116 +1,44 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
ALGORITHM,
|
|
3
|
+
CURRENT_KEY_ID,
|
|
4
|
+
DEK_LENGTH,
|
|
5
|
+
ENVELOPE_BLOB_VERSION,
|
|
6
|
+
IV_LENGTH,
|
|
7
|
+
PK_HASH_LENGTH,
|
|
8
|
+
RECIPIENT_SYMMETRIC,
|
|
9
|
+
RECIPIENT_X25519,
|
|
10
|
+
SYM_RECIPIENT_LENGTH,
|
|
11
|
+
SYNC_BLOB_VERSION,
|
|
12
|
+
TAG_LENGTH,
|
|
13
|
+
VERSIONED_HEADER_LENGTH,
|
|
14
|
+
X25519_PUB_LENGTH,
|
|
15
|
+
X25519_RECIPIENT_LENGTH,
|
|
16
|
+
initSyncKey,
|
|
17
|
+
isSyncKeyInitialized,
|
|
18
|
+
requireSyncKey,
|
|
19
|
+
unwrapDek,
|
|
20
|
+
v2PayloadAad
|
|
21
|
+
} from "./chunk-TWMWHDOY.js";
|
|
22
|
+
import {
|
|
3
23
|
getCachedMonitorIdentity,
|
|
4
|
-
pubKeyHash,
|
|
5
24
|
recomputeEnvelopeWrapKey
|
|
6
25
|
} from "./chunk-IOEUAQWP.js";
|
|
7
26
|
|
|
8
27
|
// src/lib/crypto.ts
|
|
9
28
|
import crypto from "crypto";
|
|
10
|
-
var ALGORITHM = "aes-256-gcm";
|
|
11
|
-
var IV_LENGTH = 12;
|
|
12
|
-
var TAG_LENGTH = 16;
|
|
13
|
-
var SYNC_HKDF_INFO = "exe-mem-sync-v2";
|
|
14
|
-
var SYNC_BLOB_VERSION = 1;
|
|
15
|
-
var CURRENT_KEY_ID = 0;
|
|
16
|
-
var VERSIONED_HEADER_LENGTH = 2;
|
|
17
|
-
var ENVELOPE_BLOB_VERSION = 2;
|
|
18
|
-
var RECIPIENT_SYMMETRIC = 0;
|
|
19
|
-
var RECIPIENT_X25519 = 1;
|
|
20
|
-
var DEK_LENGTH = 32;
|
|
21
|
-
var PK_HASH_LENGTH = 8;
|
|
22
|
-
var X25519_PUB_LENGTH = 32;
|
|
23
|
-
var SYM_RECIPIENT_LENGTH = 1 + IV_LENGTH + DEK_LENGTH + TAG_LENGTH;
|
|
24
|
-
var X25519_RECIPIENT_LENGTH = 1 + PK_HASH_LENGTH + X25519_PUB_LENGTH + IV_LENGTH + DEK_LENGTH + TAG_LENGTH;
|
|
25
|
-
var _syncKey = null;
|
|
26
29
|
function initSyncCrypto(masterKey) {
|
|
27
|
-
|
|
28
|
-
throw new Error(`Master key must be 32 bytes, got ${masterKey.length}`);
|
|
29
|
-
}
|
|
30
|
-
_syncKey = Buffer.from(
|
|
31
|
-
crypto.hkdfSync("sha256", masterKey, "", SYNC_HKDF_INFO, 32)
|
|
32
|
-
);
|
|
30
|
+
initSyncKey(masterKey);
|
|
33
31
|
}
|
|
34
32
|
function isSyncCryptoInitialized() {
|
|
35
|
-
return
|
|
33
|
+
return isSyncKeyInitialized();
|
|
36
34
|
}
|
|
37
|
-
function
|
|
38
|
-
if (!_syncKey) {
|
|
39
|
-
throw new Error("Sync crypto not initialized. Call initSyncCrypto(masterKey) first.");
|
|
40
|
-
}
|
|
41
|
-
return _syncKey;
|
|
42
|
-
}
|
|
43
|
-
function encryptSyncBlob(data, recipientPubKeys) {
|
|
35
|
+
function encryptSyncBlob(data) {
|
|
44
36
|
const key = requireSyncKey();
|
|
45
|
-
if (!recipientPubKeys || recipientPubKeys.length === 0) {
|
|
46
|
-
const iv = crypto.randomBytes(IV_LENGTH);
|
|
47
|
-
const cipher = crypto.createCipheriv(ALGORITHM, key, iv);
|
|
48
|
-
const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);
|
|
49
|
-
const tag = cipher.getAuthTag();
|
|
50
|
-
return Buffer.concat([Buffer.from([SYNC_BLOB_VERSION, CURRENT_KEY_ID]), iv, encrypted, tag]).toString("base64");
|
|
51
|
-
}
|
|
52
|
-
return encryptEnvelope(data, key, recipientPubKeys).toString("base64");
|
|
53
|
-
}
|
|
54
|
-
function wrapDek(dek, wrapKey, aad) {
|
|
55
37
|
const iv = crypto.randomBytes(IV_LENGTH);
|
|
56
|
-
const cipher = crypto.createCipheriv(ALGORITHM,
|
|
57
|
-
cipher.
|
|
58
|
-
const wrapped = Buffer.concat([cipher.update(dek), cipher.final()]);
|
|
38
|
+
const cipher = crypto.createCipheriv(ALGORITHM, key, iv);
|
|
39
|
+
const encrypted = Buffer.concat([cipher.update(data), cipher.final()]);
|
|
59
40
|
const tag = cipher.getAuthTag();
|
|
60
|
-
return Buffer.concat([iv,
|
|
61
|
-
}
|
|
62
|
-
function unwrapDek(iv, wrapped, tag, wrapKey, aad) {
|
|
63
|
-
const decipher = crypto.createDecipheriv(ALGORITHM, wrapKey, iv);
|
|
64
|
-
decipher.setAAD(aad);
|
|
65
|
-
decipher.setAuthTag(tag);
|
|
66
|
-
return Buffer.concat([decipher.update(wrapped), decipher.final()]);
|
|
67
|
-
}
|
|
68
|
-
function buildPayloadAad(keyId, recipientCount, recipientBytes) {
|
|
69
|
-
const digest = crypto.createHash("sha256").update(recipientBytes).digest();
|
|
70
|
-
return Buffer.concat([Buffer.from([ENVELOPE_BLOB_VERSION, keyId, recipientCount]), digest]);
|
|
71
|
-
}
|
|
72
|
-
function encryptEnvelope(data, syncKey, recipientPubKeys) {
|
|
73
|
-
const dek = crypto.randomBytes(DEK_LENGTH);
|
|
74
|
-
const recipients = [];
|
|
75
|
-
{
|
|
76
|
-
const sym = wrapDek(dek, syncKey, Buffer.from([RECIPIENT_SYMMETRIC]));
|
|
77
|
-
recipients.push(Buffer.concat([Buffer.from([RECIPIENT_SYMMETRIC]), sym]));
|
|
78
|
-
}
|
|
79
|
-
for (const recipientPub of recipientPubKeys) {
|
|
80
|
-
if (recipientPub.length !== X25519_PUB_LENGTH) {
|
|
81
|
-
process.stderr.write(`[exe-os] \u26A0 skipping monitoring recipient with bad length ${recipientPub.length}
|
|
82
|
-
`);
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
const hash = pubKeyHash(recipientPub);
|
|
87
|
-
const { ephemeralPublicKey, wrapKey } = deriveEnvelopeWrapKeyForRecipient(recipientPub);
|
|
88
|
-
const aad = Buffer.concat([Buffer.from([RECIPIENT_X25519]), hash]);
|
|
89
|
-
const wrapped = wrapDek(dek, wrapKey, aad);
|
|
90
|
-
recipients.push(Buffer.concat([Buffer.from([RECIPIENT_X25519]), hash, ephemeralPublicKey, wrapped]));
|
|
91
|
-
} catch (err) {
|
|
92
|
-
process.stderr.write(
|
|
93
|
-
`[exe-os] \u26A0 skipping unusable monitoring recipient (${pubKeyHash(recipientPub).toString("hex")}): ${err instanceof Error ? err.message : String(err)}
|
|
94
|
-
`
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (recipients.length > 255) {
|
|
99
|
-
throw new Error(`Too many envelope recipients: ${recipients.length} (max 255)`);
|
|
100
|
-
}
|
|
101
|
-
const recipientBytes = Buffer.concat(recipients);
|
|
102
|
-
const payloadIv = crypto.randomBytes(IV_LENGTH);
|
|
103
|
-
const payloadCipher = crypto.createCipheriv(ALGORITHM, dek, payloadIv);
|
|
104
|
-
payloadCipher.setAAD(buildPayloadAad(CURRENT_KEY_ID, recipients.length, recipientBytes));
|
|
105
|
-
const payloadCt = Buffer.concat([payloadCipher.update(data), payloadCipher.final()]);
|
|
106
|
-
const payloadTag = payloadCipher.getAuthTag();
|
|
107
|
-
return Buffer.concat([
|
|
108
|
-
Buffer.from([ENVELOPE_BLOB_VERSION, CURRENT_KEY_ID, recipients.length]),
|
|
109
|
-
recipientBytes,
|
|
110
|
-
payloadIv,
|
|
111
|
-
payloadTag,
|
|
112
|
-
payloadCt
|
|
113
|
-
]);
|
|
41
|
+
return Buffer.concat([Buffer.from([SYNC_BLOB_VERSION, CURRENT_KEY_ID]), iv, encrypted, tag]).toString("base64");
|
|
114
42
|
}
|
|
115
43
|
function parseEnvelope(combined) {
|
|
116
44
|
if (combined.length < 3 || combined[0] !== ENVELOPE_BLOB_VERSION) {
|
|
@@ -173,7 +101,7 @@ function parseEnvelope(combined) {
|
|
|
173
101
|
}
|
|
174
102
|
function decryptEnvelopePayload(env, dek) {
|
|
175
103
|
const decipher = crypto.createDecipheriv(ALGORITHM, dek, env.payloadIv);
|
|
176
|
-
decipher.setAAD(
|
|
104
|
+
decipher.setAAD(v2PayloadAad(env.keyId, env.recipientCount, env.recipientBytes));
|
|
177
105
|
decipher.setAuthTag(env.payloadTag);
|
|
178
106
|
return Buffer.concat([decipher.update(env.payloadCt), decipher.final()]);
|
|
179
107
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MultiAgentOrchestrator
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-A5WEEND7.js";
|
|
4
4
|
import {
|
|
5
5
|
createTokenBudgetMiddleware
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DWKH2H7W.js";
|
|
7
7
|
import {
|
|
8
8
|
createQuietRenderer,
|
|
9
9
|
createTerminalRenderer,
|
|
@@ -209,7 +209,7 @@ function createExeOSHooks(config) {
|
|
|
209
209
|
);
|
|
210
210
|
}
|
|
211
211
|
try {
|
|
212
|
-
const { listBehaviors } = await import("./behaviors-
|
|
212
|
+
const { listBehaviors } = await import("./behaviors-57AMN5IP.js");
|
|
213
213
|
const behaviors = await listBehaviors(config.agentId, config.projectName, 12);
|
|
214
214
|
if (behaviors.length > 0) {
|
|
215
215
|
process.stderr.write(
|
|
@@ -330,7 +330,7 @@ function createExeOSHooks(config) {
|
|
|
330
330
|
async onSubagentStop(_reason) {
|
|
331
331
|
try {
|
|
332
332
|
const { getClient } = await import("./lib/database.js");
|
|
333
|
-
const { sessionScopeFilter } = await import("./task-scope-
|
|
333
|
+
const { sessionScopeFilter } = await import("./task-scope-44N7XP5N.js");
|
|
334
334
|
const client = getClient();
|
|
335
335
|
const ehScope = sessionScopeFilter();
|
|
336
336
|
const tasks = await client.execute({
|
|
@@ -422,7 +422,7 @@ function createExeOSHooks(config) {
|
|
|
422
422
|
try {
|
|
423
423
|
const { writeMemory, flushBatch } = await import("./lib/store.js");
|
|
424
424
|
const { getClient } = await import("./lib/database.js");
|
|
425
|
-
const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-
|
|
425
|
+
const { sessionScopeFilter: cpScopeFilter } = await import("./task-scope-44N7XP5N.js");
|
|
426
426
|
const client = getClient();
|
|
427
427
|
const cpScope = cpScopeFilter();
|
|
428
428
|
const tasks = await client.execute({
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
getClient,
|
|
4
4
|
isInitialized,
|
|
5
5
|
loadEmployees
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EA5FVACM.js";
|
|
7
7
|
import {
|
|
8
8
|
PLAN_LIMITS,
|
|
9
9
|
checkLicense,
|
|
10
10
|
isFeatureAllowed
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-2OVTGZYH.js";
|
|
12
12
|
import {
|
|
13
13
|
EXE_AI_DIR
|
|
14
14
|
} from "./chunk-BCZF3AGJ.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sendIntercom,
|
|
3
3
|
updateTaskStatus
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-74R44E4S.js";
|
|
5
5
|
import {
|
|
6
6
|
recordOrchestrationEventBestEffort
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-POZGQQEZ.js";
|
|
8
8
|
import {
|
|
9
9
|
BUSY_PATTERN
|
|
10
10
|
} from "./chunk-OSKWCKUC.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
baseAgentName,
|
|
13
13
|
getCoordinatorName,
|
|
14
14
|
isCoordinatorName
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-EA5FVACM.js";
|
|
16
16
|
|
|
17
17
|
// src/lib/play-mode.ts
|
|
18
18
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
@@ -305,7 +305,7 @@ async function surfaceStaleDispatchPendingSignals(scopeList, now, thresholdMs =
|
|
|
305
305
|
const sessionScope = signalScope ?? (scopeList.length === 1 ? scopeList[0] : null);
|
|
306
306
|
if (allowedScopes.size > 0 && sessionScope && !allowedScopes.has(sessionScope)) continue;
|
|
307
307
|
try {
|
|
308
|
-
const { writeNotification } = await import("./notifications-
|
|
308
|
+
const { writeNotification } = await import("./notifications-74YECZ4V.js");
|
|
309
309
|
await writeNotification({
|
|
310
310
|
agentId: getCoordinatorName(),
|
|
311
311
|
agentRole: "COO",
|