@askexenow/exe-os 0.9.410 → 0.9.412
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/delivery/catalog.json +29 -38
- package/deploy/compose/.env.customer.example +5 -5
- package/deploy/compose/.env.default +4 -4
- package/deploy/compose/.env.example +5 -5
- package/deploy/compose/docker-compose.yml +1 -1
- package/deploy/stack-manifests/v0.9.json +263 -2
- package/dist/.dist-verified.json +3 -3
- package/dist/{active-agent-2ELFTYNT.js → active-agent-3YCLS7GB.js} +4 -4
- package/dist/{active-agent-SS4SRXYZ.js → active-agent-MHWQDMML.js} +4 -4
- package/dist/{agent-defs-generator-6S2BSYCP.js → agent-defs-generator-DNXMO34I.js} +4 -4
- package/dist/{agentic-ontology-TJOAUAPD.js → agentic-ontology-RA6CMND6.js} +1 -1
- package/dist/{artifact-backup-STQQZDZ5.js → artifact-backup-EETHNFFP.js} +3 -3
- package/dist/{backfill-metadata-I2FVENKJ.js → backfill-metadata-WYT257VG.js} +7 -7
- package/dist/backup-verify-AG54CYGR.js +62 -0
- package/dist/{behavior-injection-CTSIKHTH.js → behavior-injection-G7GAUHGO.js} +10 -10
- package/dist/{behavior-promotion-NZMTTFHK.js → behavior-promotion-I2DIUFUR.js} +9 -9
- package/dist/{behaviors-RUNSC5WI.js → behaviors-SKVKPCRW.js} +8 -8
- package/dist/bin/agentic-ontology-backfill.js +8 -8
- package/dist/bin/agentic-reflection-backfill.js +9 -9
- package/dist/bin/agentic-semantic-label.js +8 -8
- package/dist/bin/backfill-conversations.js +7 -7
- package/dist/bin/backfill-responses.js +7 -7
- package/dist/bin/backfill-vectors.js +7 -7
- package/dist/bin/bulk-sync-postgres.js +16 -16
- package/dist/bin/cc-doctor.js +8 -8
- package/dist/bin/cleanup-stale-review-tasks.js +13 -13
- package/dist/bin/cli.js +24 -24
- package/dist/bin/deferred-daemon-restart.js +95 -95
- package/dist/bin/exe-actions.js +1 -1
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +15 -15
- package/dist/bin/exe-assign.js +8 -8
- package/dist/bin/exe-boot.js +35 -35
- package/dist/bin/exe-call.js +9 -9
- package/dist/bin/exe-cloud.js +17 -17
- package/dist/bin/exe-config-dump.js +3 -3
- package/dist/bin/exe-dispatch.js +14 -14
- package/dist/bin/exe-doctor.js +5 -5
- package/dist/bin/exe-export-behaviors.js +12 -12
- package/dist/bin/exe-forget.js +10 -10
- package/dist/bin/exe-gateway.js +9 -9
- package/dist/bin/exe-grant.js +6 -6
- package/dist/bin/exe-healthcheck.js +8 -8
- package/dist/bin/exe-heartbeat.js +19 -19
- package/dist/bin/exe-kill.js +18 -18
- package/dist/bin/exe-launch-agent.js +75 -36
- package/dist/bin/exe-mcp.js +5 -5
- package/dist/bin/exe-memory-reads.js +7 -7
- package/dist/bin/exe-new-employee.js +11 -11
- package/dist/bin/exe-os-mcp-proxy.js +5 -5
- package/dist/bin/exe-pending-messages.js +14 -14
- package/dist/bin/exe-pending-notifications.js +13 -13
- package/dist/bin/exe-pending-reviews.js +14 -14
- package/dist/bin/exe-rename.js +7 -7
- package/dist/bin/exe-review.js +17 -17
- package/dist/bin/exe-search.js +9 -9
- package/dist/bin/exe-session-cleanup.js +18 -18
- package/dist/bin/exe-settings.js +16 -16
- package/dist/bin/exe-start-codex.js +37 -19
- package/dist/bin/exe-start-opencode.js +35 -17
- package/dist/bin/exe-status.js +15 -15
- package/dist/bin/exe-support.js +3 -3
- package/dist/bin/exe-team.js +5 -5
- package/dist/bin/git-sweep.js +15 -15
- package/dist/bin/graph-backfill.js +8 -8
- package/dist/bin/graph-export.js +8 -8
- package/dist/bin/hooks-cli.js +1 -1
- package/dist/bin/import-history.js +11 -11
- package/dist/bin/install.js +97 -97
- package/dist/bin/intercom-check.js +5 -5
- package/dist/bin/mcp-sessions.js +2 -2
- package/dist/bin/orchestration-metrics.js +5 -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/repair-document-chunks.js +7 -7
- package/dist/bin/scan-tasks.js +14 -14
- package/dist/bin/setup.js +2 -2
- package/dist/bin/shard-migrate.js +8 -8
- package/dist/bin/stack-update.js +41 -16
- package/dist/bin/verify-stack.js +1 -1
- package/dist/bin/vps-health-gate.js +1 -1
- package/dist/{boot-generation-4W4CDJSX.js → boot-generation-RPJVFAQJ.js} +4 -4
- package/dist/{boot-review-sections-HJN25GMU.js → boot-review-sections-FOPPZTJI.js} +12 -12
- package/dist/{bug-landed-reconciler-GGQU6G2L.js → bug-landed-reconciler-FN5KPBRK.js} +6 -6
- package/dist/build-info.json +3 -3
- package/dist/build-manifest.json +936 -926
- package/dist/{capability-cards-EV7VHL3W.js → capability-cards-YQWBEG7A.js} +3 -3
- package/dist/{capacity-monitor-YO3WRSRY.js → capacity-monitor-7SMEJHYG.js} +14 -14
- package/dist/{catchup-brief-4XFFW3H2.js → catchup-brief-IBQ26LEB.js} +19 -19
- package/dist/{chunk-YJ7MCZSY.js → chunk-27NG2NTG.js} +2 -2
- package/dist/{chunk-2AXJRXA6.js → chunk-2BOLFLAU.js} +4 -2
- package/dist/{chunk-AGXV5HLA.js → chunk-2EYVXUGA.js} +4 -4
- package/dist/{chunk-2YZZR2BW.js → chunk-2YFMBXUU.js} +4 -4
- package/dist/{chunk-ZBXZFOIF.js → chunk-2YGBJHC2.js} +3 -3
- package/dist/{chunk-I35OMCL3.js → chunk-353XF4LU.js} +2 -2
- package/dist/{chunk-UF5BDAF6.js → chunk-3DXAJVXE.js} +6 -6
- package/dist/{chunk-AEOB4JCJ.js → chunk-3GGMHSY2.js} +3 -3
- package/dist/{chunk-K6XWIJN7.js → chunk-3N24FV22.js} +1 -1
- package/dist/{chunk-7WCYJXOF.js → chunk-47YGEM4N.js} +1 -1
- package/dist/{chunk-NVM3SKJ4.js → chunk-4CN3EE6U.js} +27 -21
- package/dist/{chunk-IQCC6WFI.js → chunk-4J77TCTX.js} +1 -1
- package/dist/{chunk-H5H2LGVE.js → chunk-5BWDUUMH.js} +3 -3
- package/dist/{chunk-O5RKAXCG.js → chunk-5DLZJ3MY.js} +1 -1
- package/dist/{chunk-E3ZO4EL3.js → chunk-5ZMNFSHV.js} +1 -1
- package/dist/{chunk-7QFRZT4H.js → chunk-657I6PUF.js} +3 -3
- package/dist/{chunk-IXRYS5X3.js → chunk-6777GNWI.js} +1 -1
- package/dist/{chunk-4THJIDJE.js → chunk-6BD6JYR2.js} +1 -1
- package/dist/{chunk-JTXXLNYD.js → chunk-6DMURUBY.js} +4 -4
- package/dist/{chunk-47UBJKS3.js → chunk-6HJF7IA3.js} +168 -205
- package/dist/{chunk-PONGX3YG.js → chunk-6J2J3VJS.js} +10 -10
- package/dist/{chunk-XBCIRNNU.js → chunk-6PXFF6IV.js} +1 -1
- package/dist/{chunk-DWK5HEKY.js → chunk-7HLAYQRG.js} +4 -4
- package/dist/{chunk-RWM6TZH6.js → chunk-7KPZQ65I.js} +3 -3
- package/dist/{chunk-BPXWWD7P.js → chunk-7PDZBPGW.js} +1 -1
- package/dist/{chunk-2K7IKLBL.js → chunk-7SHU5MOD.js} +1 -1
- package/dist/{chunk-APKEGWFB.js → chunk-A5I2GYVQ.js} +3 -3
- package/dist/{chunk-X4V5ZLNX.js → chunk-A75TAU2I.js} +628 -4
- package/dist/{chunk-T7W75LII.js → chunk-BE3UETW6.js} +3 -3
- package/dist/{chunk-575FWHQJ.js → chunk-BG6RAOCJ.js} +63 -9
- package/dist/{chunk-YSDSQRE2.js → chunk-BIPTWAEO.js} +1 -1
- package/dist/{chunk-FYKEL2L6.js → chunk-BLTXAUP6.js} +2 -2
- package/dist/{chunk-ASA2UJDH.js → chunk-CFFSHBQF.js} +1 -1
- package/dist/{chunk-XCKTCOK3.js → chunk-CJ6CS2IH.js} +5 -5
- package/dist/{chunk-V7AID6MC.js → chunk-CRW63CDI.js} +1 -1
- package/dist/{chunk-B34RSIUP.js → chunk-CWHTUNJX.js} +2 -2
- package/dist/{chunk-HKAWEIB2.js → chunk-D6NZNUVH.js} +1 -1
- package/dist/{chunk-CEHGXPMO.js → chunk-DHLJZDWI.js} +4 -4
- package/dist/{chunk-FCX2XHIC.js → chunk-DWRULKB3.js} +2 -2
- package/dist/{chunk-KNEEOZWN.js → chunk-EOWJXCYC.js} +25 -7
- package/dist/{chunk-5BWN6A5E.js → chunk-EWDBWOCX.js} +1 -1
- package/dist/{chunk-IUAW7FVX.js → chunk-FPF2PJFK.js} +3 -3
- package/dist/{chunk-B55U5BKF.js → chunk-FSXMKIDO.js} +1 -1
- package/dist/{chunk-2A556FNI.js → chunk-FUDXITKX.js} +1 -1
- package/dist/{chunk-FZT7CBXB.js → chunk-FYV2CTKP.js} +1 -1
- package/dist/{chunk-R2ZHPVF2.js → chunk-GATAYYAF.js} +3 -3
- package/dist/{chunk-CKRZBQ2K.js → chunk-GHYHNHDL.js} +1 -1
- package/dist/{chunk-IHBYJG7N.js → chunk-GL5ZG72X.js} +1 -1
- package/dist/{chunk-WSYIQKZ6.js → chunk-GM4UEZDE.js} +20 -20
- package/dist/{chunk-QKHQTHE6.js → chunk-GZVFHFO3.js} +10 -135
- package/dist/{chunk-XC2KAJK4.js → chunk-HA6BIZ6L.js} +5 -5
- package/dist/chunk-HDQAVAV6.js +248 -0
- package/dist/{chunk-5Q64Q5ZD.js → chunk-HDV2V25K.js} +1 -1
- package/dist/{chunk-26CY4EAR.js → chunk-HTFM7ZDD.js} +2 -2
- package/dist/{chunk-NUEDA2US.js → chunk-HUHR5CKJ.js} +4 -4
- package/dist/{chunk-BIHPY7JW.js → chunk-IC2AONBH.js} +9 -9
- package/dist/{chunk-2YK5HP2B.js → chunk-IHAXXDBH.js} +3 -3
- package/dist/{chunk-5JHIAGZY.js → chunk-IPUDXR67.js} +1 -1
- package/dist/{chunk-BBTNF72N.js → chunk-J6U4ZR77.js} +2 -2
- package/dist/{chunk-2OIVIPU7.js → chunk-JAIZCE6W.js} +3 -3
- package/dist/{chunk-WLV27PAO.js → chunk-JGBYZTWH.js} +1 -1
- package/dist/{chunk-4XY33GRO.js → chunk-JJZZXEAN.js} +3 -3
- package/dist/{chunk-3UEDFBDE.js → chunk-JNULO6I5.js} +3 -3
- package/dist/{chunk-JZ23D5YF.js → chunk-JTJP4JK7.js} +3 -3
- package/dist/{chunk-JDZNGC4O.js → chunk-JW5NUXPN.js} +11 -11
- package/dist/{chunk-GGT6Y5AN.js → chunk-K2HIXAIF.js} +12 -12
- package/dist/{chunk-NYV4A5IG.js → chunk-KEDZRQI3.js} +2 -2
- package/dist/{chunk-S2DTXCV6.js → chunk-KN5GAVCG.js} +2 -2
- package/dist/{chunk-LBEBSXZA.js → chunk-L5JFVK5T.js} +4 -4
- package/dist/{chunk-HNJLAMD3.js → chunk-LBSCOP25.js} +1 -1
- package/dist/{chunk-FOZSHNET.js → chunk-LLZUL7M2.js} +1 -1
- package/dist/{chunk-53GNYXNR.js → chunk-LQGLGSBY.js} +2 -2
- package/dist/{chunk-X2EBM5BQ.js → chunk-LSHUX7P4.js} +16 -16
- package/dist/{chunk-AWTLUJZL.js → chunk-M6AX64J2.js} +2 -2
- package/dist/{chunk-7RVTQXST.js → chunk-M6SUJLNP.js} +2 -2
- package/dist/{chunk-OUUNFTS4.js → chunk-MZNLQC6W.js} +1 -1
- package/dist/{chunk-PCF4QMJS.js → chunk-N7POJZJT.js} +10 -10
- package/dist/{chunk-2CG3LHI6.js → chunk-NCNT2C2P.js} +2 -2
- package/dist/{chunk-R3N5BCMM.js → chunk-O3BLL6MY.js} +1 -1
- package/dist/{chunk-SLG3T26A.js → chunk-O6KQAJCC.js} +3 -3
- package/dist/{chunk-2WOHFX4Z.js → chunk-OHHZNNUD.js} +1 -1
- package/dist/{chunk-HWP3WCLC.js → chunk-OPG237ZQ.js} +154 -50
- package/dist/{chunk-2LJ2GZEE.js → chunk-PDQGR5LZ.js} +1 -1
- package/dist/{chunk-UBTKHJCB.js → chunk-PTF5TB6O.js} +6 -6
- package/dist/{chunk-5F3E57TQ.js → chunk-PYXXL7N7.js} +1 -1
- package/dist/{chunk-HLNRLXUS.js → chunk-Q6KUBP6R.js} +5 -5
- package/dist/{chunk-AGY2KUQ6.js → chunk-QJWLQXR7.js} +1 -1
- package/dist/{chunk-ZEDLED43.js → chunk-QOFQY7BJ.js} +1 -1
- package/dist/{chunk-6T5RC3L4.js → chunk-QSW5DHMZ.js} +1 -1
- package/dist/{chunk-54Q7M2AG.js → chunk-QV26G2BF.js} +1 -1
- package/dist/{chunk-5WNZGNQL.js → chunk-RHHEYC6H.js} +3 -3
- package/dist/{chunk-K464YYT5.js → chunk-RHJOTGEU.js} +1 -1
- package/dist/{chunk-LZS2B2JT.js → chunk-RIKFXHLE.js} +247 -31
- package/dist/{chunk-6TOV7UVU.js → chunk-RJIH7JXM.js} +4 -4
- package/dist/{chunk-2Q2U3NB2.js → chunk-RMC2A6EE.js} +1 -1
- package/dist/{chunk-FUEKSCTN.js → chunk-RYMXD2NT.js} +1 -1
- package/dist/{chunk-MNWN3SQ3.js → chunk-RYYFFCJG.js} +1 -1
- package/dist/{chunk-E2346GKI.js → chunk-SINIRUYZ.js} +101 -9
- package/dist/{chunk-22XJWSWN.js → chunk-SXUABANK.js} +3 -3
- package/dist/{backup-verify-AOTKX5DA.js → chunk-T3AM52YT.js} +345 -89
- package/dist/{chunk-LCXWQVOD.js → chunk-TCBWHLKH.js} +4 -4
- package/dist/{chunk-YWZGDFAL.js → chunk-TS4LSNRI.js} +2 -2
- package/dist/{chunk-J6RTX7XT.js → chunk-TVWYMOZ4.js} +1 -1
- package/dist/{chunk-3WNDI5KT.js → chunk-VAHQOIQY.js} +1 -1
- package/dist/{chunk-QH2V67NX.js → chunk-VBYSAQJD.js} +1 -1
- package/dist/{chunk-MQD3JJCO.js → chunk-VQQPYI4X.js} +1 -1
- package/dist/{chunk-XJQGS4IM.js → chunk-VS7V5HNO.js} +1 -1
- package/dist/{chunk-CPC75PXE.js → chunk-W3ABSZ6G.js} +2 -2
- package/dist/{chunk-SUGAHHVR.js → chunk-W7VKGB42.js} +1 -1
- package/dist/{chunk-UG3YOQAC.js → chunk-X2ZHCNNB.js} +5 -5
- package/dist/{chunk-YC6SZFVD.js → chunk-X4FHT6ST.js} +5 -5
- package/dist/{chunk-RXICR3D7.js → chunk-XC5OASHV.js} +1 -1
- package/dist/{chunk-TU5Y5ZNC.js → chunk-XDOCXKHW.js} +58 -1
- package/dist/{chunk-DLHE4PCM.js → chunk-XEAZJXMZ.js} +4 -4
- package/dist/{chunk-XMMWBLQK.js → chunk-XQ7BIVLI.js} +6 -6
- package/dist/{chunk-FRJICRED.js → chunk-Z3LGAFMG.js} +1 -1
- package/dist/{chunk-HCBISGUU.js → chunk-ZJ6AMC4Y.js} +7 -7
- package/dist/{chunk-AEEAQZ3E.js → chunk-ZZR2WRNW.js} +4 -4
- package/dist/{cleanup-graph-garbage-N7FTWU6C.js → cleanup-graph-garbage-SYGPMPUM.js} +8 -8
- package/dist/{cli-shutdown-NCBQTN7G.js → cli-shutdown-JI7CASE4.js} +1 -1
- package/dist/{cloud-sync-command-UL7GNN3J.js → cloud-sync-command-ZV3P5FP6.js} +2 -2
- package/dist/{cloud-sync-db-init-ASM7ZXBH.js → cloud-sync-db-init-RQIHWKV4.js} +1 -1
- package/dist/{cloud-sync-shutdown-HER4ISBU.js → cloud-sync-shutdown-V2N7VLD3.js} +3 -3
- package/dist/{co-activation-V5XXR327.js → co-activation-SRE6DIRX.js} +3 -3
- package/dist/{co-occurrence-MKZ6YWSQ.js → co-occurrence-F5TMSEQZ.js} +6 -6
- package/dist/{consent-passphrase-YI3J4UEL.js → consent-passphrase-MWZRHJRC.js} +2 -2
- package/dist/{conversation-entity-extractor-66G7ROQ3.js → conversation-entity-extractor-XMOUHGMT.js} +3 -3
- package/dist/{crdt-sync-Z62SWOKD.js → crdt-sync-FXEKABM7.js} +4 -4
- package/dist/{crm-webhook-6GBACWJX.js → crm-webhook-D6IJOPRQ.js} +2 -2
- package/dist/{cto-delegation-gate-FUKPBFCM.js → cto-delegation-gate-BU3JRCYN.js} +12 -12
- package/dist/{daemon-orchestration-O3QPSJEP.js → daemon-orchestration-K4NKFYXO.js} +19 -19
- package/dist/{destructive-data-guard-JDUJ2ULM.js → destructive-data-guard-3TGAAE7K.js} +77 -23
- package/dist/{doc-graph-extractor-BBPKLIVM.js → doc-graph-extractor-TVK2NGAR.js} +6 -6
- package/dist/{documents-NILTWYSQ.js → documents-MDZ4VB5X.js} +8 -8
- package/dist/{dreaming-KMDGPIFY.js → dreaming-L24PSS35.js} +17 -17
- package/dist/{employee-boot-brief-KSH3MWIF.js → employee-boot-brief-GQVL3FQC.js} +21 -21
- package/dist/{entity-boost-XETN7C2S.js → entity-boost-OMFA5QCG.js} +1 -1
- package/dist/{exe-drift-SFD7SHXC.js → exe-drift-JDDG3OPT.js} +4 -4
- package/dist/{exe-export-NHWKEZL4.js → exe-export-EEGIE3JP.js} +10 -10
- package/dist/{exe-import-SPI5HJBU.js → exe-import-UJNC5Q2L.js} +10 -10
- package/dist/{exe-key-TY5LFUEM.js → exe-key-TYEY4W4E.js} +95 -95
- package/dist/{exe-org-LVQLXA7C.js → exe-org-B3ICTTEV.js} +32 -32
- package/dist/{exe-snapshot-WH2DSRZW.js → exe-snapshot-VBFBONYN.js} +20 -20
- package/dist/{fast-db-init-UN225WS7.js → fast-db-init-TFRTK6EH.js} +1 -1
- package/dist/{founder-context-DVHSVBM5.js → founder-context-3X4QUWKD.js} +2 -2
- package/dist/{founder-monitor-envelope-HMPPUBUT.js → founder-monitor-envelope-54UNZNY4.js} +4 -4
- package/dist/gateway/index.js +14 -14
- package/dist/{gateway-client-TXHCHOVM.js → gateway-client-OUDO5GGV.js} +1 -1
- package/dist/{git-staleness-CUVLXQOJ.js → git-staleness-73YZ5PGU.js} +3 -3
- package/dist/{global-procedures-T5W3S6OU.js → global-procedures-PYNE2BQG.js} +20 -6
- package/dist/{graph-auto-extract-S7OIZXYP.js → graph-auto-extract-PGUMEEQB.js} +6 -6
- package/dist/{graph-query-CRIH4DXF.js → graph-query-7YA3YNKL.js} +1 -1
- package/dist/{graph-rag-LH34CEGC.js → graph-rag-UWOTK4AQ.js} +3 -3
- package/dist/{hook-integrity-TSJYZFZ6.js → hook-integrity-6MNEPT6W.js} +1 -1
- package/dist/{hook-prefetch-SNW5DFCZ.js → hook-prefetch-JOF6YZSR.js} +13 -13
- package/dist/hooks/bug-report-worker.js +17 -17
- package/dist/hooks/codex-stop-task-finalizer.js +19 -19
- package/dist/hooks/commit-complete.js +16 -16
- package/dist/hooks/error-recall.js +11 -11
- package/dist/hooks/exe-heartbeat-hook.js +5 -5
- package/dist/hooks/ingest-worker.js +15 -15
- package/dist/hooks/ingest.js +13 -13
- package/dist/hooks/instructions-loaded.js +7 -7
- package/dist/hooks/manifest.json +20 -20
- package/dist/hooks/notification.js +6 -6
- package/dist/hooks/post-compact.js +5 -5
- package/dist/hooks/post-tool-combined.js +13 -13
- package/dist/hooks/pre-compact.js +16 -16
- package/dist/hooks/pre-tool-use.js +2 -2
- package/dist/hooks/prompt-submit.js +34 -34
- package/dist/hooks/session-end.js +21 -21
- package/dist/hooks/session-start.js +18 -18
- package/dist/hooks/stop.js +19 -19
- package/dist/hooks/subagent-stop.js +18 -18
- package/dist/hooks/summary-worker.js +20 -20
- package/dist/index.js +26 -26
- package/dist/{installer-4IVP2PTX.js → installer-34XZ7JMW.js} +6 -6
- package/dist/{installer-UFRZHMX5.js → installer-356RMQ2K.js} +6 -6
- package/dist/{installer-CJWNUASI.js → installer-7TN36Z7T.js} +112 -28
- package/dist/{intercom-queue-II6RRK3J.js → intercom-queue-ZJ3MNULM.js} +12 -12
- package/dist/lib/backup-verify-worker.js +157 -0
- package/dist/lib/cloud-sync.js +16 -20
- package/dist/lib/consolidation.js +9 -9
- package/dist/lib/crypto.js +3 -3
- package/dist/lib/database.js +3 -3
- package/dist/lib/db-backup.js +7 -3
- package/dist/lib/db-write-worker.js +3 -3
- package/dist/lib/db.js +3 -3
- package/dist/lib/device-registry.js +1 -1
- package/dist/lib/employee-templates.js +7 -7
- package/dist/lib/employees.js +3 -3
- package/dist/lib/exe-daemon.js +89 -84
- package/dist/lib/hybrid-search.js +9 -9
- package/dist/lib/identity.js +3 -3
- package/dist/lib/keychain.js +1 -1
- package/dist/lib/license.js +2 -2
- package/dist/lib/messaging.js +13 -13
- package/dist/lib/post-tool-memory.js +13 -13
- package/dist/lib/registry-proxy.js +1 -1
- package/dist/lib/reminders.js +4 -4
- package/dist/lib/schedules.js +8 -8
- package/dist/lib/session-registry.js +5 -5
- package/dist/lib/skill-learning.js +9 -9
- package/dist/lib/store.js +7 -7
- package/dist/lib/task-router.js +4 -4
- package/dist/lib/tasks.js +14 -14
- package/dist/lib/tmux-routing.js +12 -12
- package/dist/lib/token-spend.js +4 -4
- package/dist/lib/ws-client.js +1 -1
- package/dist/{license-gate-M7EDJLAA.js → license-gate-4BXUTHLB.js} +3 -3
- package/dist/{license-recheck-DLTOHAH2.js → license-recheck-QFPUKISQ.js} +1 -1
- package/dist/{license-sync-YTDCUN3S.js → license-sync-FDEDT4AC.js} +2 -2
- package/dist/mcp/register-tools.js +94 -94
- package/dist/mcp/server.js +97 -97
- package/dist/mcp/tools/complete-reminder.js +5 -5
- package/dist/mcp/tools/create-reminder.js +5 -5
- package/dist/mcp/tools/create-task.js +16 -16
- package/dist/mcp/tools/deactivate-behavior.js +10 -10
- package/dist/mcp/tools/list-reminders.js +5 -5
- package/dist/mcp/tools/list-tasks.js +16 -16
- package/dist/mcp/tools/send-message.js +15 -15
- package/dist/mcp/tools/update-task.js +15 -15
- package/dist/{mcp-http-config-652YK3CI.js → mcp-http-config-GKP5QGAO.js} +5 -5
- package/dist/{mcp-session-identity-6QGXD52Y.js → mcp-session-identity-JHAGRB7B.js} +12 -12
- package/dist/{memory-cards-FOPSLULE.js → memory-cards-O377ETAM.js} +7 -7
- package/dist/{memory-graph-extractor-7G3CIGN7.js → memory-graph-extractor-4KJCCUOP.js} +7 -7
- package/dist/{memory-maintenance-5XIGUPYL.js → memory-maintenance-RR5UPRW3.js} +1 -1
- package/dist/{memory-poisoning-defense-MI7Y5XBP.js → memory-poisoning-defense-Y5TTKGOP.js} +3 -3
- package/dist/{memory-pressure-watchdog-SPIDPGU2.js → memory-pressure-watchdog-NGXTI4HR.js} +13 -13
- package/dist/{memory-reflection-DVAT4QKS.js → memory-reflection-EXNHRZL7.js} +7 -7
- package/dist/{memory-write-repository-YC7HJTV5.js → memory-write-repository-S4TX7WQB.js} +1 -1
- package/dist/{monitor-grants-3A77O6XK.js → monitor-grants-57Q4NL25.js} +3 -3
- package/dist/{monitor-identity-BTFFMFEX.js → monitor-identity-3FQ52SYU.js} +2 -2
- package/dist/{notification-ledger-AV5242RM.js → notification-ledger-O6KQYYGK.js} +13 -13
- package/dist/{notifications-75FVPJLY.js → notifications-6FCQCJ4P.js} +12 -12
- package/dist/{orchestration-events-ARGZU6KS.js → orchestration-events-2Z2BMMA5.js} +4 -4
- package/dist/{orchestrator-TCXZMLSB.js → orchestrator-AGOSKPHD.js} +14 -14
- package/dist/{org-brief-session-B455POUI.js → org-brief-session-WJHZVXXJ.js} +15 -15
- package/dist/{org-consent-policy-7K5H6FOB.js → org-consent-policy-X43UGTHI.js} +5 -5
- package/dist/{org-join-ETR5KO27.js → org-join-M3UTBMHC.js} +9 -9
- package/dist/{org-key-admin-IRC6H3TL.js → org-key-admin-AA2DRHB2.js} +11 -11
- package/dist/{org-key-epoch-EG4YQ47A.js → org-key-epoch-Z5UIVUHT.js} +5 -5
- package/dist/{org-key-pin-GLQEU3P3.js → org-key-pin-FE6YHEZ3.js} +3 -3
- package/dist/{org-membership-JC5YVU6N.js → org-membership-3J2MIGE4.js} +4 -4
- package/dist/{org-partner-config-QFSVGHEA.js → org-partner-config-5HATZYG4.js} +8 -8
- package/dist/{org-partner-runtime-7AD7WY3Y.js → org-partner-runtime-UI35IHUC.js} +15 -15
- package/dist/{org-row-visibility-AXZKVOA6.js → org-row-visibility-TRJERVYP.js} +1 -1
- package/dist/{pipeline-router-2KY4X6PO.js → pipeline-router-EKQ6D7ZA.js} +4 -4
- package/dist/{plan-limits-PG6HG2DT.js → plan-limits-3BGHIHX6.js} +6 -6
- package/dist/{platform-procedures-QP3W2NLH.js → platform-procedures-RXW46WNY.js} +1 -1
- package/dist/{pre-tool-use-impl-45B4NFIF.js → pre-tool-use-impl-7BT5TJVM.js} +28 -28
- package/dist/{project-name-LHYHR4VN.js → project-name-PGJGUEJY.js} +4 -4
- package/dist/{projection-worker-POT2AOR5.js → projection-worker-3GEVFPAI.js} +2 -2
- package/dist/{prospective-memory-ECXSAEAW.js → prospective-memory-GEN7CN7H.js} +3 -3
- package/dist/{push-notifications-W3UNHDC5.js → push-notifications-QW4BWRC7.js} +13 -13
- package/dist/{reproject-worktree-memories-PIXMJBHG.js → reproject-worktree-memories-DIULBEBD.js} +12 -12
- package/dist/{reranker-ZBPYIRBB.js → reranker-LQ6OPJOI.js} +1 -1
- package/dist/{retrieval-health-42MFLOEP.js → retrieval-health-XDFYFEOP.js} +1 -1
- package/dist/{review-polling-V4CSK4TZ.js → review-polling-ED33YLFT.js} +13 -13
- package/dist/runtime/index.js +20 -20
- package/dist/{session-events-C3NUY6MR.js → session-events-7IJGTBVH.js} +13 -13
- package/dist/{session-kill-telemetry-ZOSAIYU2.js → session-kill-telemetry-RUTEARJ3.js} +13 -13
- package/dist/{session-scope-BZALGKYZ.js → session-scope-SSYA64L3.js} +12 -12
- package/dist/{setup-wizard-DNA2UT4J.js → setup-wizard-XD7FZVLJ.js} +2 -2
- package/dist/{shard-manager-NG4SXV7L.js → shard-manager-FH5JZRSE.js} +2 -2
- package/dist/{skill-refinement-Y3M7XBRE.js → skill-refinement-UHD4E6GV.js} +4 -4
- package/dist/{skill-retrieval-XDY352AS.js → skill-retrieval-F6PAJ3I5.js} +11 -11
- package/dist/{skill-usage-QOLIJQJC.js → skill-usage-2MBTF7Y4.js} +4 -4
- package/dist/{stack-generate-manifest-VFHCOLAD.js → stack-generate-manifest-MVJDTU4F.js} +13 -37
- package/dist/{stack-promote-24BY6AXF.js → stack-promote-BMGEY6SQ.js} +4 -4
- package/dist/{stack-release-AXH7ZIOR.js → stack-release-64UJ6Y4W.js} +17 -34
- package/dist/{stack-update-7ET7S3ED.js → stack-update-EBATTQPP.js} +5 -3
- package/dist/{steward-gate-2MUESY3V.js → steward-gate-EWG2BHYQ.js} +4 -4
- package/dist/{subagent-brief-injection-6PM3WMMR.js → subagent-brief-injection-YZGSWUEY.js} +23 -23
- package/dist/{support-bug-actions-WWKDXT74.js → support-bug-actions-RU6WZ3UV.js} +3 -3
- package/dist/{support-inbox-AN44HIOG.js → support-inbox-A3S52SPS.js} +12 -12
- package/dist/{task-enforcement-QO7RXYK2.js → task-enforcement-LVAS55AR.js} +13 -13
- package/dist/{task-request-inbox-RXAT2QJF.js → task-request-inbox-2TN4ZUH2.js} +5 -5
- package/dist/{task-scope-4EKZBTTM.js → task-scope-NLKUVCP5.js} +12 -12
- package/dist/{tasks-crud-MB7WXGPW.js → tasks-crud-NQDPLHNZ.js} +12 -12
- package/dist/{tasks-notify-BCWO7AP6.js → tasks-notify-BDM2NEHP.js} +13 -13
- package/dist/{tasks-review-HXHYA76X.js → tasks-review-3G7CAW2O.js} +12 -12
- package/dist/{telemetry-upload-Q7DLE5I3.js → telemetry-upload-6DR6AL3V.js} +8 -8
- package/dist/{token-budget-EL6BEBDP.js → token-budget-KNC2WGR7.js} +4 -4
- package/dist/{tool-telemetry-SNWF4WDH.js → tool-telemetry-I3SEU5M5.js} +1 -1
- package/dist/tui/App.js +23 -23
- package/dist/{tui-data-ZMSBEPJT.js → tui-data-KJDWP4CB.js} +16 -16
- package/dist/{update-support-QY7WALUZ.js → update-support-UYDYMHVR.js} +11 -11
- package/dist/{whatsapp-NCZ43BB3.js → whatsapp-5EMPZHF5.js} +2 -2
- package/dist/{wiki-acl-3L7BRJUV.js → wiki-acl-M7BTQJBZ.js} +1 -1
- package/dist/{work-claims-XQXT2VWJ.js → work-claims-5CFMZTML.js} +4 -4
- package/dist/{work-state-heartbeat-GAIQ7M73.js → work-state-heartbeat-7IA2DZ2E.js} +1 -1
- package/dist/{workflow-engine-FCOOI5M6.js → workflow-engine-S5JOE2YR.js} +2 -2
- package/dist/{worktree-GS4ODQ4C.js → worktree-7V4ZMF3D.js} +5 -5
- package/dist/{worktree-sweep-6LMC7H5Y.js → worktree-sweep-34MXJ7S6.js} +6 -6
- package/package.json +2 -1
- package/release-notes.json +21 -25
- package/stack.release.json +5 -5
- package/dist/chunk-WZPD4QSE.js +0 -113
- /package/dist/{chunk-IKJUZ3VO.js → chunk-542FBM5U.js} +0 -0
- /package/dist/{chunk-XJDSTA2C.js → chunk-6D2O5SAH.js} +0 -0
- /package/dist/{chunk-FDQXQBBC.js → chunk-6NRZLVK3.js} +0 -0
- /package/dist/{chunk-XDWIJBTY.js → chunk-CFO47VW4.js} +0 -0
- /package/dist/{chunk-R6H2IRCF.js → chunk-EULAP6L6.js} +0 -0
- /package/dist/{chunk-LK6OG47X.js → chunk-FYSKQPTE.js} +0 -0
- /package/dist/{chunk-LAWI42NC.js → chunk-J4B4M5PH.js} +0 -0
- /package/dist/{chunk-AC36VWNB.js → chunk-J635FA7T.js} +0 -0
- /package/dist/{chunk-UQKGV6SX.js → chunk-MOBZTIJQ.js} +0 -0
- /package/dist/{chunk-7ZP2PAW3.js → chunk-N45FAI6D.js} +0 -0
- /package/dist/{chunk-ZQS4S4AX.js → chunk-QDSNEGJE.js} +0 -0
- /package/dist/{chunk-CS4SHHLY.js → chunk-SKSXROKP.js} +0 -0
- /package/dist/{chunk-JXGOO53U.js → chunk-YVWXI2HM.js} +0 -0
- /package/dist/{core-memory-3TZV3ZDW.js → core-memory-PZEO3OWH.js} +0 -0
- /package/dist/{memory-isolation-TE4AOMQX.js → memory-isolation-MFNT2ITE.js} +0 -0
- /package/dist/{oauth-server-CWQ6EBGQ.js → oauth-server-CBGEWD6H.js} +0 -0
- /package/dist/{project-boot-MX2FNKTJ.js → project-boot-VESAYDIH.js} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
withScopedReadWindow
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KN5GAVCG.js";
|
|
4
4
|
import {
|
|
5
5
|
requireOrgPartnerBinding,
|
|
6
6
|
resolvePartnerIdentities
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CJ6CS2IH.js";
|
|
8
8
|
import {
|
|
9
9
|
allocateOutboundSeq,
|
|
10
10
|
approveBriefManually,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
sealMailboxEnvelope,
|
|
23
23
|
unrecordedText,
|
|
24
24
|
verifyManifest
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-XQ7BIVLI.js";
|
|
26
26
|
import {
|
|
27
27
|
queueMailboxDeposit
|
|
28
28
|
} from "./chunk-3FGBBJYM.js";
|
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
|
|
14
14
|
// src/bin/verify-stack.ts
|
|
15
15
|
import { execSync } from "child_process";
|
|
16
|
-
import { createHash } from "crypto";
|
|
17
16
|
import { readFileSync, existsSync } from "fs";
|
|
18
17
|
import http from "http";
|
|
19
18
|
import path from "path";
|
|
@@ -36,6 +35,18 @@ function evaluateProduct(probes) {
|
|
|
36
35
|
const layer = gatingLayerOf(probes);
|
|
37
36
|
const findings = [];
|
|
38
37
|
const at = (p) => `landed on ${p.finalHost} (status ${p.status}, ${p.hops} hop(s))`;
|
|
38
|
+
for (const [scenario, probe] of Object.entries({
|
|
39
|
+
anonymous: probes.anonymous,
|
|
40
|
+
"forged-session": probes.forgedSession,
|
|
41
|
+
"sentinel-only": probes.sentinelOnly,
|
|
42
|
+
"real-session": probes.realSession
|
|
43
|
+
})) {
|
|
44
|
+
if (probe?.admissionError) findings.push({
|
|
45
|
+
scenario,
|
|
46
|
+
severity: "violation",
|
|
47
|
+
detail: probe.admissionError
|
|
48
|
+
});
|
|
49
|
+
}
|
|
39
50
|
if (layer === "client-gated") {
|
|
40
51
|
findings.push({
|
|
41
52
|
scenario: "anonymous",
|
|
@@ -68,11 +79,12 @@ function evaluateProduct(probes) {
|
|
|
68
79
|
}
|
|
69
80
|
const real = probes.realSession;
|
|
70
81
|
if (real) {
|
|
71
|
-
|
|
82
|
+
const limit = probes.app === "exe-erp" && real.verifiedNativeSession ? 4 : MAX_SSO_HANDOFF_HOPS;
|
|
83
|
+
if (real.hops > limit) {
|
|
72
84
|
findings.push({
|
|
73
85
|
scenario: "real-session",
|
|
74
86
|
severity: "violation",
|
|
75
|
-
detail: `a real apex session took ${real.hops} redirect(s) reaching ${probes.host}, over the contract's ${
|
|
87
|
+
detail: `a real apex session took ${real.hops} redirect(s) reaching ${probes.host}, over the contract's ${limit} \u2014 ${at(real)}. An unbounded hop count here is the CRM livelock (bug 83ba9546 regression): the edge and the app are disagreeing about the handoff and bouncing the user between them.`
|
|
76
88
|
});
|
|
77
89
|
} else if (real.finalHost !== probes.host) {
|
|
78
90
|
findings.push({
|
|
@@ -135,6 +147,130 @@ function parseApexCookies(setCookieLines) {
|
|
|
135
147
|
return jar;
|
|
136
148
|
}
|
|
137
149
|
|
|
150
|
+
// src/lib/sso-admission-probe.ts
|
|
151
|
+
import { createHash } from "crypto";
|
|
152
|
+
var CALLBACK = "/api/method/erpnext.exe_auth.api.gotrue_login_callback";
|
|
153
|
+
var START = "/api/method/erpnext.exe_auth.api.gotrue_login_start";
|
|
154
|
+
var loopback = (u) => u.hostname === "127.0.0.1" || u.hostname === "localhost";
|
|
155
|
+
async function probeAdmission(url, jar, timeoutMs, options) {
|
|
156
|
+
const app = new URL(url), auth = new URL(options.authUrl);
|
|
157
|
+
let current = app, hops = 0, resumed = false, started = false;
|
|
158
|
+
const local = {};
|
|
159
|
+
let actorEmail;
|
|
160
|
+
const safe = (u) => !u.username && !u.password && (u.origin === app.origin || u.origin === auth.origin) && (u.protocol === "https:" || u.protocol === "http:" && loopback(u));
|
|
161
|
+
const headers = (u, apexOnly = false) => ({
|
|
162
|
+
accept: "text/html,application/xhtml+xml",
|
|
163
|
+
"user-agent": "exe-os-verify-stack/sso-session-contract",
|
|
164
|
+
cookie: cookieHeader({
|
|
165
|
+
...jar,
|
|
166
|
+
...u.origin === app.origin && !apexOnly ? local : {}
|
|
167
|
+
})
|
|
168
|
+
});
|
|
169
|
+
const result = (status, body, admissionError) => ({
|
|
170
|
+
finalHost: current.host,
|
|
171
|
+
hops,
|
|
172
|
+
status,
|
|
173
|
+
sawPasswordField: htmlHasPasswordField(body),
|
|
174
|
+
bodyFingerprint: createHash("sha256").update(body).digest("hex"),
|
|
175
|
+
...admissionError ? { admissionError } : {},
|
|
176
|
+
...resumed && actorEmail && !admissionError ? { verifiedNativeSession: true } : {}
|
|
177
|
+
});
|
|
178
|
+
for (; ; ) {
|
|
179
|
+
if (!safe(current))
|
|
180
|
+
return result(0, "", "SSO redirect left the trusted HTTPS origins");
|
|
181
|
+
const res = await fetch(current, {
|
|
182
|
+
headers: headers(current),
|
|
183
|
+
redirect: "manual",
|
|
184
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
185
|
+
});
|
|
186
|
+
if (options.service === "exe-erp" && current.origin === app.origin) {
|
|
187
|
+
for (const line of res.headers.getSetCookie()) {
|
|
188
|
+
const [pair = "", ...attrs] = line.split(";");
|
|
189
|
+
const eq = pair.indexOf("="), name = pair.slice(0, eq).trim();
|
|
190
|
+
if (eq < 1 || !["sid", "exe_sso_state"].includes(name)) continue;
|
|
191
|
+
const domain = attrs.find((a) => /^\s*domain=/i.test(a))?.split("=")[1]?.trim().replace(/^\./, "");
|
|
192
|
+
if (domain && domain !== app.hostname) continue;
|
|
193
|
+
local[name] = pair.slice(eq + 1).trim();
|
|
194
|
+
}
|
|
195
|
+
if (current.pathname === START) started = true;
|
|
196
|
+
}
|
|
197
|
+
if (res.status >= 300 && res.status < 400 && res.headers.get("location")) {
|
|
198
|
+
current = new URL(res.headers.get("location"), current);
|
|
199
|
+
if (++hops < 6) continue;
|
|
200
|
+
return result(res.status, "", "SSO redirect budget exhausted");
|
|
201
|
+
}
|
|
202
|
+
if (options.service === "exe-erp" && options.email && jar.exe_sess && !resumed && started && current.origin === auth.origin && current.pathname === "/login" && res.ok && current.searchParams.has("redirect")) {
|
|
203
|
+
const callback = new URL(current.searchParams.get("redirect"), current);
|
|
204
|
+
if (!safe(callback) || callback.origin !== app.origin || callback.pathname !== CALLBACK || !local.exe_sso_state || callback.searchParams.get("state") !== local.exe_sso_state || [...callback.searchParams.keys()].some((k) => k !== "state")) {
|
|
205
|
+
return result(
|
|
206
|
+
res.status,
|
|
207
|
+
"",
|
|
208
|
+
"ERP callback origin, path or state did not match its initiating cookie"
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
const me = await fetch(new URL("/auth/me", auth), {
|
|
212
|
+
headers: headers(auth),
|
|
213
|
+
redirect: "manual",
|
|
214
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
215
|
+
});
|
|
216
|
+
const actor = me.ok ? await me.json() : null;
|
|
217
|
+
if (!actor || actor.ok !== true || typeof actor.sub !== "string" || !actor.sub || typeof actor.email !== "string" || !options.email || actor.email.toLowerCase() !== options.email.toLowerCase()) {
|
|
218
|
+
return result(
|
|
219
|
+
me.status,
|
|
220
|
+
"",
|
|
221
|
+
"Auth did not validate the expected SSO identity"
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
actorEmail = actor.email;
|
|
225
|
+
resumed = true;
|
|
226
|
+
current = callback;
|
|
227
|
+
if (++hops < 6) continue;
|
|
228
|
+
return result(0, "", "SSO redirect budget exhausted");
|
|
229
|
+
}
|
|
230
|
+
const body = await res.text();
|
|
231
|
+
if (options.email && !res.ok) {
|
|
232
|
+
return result(res.status, body, "Real-session product request was not successful");
|
|
233
|
+
}
|
|
234
|
+
if (resumed && current.origin === app.origin && res.ok) {
|
|
235
|
+
const identity = await fetch(
|
|
236
|
+
new URL("/api/method/frappe.auth.get_logged_user", app),
|
|
237
|
+
{
|
|
238
|
+
headers: headers(app),
|
|
239
|
+
redirect: "manual",
|
|
240
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
241
|
+
}
|
|
242
|
+
);
|
|
243
|
+
const user = identity.ok ? await identity.json() : null;
|
|
244
|
+
if (!local.sid || local.sid === "Guest" || !user || user.message !== actorEmail) {
|
|
245
|
+
return result(
|
|
246
|
+
identity.status,
|
|
247
|
+
body,
|
|
248
|
+
"ERP native session did not match the validated Auth identity"
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
const control = await fetch(new URL("/api/method/frappe.auth.get_logged_user", app), {
|
|
252
|
+
headers: headers(app, true),
|
|
253
|
+
redirect: "manual",
|
|
254
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
255
|
+
});
|
|
256
|
+
const guest = control.ok ? await control.json() : null;
|
|
257
|
+
const location = control.headers.get("location");
|
|
258
|
+
const refusal = location ? new URL(location, app) : null;
|
|
259
|
+
const refused = control.status >= 300 && control.status < 400 && refusal && safe(refusal) && (refusal.origin === auth.origin || refusal.origin === app.origin && [START, "/login"].includes(refusal.pathname));
|
|
260
|
+
if (!(guest?.message === "Guest" || [401, 403].includes(control.status) || refused)) {
|
|
261
|
+
return result(control.status, body, "ERP identity was not independently bound to its native session");
|
|
262
|
+
}
|
|
263
|
+
} else if (resumed) {
|
|
264
|
+
return result(
|
|
265
|
+
res.status,
|
|
266
|
+
body,
|
|
267
|
+
"ERP callback did not finish on the expected product"
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
return result(res.status, body);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
138
274
|
// src/bin/verify-stack.ts
|
|
139
275
|
var DEFAULT_COMPOSE = "/opt/exe-stack/docker-compose.yml";
|
|
140
276
|
var DEFAULT_ENV = "/opt/exe-stack/.env";
|
|
@@ -518,57 +654,11 @@ async function checkSsoCookieContract(deployed, urlOverrides) {
|
|
|
518
654
|
message: `${Object.keys(urls).length} product(s) free of retired SSO cookie names`
|
|
519
655
|
};
|
|
520
656
|
}
|
|
521
|
-
var MAX_PROBE_HOPS = 6;
|
|
522
657
|
var SSO_ADMISSION_APPS = {
|
|
523
658
|
"exe-crm": "crm",
|
|
524
659
|
"exe-erp": "erp",
|
|
525
660
|
"exe-wiki": "wiki"
|
|
526
661
|
};
|
|
527
|
-
async function probeAdmission(url, jar, timeoutMs) {
|
|
528
|
-
let current = url;
|
|
529
|
-
let hops = 0;
|
|
530
|
-
const headers = {
|
|
531
|
-
// Some edges vary their gate on Accept; ask for a document like a browser does.
|
|
532
|
-
accept: "text/html,application/xhtml+xml",
|
|
533
|
-
"user-agent": "exe-os-verify-stack/sso-session-contract"
|
|
534
|
-
};
|
|
535
|
-
const cookie = cookieHeader(jar);
|
|
536
|
-
if (cookie) headers.cookie = cookie;
|
|
537
|
-
for (; ; ) {
|
|
538
|
-
const res = await fetch(current, {
|
|
539
|
-
headers,
|
|
540
|
-
redirect: "manual",
|
|
541
|
-
signal: AbortSignal.timeout(timeoutMs)
|
|
542
|
-
});
|
|
543
|
-
if (res.status >= 300 && res.status < 400) {
|
|
544
|
-
const location = res.headers.get("location");
|
|
545
|
-
if (location) {
|
|
546
|
-
hops += 1;
|
|
547
|
-
current = new URL(location, current).toString();
|
|
548
|
-
if (hops < MAX_PROBE_HOPS) continue;
|
|
549
|
-
}
|
|
550
|
-
return {
|
|
551
|
-
finalHost: new URL(current).host,
|
|
552
|
-
hops,
|
|
553
|
-
status: res.status,
|
|
554
|
-
sawPasswordField: false,
|
|
555
|
-
bodyFingerprint: `redirect:${res.status}:${location ?? ""}`
|
|
556
|
-
};
|
|
557
|
-
}
|
|
558
|
-
let body = "";
|
|
559
|
-
try {
|
|
560
|
-
body = await res.text();
|
|
561
|
-
} catch {
|
|
562
|
-
}
|
|
563
|
-
return {
|
|
564
|
-
finalHost: new URL(current).host,
|
|
565
|
-
hops,
|
|
566
|
-
status: res.status,
|
|
567
|
-
sawPasswordField: htmlHasPasswordField(body),
|
|
568
|
-
bodyFingerprint: createHash("sha256").update(body).digest("hex")
|
|
569
|
-
};
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
662
|
async function loginForApexCookies(authUrl, email, password, timeoutMs) {
|
|
573
663
|
let res;
|
|
574
664
|
try {
|
|
@@ -642,8 +732,22 @@ async function checkSsoSessionContract(env, deployed, overrides) {
|
|
|
642
732
|
const settled = await Promise.all(
|
|
643
733
|
pairs.map(async (pair) => {
|
|
644
734
|
try {
|
|
645
|
-
return { pair, probe: await probeAdmission(pair.target.baseUrl, pair.jar, CHECK_TIMEOUT_MS * 2
|
|
735
|
+
return { pair, probe: await probeAdmission(pair.target.baseUrl, pair.jar, CHECK_TIMEOUT_MS * 2, {
|
|
736
|
+
authUrl,
|
|
737
|
+
service: pair.target.service,
|
|
738
|
+
email: pair.scenario === "real-session" ? email : void 0
|
|
739
|
+
}) };
|
|
646
740
|
} catch (err) {
|
|
741
|
+
if (pair.scenario === "real-session") {
|
|
742
|
+
return { pair, probe: {
|
|
743
|
+
finalHost: pair.target.host,
|
|
744
|
+
hops: 0,
|
|
745
|
+
status: 0,
|
|
746
|
+
sawPasswordField: false,
|
|
747
|
+
bodyFingerprint: "",
|
|
748
|
+
admissionError: "Real-session admission probe could not complete safely"
|
|
749
|
+
} };
|
|
750
|
+
}
|
|
647
751
|
return { pair, error: err instanceof Error ? err.message : String(err) };
|
|
648
752
|
}
|
|
649
753
|
})
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SlackAdapter
|
|
3
|
+
} from "./chunk-ORCCI2VV.js";
|
|
1
4
|
import {
|
|
2
5
|
IMessageAdapter
|
|
3
6
|
} from "./chunk-2SRG3B3D.js";
|
|
4
7
|
import {
|
|
5
8
|
createCRMWebhookHandler,
|
|
6
9
|
parseTwentyWebhook
|
|
7
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-RHJOTGEU.js";
|
|
8
11
|
import {
|
|
9
12
|
WhatsAppAdapter
|
|
10
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-3N24FV22.js";
|
|
11
14
|
import {
|
|
12
15
|
SignalAdapter
|
|
13
16
|
} from "./chunk-RJT7H2KR.js";
|
|
@@ -17,9 +20,6 @@ import {
|
|
|
17
20
|
import {
|
|
18
21
|
DiscordAdapter
|
|
19
22
|
} from "./chunk-N5RRQOAC.js";
|
|
20
|
-
import {
|
|
21
|
-
SlackAdapter
|
|
22
|
-
} from "./chunk-ORCCI2VV.js";
|
|
23
23
|
import {
|
|
24
24
|
BotRegistry,
|
|
25
25
|
BotRuntime,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
retryWithBackoff,
|
|
43
43
|
routeMessage,
|
|
44
44
|
validateGatewayConfig
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-XEAZJXMZ.js";
|
|
46
46
|
import {
|
|
47
47
|
OllamaProvider
|
|
48
48
|
} from "./chunk-FWFFZGSC.js";
|
|
@@ -22,7 +22,7 @@ var OrgOriginProvenanceError = class extends Error {
|
|
|
22
22
|
async function mintOrgOriginStamp(input) {
|
|
23
23
|
if (!input.orgId) throw new OrgOriginProvenanceError("An org-origin stamp requires a non-empty org_id (\xA71.5)");
|
|
24
24
|
if (!input.requestId) throw new OrgOriginProvenanceError("An org-origin stamp requires a request id");
|
|
25
|
-
const { getTaskRequest } = await import("./task-request-inbox-
|
|
25
|
+
const { getTaskRequest } = await import("./task-request-inbox-2TN4ZUH2.js");
|
|
26
26
|
const req = getTaskRequest(input.orgId, input.requestId);
|
|
27
27
|
if (!req) {
|
|
28
28
|
throw new OrgOriginProvenanceError(
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordSessionKill
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3GGMHSY2.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter,
|
|
6
6
|
verifyPaneAtCapacity,
|
|
7
7
|
writeNotification
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GM4UEZDE.js";
|
|
9
9
|
import {
|
|
10
10
|
listSessions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-QSW5DHMZ.js";
|
|
12
12
|
import {
|
|
13
13
|
getTransport
|
|
14
14
|
} from "./chunk-VI4ATC6I.js";
|
|
15
15
|
import {
|
|
16
16
|
recordOrchestrationEventBestEffort
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-JGBYZTWH.js";
|
|
18
18
|
import {
|
|
19
19
|
getClient,
|
|
20
20
|
isCoordinatorName
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-L5JFVK5T.js";
|
|
22
22
|
|
|
23
23
|
// src/lib/capacity-monitor.ts
|
|
24
24
|
var CAPACITY_PATTERNS = [
|
|
@@ -85,7 +85,7 @@ async function getRetrievalHealth() {
|
|
|
85
85
|
totalMemories = Number(totalRes.rows[0]?.cnt ?? 0);
|
|
86
86
|
memoriesWithVectors = Number(vectorRes.rows[0]?.cnt ?? 0);
|
|
87
87
|
try {
|
|
88
|
-
const { getGraphStats } = await import("./graph-query-
|
|
88
|
+
const { getGraphStats } = await import("./graph-query-7YA3YNKL.js");
|
|
89
89
|
const stats = await getGraphStats(client);
|
|
90
90
|
entities = stats.entities;
|
|
91
91
|
relationships = stats.relationships;
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
extractIdentifiers,
|
|
5
5
|
isGarbageEntity,
|
|
6
6
|
normalizeEntityName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HTFM7ZDD.js";
|
|
8
8
|
import {
|
|
9
9
|
getClient
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-L5JFVK5T.js";
|
|
11
11
|
|
|
12
12
|
// src/lib/memory-graph-extractor.ts
|
|
13
13
|
function relationshipId(sourceId, targetId, relType) {
|
|
@@ -432,7 +432,7 @@ async function upsertMemoryGraph(result, memoryId, opts) {
|
|
|
432
432
|
});
|
|
433
433
|
}
|
|
434
434
|
try {
|
|
435
|
-
const { createCoOccurrenceEdges } = await import("./co-occurrence-
|
|
435
|
+
const { createCoOccurrenceEdges } = await import("./co-occurrence-F5TMSEQZ.js");
|
|
436
436
|
await createCoOccurrenceEdges(result.entities, memoryId, { linkOnly });
|
|
437
437
|
} catch {
|
|
438
438
|
}
|