@askexenow/exe-os 0.9.370 → 0.9.372
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/docker-compose.yml +46 -15
- package/deploy/stack-manifests/v0.9.json +117 -2
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-H5UZGJ5D.js → active-agent-GRT5MKD5.js} +3 -3
- package/dist/{active-agent-L6GFD4NP.js → active-agent-L2ZSSXDK.js} +3 -3
- package/dist/{agent-defs-generator-BARBPY6L.js → agent-defs-generator-M4ZNYIVX.js} +2 -2
- package/dist/{agentic-ontology-OZM624IZ.js → agentic-ontology-DMPRDEUX.js} +1 -1
- package/dist/{backfill-metadata-43B5R5JT.js → backfill-metadata-ZMEHJQ5M.js} +5 -5
- package/dist/{backup-verify-FW5GEF4B.js → backup-verify-EX2K732J.js} +1 -1
- package/dist/{behavior-injection-RT4ET4ZF.js → behavior-injection-22AGMS25.js} +12 -11
- package/dist/{behaviors-ZLEW6AIW.js → behaviors-DVFXAWF5.js} +10 -9
- package/dist/bin/agentic-ontology-backfill.js +6 -6
- package/dist/bin/agentic-reflection-backfill.js +7 -7
- package/dist/bin/agentic-semantic-label.js +6 -6
- package/dist/bin/backfill-conversations.js +8 -7
- package/dist/bin/backfill-responses.js +8 -7
- package/dist/bin/backfill-vectors.js +10 -9
- package/dist/bin/bulk-sync-postgres.js +14 -13
- package/dist/bin/cc-doctor.js +5 -5
- package/dist/bin/cleanup-stale-review-tasks.js +18 -17
- package/dist/bin/cli.js +30 -22
- package/dist/bin/deferred-daemon-restart.js +123 -94
- package/dist/bin/exe-agent-config.js +2 -2
- package/dist/bin/exe-agent.js +8 -8
- package/dist/bin/exe-assign.js +10 -9
- package/dist/bin/exe-boot.js +46 -35
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +15 -14
- package/dist/bin/exe-config-dump.js +2 -2
- package/dist/bin/exe-dispatch.js +19 -18
- package/dist/bin/exe-doctor.js +5 -5
- package/dist/bin/exe-export-behaviors.js +14 -13
- package/dist/bin/exe-forget.js +7 -7
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +5 -5
- package/dist/bin/exe-heartbeat.js +21 -20
- package/dist/bin/exe-kill.js +22 -21
- package/dist/bin/exe-launch-agent.js +29 -28
- package/dist/bin/exe-mcp.js +3 -3
- package/dist/bin/exe-memory-reads.js +5 -5
- package/dist/bin/exe-new-employee.js +8 -8
- package/dist/bin/exe-os-mcp-proxy.js +3 -3
- package/dist/bin/exe-pending-messages.js +19 -18
- package/dist/bin/exe-pending-notifications.js +18 -17
- package/dist/bin/exe-pending-reviews.js +18 -17
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-repo-truth.js +369 -0
- package/dist/bin/exe-review.js +21 -20
- package/dist/bin/exe-search.js +6 -6
- package/dist/bin/exe-session-cleanup.js +22 -21
- package/dist/bin/exe-settings.js +14 -13
- package/dist/bin/exe-start-codex.js +19 -18
- package/dist/bin/exe-start-opencode.js +15 -14
- package/dist/bin/exe-status.js +20 -19
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +4 -4
- package/dist/bin/exe-watchdog.js +1 -1
- package/dist/bin/git-sweep.js +19 -18
- package/dist/bin/graph-backfill.js +6 -6
- package/dist/bin/graph-export.js +6 -6
- package/dist/bin/import-history.js +9 -9
- package/dist/bin/install-launchd.js +1 -1
- package/dist/bin/install.js +91 -90
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +4 -4
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/reconcile-backlog.js +2 -2
- package/dist/bin/registry-proxy.js +1 -1
- package/dist/bin/scan-tasks.js +18 -17
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +5 -5
- package/dist/bin/stack-update.js +5 -5
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-Z7ZM5LE5.js → boot-generation-OHXH4YC5.js} +3 -3
- package/dist/{boot-review-sections-52Y62Q6M.js → boot-review-sections-N5IXIGSS.js} +17 -16
- package/dist/{branch-hygiene-HFJ3HA62.js → branch-hygiene-KCGXRAWP.js} +125 -73
- package/dist/build-manifest.json +938 -918
- package/dist/{capability-cards-SKMGT3G2.js → capability-cards-4PXVLIVS.js} +2 -2
- package/dist/{capacity-monitor-JPFS5FYT.js → capacity-monitor-FKMQXORX.js} +19 -18
- package/dist/{catchup-brief-R4FP7ERW.js → catchup-brief-SN5EKO4N.js} +22 -21
- package/dist/{chunk-3TSDANOL.js → chunk-23QKEUF6.js} +11 -11
- package/dist/{chunk-33VQTJ6H.js → chunk-3KTQWMHI.js} +1 -1
- package/dist/{chunk-QS6HI4B6.js → chunk-3TTKAT6V.js} +31 -9
- package/dist/{chunk-D3QU2KNF.js → chunk-44C7QNZS.js} +1 -1
- package/dist/{chunk-S74ZNCBS.js → chunk-4ZJ5BPY6.js} +1 -1
- package/dist/{chunk-FFG3OMOH.js → chunk-53PYNYTW.js} +3 -3
- package/dist/{chunk-VZXEDC6K.js → chunk-5AHDQCTB.js} +4 -4
- package/dist/{chunk-JRPGAOHL.js → chunk-5AHRZI3R.js} +1 -1
- package/dist/{chunk-L6BZDFWT.js → chunk-5APCDDJZ.js} +1 -1
- package/dist/{chunk-5XRKPKHJ.js → chunk-5DCCKHDY.js} +3 -3
- package/dist/{chunk-64HUCOAL.js → chunk-5V7BD7Z4.js} +9 -1
- package/dist/{chunk-QK26AJD7.js → chunk-6XEYELCA.js} +1 -1
- package/dist/{chunk-WAIFOWCF.js → chunk-77JP3LK4.js} +6 -6
- package/dist/{chunk-C2CQ3KXS.js → chunk-7PSLK36P.js} +1 -1
- package/dist/{chunk-E63E3GUT.js → chunk-7R73IAHU.js} +9 -9
- package/dist/{chunk-L24EAOSG.js → chunk-7V6M3QUS.js} +1 -1
- package/dist/{chunk-BFP7JOD7.js → chunk-7WQRFSZI.js} +3 -3
- package/dist/{chunk-QILQ5FCG.js → chunk-A7JYF4RG.js} +6 -0
- package/dist/{chunk-P5XTVIEC.js → chunk-AAUWFXOX.js} +4 -4
- package/dist/{chunk-OPI5HGW6.js → chunk-AMKSDKMK.js} +1 -1
- package/dist/{chunk-U6SWEAAK.js → chunk-CNC57JCS.js} +4 -4
- package/dist/{chunk-I3FXDCUE.js → chunk-DKBPCOU4.js} +50 -20
- package/dist/{chunk-TTAPKUQV.js → chunk-E2WEFZOR.js} +1 -1
- package/dist/{chunk-AYMYU3RC.js → chunk-E7UCDSUE.js} +4 -4
- package/dist/{chunk-AWWAZBL7.js → chunk-ECHLVLA7.js} +1 -1
- package/dist/{chunk-EKOB53FE.js → chunk-EEXX4UMQ.js} +1 -1
- package/dist/{chunk-YTDIGGFZ.js → chunk-ELXFSIIM.js} +2 -2
- package/dist/{chunk-XFZHTFH5.js → chunk-ERVQTR7P.js} +2 -2
- package/dist/{chunk-VFI3HGKM.js → chunk-FB343XQX.js} +2 -2
- package/dist/{chunk-MMDOULD5.js → chunk-FBYAXTDM.js} +1 -1
- package/dist/{chunk-XWTZEVBQ.js → chunk-GH6YJOOC.js} +5 -5
- package/dist/{chunk-4HNVZDCM.js → chunk-GU62SNDH.js} +1 -1
- package/dist/{chunk-RLWSVSDV.js → chunk-HDW4XPDV.js} +1 -1
- package/dist/{chunk-6LU3DRZF.js → chunk-HECXZGGZ.js} +9 -9
- package/dist/{chunk-DZU7LMXH.js → chunk-HHE2HV3V.js} +1 -1
- package/dist/{chunk-637HNKYP.js → chunk-HIIXCAEE.js} +2 -2
- package/dist/{chunk-REOG2KQS.js → chunk-HIVZ53YB.js} +1 -1
- package/dist/{chunk-QCQT5RXR.js → chunk-HV6Y6F4X.js} +95 -3
- package/dist/{chunk-RLDMUSRM.js → chunk-IDZPQG2D.js} +1 -1
- package/dist/{chunk-NHJUJWLY.js → chunk-IPMUWYRQ.js} +2 -2
- package/dist/chunk-IVU3WN7S.js +227 -0
- package/dist/{chunk-WG3B2V6A.js → chunk-JJUGI2YL.js} +1 -1
- package/dist/{chunk-U5MEWTAY.js → chunk-JKXZGRWR.js} +1 -1
- package/dist/{chunk-EJ5BRL7C.js → chunk-JOO35RHR.js} +2 -2
- package/dist/{chunk-FAAHUZFK.js → chunk-JR23BL74.js} +3 -3
- package/dist/{chunk-6FMS6DGO.js → chunk-JTWTBX2M.js} +1 -1
- package/dist/{chunk-DLMLM63F.js → chunk-KPMC7PY7.js} +1 -1
- package/dist/{chunk-RHDDSIFC.js → chunk-KXYFBBZR.js} +1 -1
- package/dist/{chunk-MO2A7GUU.js → chunk-KYFFVTGO.js} +1 -1
- package/dist/{chunk-J7OPJPYG.js → chunk-L6ZNURWN.js} +1 -1
- package/dist/{chunk-AJH2JOKV.js → chunk-LAZKEJMS.js} +147 -147
- package/dist/{chunk-KNIYPHUM.js → chunk-LDL3S7AC.js} +1 -1
- package/dist/{chunk-5CYFJQGV.js → chunk-MBNIJXKI.js} +3 -3
- package/dist/{chunk-RYDR7TRT.js → chunk-MDGYXUOV.js} +1 -1
- package/dist/{chunk-SUCWKBYC.js → chunk-MEGRQ53A.js} +5 -5
- package/dist/{chunk-MXI2DAXR.js → chunk-MINXPXAB.js} +3 -3
- package/dist/{chunk-CWBFOAGM.js → chunk-NQZUSEAR.js} +1 -1
- package/dist/{chunk-5PISZ3DK.js → chunk-O4ZFRK6W.js} +11 -11
- package/dist/{chunk-5GHQD5NZ.js → chunk-OKGIOWOB.js} +2 -2
- package/dist/{chunk-AQL6BFAP.js → chunk-OW5RZIDW.js} +8 -8
- package/dist/{chunk-HIIEIDD2.js → chunk-OYQNNKNS.js} +10 -10
- package/dist/{chunk-5SRQG3SV.js → chunk-OZBII5E3.js} +4 -4
- package/dist/{chunk-VMJ2UH4S.js → chunk-PGLPUP37.js} +1 -1
- package/dist/{chunk-ZWYPGZJA.js → chunk-PM6WSWVU.js} +2 -2
- package/dist/{chunk-MZVEUPJA.js → chunk-QLA3RTH4.js} +2 -2
- package/dist/{chunk-LKB7OV6U.js → chunk-QR624DER.js} +1 -1
- package/dist/{chunk-RPJIULZL.js → chunk-QTI4QAWA.js} +1 -1
- package/dist/{chunk-ZXZHEAWO.js → chunk-QTYJPWJN.js} +4 -4
- package/dist/{chunk-ZVTKWWLV.js → chunk-QZL6E4UB.js} +1 -1
- package/dist/{chunk-75IYPYUY.js → chunk-RBYHJDAT.js} +3 -3
- package/dist/{chunk-KBXPVEO5.js → chunk-RGUDGC6A.js} +4 -4
- package/dist/{chunk-ZSYERTWA.js → chunk-RIK5GRWI.js} +3 -3
- package/dist/{chunk-KDP2HV43.js → chunk-RLR6VVKV.js} +4 -4
- package/dist/{chunk-GL4VN2FS.js → chunk-RNLF3CBB.js} +1 -1
- package/dist/{chunk-D26CLVB4.js → chunk-RUVO3NJC.js} +3 -3
- package/dist/{chunk-DOQ5F3GZ.js → chunk-RUWWES2K.js} +2 -2
- package/dist/{chunk-T3TSX4XB.js → chunk-SEP5ITFQ.js} +1 -1
- package/dist/chunk-SI5SZAJA.js +178 -0
- package/dist/{chunk-3WRQAAVT.js → chunk-T4EK56WI.js} +1 -1
- package/dist/{chunk-NKTNJSHK.js → chunk-TGEPLJ66.js} +3 -3
- package/dist/{chunk-C6ILSUXT.js → chunk-TGPQMMQP.js} +3 -3
- package/dist/{chunk-T7QPOQMD.js → chunk-THM7J6UI.js} +4 -4
- package/dist/{chunk-4OVLY2NR.js → chunk-TK4MI6F6.js} +3 -3
- package/dist/{chunk-X4C3SORV.js → chunk-U3XLRMJD.js} +1 -1
- package/dist/{chunk-BJ45A2NG.js → chunk-UKLF7F3Z.js} +5 -5
- package/dist/{chunk-BNHAZ65R.js → chunk-UQUUNGTP.js} +5 -1
- package/dist/{chunk-SWVRUCVM.js → chunk-UTDMTQNH.js} +1 -1
- package/dist/{chunk-JMH4BGNX.js → chunk-UVW7YFAF.js} +4 -4
- package/dist/{chunk-IWIESOAK.js → chunk-VKXS2YGN.js} +1 -1
- package/dist/{chunk-KU2ASWMO.js → chunk-VX2F4ZUY.js} +2 -2
- package/dist/{chunk-QZ4JDQ6R.js → chunk-W25RLOQ2.js} +2 -2
- package/dist/{chunk-DNKCJ6KV.js → chunk-WAEKYKTK.js} +1 -1
- package/dist/{chunk-FB43C242.js → chunk-WUKQVNLP.js} +1 -1
- package/dist/{chunk-UBR5M2TY.js → chunk-WZJVGA5I.js} +1 -1
- package/dist/{chunk-LMZD3A6K.js → chunk-XHYHX6F7.js} +26 -26
- package/dist/{chunk-YXCZKTTC.js → chunk-XXSNLM6R.js} +1 -1
- package/dist/{chunk-PZGLP65B.js → chunk-YFCNWQAM.js} +2 -2
- package/dist/{chunk-DPZ7EUY5.js → chunk-YWUQVHDL.js} +1 -1
- package/dist/{chunk-REEX7LTW.js → chunk-ZISQOOER.js} +2 -2
- package/dist/{chunk-YQ3QJ3SM.js → chunk-ZXB56YR2.js} +10 -10
- package/dist/{chunk-XGT2AOL7.js → chunk-ZYCLSEZT.js} +2 -2
- package/dist/{cleanup-graph-garbage-V6GERATJ.js → cleanup-graph-garbage-IPYDS5OX.js} +7 -7
- package/dist/{cloud-sync-command-RVPVF3H3.js → cloud-sync-command-JLNVG7H4.js} +2 -2
- package/dist/{cloud-sync-db-init-GIZFUJQB.js → cloud-sync-db-init-JXUF6GI3.js} +1 -1
- package/dist/{cloud-sync-shutdown-PQ6YZ3PA.js → cloud-sync-shutdown-Z4SBP6PL.js} +2 -2
- package/dist/{co-activation-6CM4E5ZK.js → co-activation-74RDFTKS.js} +2 -2
- package/dist/{co-occurrence-KJ7HM3EG.js → co-occurrence-CN3TBYVR.js} +5 -5
- package/dist/{code-context-index-XOP6TLPZ.js → code-context-index-D4MJ4VFX.js} +4 -3
- package/dist/{conversation-entity-extractor-PSFZQUJ5.js → conversation-entity-extractor-QGTLH4BP.js} +3 -3
- package/dist/{crdt-sync-POXIZVEF.js → crdt-sync-7T4WCOKD.js} +1 -1
- package/dist/{crm-webhook-V2H27KYR.js → crm-webhook-FTW3XZTO.js} +2 -2
- package/dist/{cto-delegation-gate-J3ND5BWL.js → cto-delegation-gate-SZCE34LB.js} +17 -16
- package/dist/{daemon-orchestration-M62T3FS2.js → daemon-orchestration-IGPHVNFR.js} +22 -21
- package/dist/{daemon-ready-MKBH4QWD.js → daemon-ready-OT2VQLS7.js} +1 -1
- package/dist/{destructive-data-guard-5SKHIZNN.js → destructive-data-guard-6I5MDFVD.js} +1 -1
- package/dist/{doc-graph-extractor-3BX3UPBB.js → doc-graph-extractor-VPTRIEKN.js} +5 -5
- package/dist/{documents-3D5LWOXL.js → documents-URULIXGM.js} +10 -9
- package/dist/{dreaming-WPBIOUHX.js → dreaming-VIZO3QDO.js} +21 -20
- package/dist/{employee-boot-brief-LWIOXW2Y.js → employee-boot-brief-XLOG4ULP.js} +25 -24
- package/dist/{exe-drift-UDKYXOFS.js → exe-drift-TLQM3IHD.js} +3 -3
- package/dist/{exe-export-ON37IIOT.js → exe-export-7YWYWJHY.js} +11 -10
- package/dist/{exe-import-ORFMQV3J.js → exe-import-DW6VAUKW.js} +11 -10
- package/dist/{exe-key-46N4TFWU.js → exe-key-TLJP2B4Y.js} +88 -87
- package/dist/{exe-org-ZYY5MUFH.js → exe-org-LU46N36E.js} +12 -12
- package/dist/{exe-snapshot-GLD66ZHQ.js → exe-snapshot-QHUZRS62.js} +23 -22
- package/dist/{fast-db-init-YFY566EG.js → fast-db-init-SCTOOIUT.js} +1 -1
- package/dist/{founder-context-N73W5XMG.js → founder-context-ZFZC4UHO.js} +2 -2
- package/dist/gateway/index.js +11 -11
- package/dist/{git-main-guard-TGK3RQY3.js → git-main-guard-TN27QBAI.js} +11 -1
- package/dist/{git-staleness-TNJ3XJJ4.js → git-staleness-GSGP344N.js} +2 -2
- package/dist/{global-procedures-7Y7LULZC.js → global-procedures-YAR7G4C6.js} +3 -3
- package/dist/{graph-auto-extract-4NEJ3OXA.js → graph-auto-extract-GNQS64F5.js} +5 -5
- package/dist/{graph-rag-WKAUQZUN.js → graph-rag-RMSFLUOB.js} +3 -3
- package/dist/{hook-integrity-D7BN2SLB.js → hook-integrity-CF567MVN.js} +1 -1
- package/dist/{hook-prefetch-7OJQ4IJ6.js → hook-prefetch-36BK4F7U.js} +18 -17
- package/dist/hooks/bug-report-worker.js +22 -21
- package/dist/hooks/codex-stop-task-finalizer.js +23 -22
- package/dist/hooks/commit-complete.js +21 -20
- package/dist/hooks/error-recall.js +8 -8
- package/dist/hooks/exe-heartbeat-hook.js +4 -4
- package/dist/hooks/ingest-worker.js +6 -5
- package/dist/hooks/ingest.js +11 -11
- package/dist/hooks/instructions-loaded.js +5 -5
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +5 -5
- package/dist/hooks/post-compact.js +4 -4
- package/dist/hooks/post-tool-combined.js +12 -12
- package/dist/hooks/pre-compact.js +21 -20
- package/dist/hooks/pre-tool-use.js +33 -32
- package/dist/hooks/prompt-submit.js +35 -34
- package/dist/hooks/session-end.js +26 -25
- package/dist/hooks/session-start.js +17 -17
- package/dist/hooks/stop.js +27 -26
- package/dist/hooks/subagent-stop.js +22 -21
- package/dist/hooks/summary-worker.js +26 -25
- package/dist/index.js +29 -28
- package/dist/{installer-KPDMTHOD.js → installer-LUN4HQIC.js} +5 -5
- package/dist/{installer-HTFYSA5U.js → installer-MPRFUQJE.js} +5 -5
- package/dist/{installer-ZHTVJJNQ.js → installer-OC5VXNC7.js} +5 -5
- package/dist/{intercom-queue-D57B3JR3.js → intercom-queue-6DZ7BANV.js} +17 -16
- package/dist/lib/cloud-sync.js +14 -13
- package/dist/lib/consolidation.js +7 -7
- package/dist/lib/database.js +2 -2
- package/dist/lib/db-backup.js +1 -1
- package/dist/lib/db-daemon-client.js +4 -3
- package/dist/lib/db-write-worker.js +3 -3
- package/dist/lib/db.js +2 -2
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/embedder.js +4 -3
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon-client.js +3 -2
- package/dist/lib/exe-daemon.js +103 -83
- package/dist/lib/hybrid-search.js +6 -6
- package/dist/lib/identity.js +2 -2
- package/dist/lib/license.js +4 -2
- package/dist/lib/messaging.js +18 -17
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +6 -6
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +11 -10
- package/dist/lib/status-brief.js +1 -1
- package/dist/lib/store.js +5 -5
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +19 -18
- package/dist/lib/tmux-routing.js +17 -16
- package/dist/lib/token-spend.js +3 -3
- package/dist/{license-gate-SUVXUQ7E.js → license-gate-ESER24PJ.js} +3 -3
- package/dist/{license-sync-TXGIO2PM.js → license-sync-JVG5KNIY.js} +2 -2
- package/dist/{linux-systemd-LRW3BYSS.js → linux-systemd-YUADJCJQ.js} +1 -1
- package/dist/mcp/register-tools.js +87 -86
- package/dist/mcp/server.js +88 -87
- 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 +21 -20
- package/dist/mcp/tools/deactivate-behavior.js +12 -11
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +21 -20
- package/dist/mcp/tools/send-message.js +20 -19
- package/dist/mcp/tools/update-task.js +20 -19
- package/dist/{mcp-http-config-WCOGCXVR.js → mcp-http-config-6K6IKH5F.js} +3 -3
- package/dist/{mcp-session-identity-JMFMB6G3.js → mcp-session-identity-LRC6WJSD.js} +17 -16
- package/dist/{memory-cards-IYRUCVDG.js → memory-cards-V3OZHIYP.js} +5 -5
- package/dist/{memory-graph-extractor-M6HSDITL.js → memory-graph-extractor-JC2Z64L4.js} +6 -6
- package/dist/{memory-poisoning-defense-CHGY62QP.js → memory-poisoning-defense-YM4QJHCX.js} +2 -2
- package/dist/{memory-pressure-watchdog-FB5E7MLA.js → memory-pressure-watchdog-6F6KEQHN.js} +18 -17
- package/dist/{memory-queue-client-HIHCA3W4.js → memory-queue-client-COA4ABEV.js} +4 -3
- package/dist/{memory-reflection-BPGUYVRK.js → memory-reflection-QXHJPYPC.js} +2 -2
- package/dist/{notification-ledger-4425CXFW.js → notification-ledger-6QRLQW4Q.js} +18 -17
- package/dist/{notifications-JGVJO7S2.js → notifications-7B6D7Y5C.js} +17 -16
- package/dist/{orchestration-events-PGKDGE45.js → orchestration-events-GY5VP5LU.js} +3 -3
- package/dist/{orchestrator-DV5G5DKQ.js → orchestrator-JVPVOYWA.js} +19 -18
- package/dist/{org-brief-session-LXCHYYX7.js → org-brief-session-GRV5R5E3.js} +5 -5
- package/dist/{org-consent-policy-52Z4LKHG.js → org-consent-policy-3FHHSYXV.js} +1 -1
- package/dist/{org-join-BMBQDMVF.js → org-join-BY4PV6UO.js} +2 -2
- package/dist/{org-key-admin-SCCVVE2H.js → org-key-admin-WSCPT2CZ.js} +3 -3
- package/dist/{org-partner-runtime-HKGI37ND.js → org-partner-runtime-UJDGECZ4.js} +5 -5
- package/dist/{org-row-visibility-K5OFWTXE.js → org-row-visibility-V5DXIHTE.js} +1 -1
- package/dist/{pipeline-router-NMWDS5I5.js → pipeline-router-YY5FQKTY.js} +3 -3
- package/dist/{plan-limits-P4E7P3O5.js → plan-limits-OVX6SN6B.js} +5 -5
- package/dist/{projection-worker-BSORYGBV.js → projection-worker-D2472IOD.js} +2 -2
- package/dist/{prospective-memory-3JTGI6VV.js → prospective-memory-JXO2A6PL.js} +2 -2
- package/dist/{push-notifications-P2HVB7LZ.js → push-notifications-HR3FZRDI.js} +18 -17
- package/dist/{reproject-worktree-memories-IXYGHTGA.js → reproject-worktree-memories-OSS3PGRF.js} +127 -35
- package/dist/{reranker-6RA63RUL.js → reranker-IMZRPYJ2.js} +1 -1
- package/dist/{retrieval-health-YDVLDURR.js → retrieval-health-W7OD44FE.js} +1 -1
- package/dist/{review-polling-XVOU2VTL.js → review-polling-2INP7H6M.js} +18 -17
- package/dist/runtime/index.js +25 -24
- package/dist/{session-events-6AUB5AKL.js → session-events-G4XUPVWV.js} +18 -17
- package/dist/{session-kill-telemetry-OXXPCDBI.js → session-kill-telemetry-W7MHWJTQ.js} +18 -17
- package/dist/{session-scope-E4NRAFZL.js → session-scope-LG2J4EMQ.js} +17 -16
- package/dist/{setup-wizard-RNV6UE6J.js → setup-wizard-YQJI3SVM.js} +1 -1
- package/dist/{skill-refinement-6U66DBPY.js → skill-refinement-RA37U756.js} +3 -3
- package/dist/{stack-promote-T7YOBPL6.js → stack-promote-IYBRXHTA.js} +4 -4
- package/dist/{stack-release-H7ICM4KT.js → stack-release-OXWLVVG6.js} +4 -4
- package/dist/{stack-update-MZIBQHVZ.js → stack-update-2CZEROPK.js} +3 -3
- package/dist/{steward-gate-TVRANLPZ.js → steward-gate-LTNFB3FY.js} +3 -3
- package/dist/{subagent-brief-injection-Y3IJY34K.js → subagent-brief-injection-OHLWLECQ.js} +26 -25
- package/dist/supervisor-handoff-CSJQMI53.js +37 -0
- package/dist/{support-inbox-2GGCRQEA.js → support-inbox-4KCEPAZQ.js} +3 -3
- package/dist/{task-enforcement-HMGS7GJD.js → task-enforcement-LGXWXGVZ.js} +18 -17
- package/dist/{task-request-inbox-EHPQR74T.js → task-request-inbox-WHCOSUCP.js} +1 -1
- package/dist/{task-scope-H2XPGS6Y.js → task-scope-KXF7Y6KA.js} +17 -16
- package/dist/{tasks-crud-4F6ECDNC.js → tasks-crud-5EM55WRZ.js} +17 -16
- package/dist/{tasks-notify-4F3HFDCG.js → tasks-notify-VFMAURTN.js} +18 -17
- package/dist/{tasks-review-M5G5J2T3.js → tasks-review-MHGMBHUZ.js} +17 -16
- package/dist/{telemetry-upload-DFRMVTOF.js → telemetry-upload-6NRTN7QJ.js} +7 -7
- package/dist/{token-budget-4CISVC2P.js → token-budget-LZPOYTRP.js} +3 -3
- package/dist/{tool-capability-index-BT2GGLLI.js → tool-capability-index-ED5OAPMW.js} +1 -1
- package/dist/{tool-telemetry-WHTCFN2L.js → tool-telemetry-ZX7VSAXK.js} +1 -1
- package/dist/tui/App.js +25 -24
- package/dist/{tui-data-36IHMXIQ.js → tui-data-CC5POSUV.js} +17 -16
- package/dist/{update-support-JQSTFOWO.js → update-support-KH6NSQON.js} +16 -15
- package/dist/{work-claims-CH77EFZ4.js → work-claims-MNK7PEPW.js} +3 -3
- package/dist/{work-state-heartbeat-YC3O6M2G.js → work-state-heartbeat-YEWT5NMZ.js} +1 -1
- package/dist/{worker-gate-BJTF4TUP.js → worker-gate-BOQSIU2Z.js} +1 -1
- package/dist/{workflow-engine-ZWRIDV6J.js → workflow-engine-MUUD7ZEX.js} +2 -2
- package/dist/{worktree-YNPSWYQY.js → worktree-GOGT2LZP.js} +4 -4
- package/dist/{worktree-sweep-GRMHU4DA.js → worktree-sweep-46VWPVQT.js} +5 -5
- package/package.json +2 -1
- package/release-notes.json +31 -60
- package/stack.release.json +4 -4
- package/dist/{chunk-Z4AN75KW.js → chunk-3F2UB4IQ.js} +0 -0
- package/dist/{chunk-442EX2PZ.js → chunk-3Y5THOU6.js} +0 -0
- package/dist/{chunk-KOYGRP2L.js → chunk-5N4SG5NB.js} +3 -3
- /package/dist/{chunk-ME3A4LKV.js → chunk-7UTJA6HF.js} +0 -0
- /package/dist/{chunk-YSDIJ3VI.js → chunk-7XGXRD22.js} +0 -0
- /package/dist/{chunk-EQJ462VM.js → chunk-ADNBOKYZ.js} +0 -0
- /package/dist/{chunk-6CAX7YH4.js → chunk-FZQWVQJG.js} +0 -0
- /package/dist/{chunk-2A76BLAD.js → chunk-GB3AHV5F.js} +0 -0
- /package/dist/{chunk-P3IOJTWW.js → chunk-HR2R2QER.js} +0 -0
- /package/dist/{chunk-5HNXTAXL.js → chunk-ORA5BWCV.js} +0 -0
- /package/dist/{chunk-PREXA444.js → chunk-R6FLELV6.js} +0 -0
- /package/dist/{chunk-G2H2KV4N.js → chunk-V4XAKXXF.js} +0 -0
- /package/dist/{chunk-7AQ2C4LT.js → chunk-VJSDGDNS.js} +0 -0
- /package/dist/{chunk-VQ7F3W7P.js → chunk-WV3TOOL7.js} +0 -0
- /package/dist/{core-memory-KIV3WFOQ.js → core-memory-6WBNT2HL.js} +0 -0
- /package/dist/{entity-boost-CDFAXVYL.js → entity-boost-MT336PI3.js} +0 -0
- /package/dist/{memory-isolation-CPTYUIPJ.js → memory-isolation-EJ45IXBH.js} +0 -0
- /package/dist/{message-queue-client-PL2POQOV.js → message-queue-client-MVBTYCSV.js} +0 -0
- /package/dist/{oauth-server-NJRJAT7X.js → oauth-server-TZFNQAFS.js} +0 -0
- /package/dist/{project-boot-QYYCFYFC.js → project-boot-LXLU2J32.js} +0 -0
- /package/dist/{wiki-acl-OROXIW3P.js → wiki-acl-WXRJGZ5Q.js} +0 -0
|
@@ -2,15 +2,15 @@ import {
|
|
|
2
2
|
BUSY_PATTERN,
|
|
3
3
|
sendIntercom,
|
|
4
4
|
updateTaskStatus
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XHYHX6F7.js";
|
|
6
6
|
import {
|
|
7
7
|
recordOrchestrationEventBestEffort
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-E2WEFZOR.js";
|
|
9
9
|
import {
|
|
10
10
|
baseAgentName,
|
|
11
11
|
getCoordinatorName,
|
|
12
12
|
isCoordinatorName
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5DCCKHDY.js";
|
|
14
14
|
|
|
15
15
|
// src/lib/play-mode.ts
|
|
16
16
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
@@ -332,7 +332,7 @@ async function surfaceStaleDispatchPendingSignals(scopeList, now, thresholdMs =
|
|
|
332
332
|
const sessionScope = signalScope ?? (scopeList.length === 1 ? scopeList[0] : null);
|
|
333
333
|
if (allowedScopes.size > 0 && sessionScope && !allowedScopes.has(sessionScope)) continue;
|
|
334
334
|
try {
|
|
335
|
-
const { writeNotification } = await import("./notifications-
|
|
335
|
+
const { writeNotification } = await import("./notifications-7B6D7Y5C.js");
|
|
336
336
|
await writeNotification({
|
|
337
337
|
agentId: getCoordinatorName(),
|
|
338
338
|
agentRole: "COO",
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-A7XLR3K7.js";
|
|
4
4
|
import {
|
|
5
5
|
getDeviceInfo
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GB3AHV5F.js";
|
|
7
7
|
import {
|
|
8
8
|
EXE_AI_DIR
|
|
9
9
|
} from "./chunk-QMSEL5YS.js";
|
|
@@ -232,6 +232,12 @@ function cacheResponse(token) {
|
|
|
232
232
|
} catch {
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
|
+
function clearLicenseCache() {
|
|
236
|
+
try {
|
|
237
|
+
if (existsSync(CACHE_PATH)) rmSync(CACHE_PATH, { force: true });
|
|
238
|
+
} catch {
|
|
239
|
+
}
|
|
240
|
+
}
|
|
235
241
|
async function validateViaCFWorker(apiKey, deviceId, timeoutMs = 1e4) {
|
|
236
242
|
try {
|
|
237
243
|
const res = await fetchRetry(`${API_BASE}/auth/activate`, {
|
|
@@ -240,38 +246,51 @@ async function validateViaCFWorker(apiKey, deviceId, timeoutMs = 1e4) {
|
|
|
240
246
|
body: JSON.stringify({ apiKey, deviceId }),
|
|
241
247
|
signal: AbortSignal.timeout(timeoutMs)
|
|
242
248
|
}, timeoutMs);
|
|
243
|
-
if (!res.ok) return
|
|
244
|
-
|
|
245
|
-
|
|
249
|
+
if (!res.ok) return { kind: "unreachable" };
|
|
250
|
+
let data;
|
|
251
|
+
try {
|
|
252
|
+
data = await res.json();
|
|
253
|
+
} catch {
|
|
254
|
+
return { kind: "unreachable" };
|
|
255
|
+
}
|
|
256
|
+
if (data.error === "device_limit_exceeded") return { kind: "unreachable" };
|
|
246
257
|
if (data.error === "seat_released") {
|
|
247
258
|
markPersonalFreeGrandfather(data.email ?? "", data.org_id);
|
|
248
|
-
return grandfatheredFreeLicense();
|
|
259
|
+
return { kind: "valid", license: grandfatheredFreeLicense() };
|
|
249
260
|
}
|
|
250
|
-
if (!data.valid) return
|
|
261
|
+
if (!data.valid) return { kind: "invalid" };
|
|
251
262
|
clearPersonalFreeGrandfather();
|
|
252
263
|
if (data.token) {
|
|
253
264
|
cacheResponse(data.token);
|
|
254
265
|
const verified = await verifyLicenseJwt(data.token);
|
|
255
|
-
if (verified) return verified;
|
|
266
|
+
if (verified) return { kind: "valid", license: verified };
|
|
256
267
|
}
|
|
257
268
|
const limits = PLAN_LIMITS[data.plan] ?? PLAN_LIMITS.free;
|
|
258
269
|
return {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
270
|
+
kind: "valid",
|
|
271
|
+
license: {
|
|
272
|
+
valid: data.valid,
|
|
273
|
+
plan: data.plan,
|
|
274
|
+
email: data.email,
|
|
275
|
+
expiresAt: data.expiresAt,
|
|
276
|
+
deviceLimit: limits.devices,
|
|
277
|
+
employeeLimit: limits.employees,
|
|
278
|
+
memoryLimit: limits.memories
|
|
279
|
+
}
|
|
266
280
|
};
|
|
267
281
|
} catch {
|
|
268
|
-
return
|
|
282
|
+
return { kind: "unreachable" };
|
|
269
283
|
}
|
|
270
284
|
}
|
|
271
285
|
async function validateLicense(apiKey, deviceId) {
|
|
272
286
|
const did = deviceId ?? loadDeviceId();
|
|
273
|
-
const
|
|
274
|
-
if (
|
|
287
|
+
const cf = await validateViaCFWorker(apiKey, did);
|
|
288
|
+
if (cf.kind === "valid") return cf.license;
|
|
289
|
+
if (cf.kind === "invalid") {
|
|
290
|
+
clearLicenseCache();
|
|
291
|
+
clearPersonalFreeGrandfather();
|
|
292
|
+
return { ...FREE_LICENSE, valid: false };
|
|
293
|
+
}
|
|
275
294
|
const cached = await getCachedLicense();
|
|
276
295
|
if (cached) return cached;
|
|
277
296
|
const graced = await getGraceVerifiedLicense();
|
|
@@ -323,12 +342,22 @@ async function refreshLicense(opts) {
|
|
|
323
342
|
}
|
|
324
343
|
const deviceId = loadDeviceId();
|
|
325
344
|
const online = await validateViaCFWorker(key, deviceId, opts?.timeoutMs ?? 1e4);
|
|
326
|
-
if (online) {
|
|
345
|
+
if (online.kind === "valid") {
|
|
346
|
+
return {
|
|
347
|
+
reachedCloud: true,
|
|
348
|
+
changed: oldPlan !== null && oldPlan !== online.license.plan,
|
|
349
|
+
oldPlan,
|
|
350
|
+
license: online.license
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
if (online.kind === "invalid") {
|
|
354
|
+
clearLicenseCache();
|
|
355
|
+
clearPersonalFreeGrandfather();
|
|
327
356
|
return {
|
|
328
357
|
reachedCloud: true,
|
|
329
|
-
changed: oldPlan !== null
|
|
358
|
+
changed: oldPlan !== null,
|
|
330
359
|
oldPlan,
|
|
331
|
-
license:
|
|
360
|
+
license: { ...FREE_LICENSE, valid: false }
|
|
332
361
|
};
|
|
333
362
|
}
|
|
334
363
|
const fallback = before ?? await getGraceVerifiedLicense() ?? { ...FREE_LICENSE, valid: false };
|
|
@@ -463,6 +492,7 @@ export {
|
|
|
463
492
|
getGraceVerifiedLicense,
|
|
464
493
|
readCachedLicenseToken,
|
|
465
494
|
getLicenseCacheAgeMs,
|
|
495
|
+
clearLicenseCache,
|
|
466
496
|
validateLicense,
|
|
467
497
|
checkLicense,
|
|
468
498
|
refreshLicense,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ingest
|
|
3
|
-
} from "./chunk-4OVLY2NR.js";
|
|
4
1
|
import {
|
|
5
2
|
listWorkflowDefinitions,
|
|
6
3
|
runWorkflow,
|
|
7
4
|
startWorkflow
|
|
8
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-KXYFBBZR.js";
|
|
6
|
+
import {
|
|
7
|
+
ingest
|
|
8
|
+
} from "./chunk-TK4MI6F6.js";
|
|
9
9
|
import {
|
|
10
10
|
initCRMBridge
|
|
11
11
|
} from "./chunk-ML4S5SHZ.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
listBehaviors
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MBNIJXKI.js";
|
|
4
4
|
import {
|
|
5
5
|
incrementSkillUsage
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-L6ZNURWN.js";
|
|
7
7
|
|
|
8
8
|
// src/lib/behavior-injection.ts
|
|
9
9
|
import { appendFile } from "fs/promises";
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
} from "./chunk-THIJIOE2.js";
|
|
4
4
|
import {
|
|
5
5
|
isGhostBehaviorRow
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MBNIJXKI.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient,
|
|
9
9
|
getIdentity,
|
|
10
10
|
listIdentities,
|
|
11
11
|
updateIdentity
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-5DCCKHDY.js";
|
|
13
13
|
import {
|
|
14
14
|
atomicWriteJsonSync
|
|
15
15
|
} from "./chunk-HSGBZSCA.js";
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
} from "./chunk-75H4R62K.js";
|
|
4
4
|
import {
|
|
5
5
|
initStore
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OYQNNKNS.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient,
|
|
9
9
|
isInitialized
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-5DCCKHDY.js";
|
|
11
11
|
|
|
12
12
|
// src/lib/schedules.ts
|
|
13
13
|
import crypto from "crypto";
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordSessionKill
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RBYHJDAT.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter,
|
|
6
6
|
verifyPaneAtCapacity,
|
|
7
7
|
writeNotification
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XHYHX6F7.js";
|
|
9
9
|
import {
|
|
10
10
|
listSessions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MDGYXUOV.js";
|
|
12
12
|
import {
|
|
13
13
|
getTransport
|
|
14
14
|
} from "./chunk-UXLO7VHX.js";
|
|
15
15
|
import {
|
|
16
16
|
recordOrchestrationEventBestEffort
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-E2WEFZOR.js";
|
|
18
18
|
import {
|
|
19
19
|
getClient,
|
|
20
20
|
isCoordinatorName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-5DCCKHDY.js";
|
|
22
22
|
|
|
23
23
|
// src/lib/capacity-monitor.ts
|
|
24
24
|
var CAPACITY_PATTERNS = [
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
dispatchTaskToEmployee,
|
|
3
3
|
markTaskNotificationsRead,
|
|
4
4
|
notifyTaskDone
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QTYJPWJN.js";
|
|
6
6
|
import {
|
|
7
7
|
clearCurrentTask,
|
|
8
8
|
writeCurrentTask
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
strictSessionScopeFilter,
|
|
17
17
|
updateTaskStatus,
|
|
18
18
|
writeNotification
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-XHYHX6F7.js";
|
|
20
20
|
import {
|
|
21
21
|
getAgentContext
|
|
22
22
|
} from "./chunk-GJV3WDWM.js";
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
getClient,
|
|
28
28
|
getCoordinatorName,
|
|
29
29
|
isCoordinatorName
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-5DCCKHDY.js";
|
|
31
31
|
|
|
32
32
|
// src/lib/tasks-chain.ts
|
|
33
33
|
import path from "path";
|
|
@@ -62,7 +62,7 @@ async function cascadeUnblock(taskId, baseDir, now) {
|
|
|
62
62
|
}
|
|
63
63
|
if (unblockedRows.rows.length > 0 && !process.env.VITEST) {
|
|
64
64
|
try {
|
|
65
|
-
const { dispatchTaskToEmployee: dispatchTaskToEmployee2 } = await import("./tasks-notify-
|
|
65
|
+
const { dispatchTaskToEmployee: dispatchTaskToEmployee2 } = await import("./tasks-notify-VFMAURTN.js");
|
|
66
66
|
const dispatched = /* @__PURE__ */ new Set();
|
|
67
67
|
for (const ur of unblockedRows.rows) {
|
|
68
68
|
const assignee = String(ur.assigned_to);
|
|
@@ -87,7 +87,7 @@ async function cascadeUnblock(taskId, baseDir, now) {
|
|
|
87
87
|
}
|
|
88
88
|
} catch {
|
|
89
89
|
try {
|
|
90
|
-
const { queueIntercom } = await import("./intercom-queue-
|
|
90
|
+
const { queueIntercom } = await import("./intercom-queue-6DZ7BANV.js");
|
|
91
91
|
const dispatched = /* @__PURE__ */ new Set();
|
|
92
92
|
for (const ur of unblockedRows.rows) {
|
|
93
93
|
const assignee = String(ur.assigned_to);
|
|
@@ -285,7 +285,7 @@ async function updateTask(input) {
|
|
|
285
285
|
try {
|
|
286
286
|
process.stderr.write(`[tasks] EVENT: tmux delivery failed for reviewer="${reviewer}". Queueing for daemon delivery.
|
|
287
287
|
`);
|
|
288
|
-
const { queueIntercom } = await import("./intercom-queue-
|
|
288
|
+
const { queueIntercom } = await import("./intercom-queue-6DZ7BANV.js");
|
|
289
289
|
const { resolveExeSession } = await import("./lib/tmux-routing.js");
|
|
290
290
|
const exeSession = row.session_scope ? String(row.session_scope) : resolveExeSession();
|
|
291
291
|
if (exeSession) {
|
|
@@ -302,7 +302,7 @@ async function updateTask(input) {
|
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
304
|
try {
|
|
305
|
-
const { pushNotifyAsync } = await import("./push-notifications-
|
|
305
|
+
const { pushNotifyAsync } = await import("./push-notifications-HR3FZRDI.js");
|
|
306
306
|
pushNotifyAsync({
|
|
307
307
|
event: "review_ready",
|
|
308
308
|
title: `Review ready: ${taskTitle.slice(0, 50)}`,
|
|
@@ -314,7 +314,7 @@ async function updateTask(input) {
|
|
|
314
314
|
}
|
|
315
315
|
if (!isCoordinator && isCompletionReviewTransition) {
|
|
316
316
|
try {
|
|
317
|
-
const { pushNotifyAsync } = await import("./push-notifications-
|
|
317
|
+
const { pushNotifyAsync } = await import("./push-notifications-HR3FZRDI.js");
|
|
318
318
|
const event = input.status === "needs_review" ? "review_ready" : "task_complete";
|
|
319
319
|
pushNotifyAsync({
|
|
320
320
|
event,
|
|
@@ -329,7 +329,7 @@ async function updateTask(input) {
|
|
|
329
329
|
await markTaskNotificationsRead(taskFile);
|
|
330
330
|
if (isCompletionReviewTransition && !isCoordinator && row.reviewer) {
|
|
331
331
|
try {
|
|
332
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
332
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-7B6D7Y5C.js");
|
|
333
333
|
const reviewer = String(row.reviewer);
|
|
334
334
|
await writeNotification2({
|
|
335
335
|
agentId: reviewer,
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
getClient,
|
|
4
4
|
isInitialized,
|
|
5
5
|
loadEmployees
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5DCCKHDY.js";
|
|
7
7
|
import {
|
|
8
8
|
checkLicense,
|
|
9
9
|
isFeatureAllowed,
|
|
10
10
|
isPersonalFreeGrandfathered
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-DKBPCOU4.js";
|
|
12
12
|
import {
|
|
13
13
|
PLAN_LIMITS
|
|
14
14
|
} from "./chunk-A7XLR3K7.js";
|
|
@@ -8,13 +8,14 @@ var GIT_TIMEOUT_MS = (() => {
|
|
|
8
8
|
const n = raw ? Number.parseInt(raw, 10) : Number.NaN;
|
|
9
9
|
return Number.isFinite(n) && n > 0 ? n : 1e4;
|
|
10
10
|
})();
|
|
11
|
-
function runGit(cwd, args) {
|
|
11
|
+
function runGit(cwd, args, extraEnv) {
|
|
12
12
|
try {
|
|
13
13
|
const out = execFileSync("git", args, {
|
|
14
14
|
cwd,
|
|
15
15
|
encoding: "utf8",
|
|
16
16
|
timeout: GIT_TIMEOUT_MS,
|
|
17
|
-
stdio: ["ignore", "pipe", "ignore"]
|
|
17
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
18
|
+
...extraEnv ? { env: { ...process.env, ...extraEnv } } : {}
|
|
18
19
|
});
|
|
19
20
|
return { status: "ok", stdout: out.trim() };
|
|
20
21
|
} catch (err) {
|
|
@@ -422,15 +423,25 @@ function parsePush(args, contextDir) {
|
|
|
422
423
|
positionals.push(a);
|
|
423
424
|
}
|
|
424
425
|
if (mirror) return { kind: "force-remote", verb: "push --mirror", contextDir };
|
|
426
|
+
const deleteFlag = del;
|
|
427
|
+
const remote = positionals[0] ?? null;
|
|
425
428
|
const refspecs = positionals.length > 1 ? positionals.slice(1) : [];
|
|
426
429
|
let targetsMain = false;
|
|
427
430
|
let needsUpstream = false;
|
|
431
|
+
const deleteTargets = [];
|
|
428
432
|
for (const spec of refspecs) {
|
|
429
433
|
if (/^\+/.test(spec)) force = true;
|
|
430
434
|
if (/^\+?:/.test(spec)) del = true;
|
|
431
435
|
const bare = spec.replace(/^\+/, "");
|
|
432
436
|
const colon = bare.indexOf(":");
|
|
433
437
|
const dst = colon >= 0 ? bare.slice(colon + 1) : bare;
|
|
438
|
+
if (colon === 0) deleteTargets.push(dst);
|
|
439
|
+
else if (deleteFlag) {
|
|
440
|
+
if (colon > 0) {
|
|
441
|
+
return { kind: "unparseable", reason: `push --delete with a src:dst refspec ("${spec}") \u2014 the deleted ref cannot be determined` };
|
|
442
|
+
}
|
|
443
|
+
deleteTargets.push(bare);
|
|
444
|
+
}
|
|
434
445
|
if (dst === "HEAD") {
|
|
435
446
|
needsUpstream = true;
|
|
436
447
|
continue;
|
|
@@ -439,7 +450,7 @@ function parsePush(args, contextDir) {
|
|
|
439
450
|
}
|
|
440
451
|
if (refspecs.length === 0) needsUpstream = true;
|
|
441
452
|
const destructive = force || del;
|
|
442
|
-
return { kind: "push", destructive, targetsMain, needsUpstream, contextDir };
|
|
453
|
+
return { kind: "push", destructive, targetsMain, needsUpstream, contextDir, remote, deleteTargets };
|
|
443
454
|
}
|
|
444
455
|
function resolveRepoStateOnce(cwd) {
|
|
445
456
|
const root = runGit(cwd, ["rev-parse", "--show-toplevel"]);
|
|
@@ -477,6 +488,62 @@ function resolveRepoState(cwd) {
|
|
|
477
488
|
if (first.ok || first.reason !== "unverifiable") return first;
|
|
478
489
|
return resolveRepoStateOnce(cwd);
|
|
479
490
|
}
|
|
491
|
+
function isResolvableRefName(name) {
|
|
492
|
+
if (name.length === 0 || name.length > 255) return false;
|
|
493
|
+
if (!/^[A-Za-z0-9._\-/]+$/.test(name)) return false;
|
|
494
|
+
if (name.startsWith("-") || name.startsWith("/") || name.endsWith("/")) return false;
|
|
495
|
+
if (name.includes("..") || name.includes("//")) return false;
|
|
496
|
+
if (name.endsWith(".lock") || name.endsWith(".")) return false;
|
|
497
|
+
return true;
|
|
498
|
+
}
|
|
499
|
+
function isUsableRemoteOperand(remote) {
|
|
500
|
+
return remote.length > 0 && !remote.startsWith("-");
|
|
501
|
+
}
|
|
502
|
+
function resolveRemoteRefKind(cwd, remote, name) {
|
|
503
|
+
if (!isUsableRemoteOperand(remote) || !isResolvableRefName(name)) return "unavailable";
|
|
504
|
+
const tagRef = `refs/tags/${name}`;
|
|
505
|
+
const headRef = `refs/heads/${name}`;
|
|
506
|
+
const res = runGit(cwd, ["ls-remote", remote, tagRef, headRef], { GIT_TERMINAL_PROMPT: "0" });
|
|
507
|
+
if (res.status !== "ok") return "unavailable";
|
|
508
|
+
let isTag = false;
|
|
509
|
+
let isBranch = false;
|
|
510
|
+
for (const line of res.stdout.split("\n")) {
|
|
511
|
+
const ref = line.split(" ")[1]?.trim();
|
|
512
|
+
if (!ref) continue;
|
|
513
|
+
if (ref === tagRef || ref === `${tagRef}^{}`) isTag = true;
|
|
514
|
+
else if (ref === headRef) isBranch = true;
|
|
515
|
+
}
|
|
516
|
+
if (isTag && isBranch) return "both";
|
|
517
|
+
if (isTag) return "tag";
|
|
518
|
+
if (isBranch) return "branch";
|
|
519
|
+
return "absent";
|
|
520
|
+
}
|
|
521
|
+
function classifyDeleteTarget(target, remote, resolve) {
|
|
522
|
+
if (target.startsWith("refs/tags/") || target.startsWith("tags/")) return { verdict: "tag" };
|
|
523
|
+
const head = destHeadShortName(target);
|
|
524
|
+
if (head !== null && headTargetsMainOrGlob(head)) return { verdict: "main" };
|
|
525
|
+
if (target.startsWith("refs/heads/") || target.startsWith("heads/")) {
|
|
526
|
+
return { verdict: "blocked", reason: `"${target}" is a branch ref, not a tag` };
|
|
527
|
+
}
|
|
528
|
+
if (target.startsWith("refs/")) {
|
|
529
|
+
return { verdict: "blocked", reason: `"${target}" is not a tag ref and cannot be proven safe to delete` };
|
|
530
|
+
}
|
|
531
|
+
if (remote === null) return { verdict: "blocked", reason: `no remote given, so "${target}" cannot be resolved` };
|
|
532
|
+
if (!isUsableRemoteOperand(remote)) return { verdict: "blocked", reason: `remote "${remote}" is not a usable operand` };
|
|
533
|
+
if (!isResolvableRefName(target)) return { verdict: "blocked", reason: `"${target}" is not a resolvable ref name (globs and exotic characters are never resolved)` };
|
|
534
|
+
switch (resolve(remote, target)) {
|
|
535
|
+
case "tag":
|
|
536
|
+
return { verdict: "tag" };
|
|
537
|
+
case "branch":
|
|
538
|
+
return { verdict: "blocked", reason: `"${target}" exists on ${remote} as a BRANCH, not a tag` };
|
|
539
|
+
case "both":
|
|
540
|
+
return { verdict: "blocked", reason: `"${target}" exists on ${remote} as BOTH a tag and a branch \u2014 the target is genuinely ambiguous` };
|
|
541
|
+
case "absent":
|
|
542
|
+
return { verdict: "blocked", reason: `"${target}" does not exist on ${remote} as either a tag or a branch, so it cannot be proven to be a tag` };
|
|
543
|
+
default:
|
|
544
|
+
return { verdict: "blocked", reason: `the guard could not reach ${remote} to prove "${target}" is a tag (network, auth, or timeout) \u2014 a failed lookup is never a permit` };
|
|
545
|
+
}
|
|
546
|
+
}
|
|
480
547
|
function resolvePushTargetOnce(cwd) {
|
|
481
548
|
for (const rev of ["@{push}", "@{upstream}"]) {
|
|
482
549
|
const r = runGit(cwd, ["rev-parse", "--abbrev-ref", "--symbolic-full-name", rev]);
|
|
@@ -557,6 +624,17 @@ function evaluateMainGuard(command, opts = {}) {
|
|
|
557
624
|
return { block: true, message: formatMainAheadBlockMessage({ repoRoot: ctxDir, branch: state.mainBranch, ahead: state.mainAhead, commits: state.aheadCommits }, parsed.verb) };
|
|
558
625
|
}
|
|
559
626
|
if (!parsed.destructive) return { block: false };
|
|
627
|
+
const resolveRemoteRef = opts.remoteRefResolver ?? resolveRemoteRefKind;
|
|
628
|
+
for (const target of parsed.deleteTargets) {
|
|
629
|
+
const v = classifyDeleteTarget(
|
|
630
|
+
target,
|
|
631
|
+
parsed.remote,
|
|
632
|
+
(remote, name) => resolveRemoteRef(ctxDir, remote, name)
|
|
633
|
+
);
|
|
634
|
+
if (v.verdict === "tag") continue;
|
|
635
|
+
if (v.verdict === "main") return { block: true, message: formatForcePushBlockMessage("force/delete push to main") };
|
|
636
|
+
return { block: true, message: formatUnprovableDeleteBlockMessage(target, parsed.remote, v.reason) };
|
|
637
|
+
}
|
|
560
638
|
let targetsMain = parsed.targetsMain;
|
|
561
639
|
if (!targetsMain && parsed.needsUpstream) {
|
|
562
640
|
const state = resolveState(ctxDir);
|
|
@@ -592,6 +670,15 @@ SAFE ALTERNATIVES:
|
|
|
592
670
|
\u2022 Force-pushing a FEATURE branch is allowed; only main/master is guarded.
|
|
593
671
|
${OVERRIDE_LINE}`;
|
|
594
672
|
}
|
|
673
|
+
function formatUnprovableDeleteBlockMessage(target, remote, reason) {
|
|
674
|
+
return `\u{1F6AB} BLOCKED: \`git push --delete ${remote ?? "<remote>"} ${target}\` \u2014 the guard could not PROVE this is a tag: ${reason}.
|
|
675
|
+
WHY: deleting a remote BRANCH destroys shared work; deleting a TAG does not. A bare ref name does not say which it is, so the guard resolves it on the remote and permits ONLY a name that exists as a tag and NOT as a branch (bug 6aaea78f). Branch, both, absent, or an unreachable remote all keep blocking \u2014 a failed lookup is not a permit.
|
|
676
|
+
SAFE ALTERNATIVES:
|
|
677
|
+
\u2022 Deleting a TAG: say so explicitly \u2014 git push ${remote ?? "origin"} --delete refs/tags/${target.replace(/^refs\/(tags|heads)\//, "")}
|
|
678
|
+
\u2022 Deleting a BRANCH on the remote: do it from the GitHub/host UI, or ask a human \u2014 this guard will not do it for you.
|
|
679
|
+
\u2022 If the remote was just unreachable, re-run once the network/auth is working; the guard will resolve it then.
|
|
680
|
+
NOTE: EXE_FORCE_ALLOW_MAIN_HISTORY_REWRITE is NOT the escape hatch for this \u2014 it declares a main-history rewrite, which this is not.`;
|
|
681
|
+
}
|
|
595
682
|
function formatUnverifiableBlockMessage(reason) {
|
|
596
683
|
return `\u{1F6AB} BLOCKED: this git command could rewrite main/master and the guard CANNOT verify its target \u2014 ${reason}.
|
|
597
684
|
WHY: exe-os fails CLOSED here \u2014 a compound/wrapped command can move HEAD before a check runs, so an unverifiable destructive-git command is denied rather than parsed permissively (bug 6aaea78f).
|
|
@@ -613,6 +700,10 @@ export {
|
|
|
613
700
|
containsDestructiveGitCandidate,
|
|
614
701
|
parseSingleGitCommand,
|
|
615
702
|
resolveRepoState,
|
|
703
|
+
isResolvableRefName,
|
|
704
|
+
isUsableRemoteOperand,
|
|
705
|
+
resolveRemoteRefKind,
|
|
706
|
+
classifyDeleteTarget,
|
|
616
707
|
resolvePushTargetBranch,
|
|
617
708
|
getLocalMainAheadInfo,
|
|
618
709
|
getCurrentBranch,
|
|
@@ -620,6 +711,7 @@ export {
|
|
|
620
711
|
evaluateMainGuard,
|
|
621
712
|
formatMainAheadBlockMessage,
|
|
622
713
|
formatForcePushBlockMessage,
|
|
714
|
+
formatUnprovableDeleteBlockMessage,
|
|
623
715
|
formatUnverifiableBlockMessage,
|
|
624
716
|
formatStateUnverifiableBlockMessage
|
|
625
717
|
};
|