@askexenow/exe-os 0.9.271 → 0.9.273
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/dist/active-agent-BDYXURXQ.js +26 -0
- package/dist/active-agent-YWBGAKGU.js +25 -0
- package/dist/agentic-ontology-56VHSVS3.js +25 -0
- package/dist/backfill-metadata-A3534S32.js +597 -0
- package/dist/backfill-metadata-B6F2KJJV.js +597 -0
- package/dist/backfill-metadata-BOM2MXLI.js +597 -0
- package/dist/backfill-metadata-G46ABBVR.js +597 -0
- package/dist/backfill-metadata-TAU33HJS.js +597 -0
- package/dist/backfill-metadata-VAV27KJK.js +597 -0
- package/dist/behaviors-USUTDXVA.js +25 -0
- package/dist/bin/agentic-ontology-backfill.js +5 -5
- package/dist/bin/agentic-reflection-backfill.js +6 -6
- package/dist/bin/agentic-semantic-label.js +5 -5
- package/dist/bin/backfill-conversations.js +4 -4
- package/dist/bin/backfill-responses.js +4 -4
- package/dist/bin/backfill-vectors.js +5 -5
- package/dist/bin/bulk-sync-postgres.js +6 -6
- package/dist/bin/cc-doctor.js +4 -4
- package/dist/bin/cleanup-stale-review-tasks.js +10 -10
- package/dist/bin/cli.js +16 -16
- package/dist/bin/exe-agent-config.js +3 -3
- package/dist/bin/exe-agent.js +4 -4
- package/dist/bin/exe-assign.js +5 -5
- package/dist/bin/exe-boot.js +17 -17
- package/dist/bin/exe-call.js +4 -4
- package/dist/bin/exe-cloud.js +4 -4
- package/dist/bin/exe-dispatch.js +10 -10
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +7 -7
- package/dist/bin/exe-forget.js +6 -6
- package/dist/bin/exe-gateway.js +7 -7
- package/dist/bin/exe-healthcheck.js +4 -4
- package/dist/bin/exe-heartbeat.js +10 -10
- package/dist/bin/exe-kill.js +13 -13
- package/dist/bin/exe-launch-agent.js +37 -19
- package/dist/bin/exe-new-employee.js +6 -6
- package/dist/bin/exe-pending-messages.js +11 -11
- package/dist/bin/exe-pending-notifications.js +33 -18
- package/dist/bin/exe-pending-reviews.js +10 -10
- package/dist/bin/exe-rename.js +4 -4
- package/dist/bin/exe-review.js +12 -12
- package/dist/bin/exe-search.js +5 -5
- package/dist/bin/exe-session-cleanup.js +15 -15
- package/dist/bin/exe-settings.js +5 -5
- package/dist/bin/exe-start-codex.js +11 -11
- package/dist/bin/exe-start-opencode.js +8 -8
- package/dist/bin/exe-status.js +11 -11
- package/dist/bin/exe-team.js +3 -3
- package/dist/bin/git-sweep.js +11 -11
- package/dist/bin/graph-backfill.js +4 -4
- package/dist/bin/graph-export.js +5 -5
- package/dist/bin/import-history.js +7 -7
- package/dist/bin/install.js +6 -6
- 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/scan-tasks.js +10 -10
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +4 -4
- package/dist/capacity-monitor-2GJOFXGB.js +49 -0
- package/dist/capacity-monitor-3Z7W4K25.js +49 -0
- package/dist/capacity-monitor-BENS3N7B.js +49 -0
- package/dist/capacity-monitor-IFVRCIM7.js +49 -0
- package/dist/capacity-monitor-MQUUEZKB.js +49 -0
- package/dist/capacity-monitor-Q47GBDSY.js +49 -0
- package/dist/catchup-brief-B4KGAIPU.js +151 -0
- package/dist/catchup-brief-NMOV3SSP.js +151 -0
- package/dist/catchup-brief-RP4QHXNT.js +151 -0
- package/dist/catchup-brief-TKA6TEK4.js +151 -0
- package/dist/catchup-brief-VMF3ESTZ.js +151 -0
- package/dist/catchup-brief-ZL7V3BXC.js +151 -0
- package/dist/chunk-23KJ2LXY.js +58 -0
- package/dist/chunk-2KWVJV6I.js +171 -0
- package/dist/chunk-2NQQP3FF.js +630 -0
- package/dist/chunk-3A4SOC66.js +551 -0
- package/dist/chunk-3FU5I3KV.js +526 -0
- package/dist/chunk-3GSGDPLK.js +171 -0
- package/dist/chunk-3IM3JNQV.js +377 -0
- package/dist/chunk-3OM3V545.js +448 -0
- package/dist/chunk-3T27ZQT6.js +495 -0
- package/dist/chunk-3VI3QIHU.js +214 -0
- package/dist/chunk-3WG3RRWA.js +1345 -0
- package/dist/chunk-42A3JV3A.js +128 -0
- package/dist/chunk-46IEEKPU.js +13696 -0
- package/dist/chunk-46WLFLGP.js +1073 -0
- package/dist/chunk-4JMPQB7K.js +1148 -0
- package/dist/chunk-4L25LLQM.js +382 -0
- package/dist/chunk-4Q7X3SAM.js +204 -0
- package/dist/chunk-4UAUCFHA.js +526 -0
- package/dist/chunk-4VRJX2SP.js +495 -0
- package/dist/chunk-57RBAR2A.js +214 -0
- package/dist/chunk-57UAFTO2.js +3958 -0
- package/dist/chunk-5AS622MM.js +3958 -0
- package/dist/chunk-5JF5OQQU.js +89 -0
- package/dist/chunk-5LTY4GLX.js +13745 -0
- package/dist/chunk-5M5RYJ22.js +3955 -0
- package/dist/chunk-5YO2FER3.js +76 -0
- package/dist/chunk-62DEE65H.js +371 -0
- package/dist/chunk-62YI2JOC.js +333 -0
- package/dist/chunk-64T6DFSS.js +447 -0
- package/dist/chunk-6AGPWYFC.js +447 -0
- package/dist/chunk-6BWDP63Z.js +197 -0
- package/dist/chunk-6CH7TYBG.js +58 -0
- package/dist/chunk-6CHHFVRQ.js +284 -0
- package/dist/chunk-6D64562N.js +330 -0
- package/dist/chunk-6F35WOSR.js +447 -0
- package/dist/chunk-6GPYL7TX.js +214 -0
- package/dist/chunk-6HQ22FC6.js +81 -0
- package/dist/chunk-6KWLUVFL.js +54 -0
- package/dist/chunk-6N5ISWBF.js +1148 -0
- package/dist/chunk-6OD7PVMC.js +333 -0
- package/dist/chunk-6ZSH2BZR.js +244 -0
- package/dist/chunk-74MF4T3T.js +3962 -0
- package/dist/chunk-77H7IO3O.js +382 -0
- package/dist/chunk-7BUWNG6M.js +159 -0
- package/dist/chunk-7ET5CYTD.js +382 -0
- package/dist/chunk-7IWLKR6N.js +76 -0
- package/dist/chunk-7OEUOJL5.js +1021 -0
- package/dist/chunk-7YEQI2WF.js +13745 -0
- package/dist/chunk-AIRJTKDK.js +204 -0
- package/dist/chunk-AJ63GPM7.js +54 -0
- package/dist/chunk-ATJ3NXDP.js +244 -0
- package/dist/chunk-B5IS7LE4.js +128 -0
- package/dist/chunk-BFJ45HQT.js +244 -0
- package/dist/chunk-BKINEQVI.js +244 -0
- package/dist/chunk-BMHE3UQU.js +495 -0
- package/dist/chunk-BNTUZVPS.js +1921 -0
- package/dist/chunk-BOJV6NI3.js +128 -0
- package/dist/chunk-BPHWI6N2.js +284 -0
- package/dist/chunk-BXCQWWJP.js +185 -0
- package/dist/chunk-BZ6K7AY3.js +50 -0
- package/dist/chunk-C54KIFLS.js +214 -0
- package/dist/chunk-C6ODVGTC.js +818 -0
- package/dist/chunk-C6OYEJJI.js +260 -0
- package/dist/chunk-CHBGCQXG.js +333 -0
- package/dist/chunk-CHBHR5W6.js +3556 -0
- package/dist/chunk-CHUOANKE.js +346 -0
- package/dist/chunk-CSF4RUCN.js +58 -0
- package/dist/chunk-CXKHWCNN.js +204 -0
- package/dist/chunk-CZR6Z5D7.js +330 -0
- package/dist/chunk-D24ANCWY.js +204 -0
- package/dist/chunk-D2T3272U.js +171 -0
- package/dist/chunk-DBJCWK6T.js +377 -0
- package/dist/chunk-DCHEIVGT.js +221 -0
- package/dist/chunk-DF4SM6ZX.js +128 -0
- package/dist/chunk-DHIBLMSP.js +30 -0
- package/dist/chunk-DOAC6CLC.js +127 -0
- package/dist/chunk-DOGNJ4VR.js +818 -0
- package/dist/chunk-DYXJFUCI.js +818 -0
- package/dist/chunk-E2AF2WYY.js +346 -0
- package/dist/chunk-E2KZEZZW.js +1090 -0
- package/dist/chunk-E4KWB4WM.js +348 -0
- package/dist/chunk-EGR2NYID.js +50 -0
- package/dist/chunk-ENU7URWK.js +1073 -0
- package/dist/chunk-EQ5UBJGX.js +81 -0
- package/dist/chunk-EZ7KAZMC.js +132 -0
- package/dist/chunk-F4FSSHR4.js +1073 -0
- package/dist/chunk-FBRQGHSU.js +377 -0
- package/dist/chunk-FPXU56FG.js +346 -0
- package/dist/chunk-FY7HHR5I.js +128 -0
- package/dist/chunk-FZ42OCSP.js +333 -0
- package/dist/chunk-G2S2UMU4.js +159 -0
- package/dist/chunk-G33BHQCO.js +70 -0
- package/dist/chunk-G5HWDSBH.js +50 -0
- package/dist/chunk-GCBG5TFS.js +1345 -0
- package/dist/chunk-GESN6IDC.js +127 -0
- package/dist/chunk-GHD7QG6P.js +58 -0
- package/dist/chunk-GJAILPCX.js +171 -0
- package/dist/chunk-GJQTL7RX.js +127 -0
- package/dist/chunk-GKUODJS7.js +214 -0
- package/dist/chunk-GLCKDEM2.js +97 -0
- package/dist/chunk-GLDM2FOM.js +76 -0
- package/dist/chunk-GMA34SXV.js +240 -0
- package/dist/chunk-GMM2BLFB.js +127 -0
- package/dist/chunk-GNM75IOI.js +159 -0
- package/dist/chunk-GVAVEBYR.js +2091 -0
- package/dist/chunk-GYIX2HLD.js +81 -0
- package/dist/chunk-H4LLEQ3F.js +551 -0
- package/dist/chunk-HBVCBBDA.js +127 -0
- package/dist/chunk-HBYRWOH5.js +171 -0
- package/dist/chunk-HFINM2JG.js +284 -0
- package/dist/chunk-HJGHALOG.js +1345 -0
- package/dist/chunk-HOSJTLBQ.js +513 -0
- package/dist/chunk-HRB5CP43.js +13745 -0
- package/dist/chunk-IC6HVAS3.js +56 -0
- package/dist/chunk-IDCLPPIM.js +3959 -0
- package/dist/chunk-IDFJNO44.js +1051 -0
- package/dist/chunk-II5SVNBN.js +551 -0
- package/dist/chunk-IIRLKWNZ.js +50 -0
- package/dist/chunk-ILFJMEY5.js +97 -0
- package/dist/chunk-IQXLUTWC.js +50 -0
- package/dist/chunk-ISQAOSL3.js +1921 -0
- package/dist/chunk-IWXTFDLS.js +244 -0
- package/dist/chunk-J2TGVCPE.js +1090 -0
- package/dist/chunk-J4Z5GAJ4.js +551 -0
- package/dist/chunk-J6V2DCZK.js +382 -0
- package/dist/chunk-JJSDZFKM.js +1148 -0
- package/dist/chunk-JMN2KOC4.js +128 -0
- package/dist/chunk-JP4CLFLR.js +1148 -0
- package/dist/chunk-JQVYPBR2.js +81 -0
- package/dist/chunk-JTIOZHWG.js +58 -0
- package/dist/chunk-KDICWAYV.js +1345 -0
- package/dist/chunk-KMU7PFO3.js +1148 -0
- package/dist/chunk-KOBIB6WG.js +159 -0
- package/dist/chunk-KQFDDQB6.js +13696 -0
- package/dist/chunk-KZNSOHCB.js +280 -0
- package/dist/chunk-LDDCAATQ.js +1090 -0
- package/dist/chunk-LJN2O5IG.js +197 -0
- package/dist/chunk-LSIYHKDS.js +54 -0
- package/dist/chunk-LVMBYP3C.js +171 -0
- package/dist/chunk-M2WQW5NC.js +227 -0
- package/dist/chunk-MREDKOS4.js +731 -0
- package/dist/chunk-MSF2Y5MS.js +346 -0
- package/dist/chunk-MY647ZHR.js +448 -0
- package/dist/chunk-MY6SP5NZ.js +551 -0
- package/dist/chunk-MZ5CEHPQ.js +89 -0
- package/dist/chunk-N2ACW2ZG.js +363 -0
- package/dist/chunk-NESTX6DR.js +76 -0
- package/dist/chunk-NQZORF6L.js +731 -0
- package/dist/chunk-NSMJDATI.js +495 -0
- package/dist/chunk-NSQ5JE23.js +1090 -0
- package/dist/chunk-NWEFAFJS.js +197 -0
- package/dist/chunk-NYF7GHC5.js +526 -0
- package/dist/chunk-NZGGRM4P.js +731 -0
- package/dist/chunk-NZL567WG.js +81 -0
- package/dist/chunk-NZM4E6Y3.js +89 -0
- package/dist/chunk-O5OMH6LI.js +244 -0
- package/dist/chunk-O6XF6NUN.js +1090 -0
- package/dist/chunk-OBUV3W7L.js +163 -0
- package/dist/chunk-OF4KG3L7.js +1090 -0
- package/dist/chunk-OLDS7LJN.js +495 -0
- package/dist/chunk-OO2I22RX.js +38 -0
- package/dist/chunk-OPUUT33V.js +447 -0
- package/dist/chunk-OQZPSWVN.js +526 -0
- package/dist/chunk-OR6KJ5HH.js +58 -0
- package/dist/chunk-OT3VMTKB.js +50 -0
- package/dist/chunk-OV6NT6QX.js +128 -0
- package/dist/chunk-P6RVIOVA.js +157 -0
- package/dist/chunk-PDTR3YUU.js +54 -0
- package/dist/chunk-PEGTV6EJ.js +1345 -0
- package/dist/chunk-PITVTSQW.js +333 -0
- package/dist/chunk-PSUAO4MZ.js +345 -0
- package/dist/chunk-PUA5564C.js +210 -0
- package/dist/chunk-PUQLKLQX.js +731 -0
- package/dist/chunk-PWQIS5E5.js +382 -0
- package/dist/chunk-PXXHKWDH.js +818 -0
- package/dist/chunk-QOC46BDY.js +346 -0
- package/dist/chunk-QROKS65G.js +76 -0
- package/dist/chunk-R54I2N2T.js +818 -0
- package/dist/chunk-RCFYQHUP.js +818 -0
- package/dist/chunk-RJTND4YS.js +284 -0
- package/dist/chunk-RTA6KSSK.js +89 -0
- package/dist/chunk-SBLHQMMZ.js +81 -0
- package/dist/chunk-SBX6HSEO.js +159 -0
- package/dist/chunk-SEUST6U5.js +284 -0
- package/dist/chunk-SG2ANG5C.js +123 -0
- package/dist/chunk-SUEQF3ZS.js +214 -0
- package/dist/chunk-SVFNKSZV.js +333 -0
- package/dist/chunk-SWNAM2NW.js +526 -0
- package/dist/chunk-TAQT2DC7.js +330 -0
- package/dist/chunk-TB7HFW7M.js +127 -0
- package/dist/chunk-TBJP46RP.js +1148 -0
- package/dist/chunk-TS7NGPU4.js +1073 -0
- package/dist/chunk-TUPDOPMG.js +731 -0
- package/dist/chunk-TYKUZVCA.js +1921 -0
- package/dist/chunk-TZMXJVZV.js +345 -0
- package/dist/chunk-U2DCN7M6.js +1073 -0
- package/dist/chunk-UJZPLZLU.js +197 -0
- package/dist/chunk-UKRKOJQZ.js +54 -0
- package/dist/chunk-UUKDAIH2.js +731 -0
- package/dist/chunk-V6VEFEEH.js +1345 -0
- package/dist/chunk-VCVGE7HK.js +1921 -0
- package/dist/chunk-VIO2ALGH.js +290 -0
- package/dist/chunk-VK6YZ6K7.js +1073 -0
- package/dist/chunk-VKCUSNJW.js +377 -0
- package/dist/chunk-VKT4N6WM.js +495 -0
- package/dist/chunk-VQUEP7UA.js +244 -0
- package/dist/chunk-VRPPJFIQ.js +1921 -0
- package/dist/chunk-VXODHQXB.js +377 -0
- package/dist/chunk-WHK7GXFR.js +13745 -0
- package/dist/chunk-WP3PVBBP.js +204 -0
- package/dist/chunk-WQEUY7DC.js +129 -0
- package/dist/chunk-WWPJTPPQ.js +197 -0
- package/dist/chunk-WXMXUKCA.js +262 -0
- package/dist/chunk-WYZSWV6A.js +346 -0
- package/dist/chunk-X2WBH2IO.js +297 -0
- package/dist/chunk-X33TSJNO.js +394 -0
- package/dist/chunk-X7MMI2UI.js +89 -0
- package/dist/chunk-XD6VOXK3.js +159 -0
- package/dist/chunk-XG3BQZIK.js +85 -0
- package/dist/chunk-XIKBIAOS.js +75 -0
- package/dist/chunk-XPEB545Q.js +54 -0
- package/dist/chunk-XWH2MLWS.js +330 -0
- package/dist/chunk-YH7V73XW.js +89 -0
- package/dist/chunk-YHSATGMH.js +3955 -0
- package/dist/chunk-YJBCGD46.js +13745 -0
- package/dist/chunk-YLOJPYCJ.js +284 -0
- package/dist/chunk-YMLM5D65.js +135 -0
- package/dist/chunk-YNJPRQ6J.js +377 -0
- package/dist/chunk-YSNEHBI6.js +551 -0
- package/dist/chunk-Z33XSFND.js +76 -0
- package/dist/chunk-ZA7N3ZTA.js +1921 -0
- package/dist/chunk-ZD6BMW2K.js +33 -0
- package/dist/chunk-ZFRG2MNB.js +382 -0
- package/dist/chunk-ZKG5IYCG.js +668 -0
- package/dist/chunk-ZRRRSVQF.js +204 -0
- package/dist/chunk-ZU4K7ZNX.js +197 -0
- package/dist/co-activation-HZMJC34P.js +72 -0
- package/dist/co-occurrence-AVYXRV4L.js +74 -0
- package/dist/core-memory-554Q3YN5.js +110 -0
- package/dist/core-memory-BC4YN5F4.js +110 -0
- package/dist/core-memory-NID6R3YR.js +110 -0
- package/dist/core-memory-NPJCVUMF.js +110 -0
- package/dist/core-memory-OKGXL33Z.js +110 -0
- package/dist/core-memory-XHIC5NAB.js +110 -0
- package/dist/crdt-sync-ZCH55JNR.js +33 -0
- package/dist/crm-webhook-6OMVUUGR.js +10 -0
- package/dist/crm-webhook-MHZTXU5N.js +10 -0
- package/dist/crm-webhook-TMWJT2Z5.js +10 -0
- package/dist/crm-webhook-UCWF3XDB.js +10 -0
- package/dist/crm-webhook-XISULXI7.js +10 -0
- package/dist/crm-webhook-YJ5A7F2E.js +10 -0
- package/dist/cto-delegation-gate-4PMJZL2T.js +206 -0
- package/dist/cto-delegation-gate-A7YKXTRO.js +206 -0
- package/dist/cto-delegation-gate-JFZFZGC2.js +206 -0
- package/dist/cto-delegation-gate-K32M4GVM.js +206 -0
- package/dist/cto-delegation-gate-OREBAHUM.js +206 -0
- package/dist/cto-delegation-gate-POHESML5.js +206 -0
- package/dist/daemon-orchestration-2Q7BYOHC.js +135 -0
- package/dist/daemon-orchestration-4RJ2CZJL.js +135 -0
- package/dist/daemon-orchestration-HXYPHSYU.js +135 -0
- package/dist/daemon-orchestration-I5BE46P3.js +135 -0
- package/dist/daemon-orchestration-NKE4FYQS.js +135 -0
- package/dist/daemon-orchestration-YWEXRAZA.js +135 -0
- package/dist/db-backup-5GA2YFDX.js +33 -0
- package/dist/dreaming-3F72ROTL.js +32 -0
- package/dist/dreaming-I6KXO6E2.js +32 -0
- package/dist/dreaming-JD7MNJGS.js +32 -0
- package/dist/dreaming-LCKPA3B4.js +32 -0
- package/dist/dreaming-NJBK5ILR.js +32 -0
- package/dist/dreaming-SDS5IQYC.js +32 -0
- package/dist/exe-drift-VSMIMHL4.js +68 -0
- package/dist/exe-export-DVHHIA6Y.js +73 -0
- package/dist/exe-export-GIVQDENS.js +73 -0
- package/dist/exe-export-IZ2OYMT4.js +73 -0
- package/dist/exe-export-JNWX6ZCQ.js +73 -0
- package/dist/exe-export-OQXCJLWB.js +73 -0
- package/dist/exe-export-YLVAZQAV.js +73 -0
- package/dist/exe-import-7N46LSMQ.js +76 -0
- package/dist/exe-import-AEJYBLA7.js +76 -0
- package/dist/exe-import-FINYUV5T.js +76 -0
- package/dist/exe-import-HWPYARCG.js +76 -0
- package/dist/exe-import-K4TWTG24.js +76 -0
- package/dist/exe-import-LZKZQ54C.js +76 -0
- package/dist/exe-key-6FPQHBW6.js +579 -0
- package/dist/exe-key-H45JY44F.js +579 -0
- package/dist/exe-key-MAEQGTB7.js +579 -0
- package/dist/exe-key-N3XYSEXP.js +579 -0
- package/dist/exe-key-Q3ZNYT6L.js +579 -0
- package/dist/exe-key-Q47RPB45.js +579 -0
- package/dist/exe-snapshot-2USE2HHM.js +164 -0
- package/dist/exe-snapshot-3TEM3BFD.js +164 -0
- package/dist/exe-snapshot-HECGUHL3.js +164 -0
- package/dist/exe-snapshot-HZU66HXX.js +164 -0
- package/dist/exe-snapshot-L7OQWZUH.js +164 -0
- package/dist/exe-snapshot-X5N5KIVJ.js +164 -0
- package/dist/fast-db-init-3CNTADVO.js +7 -0
- package/dist/fast-db-init-C6IPNVPU.js +7 -0
- package/dist/fast-db-init-HXCS2AP5.js +7 -0
- package/dist/fast-db-init-I7CMGBAN.js +7 -0
- package/dist/fast-db-init-P6YESOUL.js +7 -0
- package/dist/fast-db-init-VDNEFVQF.js +7 -0
- package/dist/gateway/index.js +8 -8
- package/dist/git-staleness-YCEBBIVK.js +110 -0
- package/dist/git-task-sweep-C4OV2CEY.js +40 -0
- package/dist/git-task-sweep-H34STRNT.js +40 -0
- package/dist/git-task-sweep-J66SYJMW.js +40 -0
- package/dist/git-task-sweep-JYCD3ZKQ.js +40 -0
- package/dist/git-task-sweep-O723DB7F.js +40 -0
- package/dist/git-task-sweep-YL7NLDCK.js +40 -0
- package/dist/global-procedures-IHZM6C2K.js +20 -0
- package/dist/graph-auto-extract-RZQ3MHP2.js +162 -0
- package/dist/hooks/bug-report-worker.js +12 -12
- package/dist/hooks/codex-stop-task-finalizer.js +12 -12
- package/dist/hooks/commit-complete.js +12 -12
- package/dist/hooks/error-recall.js +6 -6
- package/dist/hooks/exe-heartbeat-hook.js +3 -3
- package/dist/hooks/ingest.js +6 -6
- package/dist/hooks/instructions-loaded.js +4 -4
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +4 -4
- package/dist/hooks/post-compact.js +11 -11
- package/dist/hooks/post-tool-combined.js +5 -5
- package/dist/hooks/pre-compact.js +12 -12
- package/dist/hooks/pre-tool-use.js +15 -15
- package/dist/hooks/prompt-submit.js +21 -21
- package/dist/hooks/session-end.js +16 -16
- package/dist/hooks/session-start.js +10 -10
- package/dist/hooks/stop.js +15 -15
- package/dist/hooks/subagent-stop.js +11 -11
- package/dist/hooks/summary-worker.js +15 -15
- package/dist/index.js +18 -18
- package/dist/installer-4EW5ZDGD.js +296 -0
- package/dist/installer-B2JTQO55.js +38 -0
- package/dist/installer-MIL352T7.js +342 -0
- package/dist/lib/agent-config.js +9 -3
- package/dist/lib/cloud-sync.js +4 -4
- package/dist/lib/consolidation.js +5 -5
- package/dist/lib/database.js +2 -2
- package/dist/lib/db.js +2 -2
- package/dist/lib/employee-templates.js +4 -4
- package/dist/lib/employees.js +2 -2
- package/dist/lib/exe-daemon.js +35 -34
- package/dist/lib/hybrid-search.js +5 -5
- package/dist/lib/identity.js +2 -2
- package/dist/lib/messaging.js +12 -10
- package/dist/lib/reminders.js +3 -3
- package/dist/lib/schedules.js +5 -5
- package/dist/lib/session-registry.js +4 -4
- package/dist/lib/skill-learning.js +4 -4
- package/dist/lib/store.js +4 -4
- package/dist/lib/task-router.js +3 -3
- package/dist/lib/tasks.js +11 -11
- package/dist/lib/tmux-routing.js +9 -9
- package/dist/lib/token-spend.js +3 -3
- package/dist/mcp/register-tools.js +54 -54
- package/dist/mcp/server.js +55 -55
- 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 +13 -13
- package/dist/mcp/tools/deactivate-behavior.js +5 -5
- package/dist/mcp/tools/list-reminders.js +4 -4
- package/dist/mcp/tools/list-tasks.js +13 -13
- package/dist/mcp/tools/send-message.js +12 -12
- package/dist/mcp/tools/update-task.js +12 -12
- package/dist/mcp-http-config-OJQR246S.js +27 -0
- package/dist/memory-cards-IPULSQFA.js +174 -0
- package/dist/memory-graph-extractor-3TZZOKHY.js +17 -0
- package/dist/memory-poisoning-defense-SGUGR5YJ.js +225 -0
- package/dist/memory-reflection-H3WGCEM6.js +238 -0
- package/dist/notifications-65STXW6N.js +45 -0
- package/dist/notifications-K3JDUPL5.js +45 -0
- package/dist/notifications-KQOD66ZK.js +45 -0
- package/dist/notifications-PFK5OQEF.js +45 -0
- package/dist/notifications-VWPO6NJF.js +45 -0
- package/dist/notifications-WCSRQN2V.js +45 -0
- package/dist/orchestration-events-O5PSDEIO.js +25 -0
- package/dist/orchestrator-3D7QEVGP.js +33 -0
- package/dist/orchestrator-CC32RZO5.js +33 -0
- package/dist/orchestrator-DWAYSAFR.js +33 -0
- package/dist/orchestrator-RAPEJUOI.js +33 -0
- package/dist/orchestrator-TL37EAWA.js +33 -0
- package/dist/orchestrator-XPG6LJAI.js +33 -0
- package/dist/pipeline-router-5NT6FUC3.js +13 -0
- package/dist/pipeline-router-ADLTS6DZ.js +13 -0
- package/dist/pipeline-router-KSUXONDT.js +13 -0
- package/dist/pipeline-router-O6ZLSM6U.js +13 -0
- package/dist/pipeline-router-QKLYUYU7.js +13 -0
- package/dist/pipeline-router-W2W5XDND.js +13 -0
- package/dist/plan-limits-53NXLNDQ.js +26 -0
- package/dist/project-boot-ITN3FZMM.js +299 -0
- package/dist/projection-worker-27XX5M2W.js +964 -0
- package/dist/reranker-3KLYAHO4.js +19 -0
- package/dist/reranker-64KDRYPP.js +19 -0
- package/dist/reranker-GU7L2PJX.js +19 -0
- package/dist/reranker-MGY5A7BQ.js +19 -0
- package/dist/reranker-TZEXIJAN.js +19 -0
- package/dist/reranker-ZBX6HSU2.js +19 -0
- package/dist/review-polling-3ZZ2T26N.js +124 -0
- package/dist/review-polling-BBQUF54Q.js +124 -0
- package/dist/review-polling-FA2J2Q5O.js +124 -0
- package/dist/review-polling-MLS4BQ3N.js +124 -0
- package/dist/review-polling-RXQZPGRY.js +124 -0
- package/dist/review-polling-YBB6DKA5.js +124 -0
- package/dist/runtime/index.js +12 -12
- package/dist/session-events-EAODNMNR.js +36 -0
- package/dist/session-events-MVO6JNUL.js +36 -0
- package/dist/session-events-PRVDH3QS.js +36 -0
- package/dist/session-events-PU5OQKMB.js +36 -0
- package/dist/session-events-WWGF3B2N.js +36 -0
- package/dist/session-events-ZHXXAH6B.js +36 -0
- package/dist/session-kill-telemetry-O4TJHHOZ.js +29 -0
- package/dist/session-scope-CQXB7VMH.js +86 -0
- package/dist/session-scope-HHUMJYF6.js +86 -0
- package/dist/session-scope-M47JR2SD.js +86 -0
- package/dist/session-scope-MRQYSD5S.js +86 -0
- package/dist/session-scope-TAH5BUYW.js +86 -0
- package/dist/session-scope-UXZ6RUWC.js +86 -0
- package/dist/setup-wizard-UM2RHSBJ.js +12 -0
- package/dist/skill-refinement-447DZWNK.js +157 -0
- package/dist/skill-refinement-567JSF7L.js +157 -0
- package/dist/skill-refinement-6JVQ3TMS.js +157 -0
- package/dist/skill-refinement-MJPOHYD5.js +157 -0
- package/dist/skill-refinement-NVUBRK22.js +157 -0
- package/dist/skill-refinement-XNGD3C62.js +157 -0
- package/dist/stack-release-BAPCXMXW.js +713 -0
- package/dist/stack-release-W4TWTEZP.js +731 -0
- package/dist/steward-gate-VLE7OCKO.js +13 -0
- package/dist/task-enforcement-AZEO67N6.js +391 -0
- package/dist/task-enforcement-EOYP6IO4.js +391 -0
- package/dist/task-enforcement-FUHDL6UR.js +391 -0
- package/dist/task-enforcement-L5XQKFOV.js +391 -0
- package/dist/task-enforcement-QL3K4N3F.js +391 -0
- package/dist/task-enforcement-RJPWWEAE.js +391 -0
- package/dist/task-scope-DRQRNWB7.js +35 -0
- package/dist/task-scope-GS7TS3UV.js +35 -0
- package/dist/task-scope-KQNCP42W.js +35 -0
- package/dist/task-scope-SM5F6RD3.js +35 -0
- package/dist/task-scope-TZYMB634.js +35 -0
- package/dist/task-scope-ZVLUBS4C.js +35 -0
- package/dist/tasks-crud-4MSLJWXE.js +77 -0
- package/dist/tasks-crud-6TWWETGB.js +77 -0
- package/dist/tasks-crud-DBHYO4MM.js +77 -0
- package/dist/tasks-crud-EFYWPPEI.js +77 -0
- package/dist/tasks-crud-HIPXKRKX.js +77 -0
- package/dist/tasks-crud-JIS5B4GZ.js +77 -0
- package/dist/tasks-notify-7JBUNE7R.js +38 -0
- package/dist/tasks-notify-GEJKT5TO.js +38 -0
- package/dist/tasks-notify-OW3JDPLK.js +38 -0
- package/dist/tasks-notify-UPIJ3L4O.js +38 -0
- package/dist/tasks-notify-W5WVP2FG.js +38 -0
- package/dist/tasks-notify-YKEOYOKN.js +38 -0
- package/dist/tasks-review-5SJSFTUB.js +47 -0
- package/dist/tasks-review-DRKN34HO.js +47 -0
- package/dist/tasks-review-IQSAXXXE.js +47 -0
- package/dist/tasks-review-JHSYBR5I.js +47 -0
- package/dist/tasks-review-KWELLLS3.js +47 -0
- package/dist/tasks-review-SUJ6AKAS.js +47 -0
- package/dist/telemetry-upload-BSGOXGUP.js +739 -0
- package/dist/telemetry-upload-FPQAB6ZU.js +739 -0
- package/dist/telemetry-upload-LTX3C5HZ.js +739 -0
- package/dist/telemetry-upload-MYVBVUGE.js +739 -0
- package/dist/telemetry-upload-UPAABLGK.js +739 -0
- package/dist/telemetry-upload-UYEHBFGO.js +739 -0
- package/dist/token-budget-2CDWQU3Q.js +84 -0
- package/dist/tool-telemetry-7YS7EN7B.js +17 -0
- package/dist/tui/App.js +17 -17
- package/dist/tui-data-GDGBOS6G.js +258 -0
- package/dist/tui-data-LYUZFNO4.js +258 -0
- package/dist/tui-data-QM5BOKRF.js +258 -0
- package/dist/tui-data-VAE43SM3.js +258 -0
- package/dist/tui-data-VXF2RBVM.js +258 -0
- package/dist/tui-data-X7HT3FXF.js +258 -0
- package/dist/wiki-acl-MJIMXRQV.js +111 -0
- package/dist/worker-gate-BZBWTMCY.js +21 -0
- package/dist/worker-gate-CHVL6UGT.js +21 -0
- package/dist/worker-gate-KQFS4RJE.js +21 -0
- package/dist/worker-gate-NRP7CMS7.js +21 -0
- package/dist/worker-gate-WQGTZOSM.js +21 -0
- package/dist/worker-gate-X2YDTKTL.js +21 -0
- package/dist/workflow-engine-AKKOMJJQ.js +28 -0
- package/dist/workflow-engine-CYXRZXBM.js +28 -0
- package/dist/workflow-engine-EHWQO3LX.js +28 -0
- package/dist/workflow-engine-I3OUMSF4.js +28 -0
- package/dist/workflow-engine-KMLAXVA4.js +28 -0
- package/dist/workflow-engine-PHTLEAXP.js +28 -0
- package/dist/worktree-NLSKVRNC.js +26 -0
- package/dist/worktree-sweep-44TMEPLE.js +19 -0
- package/package.json +1 -1
- package/release-notes.json +46 -35
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
// src/lib/agentic-ontology.ts
|
|
2
|
+
import { createHash } from "crypto";
|
|
3
|
+
function stableId(...parts) {
|
|
4
|
+
return createHash("sha256").update(parts.map((p) => String(p ?? "")).join("::")).digest("hex").slice(0, 32);
|
|
5
|
+
}
|
|
6
|
+
function clean(text, max = 240) {
|
|
7
|
+
return text.replace(/\u0000/g, "").replace(/```[\s\S]*?```/g, " ").replace(/\s+/g, " ").trim().slice(0, max);
|
|
8
|
+
}
|
|
9
|
+
function inferOntologyEventType(row) {
|
|
10
|
+
const lower = row.raw_text.toLowerCase();
|
|
11
|
+
if (row.has_error) return "error";
|
|
12
|
+
if (/\b(done|complete|completed|fixed|resolved|shipped|deployed|pushed|published)\b/.test(lower)) return "milestone";
|
|
13
|
+
if (/\b(blocked|failed|error|bug|regression|broken)\b/.test(lower)) return "problem";
|
|
14
|
+
if (/\b(decided|decision|adr|we chose|approved|rejected)\b/.test(lower)) return "decision";
|
|
15
|
+
if (/\b(goal|need to|we need|want to|trying to|objective)\b/.test(lower)) return "goal_signal";
|
|
16
|
+
if (["Bash", "Read", "Edit", "Write", "Grep", "Glob"].includes(row.tool_name)) return "tool_action";
|
|
17
|
+
if (row.tool_name.startsWith("memory_card")) return "memory_card";
|
|
18
|
+
return "memory_observation";
|
|
19
|
+
}
|
|
20
|
+
function inferIntention(row) {
|
|
21
|
+
if (row.intent) return clean(row.intent, 220);
|
|
22
|
+
const text = clean(row.raw_text, 1e3);
|
|
23
|
+
const patterns = [
|
|
24
|
+
/(?:we need to|need to|let'?s|i want to|we should|goal is to|objective is to|trying to)\s+([^.!?\n]{8,220})/i,
|
|
25
|
+
/(?:so that|in order to)\s+([^.!?\n]{8,220})/i,
|
|
26
|
+
/(?:task|plan):\s*([^.!?\n]{8,220})/i
|
|
27
|
+
];
|
|
28
|
+
for (const p of patterns) {
|
|
29
|
+
const m = text.match(p);
|
|
30
|
+
if (m?.[1]) return clean(m[1], 220);
|
|
31
|
+
}
|
|
32
|
+
if (["Bash", "Read", "Edit", "Write", "Grep", "Glob"].includes(row.tool_name)) {
|
|
33
|
+
return `${row.tool_name} during ${row.project_name}`;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function inferOutcome(row) {
|
|
38
|
+
if (row.outcome) return clean(row.outcome, 220);
|
|
39
|
+
if (row.has_error) return "error";
|
|
40
|
+
const lower = row.raw_text.toLowerCase();
|
|
41
|
+
if (/\b(done|complete|completed|fixed|resolved|shipped|deployed|pushed|published|passed)\b/.test(lower)) return "success_signal";
|
|
42
|
+
if (/\b(blocked|failed|error|regression|broken|not working|could not)\b/.test(lower)) return "failure_signal";
|
|
43
|
+
if (/\b(warning|risk|concern|caveat)\b/.test(lower)) return "risk_signal";
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
function extractGoalCandidates(row) {
|
|
47
|
+
const text = clean(row.raw_text, 1600);
|
|
48
|
+
const patterns = [
|
|
49
|
+
/(?:we need to|need to|i want to|we should|goal is to|objective is to|trying to|let'?s)\s+([^.!?\n]{12,220})/gi,
|
|
50
|
+
/(?:success means|success criteria|so that)\s+([^.!?\n]{12,220})/gi
|
|
51
|
+
];
|
|
52
|
+
const out = [];
|
|
53
|
+
for (const pattern of patterns) {
|
|
54
|
+
for (const m of text.matchAll(pattern)) {
|
|
55
|
+
const candidate = clean(m[1] ?? "", 220);
|
|
56
|
+
if (candidate.length >= 12 && !out.some((x) => x.toLowerCase() === candidate.toLowerCase())) out.push(candidate);
|
|
57
|
+
if (out.length >= 3) return out;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
function uniq(values, max = 6) {
|
|
63
|
+
const out = [];
|
|
64
|
+
for (const value of values.map((v) => clean(v, 220)).filter(Boolean)) {
|
|
65
|
+
if (!out.some((x) => x.toLowerCase() === value.toLowerCase())) out.push(value);
|
|
66
|
+
if (out.length >= max) break;
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
function extractMatches(text, patterns, max = 5) {
|
|
71
|
+
const out = [];
|
|
72
|
+
for (const pattern of patterns) {
|
|
73
|
+
for (const match of text.matchAll(pattern)) {
|
|
74
|
+
const value = match[1] ?? match[0];
|
|
75
|
+
if (value) out.push(value);
|
|
76
|
+
if (out.length >= max) return uniq(out, max);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return uniq(out, max);
|
|
80
|
+
}
|
|
81
|
+
function inferSemanticLabel(row) {
|
|
82
|
+
const text = clean(row.raw_text, 2400);
|
|
83
|
+
const eventType = inferOntologyEventType(row);
|
|
84
|
+
const intention = inferIntention(row);
|
|
85
|
+
const outcome = inferOutcome(row);
|
|
86
|
+
const goals = extractGoalCandidates(row);
|
|
87
|
+
const milestones = extractMatches(text, [
|
|
88
|
+
/\b(?:completed|finished|fixed|resolved|shipped|deployed|published|pushed|passed)\b([^.!?\n]{0,180})/gi,
|
|
89
|
+
/(?:milestone|done):\s*([^.!?\n]{8,220})/gi
|
|
90
|
+
]);
|
|
91
|
+
const problems = extractMatches(text, [
|
|
92
|
+
/\b(?:blocked by|failed because|bug|regression|broken|not working|error)\b([^.!?\n]{0,180})/gi,
|
|
93
|
+
/(?:problem|issue|risk):\s*([^.!?\n]{8,220})/gi
|
|
94
|
+
]);
|
|
95
|
+
const decisions = extractMatches(text, [
|
|
96
|
+
/(?:decided|decision|adr|we chose|approved|rejected)\s+([^.!?\n]{8,220})/gi
|
|
97
|
+
]);
|
|
98
|
+
const temporalAnchors = extractMatches(text, [
|
|
99
|
+
/\b(\d{4}-\d{2}-\d{2}(?:[T ][0-9:.+-Z]+)?)\b/g,
|
|
100
|
+
/\b(today|yesterday|tomorrow|this week|next week|last week|morning|afternoon|tonight)\b/gi
|
|
101
|
+
], 8);
|
|
102
|
+
const nextActions = extractMatches(text, [
|
|
103
|
+
/(?:next|todo|follow[- ]?up|remaining|need to)\s*:?\s*([^.!?\n]{8,220})/gi
|
|
104
|
+
]);
|
|
105
|
+
const actors = uniq([
|
|
106
|
+
row.agent_id,
|
|
107
|
+
...extractMatches(text, [/\b(?:agent|employee|owner|assignee)[:= ]+([a-zA-Z][a-zA-Z0-9_-]{1,40})/gi], 5)
|
|
108
|
+
], 6);
|
|
109
|
+
const successSignals = milestones.length ? milestones : outcome === "success_signal" ? [clean(text, 180)] : [];
|
|
110
|
+
const failureSignals = problems.length ? problems : outcome === "failure_signal" || row.has_error ? [clean(text, 180)] : [];
|
|
111
|
+
const impact = successSignals.length && failureSignals.length ? "mixed" : failureSignals.length ? "negative" : successSignals.length ? "positive" : "neutral";
|
|
112
|
+
const signalCount = goals.length + milestones.length + problems.length + decisions.length + nextActions.length;
|
|
113
|
+
return {
|
|
114
|
+
labeler: "deterministic",
|
|
115
|
+
schemaVersion: 1,
|
|
116
|
+
eventType,
|
|
117
|
+
intention,
|
|
118
|
+
outcome,
|
|
119
|
+
impact,
|
|
120
|
+
confidence: Math.min(0.95, 0.45 + signalCount * 0.08 + (intention ? 0.1 : 0) + (outcome ? 0.1 : 0)),
|
|
121
|
+
goals,
|
|
122
|
+
milestones,
|
|
123
|
+
problems,
|
|
124
|
+
decisions,
|
|
125
|
+
actors,
|
|
126
|
+
temporalAnchors,
|
|
127
|
+
successSignals,
|
|
128
|
+
failureSignals,
|
|
129
|
+
nextActions,
|
|
130
|
+
summary: clean(text, 280)
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function ontologyPayload(row) {
|
|
134
|
+
const semantic = inferSemanticLabel(row);
|
|
135
|
+
return {
|
|
136
|
+
tool_name: row.tool_name,
|
|
137
|
+
memory_version: row.version ?? null,
|
|
138
|
+
domain: row.domain ?? null,
|
|
139
|
+
trajectory: row.trajectory ? safeJson(row.trajectory) : null,
|
|
140
|
+
semantic
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function safeJson(value) {
|
|
144
|
+
try {
|
|
145
|
+
return JSON.parse(value);
|
|
146
|
+
} catch {
|
|
147
|
+
return value.slice(0, 1e3);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async function resolveClient(client) {
|
|
151
|
+
if (client) return client;
|
|
152
|
+
const { getClient } = await import("./lib/database.js");
|
|
153
|
+
return getClient();
|
|
154
|
+
}
|
|
155
|
+
async function insertOntologyForMemory(row, client) {
|
|
156
|
+
const db = await resolveClient(client);
|
|
157
|
+
const occurredAt = row.timestamp;
|
|
158
|
+
const sequence = Number(row.version ?? 0) || Math.floor(new Date(occurredAt).getTime() / 1e3);
|
|
159
|
+
const eventType = inferOntologyEventType(row);
|
|
160
|
+
const intention = inferIntention(row);
|
|
161
|
+
const outcome = inferOutcome(row);
|
|
162
|
+
const eventId = stableId("event", row.id);
|
|
163
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
164
|
+
await db.execute({
|
|
165
|
+
sql: `INSERT INTO agent_sessions (id, agent_id, project_name, started_at, last_event_at, event_count, properties)
|
|
166
|
+
VALUES (?, ?, ?, ?, ?, 1, ?)
|
|
167
|
+
ON CONFLICT(id) DO UPDATE SET last_event_at = MAX(last_event_at, excluded.last_event_at),
|
|
168
|
+
event_count = event_count + 1`,
|
|
169
|
+
args: [row.session_id, row.agent_id, row.project_name, occurredAt, occurredAt, JSON.stringify({ agent_role: row.agent_role })]
|
|
170
|
+
});
|
|
171
|
+
await db.execute({
|
|
172
|
+
sql: `INSERT OR IGNORE INTO agent_events
|
|
173
|
+
(id, event_type, occurred_at, sequence_index, actor_agent_id, agent_role, project_name,
|
|
174
|
+
session_id, task_id, goal_id, parent_event_id, intention, outcome, evidence_memory_id,
|
|
175
|
+
impact, payload, created_at)
|
|
176
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NULL, NULL, ?, ?, ?, ?, ?, ?)`,
|
|
177
|
+
args: [
|
|
178
|
+
eventId,
|
|
179
|
+
eventType,
|
|
180
|
+
occurredAt,
|
|
181
|
+
sequence,
|
|
182
|
+
row.agent_id,
|
|
183
|
+
row.agent_role,
|
|
184
|
+
row.project_name,
|
|
185
|
+
row.session_id,
|
|
186
|
+
row.task_id ?? null,
|
|
187
|
+
intention,
|
|
188
|
+
outcome,
|
|
189
|
+
row.id,
|
|
190
|
+
row.has_error ? "negative" : outcome === "success_signal" ? "positive" : "neutral",
|
|
191
|
+
JSON.stringify(ontologyPayload(row)),
|
|
192
|
+
now
|
|
193
|
+
]
|
|
194
|
+
});
|
|
195
|
+
const semantic = inferSemanticLabel(row);
|
|
196
|
+
await db.execute({
|
|
197
|
+
sql: `INSERT INTO agent_semantic_labels
|
|
198
|
+
(id, source_memory_id, event_id, labeler, schema_version, confidence, labels, created_at, updated_at)
|
|
199
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
200
|
+
ON CONFLICT(id) DO UPDATE SET confidence = excluded.confidence,
|
|
201
|
+
labels = excluded.labels, updated_at = excluded.updated_at`,
|
|
202
|
+
args: [
|
|
203
|
+
stableId("semantic", row.id, semantic.labeler, semantic.schemaVersion),
|
|
204
|
+
row.id,
|
|
205
|
+
eventId,
|
|
206
|
+
semantic.labeler,
|
|
207
|
+
semantic.schemaVersion,
|
|
208
|
+
semantic.confidence,
|
|
209
|
+
JSON.stringify(semantic),
|
|
210
|
+
now,
|
|
211
|
+
now
|
|
212
|
+
]
|
|
213
|
+
});
|
|
214
|
+
for (const statement of extractGoalCandidates(row)) {
|
|
215
|
+
const goalId = stableId("goal", row.project_name, statement.toLowerCase());
|
|
216
|
+
await db.execute({
|
|
217
|
+
sql: `INSERT INTO agent_goals
|
|
218
|
+
(id, statement, owner_agent_id, project_name, status, priority, success_criteria,
|
|
219
|
+
parent_goal_id, due_at, achieved_at, supersedes_id, created_at, updated_at, source_memory_id)
|
|
220
|
+
VALUES (?, ?, ?, ?, 'open', 5, NULL, NULL, NULL, NULL, NULL, ?, ?, ?)
|
|
221
|
+
ON CONFLICT(id) DO UPDATE SET updated_at = excluded.updated_at`,
|
|
222
|
+
args: [goalId, statement, row.agent_id, row.project_name, now, now, row.id]
|
|
223
|
+
});
|
|
224
|
+
await db.execute({
|
|
225
|
+
sql: `INSERT OR IGNORE INTO agent_goal_links
|
|
226
|
+
(id, goal_id, link_type, target_id, target_type, created_at)
|
|
227
|
+
VALUES (?, ?, 'evidence', ?, 'memory', ?)`,
|
|
228
|
+
args: [stableId("goal_link", goalId, row.id, "memory"), goalId, row.id, now]
|
|
229
|
+
});
|
|
230
|
+
await db.execute({
|
|
231
|
+
sql: `INSERT OR IGNORE INTO agent_goal_links
|
|
232
|
+
(id, goal_id, link_type, target_id, target_type, created_at)
|
|
233
|
+
VALUES (?, ?, 'event', ?, 'event', ?)`,
|
|
234
|
+
args: [stableId("goal_link", goalId, eventId, "event"), goalId, eventId, now]
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
async function insertOntologyForBatch(rows, client) {
|
|
239
|
+
const db = await resolveClient(client);
|
|
240
|
+
let count = 0;
|
|
241
|
+
for (const row of rows) {
|
|
242
|
+
try {
|
|
243
|
+
await insertOntologyForMemory(row, db);
|
|
244
|
+
count++;
|
|
245
|
+
} catch {
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return count;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export {
|
|
252
|
+
stableId,
|
|
253
|
+
clean,
|
|
254
|
+
inferOntologyEventType,
|
|
255
|
+
inferIntention,
|
|
256
|
+
inferOutcome,
|
|
257
|
+
extractGoalCandidates,
|
|
258
|
+
inferSemanticLabel,
|
|
259
|
+
ontologyPayload,
|
|
260
|
+
insertOntologyForMemory,
|
|
261
|
+
insertOntologyForBatch
|
|
262
|
+
};
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
import {
|
|
2
|
+
recordSessionKill
|
|
3
|
+
} from "./chunk-SG2ANG5C.js";
|
|
4
|
+
import {
|
|
5
|
+
sessionScopeFilter,
|
|
6
|
+
verifyPaneAtCapacity,
|
|
7
|
+
writeNotification
|
|
8
|
+
} from "./chunk-IDCLPPIM.js";
|
|
9
|
+
import {
|
|
10
|
+
listSessions
|
|
11
|
+
} from "./chunk-OBUV3W7L.js";
|
|
12
|
+
import {
|
|
13
|
+
getTransport
|
|
14
|
+
} from "./chunk-MVW62NIZ.js";
|
|
15
|
+
import {
|
|
16
|
+
recordOrchestrationEventBestEffort
|
|
17
|
+
} from "./chunk-2NQQP3FF.js";
|
|
18
|
+
import {
|
|
19
|
+
getClient,
|
|
20
|
+
isCoordinatorName
|
|
21
|
+
} from "./chunk-CHBHR5W6.js";
|
|
22
|
+
|
|
23
|
+
// src/lib/capacity-monitor.ts
|
|
24
|
+
var CAPACITY_PATTERNS = [
|
|
25
|
+
/conversation is too long/i,
|
|
26
|
+
/maximum context length/i,
|
|
27
|
+
/context window.*(?:limit|exceed|full)/i,
|
|
28
|
+
/reached.*(?:token|context).*limit/i
|
|
29
|
+
];
|
|
30
|
+
var CONTENT_LINE_PREFIX = /^[\s>#\-*[]/;
|
|
31
|
+
var CONTENT_LINE_MARKERS = [
|
|
32
|
+
"RESUME:",
|
|
33
|
+
"intercom",
|
|
34
|
+
"capacity-monitor",
|
|
35
|
+
"CAPACITY_PATTERNS",
|
|
36
|
+
"isAtCapacity",
|
|
37
|
+
"CONTENT_LINE_MARKERS",
|
|
38
|
+
"pollCapacityDead",
|
|
39
|
+
"confirmCapacityKill",
|
|
40
|
+
"session_kills",
|
|
41
|
+
"capacity-monitor.test"
|
|
42
|
+
];
|
|
43
|
+
var SOURCE_CODE_MARKERS = [
|
|
44
|
+
/["'`/].*(?:maximum context length|conversation is too long)/i,
|
|
45
|
+
/(?:maximum context length|conversation is too long).*["'`/]/i
|
|
46
|
+
];
|
|
47
|
+
var RELAUNCH_COOLDOWN_MS = 5 * 60 * 1e3;
|
|
48
|
+
var _lastRelaunch = /* @__PURE__ */ new Map();
|
|
49
|
+
var RESUME_TITLE_PREFIX = "RESUME:";
|
|
50
|
+
var RESUME_TITLE_LIKE_PATTERN = `${RESUME_TITLE_PREFIX} % hit context capacity%`;
|
|
51
|
+
var RESUME_ACTIVE_STATUSES = ["open", "in_progress"];
|
|
52
|
+
function resumeTaskTitle(agentId) {
|
|
53
|
+
return `${RESUME_TITLE_PREFIX} ${agentId} hit context capacity \u2014 continue open tasks`;
|
|
54
|
+
}
|
|
55
|
+
function buildResumeContext(agentId, openTasks) {
|
|
56
|
+
const taskList = openTasks.map(
|
|
57
|
+
(r, i) => `${i + 1}. [${String(r.priority).toUpperCase()}] ${String(r.title)} (${String(r.task_file)})`
|
|
58
|
+
).join("\n");
|
|
59
|
+
return [
|
|
60
|
+
"## Context",
|
|
61
|
+
"",
|
|
62
|
+
`${agentId} hit context capacity and was auto-relaunched by the capacity monitor.`,
|
|
63
|
+
"Call recall_my_memory first \u2014 search for 'CONTEXT CHECKPOINT'. Pick up where the previous session stopped.",
|
|
64
|
+
"",
|
|
65
|
+
`You have ${openTasks.length} open task(s). Work through them in priority order:`,
|
|
66
|
+
"",
|
|
67
|
+
taskList,
|
|
68
|
+
"",
|
|
69
|
+
"Read each task file and chain through them. Build and commit after each one."
|
|
70
|
+
].join("\n");
|
|
71
|
+
}
|
|
72
|
+
var CONFIRMATION_WINDOW_MS = 3 * 60 * 1e3;
|
|
73
|
+
var _pendingCapacityKill = /* @__PURE__ */ new Map();
|
|
74
|
+
function filterPaneContent(paneOutput) {
|
|
75
|
+
return paneOutput.split("\n").filter((line) => {
|
|
76
|
+
if (CONTENT_LINE_PREFIX.test(line)) return false;
|
|
77
|
+
for (const marker of CONTENT_LINE_MARKERS) {
|
|
78
|
+
if (line.includes(marker)) return false;
|
|
79
|
+
}
|
|
80
|
+
for (const re of SOURCE_CODE_MARKERS) {
|
|
81
|
+
if (re.test(line)) return false;
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}).join("\n");
|
|
85
|
+
}
|
|
86
|
+
var CC_CONTEXT_BAR_RE = /([\u2588\u2591\u2592\u2593]{10})\s+(\d+)%/;
|
|
87
|
+
var CTX_FLOOR_PERCENT = 50;
|
|
88
|
+
function extractContextPercent(paneOutput) {
|
|
89
|
+
const match = paneOutput.match(CC_CONTEXT_BAR_RE);
|
|
90
|
+
if (!match) return null;
|
|
91
|
+
const parsed = Number.parseInt(match[2], 10);
|
|
92
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
93
|
+
}
|
|
94
|
+
function isAtCapacity(paneOutput) {
|
|
95
|
+
const filtered = filterPaneContent(paneOutput);
|
|
96
|
+
return CAPACITY_PATTERNS.some((p) => p.test(filtered));
|
|
97
|
+
}
|
|
98
|
+
function confirmCapacityKill(agentId, now = Date.now()) {
|
|
99
|
+
const pendingSince = _pendingCapacityKill.get(agentId);
|
|
100
|
+
if (pendingSince === void 0) {
|
|
101
|
+
_pendingCapacityKill.set(agentId, now);
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
if (now - pendingSince > CONFIRMATION_WINDOW_MS) {
|
|
105
|
+
_pendingCapacityKill.set(agentId, now);
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
_pendingCapacityKill.delete(agentId);
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
function _resetPendingCapacityKills() {
|
|
112
|
+
_pendingCapacityKill.clear();
|
|
113
|
+
}
|
|
114
|
+
function _resetLastRelaunchCache() {
|
|
115
|
+
_lastRelaunch.clear();
|
|
116
|
+
}
|
|
117
|
+
async function lastResumeCreatedAtMs(agentId, sessionScope) {
|
|
118
|
+
const client = getClient();
|
|
119
|
+
const cmScope = sessionScopeFilter(sessionScope ?? null);
|
|
120
|
+
const result = await client.execute({
|
|
121
|
+
sql: `SELECT MAX(created_at) AS last_created_at
|
|
122
|
+
FROM tasks
|
|
123
|
+
WHERE assigned_to = ? AND title LIKE ?${cmScope.sql}`,
|
|
124
|
+
args: [agentId, `${RESUME_TITLE_PREFIX} %`, ...cmScope.args]
|
|
125
|
+
});
|
|
126
|
+
const raw = result.rows[0]?.last_created_at;
|
|
127
|
+
if (raw === null || raw === void 0) return null;
|
|
128
|
+
const parsed = Date.parse(String(raw));
|
|
129
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
130
|
+
}
|
|
131
|
+
async function isWithinRelaunchCooldown(agentId, now = Date.now(), sessionScope) {
|
|
132
|
+
const cacheKey = sessionScope ? `${agentId}::${sessionScope}` : agentId;
|
|
133
|
+
const cached = _lastRelaunch.get(cacheKey);
|
|
134
|
+
if (cached !== void 0) return now - cached < RELAUNCH_COOLDOWN_MS;
|
|
135
|
+
const persisted = await lastResumeCreatedAtMs(agentId, sessionScope);
|
|
136
|
+
if (persisted === null) return false;
|
|
137
|
+
if (now - persisted >= RELAUNCH_COOLDOWN_MS) return false;
|
|
138
|
+
_lastRelaunch.set(cacheKey, persisted);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
async function createOrRefreshResumeTask(agentId, projectDir, openTasks, sessionScope) {
|
|
142
|
+
const client = getClient();
|
|
143
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
144
|
+
const context = buildResumeContext(agentId, openTasks);
|
|
145
|
+
const rdScope = sessionScopeFilter(sessionScope ?? null);
|
|
146
|
+
const existing = await client.execute({
|
|
147
|
+
sql: `SELECT id FROM tasks
|
|
148
|
+
WHERE assigned_to = ?
|
|
149
|
+
AND title LIKE ?
|
|
150
|
+
AND status IN (${RESUME_ACTIVE_STATUSES.map(() => "?").join(", ")})${rdScope.sql}
|
|
151
|
+
ORDER BY created_at DESC
|
|
152
|
+
LIMIT 1`,
|
|
153
|
+
args: [agentId, RESUME_TITLE_LIKE_PATTERN, ...RESUME_ACTIVE_STATUSES, ...rdScope.args]
|
|
154
|
+
});
|
|
155
|
+
if (existing.rows.length > 0) {
|
|
156
|
+
const taskId = String(existing.rows[0].id);
|
|
157
|
+
await client.execute({
|
|
158
|
+
sql: `UPDATE tasks SET context = ?, updated_at = ? WHERE id = ?`,
|
|
159
|
+
args: [context, now, taskId]
|
|
160
|
+
});
|
|
161
|
+
recordOrchestrationEventBestEffort({
|
|
162
|
+
eventType: "session.resumed",
|
|
163
|
+
source: "capacity-monitor.createOrRefreshResumeTask",
|
|
164
|
+
agentId,
|
|
165
|
+
taskId,
|
|
166
|
+
payload: { created: false, action: "refreshed" }
|
|
167
|
+
});
|
|
168
|
+
return { created: false, taskId };
|
|
169
|
+
}
|
|
170
|
+
const { createTask } = await import("./lib/tasks.js");
|
|
171
|
+
const task = await createTask({
|
|
172
|
+
title: resumeTaskTitle(agentId),
|
|
173
|
+
assignedTo: agentId,
|
|
174
|
+
assignedBy: "system",
|
|
175
|
+
projectName: projectDir.split("/").pop() ?? "unknown",
|
|
176
|
+
priority: "p0",
|
|
177
|
+
context,
|
|
178
|
+
baseDir: projectDir
|
|
179
|
+
});
|
|
180
|
+
recordOrchestrationEventBestEffort({
|
|
181
|
+
eventType: "session.resumed",
|
|
182
|
+
source: "capacity-monitor.createOrRefreshResumeTask",
|
|
183
|
+
agentId,
|
|
184
|
+
taskId: task.id,
|
|
185
|
+
payload: { created: true, action: "created", openTaskCount: openTasks.length }
|
|
186
|
+
});
|
|
187
|
+
return { created: true, taskId: task.id };
|
|
188
|
+
}
|
|
189
|
+
async function pollCapacityDead() {
|
|
190
|
+
const transport = getTransport();
|
|
191
|
+
const relaunched = [];
|
|
192
|
+
const registered = listSessions();
|
|
193
|
+
if (registered.length === 0) return [];
|
|
194
|
+
let liveSessions;
|
|
195
|
+
try {
|
|
196
|
+
liveSessions = transport.listSessions();
|
|
197
|
+
} catch {
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
for (const entry of registered) {
|
|
201
|
+
const { windowName, agentId, projectDir } = entry;
|
|
202
|
+
if (!liveSessions.includes(windowName)) continue;
|
|
203
|
+
const cmDashIdx = windowName.indexOf("-");
|
|
204
|
+
const cmDerivedScope = cmDashIdx >= 0 ? windowName.slice(cmDashIdx + 1) : null;
|
|
205
|
+
if (await isWithinRelaunchCooldown(agentId, Date.now(), cmDerivedScope)) continue;
|
|
206
|
+
let pane;
|
|
207
|
+
try {
|
|
208
|
+
pane = transport.capturePane(windowName, 15);
|
|
209
|
+
} catch {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (!isAtCapacity(pane)) continue;
|
|
213
|
+
const ctxPct = extractContextPercent(pane);
|
|
214
|
+
if (ctxPct !== null && ctxPct < CTX_FLOOR_PERCENT) {
|
|
215
|
+
process.stderr.write(
|
|
216
|
+
`[capacity-monitor] ctx-floor: ${agentId} at ${ctxPct}% in ${windowName} \u2014 below ${CTX_FLOOR_PERCENT}%. Skipping capacity kill (likely self-referential content or false positive).
|
|
217
|
+
`
|
|
218
|
+
);
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if (!confirmCapacityKill(agentId)) {
|
|
222
|
+
process.stderr.write(
|
|
223
|
+
`[capacity-monitor] ${agentId} matched capacity pattern once in ${windowName}. Awaiting confirmation on next tick.
|
|
224
|
+
`
|
|
225
|
+
);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const verify = await verifyPaneAtCapacity(windowName);
|
|
229
|
+
if (!verify.atCapacity) {
|
|
230
|
+
process.stderr.write(
|
|
231
|
+
`[capacity-monitor] verifyPaneAtCapacity rejected kill for ${agentId} in ${windowName} (reason: ${verify.reason}). Skipping.
|
|
232
|
+
`
|
|
233
|
+
);
|
|
234
|
+
void recordSessionKill({
|
|
235
|
+
sessionName: windowName,
|
|
236
|
+
agentId,
|
|
237
|
+
reason: "capacity_false_positive_blocked"
|
|
238
|
+
});
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
process.stderr.write(
|
|
242
|
+
`[capacity-monitor] Detected ${agentId} at capacity in session ${windowName} (confirmed). Auto-relaunching.
|
|
243
|
+
`
|
|
244
|
+
);
|
|
245
|
+
if (isCoordinatorName(agentId)) {
|
|
246
|
+
try {
|
|
247
|
+
const { loadConfigSync } = await import("./lib/config.js");
|
|
248
|
+
const cfg = loadConfigSync();
|
|
249
|
+
if (cfg.sessionLifecycle.autoRelaunchCoordinator !== false) {
|
|
250
|
+
const fs = await import("fs");
|
|
251
|
+
const path = await import("path");
|
|
252
|
+
const os = await import("os");
|
|
253
|
+
const markerDir = path.join(os.homedir(), ".exe-os", "session-cache");
|
|
254
|
+
fs.mkdirSync(markerDir, { recursive: true });
|
|
255
|
+
const markerPath = path.join(markerDir, `relaunch-${windowName}.json`);
|
|
256
|
+
fs.writeFileSync(markerPath, JSON.stringify({
|
|
257
|
+
reason: "context_full",
|
|
258
|
+
agentId,
|
|
259
|
+
projectDir,
|
|
260
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
261
|
+
}));
|
|
262
|
+
process.stderr.write(
|
|
263
|
+
`[capacity-monitor] Coordinator relaunch marker written: ${markerPath}
|
|
264
|
+
`
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
transport.kill(windowName);
|
|
268
|
+
void recordSessionKill({ sessionName: windowName, agentId, reason: "capacity" });
|
|
269
|
+
const coordCacheKey = cmDerivedScope ? `${agentId}::${cmDerivedScope}` : agentId;
|
|
270
|
+
_lastRelaunch.set(coordCacheKey, Date.now());
|
|
271
|
+
relaunched.push(agentId);
|
|
272
|
+
} catch (err) {
|
|
273
|
+
process.stderr.write(
|
|
274
|
+
`[capacity-monitor] Coordinator relaunch marker write failed: ${err instanceof Error ? err.message : String(err)}
|
|
275
|
+
`
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
try {
|
|
281
|
+
transport.kill(windowName);
|
|
282
|
+
void recordSessionKill({
|
|
283
|
+
sessionName: windowName,
|
|
284
|
+
agentId,
|
|
285
|
+
reason: "capacity"
|
|
286
|
+
});
|
|
287
|
+
const client = getClient();
|
|
288
|
+
const dashIdx = windowName.indexOf("-");
|
|
289
|
+
const derivedScope = dashIdx >= 0 ? windowName.slice(dashIdx + 1) : null;
|
|
290
|
+
const rlScope = sessionScopeFilter(derivedScope);
|
|
291
|
+
const openTasks = await client.execute({
|
|
292
|
+
sql: `SELECT id, title, priority, task_file, status
|
|
293
|
+
FROM tasks
|
|
294
|
+
WHERE assigned_to = ? AND status IN ('open', 'in_progress')${rlScope.sql}
|
|
295
|
+
ORDER BY
|
|
296
|
+
CASE priority WHEN 'p0' THEN 0 WHEN 'p1' THEN 1 WHEN 'p2' THEN 2 ELSE 3 END,
|
|
297
|
+
created_at ASC
|
|
298
|
+
LIMIT 10`,
|
|
299
|
+
args: [agentId, ...rlScope.args]
|
|
300
|
+
});
|
|
301
|
+
if (openTasks.rows.length === 0) {
|
|
302
|
+
process.stderr.write(
|
|
303
|
+
`[capacity-monitor] ${agentId} has no open tasks \u2014 skipping relaunch.
|
|
304
|
+
`
|
|
305
|
+
);
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
const { created } = await createOrRefreshResumeTask(
|
|
309
|
+
agentId,
|
|
310
|
+
projectDir,
|
|
311
|
+
openTasks.rows,
|
|
312
|
+
derivedScope
|
|
313
|
+
);
|
|
314
|
+
if (created) {
|
|
315
|
+
await writeNotification({
|
|
316
|
+
agentId: "system",
|
|
317
|
+
agentRole: "daemon",
|
|
318
|
+
event: "capacity_relaunch",
|
|
319
|
+
project: projectDir.split("/").pop() ?? "unknown",
|
|
320
|
+
summary: `${agentId} hit context capacity. Auto-relaunched with ${openTasks.rows.length} open task(s).`
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
const cacheKey = derivedScope ? `${agentId}::${derivedScope}` : agentId;
|
|
324
|
+
_lastRelaunch.set(cacheKey, Date.now());
|
|
325
|
+
if (created) relaunched.push(agentId);
|
|
326
|
+
} catch (err) {
|
|
327
|
+
process.stderr.write(
|
|
328
|
+
`[capacity-monitor] Failed to relaunch ${agentId}: ${err instanceof Error ? err.message : String(err)}
|
|
329
|
+
`
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return relaunched;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export {
|
|
337
|
+
CTX_FLOOR_PERCENT,
|
|
338
|
+
extractContextPercent,
|
|
339
|
+
isAtCapacity,
|
|
340
|
+
confirmCapacityKill,
|
|
341
|
+
_resetPendingCapacityKills,
|
|
342
|
+
_resetLastRelaunchCache,
|
|
343
|
+
isWithinRelaunchCooldown,
|
|
344
|
+
createOrRefreshResumeTask,
|
|
345
|
+
pollCapacityDead
|
|
346
|
+
};
|