abtars 0.3.3 → 0.3.4-alpha.1
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/bundle/{_registry.generated-7DRCE4V6.js → _registry.generated-ZJBAZMXN.js} +16 -15
- package/bundle/{_registry.generated-7DRCE4V6.js.map → _registry.generated-ZJBAZMXN.js.map} +1 -1
- package/bundle/abtars-browser.js +6 -5
- package/bundle/abtars-browser.js.map +1 -1
- package/bundle/abtars-cli.js +47 -39
- package/bundle/abtars-cli.js.map +2 -2
- package/bundle/abtars-restart.js +7 -7
- package/bundle/abtars-rss.js +2 -1
- package/bundle/abtars-rss.js.map +2 -2
- package/bundle/abtars-task.js +6 -5
- package/bundle/abtars-task.js.map +1 -1
- package/bundle/abtars-todo.js +2 -1
- package/bundle/abtars-todo.js.map +1 -1
- package/bundle/abtars.js +299 -209
- package/bundle/abtars.js.map +4 -4
- package/bundle/{acp-raw-client-AZJCEB6S.js → acp-raw-client-YTBGFN4S.js} +4 -3
- package/bundle/{acp-raw-client-AZJCEB6S.js.map → acp-raw-client-YTBGFN4S.js.map} +1 -1
- package/bundle/{action-gate-QYJL57IX.js → action-gate-YISTP773.js} +4 -3
- package/bundle/{action-gate-QYJL57IX.js.map → action-gate-YISTP773.js.map} +1 -1
- package/bundle/{agent-api-adapter-PYMNQXHE.js → agent-api-adapter-E4HWVJ32.js} +5 -4
- package/bundle/{agent-api-adapter-PYMNQXHE.js.map → agent-api-adapter-E4HWVJ32.js.map} +1 -1
- package/bundle/{agent-api-rate-limit-4GEZ4YN5.js → agent-api-rate-limit-VENFGOAD.js} +6 -5
- package/bundle/{agent-registry-563P4EUJ.js → agent-registry-DL7UT272.js} +9 -8
- package/bundle/bootstrap-V5MROD3X.js +62 -0
- package/bundle/bootstrap-V5MROD3X.js.map +7 -0
- package/bundle/{bridge-lock-transport-LXCF2IVN.js → bridge-lock-transport-BJAMHMXW.js} +6 -5
- package/bundle/{browser-2VZOGOGX.js → browser-PT54UWSW.js} +8 -7
- package/bundle/{budget-PPA7WY3D.js → budget-QNK6IIT6.js} +5 -4
- package/bundle/{budget-PPA7WY3D.js.map → budget-QNK6IIT6.js.map} +1 -1
- package/bundle/{capability-WXEA2WFK.js → capability-EKPGHQIO.js} +7 -6
- package/bundle/{chunk-C3EYYJN3.js → chunk-2BXXQG7P.js} +16 -4
- package/bundle/chunk-2BXXQG7P.js.map +7 -0
- package/bundle/{chunk-4PIVWXUJ.js → chunk-2ZD7VQRW.js} +2 -2
- package/bundle/{chunk-OY2HAK33.js → chunk-36ZEYDKZ.js} +1 -1
- package/bundle/chunk-36ZEYDKZ.js.map +7 -0
- package/bundle/{chunk-3QW2K53E.js → chunk-4IGLXZCC.js} +11 -19
- package/bundle/chunk-4IGLXZCC.js.map +7 -0
- package/bundle/{chunk-T7TAWGBX.js → chunk-52PQM4EZ.js} +2 -2
- package/bundle/{chunk-2RGR3LSV.js → chunk-5P5HF7IJ.js} +2 -2
- package/bundle/{chunk-LE23VPN3.js → chunk-63A7ZRIH.js} +4 -4
- package/bundle/{chunk-LE23VPN3.js.map → chunk-63A7ZRIH.js.map} +1 -1
- package/bundle/chunk-6IB3GVXK.js +77 -0
- package/bundle/chunk-6IB3GVXK.js.map +7 -0
- package/bundle/{chunk-OOKNHOCB.js → chunk-6S3G6GPO.js} +2 -2
- package/bundle/{chunk-E7MV7WFT.js → chunk-6VTHSN4V.js} +6 -6
- package/bundle/{chunk-NGZVJ52F.js → chunk-76YN7O3U.js} +7 -7
- package/bundle/{chunk-43DKPXTP.js → chunk-7LORCJCQ.js} +4 -4
- package/bundle/{chunk-HDOFJVFS.js → chunk-7OI46MH7.js} +3 -3
- package/bundle/{chunk-H2K23MOF.js → chunk-7XXISOHU.js} +21 -5
- package/bundle/chunk-7XXISOHU.js.map +7 -0
- package/bundle/{chunk-CB6S3ZRF.js → chunk-AFFW2LRY.js} +3 -3
- package/bundle/{chunk-TCI6FZTP.js → chunk-AHJDG6OM.js} +9 -9
- package/bundle/{chunk-NP72ZB7P.js → chunk-AMUJEP6L.js} +45 -45
- package/bundle/{chunk-NP72ZB7P.js.map → chunk-AMUJEP6L.js.map} +2 -2
- package/bundle/{chunk-BU7LTI2W.js → chunk-AWCO3DQ3.js} +6 -7
- package/bundle/chunk-AWCO3DQ3.js.map +7 -0
- package/bundle/{chunk-YME7NRGP.js → chunk-B2TIRDZC.js} +2 -2
- package/bundle/{chunk-SSCGWDIC.js → chunk-BWJ37KMW.js} +2 -2
- package/bundle/{chunk-ULO2PX3T.js → chunk-CCZ43JB7.js} +3 -3
- package/bundle/{chunk-FVUL44T4.js → chunk-CNENVY37.js} +2 -2
- package/bundle/{chunk-J5NOL4DB.js → chunk-DJOSXXM2.js} +2 -2
- package/bundle/{chunk-7RAGSHSH.js → chunk-DMDX35YT.js} +12 -10
- package/bundle/chunk-DMDX35YT.js.map +7 -0
- package/bundle/{chunk-DNDYD5SL.js → chunk-E7DZYCSF.js} +3 -3
- package/bundle/{chunk-M6Q3IQ4H.js → chunk-FF2F7ENH.js} +250 -118
- package/bundle/chunk-FF2F7ENH.js.map +7 -0
- package/bundle/{chunk-GCFIK6OB.js → chunk-FSGICOCX.js} +21 -21
- package/bundle/{chunk-IXKQ4JMX.js → chunk-GFAJSPMD.js} +33 -17
- package/bundle/chunk-GFAJSPMD.js.map +7 -0
- package/bundle/{chunk-FJF42RZY.js → chunk-GHRLO2UL.js} +3 -3
- package/bundle/{chunk-3LQOJVTB.js → chunk-HFOCNYEO.js} +1842 -1220
- package/bundle/{chunk-3LQOJVTB.js.map → chunk-HFOCNYEO.js.map} +4 -4
- package/bundle/{chunk-7WHXTCVD.js → chunk-HWFN7JGU.js} +2 -2
- package/bundle/{chunk-KBPVJGD7.js → chunk-IXGDDDAB.js} +3 -3
- package/bundle/chunk-JHLKEUHE.js +37 -0
- package/bundle/chunk-JHLKEUHE.js.map +7 -0
- package/bundle/{chunk-YEOZN5IE.js → chunk-JRGEEGZF.js} +2 -2
- package/bundle/{chunk-56D3Y44D.js → chunk-KLG4SCF7.js} +10 -10
- package/bundle/{chunk-ASYX43OU.js → chunk-LB43Q7G6.js} +26 -26
- package/bundle/{chunk-TVSPVZTX.js → chunk-LN5MNDSA.js} +3 -3
- package/bundle/{chunk-RJX45XIC.js → chunk-LPF2HELD.js} +9 -4
- package/bundle/chunk-LPF2HELD.js.map +7 -0
- package/bundle/{chunk-72T2Q7IG.js → chunk-MJACYH7A.js} +270 -282
- package/bundle/chunk-MJACYH7A.js.map +7 -0
- package/bundle/{chunk-SESM4GBM.js → chunk-MPQ2PJQX.js} +52 -25
- package/bundle/chunk-MPQ2PJQX.js.map +7 -0
- package/bundle/{chunk-FIAVVKGN.js → chunk-MTE32OQH.js} +3 -3
- package/bundle/{chunk-MV5KOWOR.js → chunk-N3Q3TASM.js} +7 -7
- package/bundle/{chunk-IQKADER4.js → chunk-O4YBJS2K.js} +2 -2
- package/bundle/{chunk-VJATH7AN.js → chunk-OOUCUCUW.js} +9 -8
- package/bundle/chunk-OOUCUCUW.js.map +7 -0
- package/bundle/{chunk-5V4VHKEA.js → chunk-OT6HLPEA.js} +3 -3
- package/bundle/{chunk-V6CV3QPH.js → chunk-OWPQIBAO.js} +2 -2
- package/bundle/{chunk-EDZGF6BC.js → chunk-QJPDBJDP.js} +11 -4
- package/bundle/chunk-QJPDBJDP.js.map +7 -0
- package/bundle/{chunk-N5VROZ7A.js → chunk-QMP2KC4W.js} +5 -5
- package/bundle/{chunk-4HNCOQSK.js → chunk-QOGZ7BFL.js} +7 -7
- package/bundle/{chunk-2LKQV2ND.js → chunk-R23FHZRY.js} +3 -3
- package/bundle/{chunk-SXNY6HC4.js → chunk-R4GYWVCR.js} +6 -6
- package/bundle/chunk-R4GYWVCR.js.map +7 -0
- package/bundle/{chunk-S7ZIGIR5.js → chunk-R76K6L6H.js} +27 -27
- package/bundle/{chunk-S7ZIGIR5.js.map → chunk-R76K6L6H.js.map} +1 -1
- package/bundle/{chunk-TY26WMQY.js → chunk-RCWQ34QR.js} +2 -2
- package/bundle/{chunk-MQJG7OJX.js → chunk-RJ2OUNFU.js} +38 -36
- package/bundle/chunk-RJ2OUNFU.js.map +7 -0
- package/bundle/{chunk-S6HEHCCG.js → chunk-RO3TAYBR.js} +83 -46
- package/bundle/chunk-RO3TAYBR.js.map +7 -0
- package/bundle/{chunk-ZOCEBV62.js → chunk-UU3RLJSD.js} +3 -3
- package/bundle/{chunk-P5O6QZDC.js → chunk-V7Y2LFO4.js} +10 -6
- package/bundle/chunk-V7Y2LFO4.js.map +7 -0
- package/bundle/{chunk-WP7FZHMI.js → chunk-W2PSVV2T.js} +2 -2
- package/bundle/{chunk-V2QIAXWZ.js → chunk-WEGFRA6G.js} +3 -3
- package/bundle/{chunk-ZY6DH2S4.js → chunk-WTIGZO3N.js} +80 -70
- package/bundle/chunk-WTIGZO3N.js.map +7 -0
- package/bundle/{chunk-O4GKI3Q3.js → chunk-X7DLKIQM.js} +4 -4
- package/bundle/{chunk-BNBC4T45.js → chunk-XZ4ZBDM5.js} +3 -3
- package/bundle/{chunk-24V4A6RP.js → chunk-YI2KSYB4.js} +4 -4
- package/bundle/{chunk-37EX63K4.js → chunk-YWHJJHJ2.js} +6998 -3621
- package/bundle/chunk-YWHJJHJ2.js.map +7 -0
- package/bundle/{chunk-IK4R3RBZ.js → chunk-YZCOA4DC.js} +3 -3
- package/bundle/{chunk-2FZJDMAF.js → chunk-ZGNSCJWH.js} +10 -10
- package/bundle/{chunk-W726UGI6.js → chunk-ZKMKAO75.js} +3 -3
- package/bundle/{chunk-WGWM4IZM.js → chunk-ZT5ZBGWS.js} +4 -4
- package/bundle/{chunk-WGWM4IZM.js.map → chunk-ZT5ZBGWS.js.map} +1 -1
- package/bundle/{commands-XXFU2ZF7.js → commands-2JQ5YTJX.js} +20 -20
- package/bundle/{config-EWDZ234X.js → config-ZEWIM5Z2.js} +8 -7
- package/bundle/{config-show-6J33O4TE.js → config-show-WBJPQPRD.js} +5 -5
- package/bundle/{context-OCS7HLJP.js → context-V75QNXB5.js} +5 -2
- package/bundle/{context-OCS7HLJP.js.map → context-V75QNXB5.js.map} +1 -1
- package/bundle/{daemon-LTDAXNA2.js → daemon-W7VQOSZC.js} +7 -7
- package/bundle/{delegation-tools-YDTWQMZD.js → delegation-tools-VGTRFQBF.js} +13 -11
- package/bundle/{registry-client-VN2MM2HI.js → deploy-5AGIULM2.js} +10 -6
- package/bundle/{deploy-lib-import-RGZJ3CGC.js → deploy-lib-import-ZBDYORN4.js} +5 -3
- package/bundle/{deps-PHSLIA77.js → deps-VB3S3RLF.js} +21 -19
- package/bundle/deps-VB3S3RLF.js.map +7 -0
- package/bundle/{direct-api-transport-OAKYQBJR.js → direct-api-transport-YSROTC35.js} +30 -28
- package/bundle/direct-api-transport-YSROTC35.js.map +7 -0
- package/bundle/{discord-adapter-WUNYPTDE.js → discord-adapter-LKBSIFLV.js} +26 -26
- package/bundle/{dist-7HEHHQI2.js → dist-KMK7TZGN.js} +376 -348
- package/bundle/dist-KMK7TZGN.js.map +7 -0
- package/bundle/{dns-wakeup-F55ALHXJ.js → dns-wakeup-KIURCCFJ.js} +4 -3
- package/bundle/{dns-wakeup-F55ALHXJ.js.map → dns-wakeup-KIURCCFJ.js.map} +1 -1
- package/bundle/{doctor-probes-3SLIUGKS.js → doctor-probes-46UKIROK.js} +4 -3
- package/bundle/{env-schema-MSDP2YBO.js → env-schema-YGHCKX5B.js} +5 -4
- package/bundle/{gossip-CS3G3447.js → gossip-VSEY2HSE.js} +7 -6
- package/bundle/{guardrails-24XK2COI.js → guardrails-U7M6H2GE.js} +6 -5
- package/bundle/{health-check-FRUNRVNQ.js → health-check-ASRLUJE5.js} +6 -2
- package/bundle/health-check-ASRLUJE5.js.map +7 -0
- package/bundle/{heartbeat-system-G4IFQXT6.js → heartbeat-system-MUXLT4E6.js} +7 -6
- package/bundle/{heartbeat-tier3-3ZO3EVXP.js → heartbeat-tier3-636ZMM4E.js} +45 -44
- package/bundle/heartbeat-tier3-636ZMM4E.js.map +7 -0
- package/bundle/{hook-system-X6INNJGV.js → hook-system-Z4XD6IM5.js} +5 -4
- package/bundle/{hotskills-6FQYTJIO.js → hotskills-AOUWVTQB.js} +7 -6
- package/bundle/{install-ZAHTZ5M5.js → install-3GGZUN22.js} +23 -20
- package/bundle/install-3GGZUN22.js.map +7 -0
- package/bundle/{install-manifest-QX7KVDCA.js → install-manifest-624KOB4S.js} +4 -3
- package/bundle/{install-manifest-QX7KVDCA.js.map → install-manifest-624KOB4S.js.map} +1 -1
- package/bundle/{irc-adapter-IEJQKKJF.js → irc-adapter-SA7GLJGR.js} +5 -4
- package/bundle/{irc-adapter-IEJQKKJF.js.map → irc-adapter-SA7GLJGR.js.map} +1 -1
- package/bundle/{irc-config-TTWNYFLH.js → irc-config-PG4X2I4M.js} +6 -5
- package/bundle/{irc-config-TTWNYFLH.js.map → irc-config-PG4X2I4M.js.map} +1 -1
- package/bundle/{kanban-board-J6RO3ZU7.js → kanban-board-4AI5Z6B5.js} +7 -5
- package/bundle/{kanban-channel-5EIXBFSA.js → kanban-channel-JMBYWGWD.js} +8 -6
- package/bundle/{lazy-require-V6EFUATC.js → lazy-require-GURNBC3C.js} +11 -6
- package/bundle/{logger-Y3VILPRH.js → logger-UQJPZMYV.js} +4 -3
- package/bundle/{logs-YS3GDURO.js → logs-2WTDLMB5.js} +5 -5
- package/bundle/{main-chat-YLZDNQPO.js → main-chat-EID5Y6H2.js} +6 -5
- package/bundle/{master-user-Z4M7KCJE.js → master-user-TKA7M2GL.js} +7 -6
- package/bundle/{media-utils-P6RZ2K3U.js → media-utils-X3UN342B.js} +44 -43
- package/bundle/{media-utils-P6RZ2K3U.js.map → media-utils-X3UN342B.js.map} +2 -2
- package/bundle/{message-pipeline-MHEBDJLH.js → message-pipeline-TAWXNEVS.js} +20 -20
- package/bundle/meta.json +9264 -8575
- package/bundle/{migrate-layout-RJJQLVGR.js → migrate-layout-KEAIIN26.js} +8 -4
- package/bundle/migrate-layout-KEAIIN26.js.map +7 -0
- package/bundle/{nerve-VZNMFDGY.js → nerve-TC34H4EL.js} +5 -4
- package/bundle/{notification-VV2OR6NW.js → notification-JQNVGICN.js} +8 -7
- package/bundle/{openrouter-credits-LXC7P4G6.js → openrouter-credits-5Q3EYWE5.js} +5 -4
- package/bundle/{openrouter-credits-LXC7P4G6.js.map → openrouter-credits-5Q3EYWE5.js.map} +1 -1
- package/bundle/{orc-KC4USP55.js → orc-74Z62W7B.js} +4 -4
- package/bundle/{orc-tools-CHRSXSAS.js → orc-tools-GME3DKIN.js} +5 -4
- package/bundle/{paths-EDK6KWHG.js → paths-BAUNPLNJ.js} +6 -2
- package/bundle/{paths-RZF6WDMG.js → paths-MZC2KU2C.js} +3 -2
- package/bundle/{peer-auth-SRONOLNG.js → peer-auth-VRO3JYL5.js} +9 -8
- package/bundle/{peer-client-VOF77T6C.js → peer-client-WLK5GZQS.js} +9 -8
- package/bundle/{peer-client-VOF77T6C.js.map → peer-client-WLK5GZQS.js.map} +1 -1
- package/bundle/{peer-config-FRWLEYQ5.js → peer-config-24WILLCJ.js} +6 -5
- package/bundle/{peer-jwt-XY3XRIA2.js → peer-jwt-ZR6RF3XM.js} +6 -5
- package/bundle/{peer-transport-UBBXTDRP.js → peer-transport-BK5VHI2M.js} +8 -7
- package/bundle/{phase-transport-4NQHZX75.js → phase-transport-7QJM7J6V.js} +18 -16
- package/bundle/{reconcile-2EUXJ6W5.js → reconcile-7N7OE2GU.js} +5 -4
- package/bundle/{reconciler-FFQGV4DO.js → reconciler-7LOOUK43.js} +13 -11
- package/bundle/{reconciler-FFQGV4DO.js.map → reconciler-7LOOUK43.js.map} +1 -1
- package/bundle/{restore-NFDE2RG6.js → restore-MENZ3I3K.js} +13 -9
- package/bundle/{restore-NFDE2RG6.js.map → restore-MENZ3I3K.js.map} +3 -3
- package/bundle/{rollback-MVZ53XS4.js → rollback-JOHY6KWW.js} +5 -5
- package/bundle/{chunk-SKY6656M.js → sandbox-runtime-T7RF4WJD.js} +11 -28
- package/bundle/{chunk-SKY6656M.js.map → sandbox-runtime-T7RF4WJD.js.map} +1 -1
- package/bundle/{self-healer-utils-KD6LV63S.js → self-healer-utils-OR2N6RLD.js} +5 -4
- package/bundle/{self-healer-utils-KD6LV63S.js.map → self-healer-utils-OR2N6RLD.js.map} +1 -1
- package/bundle/{sha-tracker-2DB4R2TW.js → sha-tracker-BXOLWZJL.js} +5 -4
- package/bundle/{skill-session-BPDVA6ZG.js → skill-session-H6EQ4NGN.js} +5 -4
- package/bundle/{skill-session-BPDVA6ZG.js.map → skill-session-H6EQ4NGN.js.map} +1 -1
- package/bundle/{skill-stats-TPD2NROA.js → skill-stats-7O777ZSZ.js} +6 -5
- package/bundle/{skill-watcher-D7QYYYON.js → skill-watcher-ZGLTDPG5.js} +6 -5
- package/bundle/{sleep-GH6DLBJJ.js → sleep-3LFZH727.js} +10 -9
- package/bundle/{soul-bundle-GXLMDBCC.js → soul-bundle-RQ2YQMJW.js} +10 -9
- package/bundle/{spin-4DBYHS3E.js → spin-76K4R6FK.js} +12 -10
- package/bundle/{spin-notifications-IKYJPER5.js → spin-notifications-LD46B4K5.js} +7 -5
- package/bundle/{spin-notifications-IKYJPER5.js.map → spin-notifications-LD46B4K5.js.map} +1 -1
- package/bundle/{spin-types-PLJH3SIK.js → spin-types-MOKTZXGB.js} +5 -4
- package/bundle/{src-SUFZ27S5.js → src-6BTCMOD3.js} +4 -4
- package/bundle/{sse-parser-anthropic-U7ILHOY5.js → sse-parser-anthropic-NV2CGBIT.js} +5 -4
- package/bundle/{sse-parser-anthropic-U7ILHOY5.js.map → sse-parser-anthropic-NV2CGBIT.js.map} +1 -1
- package/bundle/{sse-parser-responses-OI73R3AH.js → sse-parser-responses-FC3PFHQ5.js} +5 -4
- package/bundle/{sse-parser-responses-OI73R3AH.js.map → sse-parser-responses-FC3PFHQ5.js.map} +1 -1
- package/bundle/{ssrf-guard-6GP4QYVA.js → ssrf-guard-E2YPLW6G.js} +5 -4
- package/bundle/{ssrf-guard-6GP4QYVA.js.map → ssrf-guard-E2YPLW6G.js.map} +1 -1
- package/bundle/{start-JT2BPMSW.js → start-HPO5LYJP.js} +5 -5
- package/bundle/start-HPO5LYJP.js.map +7 -0
- package/bundle/{stt-KD3AABKG.js → stt-UE7EOYD7.js} +6 -5
- package/bundle/{subagent-runtime-LVECAUPV.js → subagent-runtime-4X3UHF4H.js} +6 -5
- package/bundle/system-status-PLPWV4RF.js +346 -0
- package/bundle/system-status-PLPWV4RF.js.map +7 -0
- package/bundle/{task-store-2XRDM3AW.js → task-store-RAFMDQ7N.js} +6 -5
- package/bundle/{telegram-adapter-UJ3RYYV6.js → telegram-adapter-PPXKTGOP.js} +35 -35
- package/bundle/{tool-registry-YU6WBXPA.js → tool-registry-NKIPNJZ5.js} +25 -23
- package/bundle/{tool-sandbox-RNNPDR5M.js → tool-sandbox-DQCP3UTU.js} +6 -5
- package/bundle/{transport-config-OK3MZPJK.js → transport-config-SF6GBV47.js} +9 -8
- package/bundle/{update-ENNPRW7Y.js → update-QOOGMFSJ.js} +6 -6
- package/bundle/{update-check-SJB6GV3A.js → update-check-LPZG3K5P.js} +3 -2
- package/bundle/{update-check-SJB6GV3A.js.map → update-check-LPZG3K5P.js.map} +1 -1
- package/bundle/{usage-tracker-HRSGC7QC.js → usage-tracker-TBDM4KE6.js} +2 -2
- package/bundle/{user-registry-6PUJJ5J2.js → user-registry-OYJVAHDD.js} +6 -5
- package/bundle/{wrapper-WLHLG4MI.js → wrapper-W66YICNZ.js} +3 -3
- package/bundle/{ws-peer-client-WHW3RJTD.js → ws-peer-client-G5QHOF6K.js} +15 -14
- package/bundle/{ws-peer-client-WHW3RJTD.js.map → ws-peer-client-G5QHOF6K.js.map} +2 -2
- package/package.json +3 -7
- package/scripts/emergency-deploy.sh +11 -8
- package/scripts/emergency-update.sh +156 -23
- package/templates/config/.env +1 -1
- package/templates/config/models.json +13 -0
- package/bundle/chunk-37EX63K4.js.map +0 -7
- package/bundle/chunk-3QW2K53E.js.map +0 -7
- package/bundle/chunk-72T2Q7IG.js.map +0 -7
- package/bundle/chunk-7RAGSHSH.js.map +0 -7
- package/bundle/chunk-BU7LTI2W.js.map +0 -7
- package/bundle/chunk-C3EYYJN3.js.map +0 -7
- package/bundle/chunk-CAOIIVFP.js +0 -110
- package/bundle/chunk-CAOIIVFP.js.map +0 -7
- package/bundle/chunk-EDZGF6BC.js.map +0 -7
- package/bundle/chunk-H2K23MOF.js.map +0 -7
- package/bundle/chunk-HAZHNBBY.js +0 -156
- package/bundle/chunk-HAZHNBBY.js.map +0 -7
- package/bundle/chunk-IXKQ4JMX.js.map +0 -7
- package/bundle/chunk-JAJ3DUQ2.js +0 -30
- package/bundle/chunk-JAJ3DUQ2.js.map +0 -7
- package/bundle/chunk-KMFR5AVY.js +0 -45
- package/bundle/chunk-KMFR5AVY.js.map +0 -7
- package/bundle/chunk-M6Q3IQ4H.js.map +0 -7
- package/bundle/chunk-MQJG7OJX.js.map +0 -7
- package/bundle/chunk-OY2HAK33.js.map +0 -7
- package/bundle/chunk-P5O6QZDC.js.map +0 -7
- package/bundle/chunk-RJX45XIC.js.map +0 -7
- package/bundle/chunk-S6HEHCCG.js.map +0 -7
- package/bundle/chunk-SESM4GBM.js.map +0 -7
- package/bundle/chunk-SXNY6HC4.js.map +0 -7
- package/bundle/chunk-VJATH7AN.js.map +0 -7
- package/bundle/chunk-ZY6DH2S4.js.map +0 -7
- package/bundle/deps-PHSLIA77.js.map +0 -7
- package/bundle/direct-api-transport-OAKYQBJR.js.map +0 -7
- package/bundle/dist-7HEHHQI2.js.map +0 -7
- package/bundle/health-check-FRUNRVNQ.js.map +0 -7
- package/bundle/heartbeat-tier3-3ZO3EVXP.js.map +0 -7
- package/bundle/install-ZAHTZ5M5.js.map +0 -7
- package/bundle/migrate-layout-RJJQLVGR.js.map +0 -7
- package/bundle/phase-config-V4XETN5F.js +0 -18
- package/bundle/sandbox-runtime-WHACQLLN.js +0 -22
- package/bundle/start-JT2BPMSW.js.map +0 -7
- package/bundle/system-status-XXJWTVJN.js +0 -243
- package/bundle/system-status-XXJWTVJN.js.map +0 -7
- package/bundle/user-registry-6PUJJ5J2.js.map +0 -7
- package/bundle/wrapper-WLHLG4MI.js.map +0 -7
- /package/bundle/{agent-api-rate-limit-4GEZ4YN5.js.map → agent-api-rate-limit-VENFGOAD.js.map} +0 -0
- /package/bundle/{agent-registry-563P4EUJ.js.map → agent-registry-DL7UT272.js.map} +0 -0
- /package/bundle/{bridge-lock-transport-LXCF2IVN.js.map → bridge-lock-transport-BJAMHMXW.js.map} +0 -0
- /package/bundle/{browser-2VZOGOGX.js.map → browser-PT54UWSW.js.map} +0 -0
- /package/bundle/{capability-WXEA2WFK.js.map → capability-EKPGHQIO.js.map} +0 -0
- /package/bundle/{chunk-4PIVWXUJ.js.map → chunk-2ZD7VQRW.js.map} +0 -0
- /package/bundle/{chunk-T7TAWGBX.js.map → chunk-52PQM4EZ.js.map} +0 -0
- /package/bundle/{chunk-2RGR3LSV.js.map → chunk-5P5HF7IJ.js.map} +0 -0
- /package/bundle/{chunk-OOKNHOCB.js.map → chunk-6S3G6GPO.js.map} +0 -0
- /package/bundle/{chunk-E7MV7WFT.js.map → chunk-6VTHSN4V.js.map} +0 -0
- /package/bundle/{chunk-NGZVJ52F.js.map → chunk-76YN7O3U.js.map} +0 -0
- /package/bundle/{chunk-43DKPXTP.js.map → chunk-7LORCJCQ.js.map} +0 -0
- /package/bundle/{chunk-HDOFJVFS.js.map → chunk-7OI46MH7.js.map} +0 -0
- /package/bundle/{chunk-CB6S3ZRF.js.map → chunk-AFFW2LRY.js.map} +0 -0
- /package/bundle/{chunk-TCI6FZTP.js.map → chunk-AHJDG6OM.js.map} +0 -0
- /package/bundle/{chunk-YME7NRGP.js.map → chunk-B2TIRDZC.js.map} +0 -0
- /package/bundle/{chunk-SSCGWDIC.js.map → chunk-BWJ37KMW.js.map} +0 -0
- /package/bundle/{chunk-ULO2PX3T.js.map → chunk-CCZ43JB7.js.map} +0 -0
- /package/bundle/{chunk-FVUL44T4.js.map → chunk-CNENVY37.js.map} +0 -0
- /package/bundle/{chunk-J5NOL4DB.js.map → chunk-DJOSXXM2.js.map} +0 -0
- /package/bundle/{chunk-DNDYD5SL.js.map → chunk-E7DZYCSF.js.map} +0 -0
- /package/bundle/{chunk-GCFIK6OB.js.map → chunk-FSGICOCX.js.map} +0 -0
- /package/bundle/{chunk-FJF42RZY.js.map → chunk-GHRLO2UL.js.map} +0 -0
- /package/bundle/{chunk-7WHXTCVD.js.map → chunk-HWFN7JGU.js.map} +0 -0
- /package/bundle/{chunk-KBPVJGD7.js.map → chunk-IXGDDDAB.js.map} +0 -0
- /package/bundle/{chunk-YEOZN5IE.js.map → chunk-JRGEEGZF.js.map} +0 -0
- /package/bundle/{chunk-56D3Y44D.js.map → chunk-KLG4SCF7.js.map} +0 -0
- /package/bundle/{chunk-ASYX43OU.js.map → chunk-LB43Q7G6.js.map} +0 -0
- /package/bundle/{chunk-TVSPVZTX.js.map → chunk-LN5MNDSA.js.map} +0 -0
- /package/bundle/{chunk-FIAVVKGN.js.map → chunk-MTE32OQH.js.map} +0 -0
- /package/bundle/{chunk-MV5KOWOR.js.map → chunk-N3Q3TASM.js.map} +0 -0
- /package/bundle/{chunk-IQKADER4.js.map → chunk-O4YBJS2K.js.map} +0 -0
- /package/bundle/{chunk-5V4VHKEA.js.map → chunk-OT6HLPEA.js.map} +0 -0
- /package/bundle/{chunk-V6CV3QPH.js.map → chunk-OWPQIBAO.js.map} +0 -0
- /package/bundle/{chunk-N5VROZ7A.js.map → chunk-QMP2KC4W.js.map} +0 -0
- /package/bundle/{chunk-4HNCOQSK.js.map → chunk-QOGZ7BFL.js.map} +0 -0
- /package/bundle/{chunk-2LKQV2ND.js.map → chunk-R23FHZRY.js.map} +0 -0
- /package/bundle/{chunk-TY26WMQY.js.map → chunk-RCWQ34QR.js.map} +0 -0
- /package/bundle/{chunk-ZOCEBV62.js.map → chunk-UU3RLJSD.js.map} +0 -0
- /package/bundle/{chunk-WP7FZHMI.js.map → chunk-W2PSVV2T.js.map} +0 -0
- /package/bundle/{chunk-V2QIAXWZ.js.map → chunk-WEGFRA6G.js.map} +0 -0
- /package/bundle/{chunk-O4GKI3Q3.js.map → chunk-X7DLKIQM.js.map} +0 -0
- /package/bundle/{chunk-BNBC4T45.js.map → chunk-XZ4ZBDM5.js.map} +0 -0
- /package/bundle/{chunk-24V4A6RP.js.map → chunk-YI2KSYB4.js.map} +0 -0
- /package/bundle/{chunk-IK4R3RBZ.js.map → chunk-YZCOA4DC.js.map} +0 -0
- /package/bundle/{chunk-2FZJDMAF.js.map → chunk-ZGNSCJWH.js.map} +0 -0
- /package/bundle/{chunk-W726UGI6.js.map → chunk-ZKMKAO75.js.map} +0 -0
- /package/bundle/{commands-XXFU2ZF7.js.map → commands-2JQ5YTJX.js.map} +0 -0
- /package/bundle/{config-EWDZ234X.js.map → config-ZEWIM5Z2.js.map} +0 -0
- /package/bundle/{config-show-6J33O4TE.js.map → config-show-WBJPQPRD.js.map} +0 -0
- /package/bundle/{daemon-LTDAXNA2.js.map → daemon-W7VQOSZC.js.map} +0 -0
- /package/bundle/{delegation-tools-YDTWQMZD.js.map → delegation-tools-VGTRFQBF.js.map} +0 -0
- /package/bundle/{deploy-lib-import-RGZJ3CGC.js.map → deploy-5AGIULM2.js.map} +0 -0
- /package/bundle/{doctor-probes-3SLIUGKS.js.map → deploy-lib-import-ZBDYORN4.js.map} +0 -0
- /package/bundle/{discord-adapter-WUNYPTDE.js.map → discord-adapter-LKBSIFLV.js.map} +0 -0
- /package/bundle/{env-schema-MSDP2YBO.js.map → doctor-probes-46UKIROK.js.map} +0 -0
- /package/bundle/{gossip-CS3G3447.js.map → env-schema-YGHCKX5B.js.map} +0 -0
- /package/bundle/{guardrails-24XK2COI.js.map → gossip-VSEY2HSE.js.map} +0 -0
- /package/bundle/{heartbeat-system-G4IFQXT6.js.map → guardrails-U7M6H2GE.js.map} +0 -0
- /package/bundle/{hook-system-X6INNJGV.js.map → heartbeat-system-MUXLT4E6.js.map} +0 -0
- /package/bundle/{hotskills-6FQYTJIO.js.map → hook-system-Z4XD6IM5.js.map} +0 -0
- /package/bundle/{kanban-board-J6RO3ZU7.js.map → hotskills-AOUWVTQB.js.map} +0 -0
- /package/bundle/{kanban-channel-5EIXBFSA.js.map → kanban-board-4AI5Z6B5.js.map} +0 -0
- /package/bundle/{lazy-require-V6EFUATC.js.map → kanban-channel-JMBYWGWD.js.map} +0 -0
- /package/bundle/{logger-Y3VILPRH.js.map → lazy-require-GURNBC3C.js.map} +0 -0
- /package/bundle/{main-chat-YLZDNQPO.js.map → logger-UQJPZMYV.js.map} +0 -0
- /package/bundle/{logs-YS3GDURO.js.map → logs-2WTDLMB5.js.map} +0 -0
- /package/bundle/{master-user-Z4M7KCJE.js.map → main-chat-EID5Y6H2.js.map} +0 -0
- /package/bundle/{message-pipeline-MHEBDJLH.js.map → master-user-TKA7M2GL.js.map} +0 -0
- /package/bundle/{nerve-VZNMFDGY.js.map → message-pipeline-TAWXNEVS.js.map} +0 -0
- /package/bundle/{notification-VV2OR6NW.js.map → nerve-TC34H4EL.js.map} +0 -0
- /package/bundle/{orc-tools-CHRSXSAS.js.map → notification-JQNVGICN.js.map} +0 -0
- /package/bundle/{orc-KC4USP55.js.map → orc-74Z62W7B.js.map} +0 -0
- /package/bundle/{paths-EDK6KWHG.js.map → orc-tools-GME3DKIN.js.map} +0 -0
- /package/bundle/{paths-RZF6WDMG.js.map → paths-BAUNPLNJ.js.map} +0 -0
- /package/bundle/{peer-auth-SRONOLNG.js.map → paths-MZC2KU2C.js.map} +0 -0
- /package/bundle/{peer-config-FRWLEYQ5.js.map → peer-auth-VRO3JYL5.js.map} +0 -0
- /package/bundle/{peer-jwt-XY3XRIA2.js.map → peer-config-24WILLCJ.js.map} +0 -0
- /package/bundle/{peer-transport-UBBXTDRP.js.map → peer-jwt-ZR6RF3XM.js.map} +0 -0
- /package/bundle/{phase-config-V4XETN5F.js.map → peer-transport-BK5VHI2M.js.map} +0 -0
- /package/bundle/{phase-transport-4NQHZX75.js.map → phase-transport-7QJM7J6V.js.map} +0 -0
- /package/bundle/{reconcile-2EUXJ6W5.js.map → reconcile-7N7OE2GU.js.map} +0 -0
- /package/bundle/{registry-client-VN2MM2HI.js.map → rollback-JOHY6KWW.js.map} +0 -0
- /package/bundle/{rollback-MVZ53XS4.js.map → sha-tracker-BXOLWZJL.js.map} +0 -0
- /package/bundle/{sandbox-runtime-WHACQLLN.js.map → skill-stats-7O777ZSZ.js.map} +0 -0
- /package/bundle/{sha-tracker-2DB4R2TW.js.map → skill-watcher-ZGLTDPG5.js.map} +0 -0
- /package/bundle/{skill-stats-TPD2NROA.js.map → sleep-3LFZH727.js.map} +0 -0
- /package/bundle/{skill-watcher-D7QYYYON.js.map → soul-bundle-RQ2YQMJW.js.map} +0 -0
- /package/bundle/{sleep-GH6DLBJJ.js.map → spin-76K4R6FK.js.map} +0 -0
- /package/bundle/{soul-bundle-GXLMDBCC.js.map → spin-types-MOKTZXGB.js.map} +0 -0
- /package/bundle/{spin-4DBYHS3E.js.map → src-6BTCMOD3.js.map} +0 -0
- /package/bundle/{spin-types-PLJH3SIK.js.map → stt-UE7EOYD7.js.map} +0 -0
- /package/bundle/{src-SUFZ27S5.js.map → subagent-runtime-4X3UHF4H.js.map} +0 -0
- /package/bundle/{stt-KD3AABKG.js.map → task-store-RAFMDQ7N.js.map} +0 -0
- /package/bundle/{telegram-adapter-UJ3RYYV6.js.map → telegram-adapter-PPXKTGOP.js.map} +0 -0
- /package/bundle/{subagent-runtime-LVECAUPV.js.map → tool-registry-NKIPNJZ5.js.map} +0 -0
- /package/bundle/{task-store-2XRDM3AW.js.map → tool-sandbox-DQCP3UTU.js.map} +0 -0
- /package/bundle/{tool-registry-YU6WBXPA.js.map → transport-config-SF6GBV47.js.map} +0 -0
- /package/bundle/{tool-sandbox-RNNPDR5M.js.map → update-QOOGMFSJ.js.map} +0 -0
- /package/bundle/{transport-config-OK3MZPJK.js.map → usage-tracker-TBDM4KE6.js.map} +0 -0
- /package/bundle/{update-ENNPRW7Y.js.map → user-registry-OYJVAHDD.js.map} +0 -0
- /package/bundle/{usage-tracker-HRSGC7QC.js.map → wrapper-W66YICNZ.js.map} +0 -0
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
3
|
+
import {
|
|
4
|
+
init_lazy_require,
|
|
5
|
+
resolveNativeDep
|
|
6
|
+
} from "./chunk-GFAJSPMD.js";
|
|
3
7
|
import {
|
|
4
8
|
init_nerve,
|
|
5
9
|
nerve
|
|
6
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-B2TIRDZC.js";
|
|
11
|
+
import {
|
|
12
|
+
init_logger,
|
|
13
|
+
logWarn
|
|
14
|
+
} from "./chunk-6S3G6GPO.js";
|
|
7
15
|
import {
|
|
8
16
|
abtarsHome,
|
|
9
17
|
init_paths
|
|
10
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-7XXISOHU.js";
|
|
11
19
|
import {
|
|
12
20
|
__esm,
|
|
13
|
-
__export
|
|
14
|
-
__require
|
|
21
|
+
__export
|
|
15
22
|
} from "./chunk-7K2YZTLD.js";
|
|
16
23
|
|
|
17
24
|
// src/components/tasks/kanban-board.ts
|
|
@@ -39,22 +46,12 @@ __export(kanban_board_exports, {
|
|
|
39
46
|
import { join } from "node:path";
|
|
40
47
|
import { mkdirSync } from "node:fs";
|
|
41
48
|
function db() {
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
} catch {
|
|
49
|
-
try {
|
|
50
|
-
const { execSync } = __require("node:child_process");
|
|
51
|
-
const modPath = __require.resolve("better-sqlite3/package.json").replace("/package.json", "");
|
|
52
|
-
execSync("npx --yes node-gyp rebuild", { cwd: modPath, timeout: 6e4, stdio: "pipe" });
|
|
53
|
-
Database = __require("better-sqlite3");
|
|
54
|
-
} catch (e) {
|
|
55
|
-
throw new Error(`better-sqlite3 not available and rebuild failed: ${e instanceof Error ? e.message : e}`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
49
|
+
if (_dbAttempted) return _db;
|
|
50
|
+
_dbAttempted = true;
|
|
51
|
+
const dir = join(abtarsHome(), "kanban");
|
|
52
|
+
mkdirSync(dir, { recursive: true });
|
|
53
|
+
try {
|
|
54
|
+
const Database = resolveNativeDep("better-sqlite3");
|
|
58
55
|
_db = new Database(join(dir, "kanban.db"));
|
|
59
56
|
_db.pragma("journal_mode = WAL");
|
|
60
57
|
_db.exec(`CREATE TABLE IF NOT EXISTS kanban_board (
|
|
@@ -113,12 +110,20 @@ function db() {
|
|
|
113
110
|
_db.exec(`ALTER TABLE kanban_board ADD COLUMN source_peer TEXT`);
|
|
114
111
|
} catch {
|
|
115
112
|
}
|
|
113
|
+
} catch {
|
|
114
|
+
logWarn("kanban", "better-sqlite3 not available \u2014 kanban features disabled (run: abtars deps install)");
|
|
115
|
+
_db = null;
|
|
116
116
|
}
|
|
117
117
|
return _db;
|
|
118
118
|
}
|
|
119
|
+
function dbOrNull() {
|
|
120
|
+
return db();
|
|
121
|
+
}
|
|
119
122
|
function kanbanEnqueue(title, source, sourceId, opts) {
|
|
123
|
+
const d = dbOrNull();
|
|
124
|
+
if (!d) return 0;
|
|
120
125
|
const deliveryMode = opts?.deliveryMode ?? "deliver";
|
|
121
|
-
const stmt =
|
|
126
|
+
const stmt = d.prepare(
|
|
122
127
|
`INSERT INTO kanban_board (title, source, source_id, priority, type, labels, due_at, parent_id, notes, delivery_mode, blocked_by, chat_id, source_peer)
|
|
123
128
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
|
124
129
|
);
|
|
@@ -128,23 +133,31 @@ function kanbanEnqueue(title, source, sourceId, opts) {
|
|
|
128
133
|
return id;
|
|
129
134
|
}
|
|
130
135
|
function kanbanRunning(id) {
|
|
131
|
-
|
|
136
|
+
const d = dbOrNull();
|
|
137
|
+
if (!d) return;
|
|
138
|
+
d.prepare(`UPDATE kanban_board SET status = 'running', updated_at = datetime('now') WHERE id = ?`).run(id);
|
|
132
139
|
nerve.fire("card:running", id);
|
|
133
140
|
}
|
|
134
141
|
function kanbanComplete(id, resultPath, summary) {
|
|
135
|
-
|
|
142
|
+
const d = dbOrNull();
|
|
143
|
+
if (!d) return;
|
|
144
|
+
d.prepare(
|
|
136
145
|
`UPDATE kanban_board SET status = 'done', result_path = ?, result_summary = ?, completed_at = datetime('now'), updated_at = datetime('now') WHERE id = ?`
|
|
137
146
|
).run(resultPath, summary.slice(0, 4e3), id);
|
|
138
147
|
nerve.fire("card:done", id);
|
|
139
148
|
}
|
|
140
149
|
function kanbanFail(id, error) {
|
|
141
|
-
|
|
150
|
+
const d = dbOrNull();
|
|
151
|
+
if (!d) return;
|
|
152
|
+
d.prepare(
|
|
142
153
|
`UPDATE kanban_board SET status = 'failed', error = ?, completed_at = datetime('now'), updated_at = datetime('now') WHERE id = ?`
|
|
143
154
|
).run(error.slice(0, 1e3), id);
|
|
144
155
|
nerve.fire("card:failed", id);
|
|
145
156
|
}
|
|
146
157
|
function kanbanRetryOrFail(id, error) {
|
|
147
|
-
const
|
|
158
|
+
const d = dbOrNull();
|
|
159
|
+
if (!d) return "failed";
|
|
160
|
+
const card = d.prepare("SELECT retry_count FROM kanban_board WHERE id = ?").get(id);
|
|
148
161
|
const retryCount = (card?.retry_count ?? 0) + 1;
|
|
149
162
|
if (retryCount > MAX_RETRIES) {
|
|
150
163
|
kanbanFail(id, `${error} (after ${MAX_RETRIES} retries)`);
|
|
@@ -152,54 +165,66 @@ function kanbanRetryOrFail(id, error) {
|
|
|
152
165
|
}
|
|
153
166
|
const backoffMs = Math.min(1e4 * Math.pow(2, retryCount - 1), 3e5);
|
|
154
167
|
const nextRetryAt = new Date(Date.now() + backoffMs).toISOString();
|
|
155
|
-
|
|
168
|
+
d.prepare(
|
|
156
169
|
`UPDATE kanban_board SET status = 'queued', retry_count = ?, next_retry_at = ?, error = ?, updated_at = datetime('now') WHERE id = ?`
|
|
157
170
|
).run(retryCount, nextRetryAt, error.slice(0, 1e3), id);
|
|
158
171
|
nerve.fire("card:queued", id);
|
|
159
172
|
return "retrying";
|
|
160
173
|
}
|
|
161
174
|
function kanbanPending() {
|
|
162
|
-
|
|
175
|
+
const d = dbOrNull();
|
|
176
|
+
if (!d) return [];
|
|
177
|
+
return d.prepare(
|
|
163
178
|
`SELECT * FROM kanban_board WHERE status = 'done' AND delivery_attempts < 3 ORDER BY priority = 'CRITICAL' DESC, priority = 'HIGH' DESC, created_at ASC`
|
|
164
179
|
).all();
|
|
165
180
|
}
|
|
166
181
|
function kanbanSetDelivering(id) {
|
|
167
|
-
|
|
182
|
+
const d = dbOrNull();
|
|
183
|
+
if (!d) return;
|
|
184
|
+
d.prepare(`UPDATE kanban_board SET status = 'delivering', updated_at = datetime('now') WHERE id = ?`).run(id);
|
|
168
185
|
}
|
|
169
186
|
function kanbanMarkDelivered(id) {
|
|
170
|
-
|
|
187
|
+
const d = dbOrNull();
|
|
188
|
+
if (!d) return;
|
|
189
|
+
d.prepare(
|
|
171
190
|
`UPDATE kanban_board SET status = 'delivered', delivered_at = datetime('now'), updated_at = datetime('now') WHERE id = ?`
|
|
172
191
|
).run(id);
|
|
173
192
|
nerve.fire("card:delivered", id);
|
|
174
193
|
}
|
|
175
194
|
function kanbanDeliveryFailed(id) {
|
|
176
|
-
const
|
|
195
|
+
const d = dbOrNull();
|
|
196
|
+
if (!d) return;
|
|
197
|
+
const card = d.prepare(`SELECT delivery_attempts FROM kanban_board WHERE id = ?`).get(id);
|
|
177
198
|
const attempts = (card?.delivery_attempts ?? 0) + 1;
|
|
178
199
|
if (attempts >= 3) {
|
|
179
|
-
|
|
200
|
+
d.prepare(`UPDATE kanban_board SET status = 'failed', error = 'delivery failed after 3 attempts', delivery_attempts = ?, updated_at = datetime('now') WHERE id = ?`).run(attempts, id);
|
|
180
201
|
} else {
|
|
181
|
-
|
|
202
|
+
d.prepare(`UPDATE kanban_board SET status = 'done', delivery_attempts = ?, updated_at = datetime('now') WHERE id = ?`).run(attempts, id);
|
|
182
203
|
}
|
|
183
204
|
}
|
|
184
205
|
function kanbanList(filter, filterKey) {
|
|
206
|
+
const d = dbOrNull();
|
|
207
|
+
if (!d) return [];
|
|
185
208
|
if (filter === "*") {
|
|
186
|
-
return
|
|
209
|
+
return d.prepare(`SELECT * FROM kanban_board ORDER BY created_at DESC LIMIT 50`).all();
|
|
187
210
|
}
|
|
188
211
|
if (filter && filterKey) {
|
|
189
212
|
if (filterKey === "labels") {
|
|
190
|
-
return
|
|
213
|
+
return d.prepare(`SELECT * FROM kanban_board WHERE labels LIKE ? ORDER BY created_at DESC LIMIT 50`).all(`%${filter}%`);
|
|
191
214
|
}
|
|
192
215
|
const allowed = /* @__PURE__ */ new Set(["status", "source", "priority", "type"]);
|
|
193
216
|
if (allowed.has(filterKey)) {
|
|
194
|
-
return
|
|
217
|
+
return d.prepare(`SELECT * FROM kanban_board WHERE ${filterKey} = ? ORDER BY created_at DESC LIMIT 50`).all(filter);
|
|
195
218
|
}
|
|
196
219
|
}
|
|
197
220
|
if (filter) {
|
|
198
|
-
return
|
|
221
|
+
return d.prepare(`SELECT * FROM kanban_board WHERE status = ? ORDER BY created_at DESC LIMIT 50`).all(filter);
|
|
199
222
|
}
|
|
200
|
-
return
|
|
223
|
+
return d.prepare(`SELECT * FROM kanban_board WHERE status NOT IN ('delivered') ORDER BY status = 'running' DESC, priority = 'CRITICAL' DESC, created_at DESC LIMIT 50`).all();
|
|
201
224
|
}
|
|
202
225
|
function kanbanUpdate(id, fields) {
|
|
226
|
+
const d = dbOrNull();
|
|
227
|
+
if (!d) return;
|
|
203
228
|
const sets = ["updated_at = datetime('now')"];
|
|
204
229
|
const vals = [];
|
|
205
230
|
for (const [k, v] of Object.entries(fields)) {
|
|
@@ -209,25 +234,33 @@ function kanbanUpdate(id, fields) {
|
|
|
209
234
|
}
|
|
210
235
|
}
|
|
211
236
|
vals.push(id);
|
|
212
|
-
|
|
237
|
+
d.prepare(`UPDATE kanban_board SET ${sets.join(", ")} WHERE id = ?`).run(...vals);
|
|
213
238
|
}
|
|
214
239
|
function kanbanCleanup(olderThanDays = 7) {
|
|
215
|
-
const
|
|
240
|
+
const d = dbOrNull();
|
|
241
|
+
if (!d) return 0;
|
|
242
|
+
const result = d.prepare(
|
|
216
243
|
`DELETE FROM kanban_board WHERE status = 'delivered' AND delivered_at < datetime('now', '-' || ? || ' days')`
|
|
217
244
|
).run(olderThanDays);
|
|
218
245
|
return result.changes;
|
|
219
246
|
}
|
|
220
247
|
function kanbanGetCard(id) {
|
|
221
|
-
|
|
248
|
+
const d = dbOrNull();
|
|
249
|
+
if (!d) return void 0;
|
|
250
|
+
return d.prepare(`SELECT * FROM kanban_board WHERE id = ?`).get(id);
|
|
222
251
|
}
|
|
223
252
|
function kanbanGetChildren(parentId) {
|
|
224
|
-
|
|
253
|
+
const d = dbOrNull();
|
|
254
|
+
if (!d) return [];
|
|
255
|
+
return d.prepare(`SELECT * FROM kanban_board WHERE parent_id = ? ORDER BY id`).all(parentId);
|
|
225
256
|
}
|
|
226
257
|
function kanbanAddTokens(id, tokens) {
|
|
227
|
-
|
|
258
|
+
const d = dbOrNull();
|
|
259
|
+
if (!d) return;
|
|
260
|
+
d.prepare(`UPDATE kanban_board SET tokens_used = COALESCE(tokens_used, 0) + ?, updated_at = datetime('now') WHERE id = ?`).run(tokens, id);
|
|
228
261
|
const card = kanbanGetCard(id);
|
|
229
262
|
if (card?.parent_id) {
|
|
230
|
-
|
|
263
|
+
d.prepare(`UPDATE kanban_board SET tokens_used = COALESCE(tokens_used, 0) + ?, updated_at = datetime('now') WHERE id = ?`).run(tokens, card.parent_id);
|
|
231
264
|
}
|
|
232
265
|
}
|
|
233
266
|
function kanbanProgress(id, data) {
|
|
@@ -237,7 +270,8 @@ function kanbanProgress(id, data) {
|
|
|
237
270
|
_progressTimers.delete(id);
|
|
238
271
|
const pending = _progressPending.get(id);
|
|
239
272
|
if (pending) {
|
|
240
|
-
|
|
273
|
+
const d = dbOrNull();
|
|
274
|
+
if (d) d.prepare(`UPDATE kanban_board SET progress = ?, updated_at = datetime('now') WHERE id = ?`).run(JSON.stringify(pending), id);
|
|
241
275
|
_progressPending.delete(id);
|
|
242
276
|
}
|
|
243
277
|
}, 3e4));
|
|
@@ -266,12 +300,15 @@ function cascadeFail(failedId, projectCards) {
|
|
|
266
300
|
}
|
|
267
301
|
}
|
|
268
302
|
}
|
|
269
|
-
var _db, MAX_RETRIES, _progressTimers, _progressPending;
|
|
303
|
+
var _db, _dbAttempted, MAX_RETRIES, _progressTimers, _progressPending;
|
|
270
304
|
var init_kanban_board = __esm({
|
|
271
305
|
"src/components/tasks/kanban-board.ts"() {
|
|
272
306
|
init_paths();
|
|
307
|
+
init_lazy_require();
|
|
308
|
+
init_logger();
|
|
273
309
|
init_nerve();
|
|
274
310
|
_db = null;
|
|
311
|
+
_dbAttempted = false;
|
|
275
312
|
MAX_RETRIES = 3;
|
|
276
313
|
_progressTimers = /* @__PURE__ */ new Map();
|
|
277
314
|
_progressPending = /* @__PURE__ */ new Map();
|
|
@@ -300,4 +337,4 @@ export {
|
|
|
300
337
|
kanban_board_exports,
|
|
301
338
|
init_kanban_board
|
|
302
339
|
};
|
|
303
|
-
//# sourceMappingURL=chunk-
|
|
340
|
+
//# sourceMappingURL=chunk-RO3TAYBR.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/tasks/kanban-board.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * kanban-board.ts \u2014 Local Kanban board backed by SQLite.\n *\n * Workers write completion; main agent polls and delivers.\n * DB lives at ~/.abtars/kanban/kanban.db\n */\n\nimport { join } from \"node:path\";\nimport { mkdirSync } from \"node:fs\";\nimport { abtarsHome } from \"../../paths.js\";\nimport { resolveNativeDep } from \"../../utils/lazy-require.js\";\nimport { logWarn } from \"../logger.js\";\n\n// better-sqlite3 is external (native module, resolved from ~/.local/lib/node_modules/)\ntype SqliteDb = { prepare(sql: string): any; exec(sql: string): void; pragma(s: string): void };\n\nexport interface KanbanCard {\n id: number;\n title: string;\n source: string;\n source_id: string | null;\n assignee: string;\n priority: string;\n status: string;\n type: string | null;\n notes: string | null;\n result_summary: string | null;\n result_path: string | null;\n error: string | null;\n delivery_attempts: number;\n approval: string | null;\n due_at: string | null;\n labels: string | null;\n parent_id: number | null;\n blocked_by: string | null;\n created_at: string;\n updated_at: string;\n completed_at: string | null;\n delivered_at: string | null;\n max_tokens: number | null;\n tokens_used: number | null;\n delivery_mode: string;\n chat_id: string | null;\n source_peer: string | null;\n}\n\nlet _db: SqliteDb | null = null;\nlet _dbAttempted = false;\n\nfunction db(): SqliteDb | null {\n if (_dbAttempted) return _db;\n _dbAttempted = true;\n const dir = join(abtarsHome(), \"kanban\");\n mkdirSync(dir, { recursive: true });\n try {\n const Database = resolveNativeDep(\"better-sqlite3\");\n _db = new Database(join(dir, \"kanban.db\")) as SqliteDb;\n _db.pragma(\"journal_mode = WAL\");\n _db.exec(`CREATE TABLE IF NOT EXISTS kanban_board (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n title TEXT NOT NULL,\n source TEXT NOT NULL,\n source_id TEXT,\n assignee TEXT DEFAULT 'local',\n priority TEXT NOT NULL DEFAULT 'MEDIUM' CHECK(priority IN ('CRITICAL','HIGH','MEDIUM','LOW')),\n status TEXT NOT NULL DEFAULT 'queued' CHECK(status IN ('queued','running','done','failed','delivering','delivered')),\n type TEXT,\n notes TEXT,\n result_summary TEXT,\n result_path TEXT,\n error TEXT,\n delivery_attempts INTEGER DEFAULT 0,\n approval TEXT CHECK(approval IS NULL OR approval IN ('pending','approved','rejected')),\n due_at TEXT,\n labels TEXT,\n parent_id INTEGER REFERENCES kanban_board(id),\n blocked_by TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n completed_at TEXT,\n delivered_at TEXT\n )`);\n // Migrations \u2014 safe to re-run (silently skip if column exists)\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN max_tokens INTEGER`); } catch {}\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN tokens_used INTEGER DEFAULT 0`); } catch {}\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN progress TEXT`); } catch {}\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN delivery_mode TEXT DEFAULT 'deliver'`); } catch {}\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN retry_count INTEGER DEFAULT 0`); } catch {}\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN next_retry_at TEXT`); } catch {}\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN chat_id TEXT`); } catch {}\n try { _db.exec(`ALTER TABLE kanban_board ADD COLUMN source_peer TEXT`); } catch {}\n } catch {\n logWarn(\"kanban\", \"better-sqlite3 not available \u2014 kanban features disabled (run: abtars deps install)\");\n _db = null;\n }\n return _db;\n}\n\nimport { nerve } from \"../nerve.js\";\n\n/** Return db or null (with warning logged once). */\nfunction dbOrNull(): SqliteDb | null {\n return db();\n}\n\nexport function kanbanEnqueue(title: string, source: string, sourceId?: string, opts?: { priority?: string; type?: string; labels?: string; due_at?: string; parent_id?: number; notes?: string; deliveryMode?: \"silent\" | \"deliver\" | \"announce\"; blocked_by?: string; chatId?: string; sourcePeer?: string }): number {\n const d = dbOrNull();\n if (!d) return 0;\n const deliveryMode = opts?.deliveryMode ?? \"deliver\";\n const stmt = d.prepare(\n `INSERT INTO kanban_board (title, source, source_id, priority, type, labels, due_at, parent_id, notes, delivery_mode, blocked_by, chat_id, source_peer)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`\n );\n const result = stmt.run(title, source, sourceId ?? null, opts?.priority ?? \"MEDIUM\", opts?.type ?? null, opts?.labels ?? null, opts?.due_at ?? null, opts?.parent_id ?? null, opts?.notes ?? null, deliveryMode, opts?.blocked_by ?? null, opts?.chatId ?? null, opts?.sourcePeer ?? null);\n const id = Number(result.lastInsertRowid);\n nerve.fire(\"card:queued\", id);\n return id;\n}\n\nexport function kanbanRunning(id: number): void {\n const d = dbOrNull();\n if (!d) return;\n d.prepare(`UPDATE kanban_board SET status = 'running', updated_at = datetime('now') WHERE id = ?`).run(id);\n nerve.fire(\"card:running\", id);\n}\n\nexport function kanbanComplete(id: number, resultPath: string | null, summary: string): void {\n const d = dbOrNull();\n if (!d) return;\n d.prepare(\n `UPDATE kanban_board SET status = 'done', result_path = ?, result_summary = ?, completed_at = datetime('now'), updated_at = datetime('now') WHERE id = ?`\n ).run(resultPath, summary.slice(0, 4000), id);\n nerve.fire(\"card:done\", id);\n}\n\nexport function kanbanFail(id: number, error: string): void {\n const d = dbOrNull();\n if (!d) return;\n d.prepare(\n `UPDATE kanban_board SET status = 'failed', error = ?, completed_at = datetime('now'), updated_at = datetime('now') WHERE id = ?`\n ).run(error.slice(0, 1000), id);\n nerve.fire(\"card:failed\", id);\n}\n\nconst MAX_RETRIES = 3;\n\n/** Fail with retry logic \u2014 exponential backoff (10s\u219220s\u219240s, cap 5min). After MAX_RETRIES \u2192 permanent fail. */\nexport function kanbanRetryOrFail(id: number, error: string): \"retrying\" | \"failed\" {\n const d = dbOrNull();\n if (!d) return \"failed\";\n const card = d.prepare(\"SELECT retry_count FROM kanban_board WHERE id = ?\").get(id) as { retry_count: number } | undefined;\n const retryCount = (card?.retry_count ?? 0) + 1;\n if (retryCount > MAX_RETRIES) {\n kanbanFail(id, `${error} (after ${MAX_RETRIES} retries)`);\n return \"failed\";\n }\n const backoffMs = Math.min(10_000 * Math.pow(2, retryCount - 1), 300_000);\n const nextRetryAt = new Date(Date.now() + backoffMs).toISOString();\n d.prepare(\n `UPDATE kanban_board SET status = 'queued', retry_count = ?, next_retry_at = ?, error = ?, updated_at = datetime('now') WHERE id = ?`\n ).run(retryCount, nextRetryAt, error.slice(0, 1000), id);\n nerve.fire(\"card:queued\", id);\n return \"retrying\";\n}\n\nexport function kanbanPending(): KanbanCard[] {\n const d = dbOrNull();\n if (!d) return [];\n return d.prepare(\n `SELECT * FROM kanban_board WHERE status = 'done' AND delivery_attempts < 3 ORDER BY priority = 'CRITICAL' DESC, priority = 'HIGH' DESC, created_at ASC`\n ).all() as KanbanCard[];\n}\n\nexport function kanbanSetDelivering(id: number): void {\n const d = dbOrNull();\n if (!d) return;\n d.prepare(`UPDATE kanban_board SET status = 'delivering', updated_at = datetime('now') WHERE id = ?`).run(id);\n}\n\nexport function kanbanMarkDelivered(id: number): void {\n const d = dbOrNull();\n if (!d) return;\n d.prepare(\n `UPDATE kanban_board SET status = 'delivered', delivered_at = datetime('now'), updated_at = datetime('now') WHERE id = ?`\n ).run(id);\n nerve.fire(\"card:delivered\", id);\n}\n\nexport function kanbanDeliveryFailed(id: number): void {\n const d = dbOrNull();\n if (!d) return;\n const card = d.prepare(`SELECT delivery_attempts FROM kanban_board WHERE id = ?`).get(id) as { delivery_attempts: number } | undefined;\n const attempts = (card?.delivery_attempts ?? 0) + 1;\n if (attempts >= 3) {\n d.prepare(`UPDATE kanban_board SET status = 'failed', error = 'delivery failed after 3 attempts', delivery_attempts = ?, updated_at = datetime('now') WHERE id = ?`).run(attempts, id);\n } else {\n d.prepare(`UPDATE kanban_board SET status = 'done', delivery_attempts = ?, updated_at = datetime('now') WHERE id = ?`).run(attempts, id);\n }\n}\n\nexport function kanbanList(filter?: string, filterKey?: string): KanbanCard[] {\n const d = dbOrNull();\n if (!d) return [];\n if (filter === \"*\") {\n return d.prepare(`SELECT * FROM kanban_board ORDER BY created_at DESC LIMIT 50`).all() as KanbanCard[];\n }\n if (filter && filterKey) {\n if (filterKey === \"labels\") {\n return d.prepare(`SELECT * FROM kanban_board WHERE labels LIKE ? ORDER BY created_at DESC LIMIT 50`).all(`%${filter}%`) as KanbanCard[];\n }\n const allowed = new Set([\"status\", \"source\", \"priority\", \"type\"]);\n if (allowed.has(filterKey)) {\n return d.prepare(`SELECT * FROM kanban_board WHERE ${filterKey} = ? ORDER BY created_at DESC LIMIT 50`).all(filter) as KanbanCard[];\n }\n }\n if (filter) {\n return d.prepare(`SELECT * FROM kanban_board WHERE status = ? ORDER BY created_at DESC LIMIT 50`).all(filter) as KanbanCard[];\n }\n return d.prepare(`SELECT * FROM kanban_board WHERE status NOT IN ('delivered') ORDER BY status = 'running' DESC, priority = 'CRITICAL' DESC, created_at DESC LIMIT 50`).all() as KanbanCard[];\n}\n\nexport function kanbanUpdate(id: number, fields: Partial<Pick<KanbanCard, \"title\" | \"status\" | \"priority\" | \"type\" | \"labels\" | \"due_at\" | \"notes\" | \"parent_id\" | \"approval\">>): void {\n const d = dbOrNull();\n if (!d) return;\n const sets: string[] = [\"updated_at = datetime('now')\"];\n const vals: unknown[] = [];\n for (const [k, v] of Object.entries(fields)) {\n if (v !== undefined) { sets.push(`${k} = ?`); vals.push(v); }\n }\n vals.push(id);\n d.prepare(`UPDATE kanban_board SET ${sets.join(\", \")} WHERE id = ?`).run(...vals);\n}\n\nexport function kanbanCleanup(olderThanDays = 7): number {\n const d = dbOrNull();\n if (!d) return 0;\n const result = d.prepare(\n `DELETE FROM kanban_board WHERE status = 'delivered' AND delivered_at < datetime('now', '-' || ? || ' days')`\n ).run(olderThanDays);\n return result.changes;\n}\n\nexport function kanbanGetCard(id: number): KanbanCard | undefined {\n const d = dbOrNull();\n if (!d) return undefined;\n return d.prepare(`SELECT * FROM kanban_board WHERE id = ?`).get(id) as KanbanCard | undefined;\n}\n\nexport function kanbanGetChildren(parentId: number): KanbanCard[] {\n const d = dbOrNull();\n if (!d) return [];\n return d.prepare(`SELECT * FROM kanban_board WHERE parent_id = ? ORDER BY id`).all(parentId) as KanbanCard[];\n}\n\nexport function kanbanAddTokens(id: number, tokens: number): void {\n const d = dbOrNull();\n if (!d) return;\n d.prepare(`UPDATE kanban_board SET tokens_used = COALESCE(tokens_used, 0) + ?, updated_at = datetime('now') WHERE id = ?`).run(tokens, id);\n const card = kanbanGetCard(id);\n if (card?.parent_id) {\n d.prepare(`UPDATE kanban_board SET tokens_used = COALESCE(tokens_used, 0) + ?, updated_at = datetime('now') WHERE id = ?`).run(tokens, card.parent_id);\n }\n}\n\n// #907: Worker progress \u2014 30s debounce per card\nconst _progressTimers = new Map<number, ReturnType<typeof setTimeout>>();\nconst _progressPending = new Map<number, Record<string, unknown>>();\n\nexport function kanbanProgress(id: number, data: { toolUseCount?: number; tokenCount?: number; lastTool?: string; summary?: string }): void {\n _progressPending.set(id, data);\n if (_progressTimers.has(id)) return;\n _progressTimers.set(id, setTimeout(() => {\n _progressTimers.delete(id);\n const pending = _progressPending.get(id);\n if (pending) {\n const d = dbOrNull();\n if (d) d.prepare(`UPDATE kanban_board SET progress = ?, updated_at = datetime('now') WHERE id = ?`).run(JSON.stringify(pending), id);\n _progressPending.delete(id);\n }\n }, 30_000));\n}\n\n// \u2500\u2500 DAG orchestration (#677) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Check if all dependencies of a card are satisfied. */\nexport function isUnblocked(card: KanbanCard): boolean {\n if (!card.blocked_by) return true;\n if (card.blocked_by === \"children\") {\n const kids = kanbanGetChildren(card.id);\n return kids.length > 0 && kids.every(k => k.status === \"done\" || k.status === \"delivered\");\n }\n const depIds = card.blocked_by.split(\",\").map(Number).filter(n => !isNaN(n));\n if (depIds.length === 0) return true;\n return depIds.every(id => {\n const dep = kanbanGetCard(id);\n return dep?.status === \"done\" || dep?.status === \"delivered\";\n });\n}\n\n/** Cascade-fail all cards depending (transitively) on a failed card. */\nexport function cascadeFail(failedId: number, projectCards: KanbanCard[]): void {\n for (const card of projectCards) {\n if (card.status !== \"queued\") continue;\n if (!card.blocked_by) continue;\n const deps = card.blocked_by.split(\",\").map(Number).filter(n => !isNaN(n));\n if (deps.includes(failedId)) {\n kanbanFail(card.id, `upstream #${failedId} failed`);\n cascadeFail(card.id, projectCards);\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAyC1B,SAAS,KAAsB;AAC7B,MAAI,aAAc,QAAO;AACzB,iBAAe;AACf,QAAM,MAAM,KAAK,WAAW,GAAG,QAAQ;AACvC,YAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAClC,MAAI;AACF,UAAM,WAAW,iBAAiB,gBAAgB;AAClD,UAAM,IAAI,SAAS,KAAK,KAAK,WAAW,CAAC;AACzC,QAAI,OAAO,oBAAoB;AAC/B,QAAI,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAuBP;AAEF,QAAI;AAAE,UAAI,KAAK,wDAAwD;AAAA,IAAG,QAAQ;AAAA,IAAC;AACnF,QAAI;AAAE,UAAI,KAAK,mEAAmE;AAAA,IAAG,QAAQ;AAAA,IAAC;AAC9F,QAAI;AAAE,UAAI,KAAK,mDAAmD;AAAA,IAAG,QAAQ;AAAA,IAAC;AAC9E,QAAI;AAAE,UAAI,KAAK,0EAA0E;AAAA,IAAG,QAAQ;AAAA,IAAC;AACrG,QAAI;AAAE,UAAI,KAAK,mEAAmE;AAAA,IAAG,QAAQ;AAAA,IAAC;AAC9F,QAAI;AAAE,UAAI,KAAK,wDAAwD;AAAA,IAAG,QAAQ;AAAA,IAAC;AACnF,QAAI;AAAE,UAAI,KAAK,kDAAkD;AAAA,IAAG,QAAQ;AAAA,IAAC;AAC7E,QAAI;AAAE,UAAI,KAAK,sDAAsD;AAAA,IAAG,QAAQ;AAAA,IAAC;AAAA,EACnF,QAAQ;AACN,YAAQ,UAAU,yFAAoF;AACtG,UAAM;AAAA,EACR;AACA,SAAO;AACT;AAKA,SAAS,WAA4B;AACnC,SAAO,GAAG;AACZ;AAEO,SAAS,cAAc,OAAe,QAAgB,UAAmB,MAAwO;AACtT,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG,QAAO;AACf,QAAM,eAAe,MAAM,gBAAgB;AAC3C,QAAM,OAAO,EAAE;AAAA,IACb;AAAA;AAAA,EAEF;AACA,QAAM,SAAS,KAAK,IAAI,OAAO,QAAQ,YAAY,MAAM,MAAM,YAAY,UAAU,MAAM,QAAQ,MAAM,MAAM,UAAU,MAAM,MAAM,UAAU,MAAM,MAAM,aAAa,MAAM,MAAM,SAAS,MAAM,cAAc,MAAM,cAAc,MAAM,MAAM,UAAU,MAAM,MAAM,cAAc,IAAI;AACzR,QAAM,KAAK,OAAO,OAAO,eAAe;AACxC,QAAM,KAAK,eAAe,EAAE;AAC5B,SAAO;AACT;AAEO,SAAS,cAAc,IAAkB;AAC9C,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,IAAE,QAAQ,uFAAuF,EAAE,IAAI,EAAE;AACzG,QAAM,KAAK,gBAAgB,EAAE;AAC/B;AAEO,SAAS,eAAe,IAAY,YAA2B,SAAuB;AAC3F,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,IAAE;AAAA,IACA;AAAA,EACF,EAAE,IAAI,YAAY,QAAQ,MAAM,GAAG,GAAI,GAAG,EAAE;AAC5C,QAAM,KAAK,aAAa,EAAE;AAC5B;AAEO,SAAS,WAAW,IAAY,OAAqB;AAC1D,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,IAAE;AAAA,IACA;AAAA,EACF,EAAE,IAAI,MAAM,MAAM,GAAG,GAAI,GAAG,EAAE;AAC9B,QAAM,KAAK,eAAe,EAAE;AAC9B;AAKO,SAAS,kBAAkB,IAAY,OAAsC;AAClF,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG,QAAO;AACf,QAAM,OAAO,EAAE,QAAQ,mDAAmD,EAAE,IAAI,EAAE;AAClF,QAAM,cAAc,MAAM,eAAe,KAAK;AAC9C,MAAI,aAAa,aAAa;AAC5B,eAAW,IAAI,GAAG,KAAK,WAAW,WAAW,WAAW;AACxD,WAAO;AAAA,EACT;AACA,QAAM,YAAY,KAAK,IAAI,MAAS,KAAK,IAAI,GAAG,aAAa,CAAC,GAAG,GAAO;AACxE,QAAM,cAAc,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,EAAE,YAAY;AACjE,IAAE;AAAA,IACA;AAAA,EACF,EAAE,IAAI,YAAY,aAAa,MAAM,MAAM,GAAG,GAAI,GAAG,EAAE;AACvD,QAAM,KAAK,eAAe,EAAE;AAC5B,SAAO;AACT;AAEO,SAAS,gBAA8B;AAC5C,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG,QAAO,CAAC;AAChB,SAAO,EAAE;AAAA,IACP;AAAA,EACF,EAAE,IAAI;AACR;AAEO,SAAS,oBAAoB,IAAkB;AACpD,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,IAAE,QAAQ,0FAA0F,EAAE,IAAI,EAAE;AAC9G;AAEO,SAAS,oBAAoB,IAAkB;AACpD,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,IAAE;AAAA,IACA;AAAA,EACF,EAAE,IAAI,EAAE;AACR,QAAM,KAAK,kBAAkB,EAAE;AACjC;AAEO,SAAS,qBAAqB,IAAkB;AACrD,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,QAAM,OAAO,EAAE,QAAQ,yDAAyD,EAAE,IAAI,EAAE;AACxF,QAAM,YAAY,MAAM,qBAAqB,KAAK;AAClD,MAAI,YAAY,GAAG;AACjB,MAAE,QAAQ,yJAAyJ,EAAE,IAAI,UAAU,EAAE;AAAA,EACvL,OAAO;AACL,MAAE,QAAQ,2GAA2G,EAAE,IAAI,UAAU,EAAE;AAAA,EACzI;AACF;AAEO,SAAS,WAAW,QAAiB,WAAkC;AAC5E,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG,QAAO,CAAC;AAChB,MAAI,WAAW,KAAK;AAClB,WAAO,EAAE,QAAQ,8DAA8D,EAAE,IAAI;AAAA,EACvF;AACA,MAAI,UAAU,WAAW;AACvB,QAAI,cAAc,UAAU;AAC1B,aAAO,EAAE,QAAQ,kFAAkF,EAAE,IAAI,IAAI,MAAM,GAAG;AAAA,IACxH;AACA,UAAM,UAAU,oBAAI,IAAI,CAAC,UAAU,UAAU,YAAY,MAAM,CAAC;AAChE,QAAI,QAAQ,IAAI,SAAS,GAAG;AAC1B,aAAO,EAAE,QAAQ,oCAAoC,SAAS,wCAAwC,EAAE,IAAI,MAAM;AAAA,IACpH;AAAA,EACF;AACA,MAAI,QAAQ;AACV,WAAO,EAAE,QAAQ,+EAA+E,EAAE,IAAI,MAAM;AAAA,EAC9G;AACA,SAAO,EAAE,QAAQ,qJAAqJ,EAAE,IAAI;AAC9K;AAEO,SAAS,aAAa,IAAY,QAA8I;AACrL,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,QAAM,OAAiB,CAAC,8BAA8B;AACtD,QAAM,OAAkB,CAAC;AACzB,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,MAAM,GAAG;AAC3C,QAAI,MAAM,QAAW;AAAE,WAAK,KAAK,GAAG,CAAC,MAAM;AAAG,WAAK,KAAK,CAAC;AAAA,IAAG;AAAA,EAC9D;AACA,OAAK,KAAK,EAAE;AACZ,IAAE,QAAQ,2BAA2B,KAAK,KAAK,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,IAAI;AAClF;AAEO,SAAS,cAAc,gBAAgB,GAAW;AACvD,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG,QAAO;AACf,QAAM,SAAS,EAAE;AAAA,IACf;AAAA,EACF,EAAE,IAAI,aAAa;AACnB,SAAO,OAAO;AAChB;AAEO,SAAS,cAAc,IAAoC;AAChE,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG,QAAO;AACf,SAAO,EAAE,QAAQ,yCAAyC,EAAE,IAAI,EAAE;AACpE;AAEO,SAAS,kBAAkB,UAAgC;AAChE,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG,QAAO,CAAC;AAChB,SAAO,EAAE,QAAQ,4DAA4D,EAAE,IAAI,QAAQ;AAC7F;AAEO,SAAS,gBAAgB,IAAY,QAAsB;AAChE,QAAM,IAAI,SAAS;AACnB,MAAI,CAAC,EAAG;AACR,IAAE,QAAQ,+GAA+G,EAAE,IAAI,QAAQ,EAAE;AACzI,QAAM,OAAO,cAAc,EAAE;AAC7B,MAAI,MAAM,WAAW;AACnB,MAAE,QAAQ,+GAA+G,EAAE,IAAI,QAAQ,KAAK,SAAS;AAAA,EACvJ;AACF;AAMO,SAAS,eAAe,IAAY,MAAiG;AAC1I,mBAAiB,IAAI,IAAI,IAAI;AAC7B,MAAI,gBAAgB,IAAI,EAAE,EAAG;AAC7B,kBAAgB,IAAI,IAAI,WAAW,MAAM;AACvC,oBAAgB,OAAO,EAAE;AACzB,UAAM,UAAU,iBAAiB,IAAI,EAAE;AACvC,QAAI,SAAS;AACX,YAAM,IAAI,SAAS;AACnB,UAAI,EAAG,GAAE,QAAQ,iFAAiF,EAAE,IAAI,KAAK,UAAU,OAAO,GAAG,EAAE;AACnI,uBAAiB,OAAO,EAAE;AAAA,IAC5B;AAAA,EACF,GAAG,GAAM,CAAC;AACZ;AAKO,SAAS,YAAY,MAA2B;AACrD,MAAI,CAAC,KAAK,WAAY,QAAO;AAC7B,MAAI,KAAK,eAAe,YAAY;AAClC,UAAM,OAAO,kBAAkB,KAAK,EAAE;AACtC,WAAO,KAAK,SAAS,KAAK,KAAK,MAAM,OAAK,EAAE,WAAW,UAAU,EAAE,WAAW,WAAW;AAAA,EAC3F;AACA,QAAM,SAAS,KAAK,WAAW,MAAM,GAAG,EAAE,IAAI,MAAM,EAAE,OAAO,OAAK,CAAC,MAAM,CAAC,CAAC;AAC3E,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,SAAO,OAAO,MAAM,QAAM;AACxB,UAAM,MAAM,cAAc,EAAE;AAC5B,WAAO,KAAK,WAAW,UAAU,KAAK,WAAW;AAAA,EACnD,CAAC;AACH;AAGO,SAAS,YAAY,UAAkB,cAAkC;AAC9E,aAAW,QAAQ,cAAc;AAC/B,QAAI,KAAK,WAAW,SAAU;AAC9B,QAAI,CAAC,KAAK,WAAY;AACtB,UAAM,OAAO,KAAK,WAAW,MAAM,GAAG,EAAE,IAAI,MAAM,EAAE,OAAO,OAAK,CAAC,MAAM,CAAC,CAAC;AACzE,QAAI,KAAK,SAAS,QAAQ,GAAG;AAC3B,iBAAW,KAAK,IAAI,aAAa,QAAQ,SAAS;AAClD,kBAAY,KAAK,IAAI,YAAY;AAAA,IACnC;AAAA,EACF;AACF;AAtTA,IA8CI,KACA,cAiGE,aAyHA,iBACA;AA1QN;AAAA;AASA;AACA;AACA;AAuFA;AApDA,IAAI,MAAuB;AAC3B,IAAI,eAAe;AAiGnB,IAAM,cAAc;AAyHpB,IAAM,kBAAkB,oBAAI,IAA2C;AACvE,IAAM,mBAAmB,oBAAI,IAAqC;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_log_and_swallow,
|
|
5
5
|
logAndSwallow
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-W2PSVV2T.js";
|
|
7
7
|
import {
|
|
8
8
|
init_logger,
|
|
9
9
|
logDebug,
|
|
10
10
|
logInfo
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-6S3G6GPO.js";
|
|
12
12
|
|
|
13
13
|
// src/components/stt.ts
|
|
14
14
|
init_logger();
|
|
@@ -56,4 +56,4 @@ export {
|
|
|
56
56
|
LANGUAGE_HINT_PROMPT,
|
|
57
57
|
transcribeAudio
|
|
58
58
|
};
|
|
59
|
-
//# sourceMappingURL=chunk-
|
|
59
|
+
//# sourceMappingURL=chunk-UU3RLJSD.js.map
|
|
@@ -3,16 +3,20 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logInfo
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6S3G6GPO.js";
|
|
7
|
+
import {
|
|
8
|
+
init_paths,
|
|
9
|
+
resolveReleasesDir
|
|
10
|
+
} from "./chunk-2BXXQG7P.js";
|
|
7
11
|
import {
|
|
8
12
|
__require
|
|
9
13
|
} from "./chunk-7K2YZTLD.js";
|
|
10
14
|
|
|
11
15
|
// src/cli/deploy-lib/reconcile.ts
|
|
12
16
|
init_logger();
|
|
17
|
+
init_paths();
|
|
13
18
|
import { existsSync, mkdirSync, rmSync, cpSync, copyFileSync, readdirSync, statSync, readFileSync, writeFileSync } from "node:fs";
|
|
14
19
|
import { join, dirname, relative } from "node:path";
|
|
15
|
-
import { homedir } from "node:os";
|
|
16
20
|
var TAG = "reconcile";
|
|
17
21
|
var OVERWRITE = [
|
|
18
22
|
["skills"],
|
|
@@ -24,7 +28,7 @@ var SEED = ["config", "tasks"];
|
|
|
24
28
|
var LEGACY_CLEANUP = ["core/prompts", "core"];
|
|
25
29
|
function reconcile(templatesSrc, home) {
|
|
26
30
|
if (!existsSync(templatesSrc)) {
|
|
27
|
-
const fallback = join(
|
|
31
|
+
const fallback = join(resolveReleasesDir(), "src", "abtars", "templates");
|
|
28
32
|
if (existsSync(fallback)) {
|
|
29
33
|
return reconcile(fallback, home);
|
|
30
34
|
}
|
|
@@ -73,8 +77,8 @@ function walkFiles(dir) {
|
|
|
73
77
|
function migrate(home) {
|
|
74
78
|
const oldLib = join(home, "lib");
|
|
75
79
|
if (existsSync(join(oldLib, "node_modules"))) {
|
|
76
|
-
const { homedir
|
|
77
|
-
const newDeps = join(
|
|
80
|
+
const { homedir } = __require("node:os");
|
|
81
|
+
const newDeps = join(homedir(), ".abtars-releases", "deps");
|
|
78
82
|
if (!existsSync(newDeps)) {
|
|
79
83
|
const { renameSync } = __require("node:fs");
|
|
80
84
|
renameSync(oldLib, newDeps);
|
|
@@ -98,4 +102,4 @@ export {
|
|
|
98
102
|
reconcile,
|
|
99
103
|
migrate
|
|
100
104
|
};
|
|
101
|
-
//# sourceMappingURL=chunk-
|
|
105
|
+
//# sourceMappingURL=chunk-V7Y2LFO4.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli/deploy-lib/reconcile.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * reconcile.ts \u2014 Guarantee correct runtime tree after deploy/restore.\n * OVERWRITE: source-controlled dirs (always replaced from templates).\n * SEED: user-owned files (created if missing, never overwritten).\n */\n\nimport { existsSync, mkdirSync, rmSync, cpSync, copyFileSync, readdirSync, statSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join, dirname, relative } from \"node:path\";\nimport { logInfo } from \"../../components/logger.js\";\nimport { resolveReleasesDir } from \"./paths.js\";\n\nconst TAG = \"reconcile\";\n\n/** Dirs under templates/ that are always overwritten (source-controlled). */\nconst OVERWRITE: string[][] = [\n [\"skills\"], // templates/skills/ \u2192 ~/.abtars/skills/core/\n [\"prompts\"], // templates/prompts/ \u2192 ~/.abtars/prompts/\n];\n\n/** Dirs under templates/ that are seeded file-by-file (skip existing). */\nconst SEED = [\"config\", \"tasks\"];\n\n/** Legacy paths to remove (one-time cleanup, idempotent). */\nconst LEGACY_CLEANUP = [\"core/prompts\", \"core\"];\n\n/**\n * Reconcile runtime tree from templates source.\n * @param templatesSrc - Path to templates/ (from deployed release or source checkout)\n * @param home - Path to ~/.abtars/\n */\nexport function reconcile(templatesSrc: string, home: string): void {\n if (!existsSync(templatesSrc)) {\n // Fallback: try source checkout\n const fallback = join(resolveReleasesDir(), \"src\", \"abtars\", \"templates\");\n if (existsSync(fallback)) {\n return reconcile(fallback, home);\n }\n logInfo(TAG, `Templates not found at ${templatesSrc} \u2014 skipping`);\n return;\n }\n\n // --- OVERWRITE: source-controlled dirs ---\n for (const parts of OVERWRITE) {\n const src = join(templatesSrc, ...parts);\n // skills \u2192 ~/.abtars/skills/core/ (preserve custom/, self/)\n // prompts \u2192 ~/.abtars/prompts/\n const dst = parts[0] === \"skills\"\n ? join(home, \"skills\", \"core\")\n : join(home, ...parts);\n if (!existsSync(src)) continue;\n rmSync(dst, { recursive: true, force: true });\n mkdirSync(dirname(dst), { recursive: true });\n cpSync(src, dst, { recursive: true });\n }\n logInfo(TAG, \"Overwrite: skills/core, prompts\");\n\n // --- SEED: user-owned files (create if missing) ---\n let seeded = 0;\n for (const dir of SEED) {\n const src = join(templatesSrc, dir);\n if (!existsSync(src)) continue;\n for (const f of walkFiles(src)) {\n const rel = relative(src, f);\n const dst = join(home, dir, rel);\n if (existsSync(dst)) continue;\n mkdirSync(dirname(dst), { recursive: true });\n copyFileSync(f, dst);\n seeded++;\n }\n }\n if (seeded > 0) logInfo(TAG, `Seeded ${seeded} missing config/task file(s)`);\n\n // --- Legacy cleanup (remove old paths, idempotent) ---\n for (const rel of LEGACY_CLEANUP) {\n const p = join(home, rel);\n if (!existsSync(p)) continue;\n rmSync(p, { recursive: true, force: true });\n logInfo(TAG, `Removed legacy: ${rel}`);\n }\n}\n\n/** Recursively list all files under a directory. */\nfunction walkFiles(dir: string): string[] {\n const results: string[] = [];\n for (const entry of readdirSync(dir)) {\n const full = join(dir, entry);\n if (statSync(full).isDirectory()) results.push(...walkFiles(full));\n else results.push(full);\n }\n return results;\n}\n\n/** Config format migrations (idempotent). */\nexport function migrate(home: string): void {\n // #1185: move ~/.abtars/lib/ \u2192 ~/.abtars-releases/deps/\n const oldLib = join(home, \"lib\");\n if (existsSync(join(oldLib, \"node_modules\"))) {\n const { homedir } = require(\"node:os\");\n const newDeps = join(homedir(), \".abtars-releases\", \"deps\");\n if (!existsSync(newDeps)) {\n const { renameSync } = require(\"node:fs\");\n renameSync(oldLib, newDeps);\n logInfo(TAG, \"Migrated: ~/.abtars/lib/ \u2192 ~/.abtars-releases/deps/\");\n } else {\n rmSync(oldLib, { recursive: true, force: true });\n logInfo(TAG, \"Removed: ~/.abtars/lib/ (deps already at new location)\");\n }\n }\n\n // irc-secure-to-signed: rename \"secure\" \u2192 \"signed\" in irc.json\n const ircPath = join(home, \"config\", \"irc.json\");\n if (existsSync(ircPath)) {\n const content = readFileSync(ircPath, \"utf-8\");\n if (content.includes('\"secure\"')) {\n writeFileSync(ircPath, content.replace(/\"secure\"/g, '\"signed\"'));\n logInfo(TAG, \"Migrated: irc-secure-to-signed\");\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
logError,
|
|
6
6
|
logTrace,
|
|
7
7
|
logWarn
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6S3G6GPO.js";
|
|
9
9
|
import {
|
|
10
10
|
__esm
|
|
11
11
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -29,4 +29,4 @@ export {
|
|
|
29
29
|
logAndSwallow,
|
|
30
30
|
init_log_and_swallow
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-W2PSVV2T.js.map
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { createRequire as __bundleCreateRequire } from 'node:module'; import { fileURLToPath as __bundleFileURLToPath } from 'node:url'; import { dirname as __bundleDirname } from 'node:path'; const require = __bundleCreateRequire(import.meta.url); const __chunk_filename = __bundleFileURLToPath(import.meta.url); const __chunk_dirname = __bundleDirname(__chunk_filename);
|
|
3
3
|
import {
|
|
4
4
|
sendToMainChat
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-R23FHZRY.js";
|
|
6
6
|
import {
|
|
7
7
|
init_log_and_swallow,
|
|
8
8
|
logAndSwallow
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-W2PSVV2T.js";
|
|
10
10
|
|
|
11
11
|
// src/components/notification.ts
|
|
12
12
|
init_log_and_swallow();
|
|
@@ -21,4 +21,4 @@ function sendNotification(ctx, msg) {
|
|
|
21
21
|
export {
|
|
22
22
|
sendNotification
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
24
|
+
//# sourceMappingURL=chunk-WEGFRA6G.js.map
|