abtars 0.3.4-alpha.8 → 0.3.4
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-YP5GLSG7.js → _registry.generated-AVR7DK2A.js} +15 -15
- package/bundle/{abmind-lazy-7Z44NODV.js → abmind-lazy-E3YCFKQ5.js} +15 -5
- package/bundle/abtars-browser.js +4 -4
- package/bundle/abtars-cli.js +23 -13
- package/bundle/abtars-cli.js.map +2 -2
- package/bundle/abtars-restart.js +3 -3
- package/bundle/abtars-task.js +3 -3
- package/bundle/abtars.js +385 -466
- package/bundle/abtars.js.map +4 -4
- package/bundle/{acp-raw-client-E6FM45NC.js → acp-raw-client-UCNK3OTU.js} +2 -2
- package/bundle/{action-gate-G2V47NHW.js → action-gate-V4FCBHFB.js} +2 -2
- package/bundle/{agent-api-adapter-WRGEQ6DV.js → agent-api-adapter-7HEPYSIN.js} +3 -3
- package/bundle/{agent-api-rate-limit-WCFXJMGY.js → agent-api-rate-limit-RZSAM3SW.js} +4 -4
- package/bundle/{agent-registry-GHNG2PH3.js → agent-registry-46A2R5KP.js} +7 -7
- package/bundle/{bootstrap-PZIDBPEJ.js → bootstrap-MIHJJSWU.js} +2 -2
- package/bundle/{bridge-lock-transport-4ZH7QTJP.js → bridge-lock-transport-7RSN7OLJ.js} +4 -4
- package/bundle/{browser-D3LZV7ZK.js → browser-F6BCWJWW.js} +6 -6
- package/bundle/{budget-45QOBDWA.js → budget-WUM3SPKW.js} +3 -3
- package/bundle/{capability-JFWX3IQF.js → capability-QVRKGRFC.js} +5 -5
- package/bundle/{chunk-YSKCQH6E.js → chunk-2IYJ4I66.js} +2 -2
- package/bundle/{chunk-W2R2HFOQ.js → chunk-2NLUT5S2.js} +6 -6
- package/bundle/chunk-3BG3AIDP.js +191 -0
- package/bundle/chunk-3BG3AIDP.js.map +7 -0
- package/bundle/{chunk-OKAQICWY.js → chunk-3GQX34S2.js} +3 -3
- package/bundle/{chunk-QROWBWLL.js → chunk-3XZ773BS.js} +2 -2
- package/bundle/{chunk-DYBW4XXL.js → chunk-467SRLLR.js} +2 -2
- package/bundle/{chunk-374NCXFZ.js → chunk-4AILRHUI.js} +10 -8
- package/bundle/chunk-4AILRHUI.js.map +7 -0
- package/bundle/{chunk-GPZNXY2U.js → chunk-4S3H4OK7.js} +4 -4
- package/bundle/{chunk-NDCRWEEJ.js → chunk-4Y5MJQRE.js} +6 -6
- package/bundle/{chunk-FRKW6LWB.js → chunk-55UWKI5C.js} +3 -3
- package/bundle/{chunk-7JN2MMU7.js → chunk-5PNJFDSW.js} +8 -8
- package/bundle/{chunk-LUNA6PM5.js → chunk-5RVOEFGT.js} +4 -2
- package/bundle/{chunk-LUNA6PM5.js.map → chunk-5RVOEFGT.js.map} +2 -2
- package/bundle/{chunk-OXTSWQCX.js → chunk-5Y3FJ2Y7.js} +2 -2
- package/bundle/{chunk-TMUYFERL.js → chunk-6B5ZFUPD.js} +2 -2
- package/bundle/{chunk-65VCEC32.js → chunk-6PA5JBUU.js} +2 -2
- package/bundle/{chunk-C7K6VZNY.js → chunk-BNXV7SZI.js} +21 -12
- package/bundle/chunk-BNXV7SZI.js.map +7 -0
- package/bundle/{chunk-AFREM7FX.js → chunk-CK7YTA2F.js} +2 -2
- package/bundle/{chunk-NRUSRJXR.js → chunk-DZJ5QZFD.js} +2 -2
- package/bundle/{chunk-YRSMGJFP.js → chunk-E67KESEG.js} +2 -2
- package/bundle/{chunk-ZV4IWKDJ.js → chunk-E7XD5UGB.js} +3 -3
- package/bundle/{chunk-CXXU3HAU.js → chunk-EAX5ZZUL.js} +63 -39
- package/bundle/chunk-EAX5ZZUL.js.map +7 -0
- package/bundle/{chunk-PEDX56EL.js → chunk-EFGBM555.js} +2 -2
- package/bundle/{chunk-EQSG2CRM.js → chunk-FGYDIX54.js} +22 -15
- package/bundle/chunk-FGYDIX54.js.map +7 -0
- package/bundle/{chunk-YPAQEQSC.js → chunk-GF6NVNA7.js} +15 -5
- package/bundle/chunk-GF6NVNA7.js.map +7 -0
- package/bundle/{chunk-UNM3OXHB.js → chunk-HGSHCQ5F.js} +110 -72
- package/bundle/{chunk-UNM3OXHB.js.map → chunk-HGSHCQ5F.js.map} +2 -2
- package/bundle/{chunk-VXCETPZU.js → chunk-IMIGG5EO.js} +39 -39
- package/bundle/chunk-IMIGG5EO.js.map +7 -0
- package/bundle/{chunk-P2K2K6XL.js → chunk-ITOFPJAV.js} +44 -32
- package/bundle/chunk-ITOFPJAV.js.map +7 -0
- package/bundle/{chunk-75ATTOW4.js → chunk-IY6UKLPS.js} +3 -3
- package/bundle/{chunk-EUZDKV3C.js → chunk-J4RUFAPK.js} +3 -3
- package/bundle/{chunk-HZDLFLRP.js → chunk-J7DRPVMU.js} +35 -5
- package/bundle/chunk-J7DRPVMU.js.map +7 -0
- package/bundle/{chunk-EGL6UMAO.js → chunk-JG4BKXBN.js} +7 -1
- package/bundle/chunk-JG4BKXBN.js.map +7 -0
- package/bundle/{chunk-N4EB6LA7.js → chunk-JLWYPGWI.js} +5 -5
- package/bundle/{chunk-5QUTMUIK.js → chunk-JXYWDAHD.js} +12 -12
- package/bundle/{chunk-GRVWZO4C.js → chunk-KOSFXW2S.js} +24 -3
- package/bundle/{chunk-GRVWZO4C.js.map → chunk-KOSFXW2S.js.map} +1 -1
- package/bundle/{chunk-M3JEX6L4.js → chunk-L72RIPEC.js} +9 -9
- package/bundle/{chunk-TEFZ4JA4.js → chunk-NHPLD3C7.js} +2 -2
- package/bundle/{chunk-2KC5G3EA.js → chunk-OWUO5RS3.js} +5 -5
- package/bundle/{chunk-4MULJ5SS.js → chunk-OY4Q6AMY.js} +71 -49
- package/bundle/chunk-OY4Q6AMY.js.map +7 -0
- package/bundle/{chunk-WBTJ2E62.js → chunk-P3NODAHF.js} +2 -5
- package/bundle/{chunk-WBTJ2E62.js.map → chunk-P3NODAHF.js.map} +2 -2
- package/bundle/{chunk-SMPHE3ZM.js → chunk-PB5GF4FG.js} +215 -163
- package/bundle/chunk-PB5GF4FG.js.map +7 -0
- package/bundle/{chunk-WYHGNI56.js → chunk-PMD5BLFS.js} +6 -6
- package/bundle/{chunk-URQPDCK5.js → chunk-Q66LQMMZ.js} +3 -3
- package/bundle/{chunk-IHYKTDIP.js → chunk-SC2Y5NR2.js} +36 -119
- package/bundle/chunk-SC2Y5NR2.js.map +7 -0
- package/bundle/chunk-SFL4EPCZ.js +555 -0
- package/bundle/chunk-SFL4EPCZ.js.map +7 -0
- package/bundle/{chunk-LDUOOKQY.js → chunk-SJPUNDZ3.js} +5 -5
- package/bundle/{chunk-LDUOOKQY.js.map → chunk-SJPUNDZ3.js.map} +1 -1
- package/bundle/{chunk-JQDJPUHM.js → chunk-TWB2ZGVH.js} +2 -2
- package/bundle/{chunk-IJT4KWXT.js → chunk-U4U47YE7.js} +2 -2
- package/bundle/{chunk-2FAZIA37.js → chunk-W546CU3A.js} +3 -3
- package/bundle/chunk-WC5O5KOE.js +211 -0
- package/bundle/chunk-WC5O5KOE.js.map +7 -0
- package/bundle/{chunk-JNIHEDKF.js → chunk-XPWYDNWL.js} +2 -2
- package/bundle/{chunk-GWILHZPT.js → chunk-XRTXYN66.js} +10 -7
- package/bundle/{chunk-GWILHZPT.js.map → chunk-XRTXYN66.js.map} +2 -2
- package/bundle/{chunk-EFJVUJBE.js → chunk-Y5FEFKGM.js} +6 -6
- package/bundle/chunk-YJZE4OK3.js +169 -0
- package/bundle/chunk-YJZE4OK3.js.map +7 -0
- package/bundle/{chunk-GVM5YU5I.js → chunk-Z4FZPB42.js} +2 -2
- package/bundle/{chunk-7BSQ5UQO.js → chunk-ZSIDQ66D.js} +3 -3
- package/bundle/{chunk-XX6BGTPO.js → chunk-ZZZCJJEO.js} +4 -4
- package/bundle/{commands-OIISYHTD.js → commands-2ZW6CMLC.js} +17 -16
- package/bundle/{config-M3P5IOAI.js → config-YMY5YHKN.js} +6 -6
- package/bundle/{context-2RJHC2LE.js → context-CL2RSLII.js} +7 -5
- package/bundle/context-CL2RSLII.js.map +7 -0
- package/bundle/{daemon-TB23FFWY.js → daemon-D7SU63OY.js} +3 -3
- package/bundle/{delegation-tools-YATZFKYO.js → delegation-tools-WS7Z56KZ.js} +12 -12
- package/bundle/{deploy-T6R45OZJ.js → deploy-AMTVKIMU.js} +2 -2
- package/bundle/{deps-WVK553KF.js → deps-T63AVJKJ.js} +3 -3
- package/bundle/{direct-api-transport-S2RDH2I7.js → direct-api-transport-QNNY2WWP.js} +51 -32
- package/bundle/direct-api-transport-QNNY2WWP.js.map +7 -0
- package/bundle/{discord-adapter-UTXUWX3A.js → discord-adapter-ABAD56Y2.js} +21 -20
- package/bundle/{discord-adapter-UTXUWX3A.js.map → discord-adapter-ABAD56Y2.js.map} +1 -1
- package/bundle/{dns-wakeup-IDOJIXBX.js → dns-wakeup-V3LEFXPE.js} +9 -33
- package/bundle/dns-wakeup-V3LEFXPE.js.map +7 -0
- package/bundle/{doctor-probes-B54JFIW3.js → doctor-probes-O6YI6XSZ.js} +6 -2
- package/bundle/{env-schema-4JXQUOH4.js → env-schema-B5RB32DC.js} +3 -3
- package/bundle/{gossip-3C3BSNPN.js → gossip-SKRCPOBS.js} +9 -5
- package/bundle/{guardrails-DL7ZSWVN.js → guardrails-64GQ5Y5K.js} +4 -4
- package/bundle/{heartbeat-system-MVTRS4GP.js → heartbeat-system-X4MUTKJD.js} +6 -6
- package/bundle/{heartbeat-tier3-6KH45CL6.js → heartbeat-tier3-2PTPWEQQ.js} +53 -76
- package/bundle/heartbeat-tier3-2PTPWEQQ.js.map +7 -0
- package/bundle/{hook-system-M3POLUIB.js → hook-system-YB635OC4.js} +3 -3
- package/bundle/{hotskills-FWX4QI7V.js → hotskills-Q75D2DK3.js} +5 -5
- package/bundle/{install-OS3CU7NF.js → install-RFKKFSGS.js} +17 -30
- package/bundle/install-RFKKFSGS.js.map +7 -0
- package/bundle/{install-manifest-5PPWMD2W.js → install-manifest-J7ICPCJN.js} +2 -2
- package/bundle/{irc-adapter-PTTZD32W.js → irc-adapter-TVEV4R6H.js} +3 -3
- package/bundle/{irc-config-CP7ZMUOX.js → irc-config-M676FOFI.js} +4 -4
- package/bundle/{kanban-board-M326B2XJ.js → kanban-board-DLEJUCNN.js} +9 -7
- package/bundle/{kanban-channel-IJ52OMNA.js → kanban-channel-XOLUHJZJ.js} +6 -6
- package/bundle/kanban-delivery-C4QPBNPX.js +45 -0
- package/bundle/kanban-delivery-C4QPBNPX.js.map +7 -0
- package/bundle/{lazy-require-KCRVT4SI.js → lazy-require-JKQSALXN.js} +3 -3
- package/bundle/{logger-OWCSNYCA.js → logger-3EGHBD4R.js} +2 -2
- package/bundle/{main-chat-ZNUZCTNS.js → main-chat-3H63REKK.js} +4 -4
- package/bundle/{master-user-HSKM4ZFN.js → master-user-MUBUP3KD.js} +5 -5
- package/bundle/{media-utils-3ZYOD7SK.js → media-utils-HUUIALAJ.js} +3 -3
- package/bundle/{message-pipeline-AUIUNM5R.js → message-pipeline-GRDRWONR.js} +17 -16
- package/bundle/meta.json +2773 -2241
- package/bundle/{metrics-collector-L3VPEHII.js → metrics-collector-YMUGY3PI.js} +31 -2
- package/bundle/metrics-collector-YMUGY3PI.js.map +7 -0
- package/bundle/{model-health-registry-MLEIZSTV.js → model-health-registry-QADMFQFQ.js} +2 -2
- package/bundle/{nerve-IGSXBKZZ.js → nerve-QPAEBRKX.js} +3 -3
- package/bundle/{notification-BFSIEECG.js → notification-3JICGXWU.js} +6 -6
- package/bundle/{openrouter-credits-NTVZDRYM.js → openrouter-credits-7NEIPYJN.js} +3 -3
- package/bundle/{orc-tools-TOD4WHTM.js → orc-tools-UZVPONKY.js} +5 -3
- package/bundle/{peer-auth-QC4EF2PM.js → peer-auth-RI43DKJE.js} +24 -15
- package/bundle/{peer-client-RGEU5HOK.js → peer-client-UITTMWJ2.js} +34 -29
- package/bundle/peer-client-UITTMWJ2.js.map +7 -0
- package/bundle/{peer-config-TN55LFDC.js → peer-config-URM7DCW6.js} +9 -4
- package/bundle/{peer-transport-5VKK2I7P.js → peer-transport-SI7I72DB.js} +12 -10
- package/bundle/{phase-transport-FS6NL4A5.js → phase-transport-ESWWACZI.js} +17 -17
- package/bundle/{reconcile-CTFCLQRN.js → reconcile-GFDQYNBD.js} +3 -3
- package/bundle/{reconciler-NZ4O4BCP.js → reconciler-IEUJXJN2.js} +12 -12
- package/bundle/{restore-IFHPI7I7.js → restore-FARTGLQQ.js} +3 -3
- package/bundle/{rollback-ANRI3T5Z.js → rollback-GEWPZABG.js} +2 -2
- package/bundle/{sandbox-runtime-QROWHDCS.js → sandbox-runtime-DV6E25J6.js} +2 -2
- package/bundle/{self-healer-utils-IFAYOQO2.js → self-healer-utils-P4SKNNEM.js} +3 -3
- package/bundle/{sha-tracker-ZWBP6CIJ.js → sha-tracker-77SHLYNY.js} +3 -3
- package/bundle/{skill-session-VJXTKOKL.js → skill-session-5HSMXY54.js} +3 -3
- package/bundle/{skill-stats-JORH5DGM.js → skill-stats-MI3RSWWL.js} +4 -4
- package/bundle/{skill-watcher-E4MGLKLS.js → skill-watcher-5L7JE6TN.js} +4 -4
- package/bundle/{sleep-BEWAUFCL.js → sleep-I4JFASCY.js} +11 -11
- package/bundle/{soul-bundle-VWAVHCZ6.js → soul-bundle-522C3IRH.js} +9 -8
- package/bundle/{spin-E3ZDEDKT.js → spin-VHNGNWTD.js} +11 -11
- package/bundle/{spin-notifications-SE2HVZI7.js → spin-notifications-7NC5XZEM.js} +5 -5
- package/bundle/{spin-types-OIE67MJK.js → spin-types-C5KOQOPD.js} +7 -3
- package/bundle/{sse-parser-anthropic-A6R4Z2TB.js → sse-parser-anthropic-MMTVWHLI.js} +3 -3
- package/bundle/{sse-parser-responses-HSZY3QGJ.js → sse-parser-responses-3AOFN64C.js} +3 -3
- package/bundle/{ssrf-guard-O6SHIK6Q.js → ssrf-guard-U2JA72TC.js} +3 -3
- package/bundle/{start-7QZIWO3S.js → start-H5IUFAWF.js} +4 -2
- package/bundle/{start-7QZIWO3S.js.map → start-H5IUFAWF.js.map} +2 -2
- package/bundle/{stt-LGVPXMVR.js → stt-PSOPPBV4.js} +4 -4
- package/bundle/{system-status-FAVNIUFJ.js → system-status-4LYGOFNO.js} +38 -24
- package/bundle/system-status-4LYGOFNO.js.map +7 -0
- package/bundle/{task-store-W5BFIAIH.js → task-store-MNCW42BW.js} +4 -4
- package/bundle/{telegram-adapter-4TX7QWKC.js → telegram-adapter-O6KIZDY6.js} +62 -45
- package/bundle/telegram-adapter-O6KIZDY6.js.map +7 -0
- package/bundle/{tool-registry-7FK3OQGL.js → tool-registry-JJMWCQKZ.js} +26 -24
- package/bundle/{tool-sandbox-4UC6GAKA.js → tool-sandbox-CNL6V6IH.js} +4 -4
- package/bundle/{transport-config-KBF5W2DP.js → transport-config-6MB2K2XC.js} +7 -7
- package/bundle/tribe-GDTFYJTK.js +111 -0
- package/bundle/tribe-GDTFYJTK.js.map +7 -0
- package/bundle/{update-CKFP6LBE.js → update-HGQAOC5L.js} +3 -3
- package/bundle/{usage-tracker-NXD364VX.js → usage-tracker-SR4BI6ZT.js} +2 -2
- package/bundle/{user-registry-35BW4XKM.js → user-registry-4PACZJIJ.js} +4 -4
- package/bundle/wire-platform-KKPWNNNQ.js +88 -0
- package/bundle/wire-platform-KKPWNNNQ.js.map +7 -0
- package/bundle/ws-peer-client-U3NNPOK7.js +370 -0
- package/bundle/ws-peer-client-U3NNPOK7.js.map +7 -0
- package/package.json +1 -1
- package/scripts/abtars-watchdog.sh +1 -5
- package/scripts/emergency-deploy.sh +2 -2
- package/scripts/emergency-update.sh +36 -37
- package/bundle/chunk-374NCXFZ.js.map +0 -7
- package/bundle/chunk-4MULJ5SS.js.map +0 -7
- package/bundle/chunk-4S554KLW.js +0 -105
- package/bundle/chunk-4S554KLW.js.map +0 -7
- package/bundle/chunk-C7K6VZNY.js.map +0 -7
- package/bundle/chunk-CXXU3HAU.js.map +0 -7
- package/bundle/chunk-EGL6UMAO.js.map +0 -7
- package/bundle/chunk-EQSG2CRM.js.map +0 -7
- package/bundle/chunk-HT2BPTZY.js +0 -241
- package/bundle/chunk-HT2BPTZY.js.map +0 -7
- package/bundle/chunk-HZDLFLRP.js.map +0 -7
- package/bundle/chunk-IHYKTDIP.js.map +0 -7
- package/bundle/chunk-IKUZPMVA.js +0 -82
- package/bundle/chunk-IKUZPMVA.js.map +0 -7
- package/bundle/chunk-P2K2K6XL.js.map +0 -7
- package/bundle/chunk-PU5HSKWH.js +0 -257
- package/bundle/chunk-PU5HSKWH.js.map +0 -7
- package/bundle/chunk-RWRRGE4U.js +0 -72
- package/bundle/chunk-RWRRGE4U.js.map +0 -7
- package/bundle/chunk-SMPHE3ZM.js.map +0 -7
- package/bundle/chunk-VUIX5AGB.js +0 -65
- package/bundle/chunk-VUIX5AGB.js.map +0 -7
- package/bundle/chunk-VXCETPZU.js.map +0 -7
- package/bundle/chunk-YPAQEQSC.js.map +0 -7
- package/bundle/context-2RJHC2LE.js.map +0 -7
- package/bundle/direct-api-transport-S2RDH2I7.js.map +0 -7
- package/bundle/dns-wakeup-IDOJIXBX.js.map +0 -7
- package/bundle/heartbeat-tier3-6KH45CL6.js.map +0 -7
- package/bundle/install-OS3CU7NF.js.map +0 -7
- package/bundle/metrics-collector-L3VPEHII.js.map +0 -7
- package/bundle/peer-client-RGEU5HOK.js.map +0 -7
- package/bundle/peer-jwt-NCCPXJRX.js +0 -18
- package/bundle/stream-single-RFJNUTL6.js +0 -34
- package/bundle/stream-single-RFJNUTL6.js.map +0 -7
- package/bundle/system-status-FAVNIUFJ.js.map +0 -7
- package/bundle/telegram-adapter-4TX7QWKC.js.map +0 -7
- package/bundle/user-registry-35BW4XKM.js.map +0 -7
- package/bundle/ws-peer-client-AIXCXF7V.js +0 -173
- package/bundle/ws-peer-client-AIXCXF7V.js.map +0 -7
- /package/bundle/{_registry.generated-YP5GLSG7.js.map → _registry.generated-AVR7DK2A.js.map} +0 -0
- /package/bundle/{abmind-lazy-7Z44NODV.js.map → abmind-lazy-E3YCFKQ5.js.map} +0 -0
- /package/bundle/{acp-raw-client-E6FM45NC.js.map → acp-raw-client-UCNK3OTU.js.map} +0 -0
- /package/bundle/{action-gate-G2V47NHW.js.map → action-gate-V4FCBHFB.js.map} +0 -0
- /package/bundle/{agent-api-adapter-WRGEQ6DV.js.map → agent-api-adapter-7HEPYSIN.js.map} +0 -0
- /package/bundle/{agent-api-rate-limit-WCFXJMGY.js.map → agent-api-rate-limit-RZSAM3SW.js.map} +0 -0
- /package/bundle/{agent-registry-GHNG2PH3.js.map → agent-registry-46A2R5KP.js.map} +0 -0
- /package/bundle/{bootstrap-PZIDBPEJ.js.map → bootstrap-MIHJJSWU.js.map} +0 -0
- /package/bundle/{bridge-lock-transport-4ZH7QTJP.js.map → bridge-lock-transport-7RSN7OLJ.js.map} +0 -0
- /package/bundle/{browser-D3LZV7ZK.js.map → browser-F6BCWJWW.js.map} +0 -0
- /package/bundle/{budget-45QOBDWA.js.map → budget-WUM3SPKW.js.map} +0 -0
- /package/bundle/{capability-JFWX3IQF.js.map → capability-QVRKGRFC.js.map} +0 -0
- /package/bundle/{chunk-YSKCQH6E.js.map → chunk-2IYJ4I66.js.map} +0 -0
- /package/bundle/{chunk-W2R2HFOQ.js.map → chunk-2NLUT5S2.js.map} +0 -0
- /package/bundle/{chunk-OKAQICWY.js.map → chunk-3GQX34S2.js.map} +0 -0
- /package/bundle/{chunk-QROWBWLL.js.map → chunk-3XZ773BS.js.map} +0 -0
- /package/bundle/{chunk-DYBW4XXL.js.map → chunk-467SRLLR.js.map} +0 -0
- /package/bundle/{chunk-GPZNXY2U.js.map → chunk-4S3H4OK7.js.map} +0 -0
- /package/bundle/{chunk-NDCRWEEJ.js.map → chunk-4Y5MJQRE.js.map} +0 -0
- /package/bundle/{chunk-FRKW6LWB.js.map → chunk-55UWKI5C.js.map} +0 -0
- /package/bundle/{chunk-7JN2MMU7.js.map → chunk-5PNJFDSW.js.map} +0 -0
- /package/bundle/{chunk-OXTSWQCX.js.map → chunk-5Y3FJ2Y7.js.map} +0 -0
- /package/bundle/{chunk-TMUYFERL.js.map → chunk-6B5ZFUPD.js.map} +0 -0
- /package/bundle/{chunk-65VCEC32.js.map → chunk-6PA5JBUU.js.map} +0 -0
- /package/bundle/{chunk-AFREM7FX.js.map → chunk-CK7YTA2F.js.map} +0 -0
- /package/bundle/{chunk-NRUSRJXR.js.map → chunk-DZJ5QZFD.js.map} +0 -0
- /package/bundle/{chunk-YRSMGJFP.js.map → chunk-E67KESEG.js.map} +0 -0
- /package/bundle/{chunk-ZV4IWKDJ.js.map → chunk-E7XD5UGB.js.map} +0 -0
- /package/bundle/{chunk-PEDX56EL.js.map → chunk-EFGBM555.js.map} +0 -0
- /package/bundle/{chunk-75ATTOW4.js.map → chunk-IY6UKLPS.js.map} +0 -0
- /package/bundle/{chunk-EUZDKV3C.js.map → chunk-J4RUFAPK.js.map} +0 -0
- /package/bundle/{chunk-N4EB6LA7.js.map → chunk-JLWYPGWI.js.map} +0 -0
- /package/bundle/{chunk-5QUTMUIK.js.map → chunk-JXYWDAHD.js.map} +0 -0
- /package/bundle/{chunk-M3JEX6L4.js.map → chunk-L72RIPEC.js.map} +0 -0
- /package/bundle/{chunk-TEFZ4JA4.js.map → chunk-NHPLD3C7.js.map} +0 -0
- /package/bundle/{chunk-2KC5G3EA.js.map → chunk-OWUO5RS3.js.map} +0 -0
- /package/bundle/{chunk-WYHGNI56.js.map → chunk-PMD5BLFS.js.map} +0 -0
- /package/bundle/{chunk-URQPDCK5.js.map → chunk-Q66LQMMZ.js.map} +0 -0
- /package/bundle/{chunk-JQDJPUHM.js.map → chunk-TWB2ZGVH.js.map} +0 -0
- /package/bundle/{chunk-IJT4KWXT.js.map → chunk-U4U47YE7.js.map} +0 -0
- /package/bundle/{chunk-2FAZIA37.js.map → chunk-W546CU3A.js.map} +0 -0
- /package/bundle/{chunk-JNIHEDKF.js.map → chunk-XPWYDNWL.js.map} +0 -0
- /package/bundle/{chunk-EFJVUJBE.js.map → chunk-Y5FEFKGM.js.map} +0 -0
- /package/bundle/{chunk-GVM5YU5I.js.map → chunk-Z4FZPB42.js.map} +0 -0
- /package/bundle/{chunk-7BSQ5UQO.js.map → chunk-ZSIDQ66D.js.map} +0 -0
- /package/bundle/{chunk-XX6BGTPO.js.map → chunk-ZZZCJJEO.js.map} +0 -0
- /package/bundle/{commands-OIISYHTD.js.map → commands-2ZW6CMLC.js.map} +0 -0
- /package/bundle/{config-M3P5IOAI.js.map → config-YMY5YHKN.js.map} +0 -0
- /package/bundle/{daemon-TB23FFWY.js.map → daemon-D7SU63OY.js.map} +0 -0
- /package/bundle/{delegation-tools-YATZFKYO.js.map → delegation-tools-WS7Z56KZ.js.map} +0 -0
- /package/bundle/{deploy-T6R45OZJ.js.map → deploy-AMTVKIMU.js.map} +0 -0
- /package/bundle/{deps-WVK553KF.js.map → deps-T63AVJKJ.js.map} +0 -0
- /package/bundle/{doctor-probes-B54JFIW3.js.map → doctor-probes-O6YI6XSZ.js.map} +0 -0
- /package/bundle/{env-schema-4JXQUOH4.js.map → env-schema-B5RB32DC.js.map} +0 -0
- /package/bundle/{gossip-3C3BSNPN.js.map → gossip-SKRCPOBS.js.map} +0 -0
- /package/bundle/{guardrails-DL7ZSWVN.js.map → guardrails-64GQ5Y5K.js.map} +0 -0
- /package/bundle/{heartbeat-system-MVTRS4GP.js.map → heartbeat-system-X4MUTKJD.js.map} +0 -0
- /package/bundle/{hook-system-M3POLUIB.js.map → hook-system-YB635OC4.js.map} +0 -0
- /package/bundle/{hotskills-FWX4QI7V.js.map → hotskills-Q75D2DK3.js.map} +0 -0
- /package/bundle/{install-manifest-5PPWMD2W.js.map → install-manifest-J7ICPCJN.js.map} +0 -0
- /package/bundle/{irc-adapter-PTTZD32W.js.map → irc-adapter-TVEV4R6H.js.map} +0 -0
- /package/bundle/{irc-config-CP7ZMUOX.js.map → irc-config-M676FOFI.js.map} +0 -0
- /package/bundle/{kanban-board-M326B2XJ.js.map → kanban-board-DLEJUCNN.js.map} +0 -0
- /package/bundle/{kanban-channel-IJ52OMNA.js.map → kanban-channel-XOLUHJZJ.js.map} +0 -0
- /package/bundle/{lazy-require-KCRVT4SI.js.map → lazy-require-JKQSALXN.js.map} +0 -0
- /package/bundle/{logger-OWCSNYCA.js.map → logger-3EGHBD4R.js.map} +0 -0
- /package/bundle/{main-chat-ZNUZCTNS.js.map → main-chat-3H63REKK.js.map} +0 -0
- /package/bundle/{master-user-HSKM4ZFN.js.map → master-user-MUBUP3KD.js.map} +0 -0
- /package/bundle/{media-utils-3ZYOD7SK.js.map → media-utils-HUUIALAJ.js.map} +0 -0
- /package/bundle/{message-pipeline-AUIUNM5R.js.map → message-pipeline-GRDRWONR.js.map} +0 -0
- /package/bundle/{model-health-registry-MLEIZSTV.js.map → model-health-registry-QADMFQFQ.js.map} +0 -0
- /package/bundle/{nerve-IGSXBKZZ.js.map → nerve-QPAEBRKX.js.map} +0 -0
- /package/bundle/{notification-BFSIEECG.js.map → notification-3JICGXWU.js.map} +0 -0
- /package/bundle/{openrouter-credits-NTVZDRYM.js.map → openrouter-credits-7NEIPYJN.js.map} +0 -0
- /package/bundle/{orc-tools-TOD4WHTM.js.map → orc-tools-UZVPONKY.js.map} +0 -0
- /package/bundle/{peer-auth-QC4EF2PM.js.map → peer-auth-RI43DKJE.js.map} +0 -0
- /package/bundle/{peer-config-TN55LFDC.js.map → peer-config-URM7DCW6.js.map} +0 -0
- /package/bundle/{peer-jwt-NCCPXJRX.js.map → peer-transport-SI7I72DB.js.map} +0 -0
- /package/bundle/{peer-transport-5VKK2I7P.js.map → phase-transport-ESWWACZI.js.map} +0 -0
- /package/bundle/{phase-transport-FS6NL4A5.js.map → reconcile-GFDQYNBD.js.map} +0 -0
- /package/bundle/{reconciler-NZ4O4BCP.js.map → reconciler-IEUJXJN2.js.map} +0 -0
- /package/bundle/{restore-IFHPI7I7.js.map → restore-FARTGLQQ.js.map} +0 -0
- /package/bundle/{reconcile-CTFCLQRN.js.map → rollback-GEWPZABG.js.map} +0 -0
- /package/bundle/{sandbox-runtime-QROWHDCS.js.map → sandbox-runtime-DV6E25J6.js.map} +0 -0
- /package/bundle/{self-healer-utils-IFAYOQO2.js.map → self-healer-utils-P4SKNNEM.js.map} +0 -0
- /package/bundle/{rollback-ANRI3T5Z.js.map → sha-tracker-77SHLYNY.js.map} +0 -0
- /package/bundle/{skill-session-VJXTKOKL.js.map → skill-session-5HSMXY54.js.map} +0 -0
- /package/bundle/{sha-tracker-ZWBP6CIJ.js.map → skill-stats-MI3RSWWL.js.map} +0 -0
- /package/bundle/{skill-stats-JORH5DGM.js.map → skill-watcher-5L7JE6TN.js.map} +0 -0
- /package/bundle/{skill-watcher-E4MGLKLS.js.map → sleep-I4JFASCY.js.map} +0 -0
- /package/bundle/{sleep-BEWAUFCL.js.map → soul-bundle-522C3IRH.js.map} +0 -0
- /package/bundle/{soul-bundle-VWAVHCZ6.js.map → spin-VHNGNWTD.js.map} +0 -0
- /package/bundle/{spin-notifications-SE2HVZI7.js.map → spin-notifications-7NC5XZEM.js.map} +0 -0
- /package/bundle/{spin-E3ZDEDKT.js.map → spin-types-C5KOQOPD.js.map} +0 -0
- /package/bundle/{sse-parser-anthropic-A6R4Z2TB.js.map → sse-parser-anthropic-MMTVWHLI.js.map} +0 -0
- /package/bundle/{sse-parser-responses-HSZY3QGJ.js.map → sse-parser-responses-3AOFN64C.js.map} +0 -0
- /package/bundle/{ssrf-guard-O6SHIK6Q.js.map → ssrf-guard-U2JA72TC.js.map} +0 -0
- /package/bundle/{spin-types-OIE67MJK.js.map → stt-PSOPPBV4.js.map} +0 -0
- /package/bundle/{stt-LGVPXMVR.js.map → task-store-MNCW42BW.js.map} +0 -0
- /package/bundle/{task-store-W5BFIAIH.js.map → tool-registry-JJMWCQKZ.js.map} +0 -0
- /package/bundle/{tool-registry-7FK3OQGL.js.map → tool-sandbox-CNL6V6IH.js.map} +0 -0
- /package/bundle/{tool-sandbox-4UC6GAKA.js.map → transport-config-6MB2K2XC.js.map} +0 -0
- /package/bundle/{transport-config-KBF5W2DP.js.map → update-HGQAOC5L.js.map} +0 -0
- /package/bundle/{update-CKFP6LBE.js.map → usage-tracker-SR4BI6ZT.js.map} +0 -0
- /package/bundle/{usage-tracker-NXD364VX.js.map → user-registry-4PACZJIJ.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/capabilities/sleep/index.ts", "../src/capabilities/sleep/sleep-card.ts"],
|
|
4
|
+
"sourcesContent": ["import { logAndSwallow } from \"../../components/log-and-swallow.js\";\nimport { getEnv } from \"../../components/env-schema.js\";\nimport type { CapabilityApi } from \"../capability.js\";\n/**\n * Sleep capability \u2014 spawn nightly sleep cycle via tick system.\n * One path: BED_TIME + quiet ticks \u2192 Dreamy \u2192 quiet ticks \u2192 hardware sleep.\n * Parses PROGRESS:<pct>:<label> from stdout for visibility.\n */\n\nimport { execSync } from \"node:child_process\";\nimport { writeSleepStatus, readAndClearForceSleep } from \"../../components/transport/bridge-lock-transport.js\";\nimport { join } from \"node:path\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport type { Level } from \"abmind\";\nimport { abmind } from \"../../utils/abmind-lazy.js\";\nimport type { SleepRuntime } from \"abmind\";\nimport { logInfo, logWarn, logDebug } from \"../../components/logger.js\";\nimport { readEnv, readEnvWithDefault } from \"../../components/env.js\";\nimport { startSleepCard, type SleepCard } from \"./sleep-card.js\";\n\nexport interface SleepOpts {\n sleepHour: number;\n sleepAuditDir: string;\n memoryEnabled: boolean;\n memoryDir?: string;\n /** LLM runtime adapter \u2014 bridge wraps spin({ type: \"D\", ... }) (#1271). */\n runtime: SleepRuntime;\n onComplete: () => void;\n /** Always called once per cycle at the end \u2014 success, partial-failure, or throw.\n * Tears down the night Dreamy session (#1287). Distinct from onComplete, which\n * runs the memory reset only on the success path. Optional \u2014 sleep works without it. */\n onCycleEnd?: () => void;\n getLastMsgTs?: () => number;\n sendSystemMessage?: (prompt: string) => Promise<void>;\n killWakeInhibit?: () => void;\n /** Allocate a named Dreamy session upfront at sleep start (#1280).\n * Called before the first runtime.complete() so the session appears in /session\n * for the full duration of the cycle. Optional \u2014 sleep still works without it. */\n allocateSleepSession?: (name: string) => void;\n}\n\nexport interface SleepProgress {\n percent: number;\n step: string;\n}\n\nexport interface SleepHandle {\n /** True while a sleep cycle is running in-process. */\n readonly isActive: boolean;\n readonly progress: SleepProgress | null;\n readonly awaitingHwSleep: boolean;\n spawn(): void;\n /** Called by tick system to check if hardware sleep should fire. */\n checkHwSleep(): void;\n /** Force-clear isActive if no progress in 30min (#990). */\n checkStale(): void;\n}\n\nconst MAX_RETRIES = 3;\nconst RETRY_MS = 5 * 60 * 1000;\n\nexport function createSleepHandle(opts: SleepOpts): SleepHandle {\n let running = false;\n let attempts = 0;\n let progress: SleepProgress | null = null;\n let _awaitingHwSleep = false;\n // Post-Dreamy hw-sleep quiet-tick tracking (internal to this closure \u2014 decoupled from\n // daily-cycle.quietTickCount which freezes once hasSleepAuditToday returns true).\n // Both reset when _awaitingHwSleep flips to true (see the onComplete handler below).\n let postSleepQuietTicks = 0;\n let lastMsgTsSeenByHwCheck = 0;\n\n function buildDreamReport(): string {\n let dreamReport = \"Dreamy finished nightly maintenance.\";\n try {\n const sleepDir = join(opts.memoryDir ?? \"\", \"sleep\");\n const dateStr = new Date().toISOString().slice(0, 10).replace(/-/g, \"\");\n const lockPath = join(sleepDir, `sleep_${dateStr}.lock`);\n if (existsSync(lockPath)) {\n const lockData = JSON.parse(readFileSync(lockPath, \"utf-8\")) as { steps: Record<string, { status: string }>; llmCalls?: number };\n const ok = Object.entries(lockData.steps).filter(([, s]) => s.status === \"ok\").map(([k]) => k);\n const skipped = Object.entries(lockData.steps).filter(([, s]) => s.status === \"skipped\").map(([k]) => k);\n const failed = Object.entries(lockData.steps).filter(([, s]) => s.status === \"failed\" || s.status === \"timeout\").map(([k]) => k);\n dreamReport = `Dreamy finished nightly maintenance (${lockData.llmCalls ?? \"?\"} LLM calls). Completed: ${ok.join(\", \") || \"none\"}.`;\n if (skipped.length > 0) dreamReport += ` Skipped: ${skipped.join(\", \")}.`;\n if (failed.length > 0) dreamReport += ` \u26A0\uFE0F FAILED: ${failed.join(\", \")}. Please review.`;\n }\n } catch (err) { logAndSwallow(\"index\", \"op\", err); }\n return dreamReport;\n }\n\n function spawnSleep(): void {\n const forceSleep = readAndClearForceSleep();\n const forced = forceSleep !== null;\n if (forced) {\n logInfo(\"sleep\", `\u26A1 forceSleep=${forceSleep} \u2014 bypassing time-window + audit-today guards`);\n }\n\n if (!forced) {\n const hour = new Date().getHours();\n const WAKE_HOUR = parseInt(readEnvWithDefault(\"WAKE_TIME\", \"7\", \"wake hour\").split(\":\")[0] ?? \"7\", 10);\n if (opts.sleepHour <= WAKE_HOUR) {\n if (hour < opts.sleepHour || hour >= WAKE_HOUR) {\n logDebug(\"sleep\", `\uD83D\uDE34 Outside sleep window (${opts.sleepHour}:00-${WAKE_HOUR}:00) \u2014 skip`);\n return;\n }\n } else {\n if (hour < opts.sleepHour && hour >= WAKE_HOUR) {\n logDebug(\"sleep\", `\uD83D\uDE34 Outside sleep window (${opts.sleepHour}:00-${WAKE_HOUR}:00) \u2014 skip`);\n return;\n }\n }\n if (abmind()?.hasSleepAuditToday(opts.sleepAuditDir)) {\n logDebug(\"sleep\", \"\uD83D\uDE34 Sleep already done today \u2014 skip\");\n return;\n }\n }\n if (running) return;\n attempts++;\n progress = null;\n // Allocate the Dreamy session upfront so it appears in /session for the full cycle (#1280).\n if (opts.allocateSleepSession) {\n const dateStr = new Date().toISOString().slice(0, 10);\n opts.allocateSleepSession(`Sleep ${dateStr}`);\n }\n running = true;\n writeSleepStatus(\"sleeping\");\n logInfo(\"sleep\", `\uD83D\uDE34 Sleep started in-process (attempt ${attempts}, model=dreamy)`);\n\n const level = (() => {\n if (forced && forceSleep?.includes(\"fresh\")) return \"ultimate\" as Level;\n const raw = getEnv().sleepQuality;\n if (!raw) return abmind()!.DEFAULT_LEVEL;\n try { return abmind()!.parseLevel(raw); }\n catch (err) { logWarn(\"sleep\", `Invalid SLEEP_QUALITY='${raw}', using ${abmind()!.DEFAULT_LEVEL}: ${err instanceof Error ? err.message : String(err)}`); return abmind()!.DEFAULT_LEVEL; }\n })();\n\n let sleepCard: SleepCard | null = null;\n abmind()!.runSleepCycle({\n runtime: opts.runtime,\n level,\n fresh: forced && !!forceSleep?.includes(\"fresh\"),\n // #895: stepped card \u2014 created when the orchestrator commits to running steps,\n // ticked per step, completed once at cycle end (both success and failure paths).\n onCycleStart: () => { sleepCard = startSleepCard(); },\n onStep: (e) => sleepCard?.onStep(e),\n })\n .then(async (result: { ok: boolean; failCount: number }) => {\n running = false;\n progress = null;\n sleepCard?.complete();\n logInfo(\"sleep\", `\uD83D\uDE34 Sleep finished (ok=${result.ok}, failCount=${result.failCount}, attempt ${attempts})`);\n writeSleepStatus(\"awake\");\n if (!result.ok) {\n if (attempts < MAX_RETRIES) {\n logWarn(\"sleep\", `\uD83D\uDE34 Sleep had ${result.failCount} failures (attempt ${attempts}/${MAX_RETRIES}) \u2014 retry in 5min`);\n setTimeout(spawnSleep, RETRY_MS);\n } else {\n logWarn(\"sleep\", `\uD83D\uDE34 Sleep failures persist \u2014 exhausted ${MAX_RETRIES} attempts`);\n }\n return;\n }\n\n if (opts.memoryEnabled) opts.onComplete();\n\n // Force-sleep runs are explicit test/verify triggers \u2014 skip hw-sleep even if env enabled.\n const hwEnabled = !forced && readEnv(\"HARDWARE_SLEEP_AFTER_DREAMY\", \"hardware sleep after Dreamy disabled\") === \"true\";\n const quietTicks = Math.ceil(getEnv().bedQuietMin * 60 / parseInt(readEnvWithDefault(\"HEARTBEAT_INTERVAL_SEC\", \"60\", \"hb\"), 10));\n const hbInterval = parseInt(readEnvWithDefault(\"HEARTBEAT_INTERVAL_SEC\", \"60\", \"heartbeat tick interval\"), 10);\n const hwSleepMin = Math.round(quietTicks * hbInterval / 60);\n\n const dreamReport = buildDreamReport();\n const sleepNote = hwEnabled ? ` Hardware sleep in ~${hwSleepMin} minutes if no activity.` : \"\";\n\n // #844: buffer silently \u2014 don't trigger model response\n const { bufferSystemEvent } = await import(\"../../components/system-event-buffer.js\");\n bufferSystemEvent(`${dreamReport}${sleepNote}`);\n\n if (hwEnabled) {\n _awaitingHwSleep = true;\n // Reset hw-check counters \u2014 prevents stale state from a prior cycle (crash, force-sleep\n // re-run) from poisoning this one, and avoids burning the first tick on a spurious\n // reset when the very first checkHwSleep() sees currentMsgTs > 0.\n postSleepQuietTicks = 0;\n lastMsgTsSeenByHwCheck = opts.getLastMsgTs?.() ?? 0;\n logInfo(\"sleep\", `\uD83D\uDCA4 Awaiting hardware sleep \u2014 ${quietTicks} quiet ticks (${hwSleepMin} min) required`);\n }\n })\n .catch((err: unknown) => {\n running = false;\n progress = null;\n sleepCard?.complete();\n writeSleepStatus(\"awake\");\n const msg = err instanceof Error ? err.message : String(err);\n if (attempts < MAX_RETRIES) {\n logWarn(\"sleep\", `\uD83D\uDE34 Sleep threw (attempt ${attempts}/${MAX_RETRIES}): ${msg} \u2014 retry in 5min`);\n setTimeout(spawnSleep, RETRY_MS);\n } else {\n logWarn(\"sleep\", `\uD83D\uDE34 Sleep threw \u2014 exhausted ${MAX_RETRIES} attempts: ${msg}`);\n }\n })\n .finally(() => {\n // #1287: tear down the night Dreamy session on EVERY cycle outcome (success,\n // partial-failure, throw). Retry (if any) re-allocates a fresh D via\n // allocateSleepSession, so no Dreamy session accumulates.\n opts.onCycleEnd?.();\n });\n }\n\n function checkHwSleep(): void {\n if (!_awaitingHwSleep) return;\n\n // Sleep-window cutoff \u2014 give up if we've crossed out of the window. Next night retries.\n // Mirrors spawnSleep()'s window logic for consistency.\n const WAKE_HOUR = parseInt(readEnvWithDefault(\"WAKE_TIME\", \"7\", \"wake hour\").split(\":\")[0] ?? \"7\", 10);\n const BED_HOUR = opts.sleepHour;\n const hour = new Date().getHours();\n const inSleepWindow = (BED_HOUR < WAKE_HOUR)\n ? (hour >= BED_HOUR && hour < WAKE_HOUR) // normal: BED=00:30, WAKE=07:00 \u2192 sleep 00-06\n : (hour >= BED_HOUR || hour < WAKE_HOUR); // overnight: BED=23:00, WAKE=07:00 \u2192 sleep 23-06\n if (!inSleepWindow) {\n logInfo(\"sleep\", `\u23F0 Past sleep window (now ${hour}:00, window ${BED_HOUR}:00-${WAKE_HOUR}:00) \u2014 abandoning hw-sleep attempt`);\n _awaitingHwSleep = false;\n postSleepQuietTicks = 0;\n return;\n }\n\n // User messaged since last check \u2014 postpone and reset\n const currentMsgTs = opts.getLastMsgTs?.() ?? 0;\n if (currentMsgTs > lastMsgTsSeenByHwCheck) {\n lastMsgTsSeenByHwCheck = currentMsgTs;\n postSleepQuietTicks = 0;\n logInfo(\"sleep\", \"\uD83D\uDCA4 Hardware sleep postponed \u2014 user messaged (will retry after quiet period)\");\n return;\n }\n\n // Quiet tick \u2014 increment\n const requiredTicks = Math.ceil(getEnv().bedQuietMin * 60 / parseInt(process.env[\"HEARTBEAT_INTERVAL_SEC\"] ?? \"60\", 10));\n postSleepQuietTicks++;\n if (postSleepQuietTicks < requiredTicks) return;\n\n // Threshold reached \u2014 sleep\n _awaitingHwSleep = false;\n postSleepQuietTicks = 0;\n // Kill any wake inhibitor from /wakeup before sleeping\n opts.killWakeInhibit?.();\n const sleepCmd = process.platform === \"darwin\" ? \"pmset sleepnow\" : \"systemctl suspend\";\n logInfo(\"sleep\", `\uD83D\uDCA4 Putting hardware to sleep (${sleepCmd})...`);\n writeSleepStatus(\"hw_sleep\");\n try { execSync(sleepCmd, { timeout: 5000 }); }\n catch (err) {\n writeSleepStatus(\"awake\"); // recover \u2014 don't leave \"hw_sleep\" if pmset failed\n logWarn(\"sleep\", `\uD83D\uDCA4 Hardware sleep failed: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n function checkStale(): void {\n if (!running) return;\n const STALE_MS = 30 * 60_000;\n try {\n const dateStr = new Date().toISOString().slice(0, 10).replace(/-/g, \"\");\n const lockPath = join(opts.sleepAuditDir, `sleep_${dateStr}.lock`);\n if (!existsSync(lockPath)) { running = false; logWarn(\"sleep\", \"Sleep stuck \u2014 no lock file, force-clearing isActive\"); return; }\n const lock = JSON.parse(readFileSync(lockPath, \"utf-8\")) as { startedAt?: number; steps?: Record<string, { duration?: number }> };\n const stepTimes = Object.values(lock.steps ?? {}).map(s => (s as any).startedAt ?? (s as any).completedAt ?? 0).filter(Boolean);\n const lastActivity = Math.max(lock.startedAt ?? 0, ...stepTimes);\n if (lastActivity > 0 && Date.now() - lastActivity > STALE_MS) {\n running = false;\n logWarn(\"sleep\", `Sleep stuck \u2014 no progress in 30min (last activity ${Math.round((Date.now() - lastActivity) / 60_000)}min ago), force-clearing isActive`);\n }\n } catch { /* lock file unreadable \u2014 leave running as-is, next tick retries */ }\n }\n\n return {\n get isActive() { return running; },\n get progress() { return progress; },\n get awaitingHwSleep() { return _awaitingHwSleep; },\n spawn: spawnSleep,\n checkHwSleep,\n checkStale,\n };\n}\n\n/** Capability registration \u2014 called by discoverCapabilities(). */\nexport function register(_api: CapabilityApi): void {\n // Sleep registration is a no-op here \u2014 the actual SleepHandle is created\n // in phase-sleep.ts because it needs ctx.sendSystemMessage + memory deps\n // that aren't available at capability discovery time.\n // This manifest exists so sleep appears in discoverCapabilities() and\n // can be disabled via DISABLED_CAPABILITIES=sleep.\n}\n", "/**\n * sleep-card.ts \u2014 stepped kanban card for a nightly sleep cycle (#895).\n *\n * Display-only. One card per cycle whose notes render a checklist that ticks as\n * abmind fires onStep events. The card is created in \"running\" status (NOT\n * \"queued\") on purpose: a queued D-type card would be picked up by\n * spin.drainQueued() and dispatched as a spurious Dreamy worker. A parentless\n * \"running\" card is inert \u2014 drainQueued only scans \"queued\", and the reconciler\n * only touches children of running O-projects.\n *\n * All kanban writes are best-effort: a display failure must never break the\n * sleep cycle.\n */\n\nimport type { SleepStepEvent } from \"abmind\";\nimport { kanbanEnqueue, kanbanUpdate, kanbanComplete } from \"../../components/tasks/kanban-board.js\";\nimport { abmind } from \"../../utils/abmind-lazy.js\";\nimport { logAndSwallow } from \"../../components/log-and-swallow.js\";\n\ntype StepStatus = \"pending\" | \"running\" | \"done\" | \"skipped\" | \"failed\";\n\ninterface StepItem {\n name: string;\n filename: string;\n status: StepStatus;\n}\n\nconst MARK: Record<StepStatus, string> = {\n pending: \"[ ]\",\n running: \"[~]\",\n done: \"[x]\",\n skipped: \"[skip]\",\n failed: \"[fail]\",\n};\n\nconst TAG = \"sleep-card\";\n\nexport interface SleepCard {\n /** Flip the matching checklist item and re-render the card notes. */\n onStep(event: SleepStepEvent): void;\n /** Mark the card done once at cycle end (success or failure). Idempotent. */\n complete(): void;\n}\n\nfunction renderChecklist(items: readonly StepItem[]): string {\n return items.map(item => `${MARK[item.status]} ${item.name}`).join(\"\\n\");\n}\n\n/**\n * Create the stepped card for a cycle. Reads the step manifest from abmind so\n * the checklist mirrors loadSleepSteps() (name + order). Returns a no-op card if\n * abmind or the manifest is unavailable \u2014 sleep still runs.\n */\nexport function startSleepCard(): SleepCard {\n let cardId = 0;\n let items: StepItem[] = [];\n let completed = false;\n\n try {\n const steps = abmind()?.loadSleepSteps() ?? [];\n items = steps.map(step => ({ name: step.name, filename: step.filename, status: \"pending\" as StepStatus }));\n if (items.length > 0) {\n const dateStr = new Date().toISOString().slice(0, 10);\n cardId = kanbanEnqueue(`Sleep ${dateStr}`, \"scheduled\", undefined, {\n type: \"D\",\n deliveryMode: \"silent\",\n notes: renderChecklist(items),\n });\n // Move out of \"queued\" immediately so drainQueued() never dispatches it.\n if (cardId) kanbanUpdate(cardId, { status: \"running\" });\n }\n } catch (err) {\n logAndSwallow(TAG, \"start\", err);\n cardId = 0;\n }\n\n return {\n onStep(event: SleepStepEvent): void {\n if (!cardId) return;\n const item = items.find(i => i.name === event.name);\n if (!item) return;\n item.status = event.phase === \"start\" ? \"running\" : event.phase;\n try {\n kanbanUpdate(cardId, { notes: renderChecklist(items) });\n } catch (err) {\n logAndSwallow(TAG, \"tick\", err);\n }\n },\n\n complete(): void {\n if (!cardId || completed) return;\n completed = true;\n const done = items.filter(i => i.status === \"done\").length;\n const skipped = items.filter(i => i.status === \"skipped\").length;\n const failed = items.filter(i => i.status === \"failed\").length;\n const summary = `Sleep complete \u2014 ${done} done, ${skipped} skipped, ${failed} failed (of ${items.length})`;\n try {\n kanbanComplete(cardId, null, summary);\n } catch (err) {\n logAndSwallow(TAG, \"complete\", err);\n }\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
init_log_and_swallow,
|
|
8
8
|
logAndSwallow
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-2IYJ4I66.js";
|
|
10
10
|
import {
|
|
11
11
|
abtarsHome,
|
|
12
12
|
init_paths
|
|
@@ -66,11 +66,11 @@ async function restart(opts) {
|
|
|
66
66
|
(await import("node:fs")).writeFileSync(join(home, "deploy.state"), JSON.stringify(s) + "\n");
|
|
67
67
|
} catch {
|
|
68
68
|
}
|
|
69
|
-
const { start } = await import("./start-
|
|
69
|
+
const { start } = await import("./start-H5IUFAWF.js");
|
|
70
70
|
return start();
|
|
71
71
|
}
|
|
72
72
|
if (bridgeAlive) {
|
|
73
|
-
const { writeRestartRequested } = await import("./bridge-lock-transport-
|
|
73
|
+
const { writeRestartRequested } = await import("./bridge-lock-transport-7RSN7OLJ.js");
|
|
74
74
|
writeRestartRequested("restart");
|
|
75
75
|
process.stdout.write(`\u267B\uFE0F Restart requested (PID ${bridgePid}) \u2014 bridge will restart within 30s
|
|
76
76
|
`);
|
|
@@ -83,4 +83,4 @@ async function restart(opts) {
|
|
|
83
83
|
export {
|
|
84
84
|
restart
|
|
85
85
|
};
|
|
86
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-4S3H4OK7.js.map
|
|
@@ -2,20 +2,20 @@
|
|
|
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
|
readEnv
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-E67KESEG.js";
|
|
6
6
|
import {
|
|
7
7
|
init_user_registry,
|
|
8
8
|
loadUsers
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-E7XD5UGB.js";
|
|
10
10
|
import {
|
|
11
11
|
getEnv,
|
|
12
12
|
init_env_schema
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-6PA5JBUU.js";
|
|
14
14
|
import {
|
|
15
15
|
init_logger,
|
|
16
16
|
logError,
|
|
17
17
|
logWarn
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-XRTXYN66.js";
|
|
19
19
|
import {
|
|
20
20
|
init_paths
|
|
21
21
|
} from "./chunk-GALQBVKO.js";
|
|
@@ -90,7 +90,7 @@ async function validateCliPath(cliPath) {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
async function loadAndValidateConfig() {
|
|
93
|
-
const { loadTransport, validateAtStartup } = await import("./transport-config-
|
|
93
|
+
const { loadTransport, validateAtStartup } = await import("./transport-config-6MB2K2XC.js");
|
|
94
94
|
const tc = loadTransport();
|
|
95
95
|
if (tc) {
|
|
96
96
|
validateAtStartup();
|
|
@@ -213,4 +213,4 @@ export {
|
|
|
213
213
|
isValidSnowflake,
|
|
214
214
|
loadAndValidateConfig
|
|
215
215
|
};
|
|
216
|
-
//# sourceMappingURL=chunk-
|
|
216
|
+
//# sourceMappingURL=chunk-4Y5MJQRE.js.map
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
getEnv,
|
|
8
8
|
init_env_schema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6PA5JBUU.js";
|
|
10
10
|
import {
|
|
11
11
|
init_logger,
|
|
12
12
|
logError,
|
|
13
13
|
logWarn
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-XRTXYN66.js";
|
|
15
15
|
|
|
16
16
|
// src/components/main-chat.ts
|
|
17
17
|
init_env_schema();
|
|
@@ -40,4 +40,4 @@ async function sendToMainChat(adapters, text, opts) {
|
|
|
40
40
|
export {
|
|
41
41
|
sendToMainChat
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-55UWKI5C.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
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
|
-
addCompletion
|
|
5
|
-
} from "./chunk-MV6CJFWR.js";
|
|
6
3
|
import {
|
|
7
4
|
init_spin,
|
|
8
5
|
spin
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-L72RIPEC.js";
|
|
7
|
+
import {
|
|
8
|
+
addCompletion
|
|
9
|
+
} from "./chunk-MV6CJFWR.js";
|
|
10
10
|
import {
|
|
11
11
|
getEnv,
|
|
12
12
|
init_env_schema
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-6PA5JBUU.js";
|
|
14
14
|
import {
|
|
15
15
|
init_logger,
|
|
16
16
|
logInfo,
|
|
17
17
|
logWarn
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-XRTXYN66.js";
|
|
19
19
|
|
|
20
20
|
// src/components/transport/delegation-tools.ts
|
|
21
21
|
init_spin();
|
|
@@ -56,7 +56,7 @@ var spawnSessionTool = {
|
|
|
56
56
|
if (running.length >= MAX_BACKGROUND) {
|
|
57
57
|
return JSON.stringify({ error: `Max ${MAX_BACKGROUND} concurrent background sessions. Wait for one to finish or terminate it.` });
|
|
58
58
|
}
|
|
59
|
-
const masterUid = (await import("./master-user-
|
|
59
|
+
const masterUid = (await import("./master-user-MUBUP3KD.js")).getMasterUserId();
|
|
60
60
|
const session = spin.createSubSession(masterUid, "telegram", typeInfo.sessionType);
|
|
61
61
|
if (typeof session === "string") return JSON.stringify({ error: session });
|
|
62
62
|
const goal = args.goal ?? "No goal specified";
|
|
@@ -216,4 +216,4 @@ export {
|
|
|
216
216
|
consumePendingInstruction,
|
|
217
217
|
getDelegationTools
|
|
218
218
|
};
|
|
219
|
-
//# sourceMappingURL=chunk-
|
|
219
|
+
//# sourceMappingURL=chunk-5PNJFDSW.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logWarn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XRTXYN66.js";
|
|
7
7
|
import {
|
|
8
8
|
__esm
|
|
9
9
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -53,6 +53,8 @@ var init_config_validator = __esm({
|
|
|
53
53
|
PEERS_SCHEMA = [
|
|
54
54
|
{ path: "self", type: "object", required: true },
|
|
55
55
|
{ path: "self.name", type: "string", required: true },
|
|
56
|
+
{ path: "self.signingKey", type: "string", required: true },
|
|
57
|
+
{ path: "self.tribeToken", type: "string", required: true },
|
|
56
58
|
{ path: "peers", type: "object", required: true }
|
|
57
59
|
];
|
|
58
60
|
}
|
|
@@ -65,4 +67,4 @@ export {
|
|
|
65
67
|
PEERS_SCHEMA,
|
|
66
68
|
init_config_validator
|
|
67
69
|
};
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-5RVOEFGT.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/components/config-validator.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * config-validator.ts \u2014 lightweight shape validation for JSON config files (#434).\n * No external deps. Logs warnings, never throws. Boot continues with best-effort.\n */\n\nimport { logWarn } from \"./logger.js\";\n\nconst TAG = \"config\";\n\ntype FieldType = \"string\" | \"number\" | \"boolean\" | \"object\" | \"array\";\n\nexport interface FieldSpec {\n path: string;\n type: FieldType;\n required?: boolean;\n}\n\nfunction getPath(obj: unknown, path: string): unknown {\n let current: unknown = obj;\n for (const key of path.split(\".\")) {\n if (current == null || typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\nfunction checkType(val: unknown, expected: FieldType): boolean {\n if (expected === \"array\") return Array.isArray(val);\n if (expected === \"object\") return val !== null && typeof val === \"object\" && !Array.isArray(val);\n return typeof val === expected;\n}\n\nexport function validateShape(config: unknown, specs: FieldSpec[], filename: string): string[] {\n const errors: string[] = [];\n for (const spec of specs) {\n const val = getPath(config, spec.path);\n if (val === undefined || val === null) {\n if (spec.required) errors.push(`${spec.path} is required`);\n } else if (!checkType(val, spec.type)) {\n errors.push(`${spec.path} must be ${spec.type}, got ${Array.isArray(val) ? \"array\" : typeof val}`);\n }\n }\n if (errors.length > 0) {\n for (const e of errors) logWarn(TAG, `${filename}: ${e}`);\n }\n return errors;\n}\n\n// \u2500\u2500 Schema specs for each config file \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\nexport const TRANSPORT_SCHEMA: FieldSpec[] = [\n { path: \"agents\", type: \"object\", required: true },\n { path: \"providers\", type: \"object\", required: true },\n];\n\nexport const MODELS_SCHEMA: FieldSpec[] = [\n // models.json is a Record<string, ModelEntry> \u2014 just check it's an object\n];\n\nexport const IRC_SCHEMA: FieldSpec[] = [\n { path: \"servers\", type: \"array\", required: true },\n];\n\nexport const PEERS_SCHEMA: FieldSpec[] = [\n { path: \"self\", type: \"object\", required: true },\n { path: \"self.name\", type: \"string\", required: true },\n { path: \"peers\", type: \"object\", required: true },\n];\n\nexport const USERS_SCHEMA: FieldSpec[] = [\n { path: \"users\", type: \"array\", required: true },\n];\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAiBA,SAAS,QAAQ,KAAc,MAAuB;AACpD,MAAI,UAAmB;AACvB,aAAW,OAAO,KAAK,MAAM,GAAG,GAAG;AACjC,QAAI,WAAW,QAAQ,OAAO,YAAY,SAAU,QAAO;AAC3D,cAAW,QAAoC,GAAG;AAAA,EACpD;AACA,SAAO;AACT;AAEA,SAAS,UAAU,KAAc,UAA8B;AAC7D,MAAI,aAAa,QAAS,QAAO,MAAM,QAAQ,GAAG;AAClD,MAAI,aAAa,SAAU,QAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAC/F,SAAO,OAAO,QAAQ;AACxB;AAEO,SAAS,cAAc,QAAiB,OAAoB,UAA4B;AAC7F,QAAM,SAAmB,CAAC;AAC1B,aAAW,QAAQ,OAAO;AACxB,UAAM,MAAM,QAAQ,QAAQ,KAAK,IAAI;AACrC,QAAI,QAAQ,UAAa,QAAQ,MAAM;AACrC,UAAI,KAAK,SAAU,QAAO,KAAK,GAAG,KAAK,IAAI,cAAc;AAAA,IAC3D,WAAW,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG;AACrC,aAAO,KAAK,GAAG,KAAK,IAAI,YAAY,KAAK,IAAI,SAAS,MAAM,QAAQ,GAAG,IAAI,UAAU,OAAO,GAAG,EAAE;AAAA,IACnG;AAAA,EACF;AACA,MAAI,OAAO,SAAS,GAAG;AACrB,eAAW,KAAK,OAAQ,SAAQ,KAAK,GAAG,QAAQ,KAAK,CAAC,EAAE;AAAA,EAC1D;AACA,SAAO;AACT;AA9CA,IAOM,KA2CO,kBASA,YAIA;AA/Db;AAAA;AAAA;AAKA;AAEA,IAAM,MAAM;AA2CL,IAAM,mBAAgC;AAAA,MAC3C,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,KAAK;AAAA,MACjD,EAAE,MAAM,aAAa,MAAM,UAAU,UAAU,KAAK;AAAA,IACtD;AAMO,IAAM,aAA0B;AAAA,MACrC,EAAE,MAAM,WAAW,MAAM,SAAS,UAAU,KAAK;AAAA,IACnD;AAEO,IAAM,eAA4B;AAAA,MACvC,EAAE,MAAM,QAAQ,MAAM,UAAU,UAAU,KAAK;AAAA,MAC/C,EAAE,MAAM,aAAa,MAAM,UAAU,UAAU,KAAK;AAAA,MACpD,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,KAAK;AAAA,IAClD;AAAA;AAAA;",
|
|
4
|
+
"sourcesContent": ["/**\n * config-validator.ts \u2014 lightweight shape validation for JSON config files (#434).\n * No external deps. Logs warnings, never throws. Boot continues with best-effort.\n */\n\nimport { logWarn } from \"./logger.js\";\n\nconst TAG = \"config\";\n\ntype FieldType = \"string\" | \"number\" | \"boolean\" | \"object\" | \"array\";\n\nexport interface FieldSpec {\n path: string;\n type: FieldType;\n required?: boolean;\n}\n\nfunction getPath(obj: unknown, path: string): unknown {\n let current: unknown = obj;\n for (const key of path.split(\".\")) {\n if (current == null || typeof current !== \"object\") return undefined;\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\nfunction checkType(val: unknown, expected: FieldType): boolean {\n if (expected === \"array\") return Array.isArray(val);\n if (expected === \"object\") return val !== null && typeof val === \"object\" && !Array.isArray(val);\n return typeof val === expected;\n}\n\nexport function validateShape(config: unknown, specs: FieldSpec[], filename: string): string[] {\n const errors: string[] = [];\n for (const spec of specs) {\n const val = getPath(config, spec.path);\n if (val === undefined || val === null) {\n if (spec.required) errors.push(`${spec.path} is required`);\n } else if (!checkType(val, spec.type)) {\n errors.push(`${spec.path} must be ${spec.type}, got ${Array.isArray(val) ? \"array\" : typeof val}`);\n }\n }\n if (errors.length > 0) {\n for (const e of errors) logWarn(TAG, `${filename}: ${e}`);\n }\n return errors;\n}\n\n// \u2500\u2500 Schema specs for each config file \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\nexport const TRANSPORT_SCHEMA: FieldSpec[] = [\n { path: \"agents\", type: \"object\", required: true },\n { path: \"providers\", type: \"object\", required: true },\n];\n\nexport const MODELS_SCHEMA: FieldSpec[] = [\n // models.json is a Record<string, ModelEntry> \u2014 just check it's an object\n];\n\nexport const IRC_SCHEMA: FieldSpec[] = [\n { path: \"servers\", type: \"array\", required: true },\n];\n\nexport const PEERS_SCHEMA: FieldSpec[] = [\n { path: \"self\", type: \"object\", required: true },\n { path: \"self.name\", type: \"string\", required: true },\n { path: \"self.signingKey\", type: \"string\", required: true },\n { path: \"self.tribeToken\", type: \"string\", required: true },\n { path: \"peers\", type: \"object\", required: true },\n];\n\nexport const USERS_SCHEMA: FieldSpec[] = [\n { path: \"users\", type: \"array\", required: true },\n];\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAiBA,SAAS,QAAQ,KAAc,MAAuB;AACpD,MAAI,UAAmB;AACvB,aAAW,OAAO,KAAK,MAAM,GAAG,GAAG;AACjC,QAAI,WAAW,QAAQ,OAAO,YAAY,SAAU,QAAO;AAC3D,cAAW,QAAoC,GAAG;AAAA,EACpD;AACA,SAAO;AACT;AAEA,SAAS,UAAU,KAAc,UAA8B;AAC7D,MAAI,aAAa,QAAS,QAAO,MAAM,QAAQ,GAAG;AAClD,MAAI,aAAa,SAAU,QAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAC/F,SAAO,OAAO,QAAQ;AACxB;AAEO,SAAS,cAAc,QAAiB,OAAoB,UAA4B;AAC7F,QAAM,SAAmB,CAAC;AAC1B,aAAW,QAAQ,OAAO;AACxB,UAAM,MAAM,QAAQ,QAAQ,KAAK,IAAI;AACrC,QAAI,QAAQ,UAAa,QAAQ,MAAM;AACrC,UAAI,KAAK,SAAU,QAAO,KAAK,GAAG,KAAK,IAAI,cAAc;AAAA,IAC3D,WAAW,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG;AACrC,aAAO,KAAK,GAAG,KAAK,IAAI,YAAY,KAAK,IAAI,SAAS,MAAM,QAAQ,GAAG,IAAI,UAAU,OAAO,GAAG,EAAE;AAAA,IACnG;AAAA,EACF;AACA,MAAI,OAAO,SAAS,GAAG;AACrB,eAAW,KAAK,OAAQ,SAAQ,KAAK,GAAG,QAAQ,KAAK,CAAC,EAAE;AAAA,EAC1D;AACA,SAAO;AACT;AA9CA,IAOM,KA2CO,kBASA,YAIA;AA/Db;AAAA;AAAA;AAKA;AAEA,IAAM,MAAM;AA2CL,IAAM,mBAAgC;AAAA,MAC3C,EAAE,MAAM,UAAU,MAAM,UAAU,UAAU,KAAK;AAAA,MACjD,EAAE,MAAM,aAAa,MAAM,UAAU,UAAU,KAAK;AAAA,IACtD;AAMO,IAAM,aAA0B;AAAA,MACrC,EAAE,MAAM,WAAW,MAAM,SAAS,UAAU,KAAK;AAAA,IACnD;AAEO,IAAM,eAA4B;AAAA,MACvC,EAAE,MAAM,QAAQ,MAAM,UAAU,UAAU,KAAK;AAAA,MAC/C,EAAE,MAAM,aAAa,MAAM,UAAU,UAAU,KAAK;AAAA,MACpD,EAAE,MAAM,mBAAmB,MAAM,UAAU,UAAU,KAAK;AAAA,MAC1D,EAAE,MAAM,mBAAmB,MAAM,UAAU,UAAU,KAAK;AAAA,MAC1D,EAAE,MAAM,SAAS,MAAM,UAAU,UAAU,KAAK;AAAA,IAClD;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logDebug
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XRTXYN66.js";
|
|
7
7
|
import {
|
|
8
8
|
__esm
|
|
9
9
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -29,4 +29,4 @@ export {
|
|
|
29
29
|
nerve,
|
|
30
30
|
init_nerve
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-5Y3FJ2Y7.js.map
|
|
@@ -18,7 +18,7 @@ function initUsageTracker(home) {
|
|
|
18
18
|
function recordUsage(model, inputTokens, outputTokens, agent = "") {
|
|
19
19
|
_totalTokens += inputTokens + outputTokens;
|
|
20
20
|
if (agent) {
|
|
21
|
-
import("./budget-
|
|
21
|
+
import("./budget-WUM3SPKW.js").then(({ incrementBudgetCounter }) => incrementBudgetCounter(agent, inputTokens + outputTokens)).catch(() => {
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
if (!usagePath) return;
|
|
@@ -77,4 +77,4 @@ export {
|
|
|
77
77
|
readUsage,
|
|
78
78
|
resetUsage
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-6B5ZFUPD.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
init_logger,
|
|
5
5
|
logInfo,
|
|
6
6
|
logWarn
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XRTXYN66.js";
|
|
8
8
|
import {
|
|
9
9
|
__esm
|
|
10
10
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -306,4 +306,4 @@ export {
|
|
|
306
306
|
_resetEnv,
|
|
307
307
|
init_env_schema
|
|
308
308
|
};
|
|
309
|
-
//# sourceMappingURL=chunk-
|
|
309
|
+
//# sourceMappingURL=chunk-6PA5JBUU.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logError
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XRTXYN66.js";
|
|
7
7
|
import {
|
|
8
8
|
__esm,
|
|
9
9
|
__export,
|
|
@@ -25,7 +25,7 @@ var init_spin_profiles = __esm({
|
|
|
25
25
|
"use strict";
|
|
26
26
|
init_spin_types();
|
|
27
27
|
soulBundle = async (prompt, { session }) => {
|
|
28
|
-
const { buildSoulBundle } = await import("./soul-bundle-
|
|
28
|
+
const { buildSoulBundle } = await import("./soul-bundle-522C3IRH.js");
|
|
29
29
|
const bundle = buildSoulBundle(sessionType(session));
|
|
30
30
|
return bundle ? `${bundle}
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@ ${prompt}` : prompt;
|
|
|
35
35
|
};
|
|
36
36
|
channelMessages = async (prompt, { cardId, parentCardId }) => {
|
|
37
37
|
if (cardId === void 0) return prompt;
|
|
38
|
-
const { channelUnread } = await import("./kanban-channel-
|
|
38
|
+
const { channelUnread } = await import("./kanban-channel-XOLUHJZJ.js");
|
|
39
39
|
const workerName = `Worker-${String(cardId).padStart(2, "0")}`;
|
|
40
40
|
const msgs = channelUnread(parentCardId ?? cardId, workerName);
|
|
41
41
|
if (msgs.length === 0) return prompt;
|
|
@@ -57,7 +57,7 @@ ${prompt}`;
|
|
|
57
57
|
};
|
|
58
58
|
orcNotifications = async (prompt, { cardId }) => {
|
|
59
59
|
if (cardId === void 0) return prompt;
|
|
60
|
-
const { drainOrcNotifications } = await import("./spin-notifications-
|
|
60
|
+
const { drainOrcNotifications } = await import("./spin-notifications-7NC5XZEM.js");
|
|
61
61
|
const n = drainOrcNotifications(cardId);
|
|
62
62
|
return n.length ? `${n.join("\n")}
|
|
63
63
|
|
|
@@ -65,7 +65,7 @@ ${prompt}` : prompt;
|
|
|
65
65
|
};
|
|
66
66
|
orcChannel = async (prompt, { cardId }) => {
|
|
67
67
|
if (cardId === void 0) return prompt;
|
|
68
|
-
const { channelUnread } = await import("./kanban-channel-
|
|
68
|
+
const { channelUnread } = await import("./kanban-channel-XOLUHJZJ.js");
|
|
69
69
|
const msgs = channelUnread(cardId, "Orc");
|
|
70
70
|
if (msgs.length === 0) return prompt;
|
|
71
71
|
const lines = msgs.map((m) => `[${m.from_agent}\u2192${m.to_agent}]${m.directive ? " \u26A1" : ""} ${m.message}`);
|
|
@@ -76,7 +76,7 @@ ${lines.join("\n")}
|
|
|
76
76
|
${prompt}`;
|
|
77
77
|
};
|
|
78
78
|
SESSION_PROFILES = {
|
|
79
|
-
A: { agent: "professor", transportMode: "persistent", resolution: "active", terminateAfter: "
|
|
79
|
+
A: { agent: "professor", transportMode: "persistent", resolution: "active", terminateAfter: "external", decorators: [] },
|
|
80
80
|
B: { agent: "browsie", transportMode: "oneshot", resolution: "transient", terminateAfter: "response", decorators: [soulBundle] },
|
|
81
81
|
C: { agent: "coding", transportMode: "oneshot", resolution: "transient", terminateAfter: "response", decorators: [soulBundle] },
|
|
82
82
|
T: { agent: "professor", transportMode: "oneshot", resolution: "transient", terminateAfter: "response", decorators: [soulBundle, channelMessages] },
|
|
@@ -94,16 +94,16 @@ ${prompt}`;
|
|
|
94
94
|
terminateAfter: "external",
|
|
95
95
|
decorators: [orcContext, soulBundle, orcNotifications, orcChannel],
|
|
96
96
|
beforePrompt: async (_session, cardId) => {
|
|
97
|
-
const { updateBridgeLockField } = await import("./bridge-lock-transport-
|
|
98
|
-
const { setActiveOrcCard } = await import("./orc-tools-
|
|
97
|
+
const { updateBridgeLockField } = await import("./bridge-lock-transport-7RSN7OLJ.js");
|
|
98
|
+
const { setActiveOrcCard } = await import("./orc-tools-UZVPONKY.js");
|
|
99
99
|
if (cardId !== void 0) {
|
|
100
100
|
updateBridgeLockField("orc_active", cardId);
|
|
101
101
|
setActiveOrcCard(cardId);
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
104
|
afterPrompt: async () => {
|
|
105
|
-
const { updateBridgeLockField } = await import("./bridge-lock-transport-
|
|
106
|
-
const { setActiveOrcCard } = await import("./orc-tools-
|
|
105
|
+
const { updateBridgeLockField } = await import("./bridge-lock-transport-7RSN7OLJ.js");
|
|
106
|
+
const { setActiveOrcCard } = await import("./orc-tools-UZVPONKY.js");
|
|
107
107
|
updateBridgeLockField("orc_active", null);
|
|
108
108
|
setActiveOrcCard(null);
|
|
109
109
|
}
|
|
@@ -118,6 +118,12 @@ function sessionType(session) {
|
|
|
118
118
|
if (!type) logError("spin-types", `Malformed session ID "${session.id}" \u2014 no type segment, defaulting to A`);
|
|
119
119
|
return type ?? "A";
|
|
120
120
|
}
|
|
121
|
+
function sessionTypeOf(sessionId) {
|
|
122
|
+
return sessionId.split("_")[1] ?? "A";
|
|
123
|
+
}
|
|
124
|
+
function isCompactable(sessionId) {
|
|
125
|
+
return COMPACTABLE_TYPES.has(sessionTypeOf(sessionId));
|
|
126
|
+
}
|
|
121
127
|
function sessionCreatedAt(session) {
|
|
122
128
|
return parseInt(session.id.split("_")[0] ?? "0", 10) * 1e3;
|
|
123
129
|
}
|
|
@@ -144,10 +150,11 @@ function parseSessionType(input) {
|
|
|
144
150
|
return null;
|
|
145
151
|
}
|
|
146
152
|
}
|
|
147
|
-
var TYPE_LABELS, TYPE_AGENT_MAP;
|
|
153
|
+
var COMPACTABLE_TYPES, TYPE_LABELS, TYPE_AGENT_MAP;
|
|
148
154
|
var init_spin_types = __esm({
|
|
149
155
|
"src/components/spin-types.ts"() {
|
|
150
156
|
init_logger();
|
|
157
|
+
COMPACTABLE_TYPES = /* @__PURE__ */ new Set(["A", "C"]);
|
|
151
158
|
TYPE_LABELS = {
|
|
152
159
|
A: "Main",
|
|
153
160
|
B: "Browse",
|
|
@@ -177,10 +184,12 @@ export {
|
|
|
177
184
|
profileFor,
|
|
178
185
|
init_spin_profiles,
|
|
179
186
|
sessionType,
|
|
187
|
+
sessionTypeOf,
|
|
188
|
+
isCompactable,
|
|
180
189
|
sessionCreatedAt,
|
|
181
190
|
typeLabel,
|
|
182
191
|
typeAgent,
|
|
183
192
|
parseSessionType,
|
|
184
193
|
init_spin_types
|
|
185
194
|
};
|
|
186
|
-
//# sourceMappingURL=chunk-
|
|
195
|
+
//# sourceMappingURL=chunk-BNXV7SZI.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/components/spin-profiles.ts", "../src/components/spin-types.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * spin-profiles.ts \u2014 Per-session-type behavior registry (#1271).\n *\n * Replaces the per-type `if (type === ...)` branches that used to live in\n * `execute()` and `executeOrc()`. Adding a new SessionType = adding a row to\n * SESSION_PROFILES; `spin()` itself contains no type-specific code.\n */\n\nimport type { AgentName } from \"./subagent-runtime.js\";\nimport type { ManagedSession, SessionType } from \"./spin-types.js\";\nimport { sessionType } from \"./spin-types.js\";\n\n/** A prompt decorator wraps/prepends context onto the outgoing prompt. */\nexport type PromptDecorator = (\n prompt: string,\n ctx: { session: ManagedSession; cardId?: number; parentCardId?: number },\n) => Promise<string> | string;\n\nexport interface SessionProfile {\n /** Agent to route the prompt to. */\n agent: AgentName;\n /** \"oneshot\" uses runtime.complete(); \"persistent\" uses session.transport.sendPrompt. */\n transportMode: \"oneshot\" | \"persistent\";\n /** How spin() resolves the ManagedSession \u2014 replaces per-type branches. */\n resolution: \"active\" | \"singleton\" | \"transient\";\n /** What happens to the session record after the call returns. */\n terminateAfter: \"call\" | \"response\" | \"external\";\n /** Ordered prompt transforms (decorator at index N prepends; last in list = outermost). */\n decorators: readonly PromptDecorator[];\n /** Side-effect hook fired before the prompt is sent. */\n beforePrompt?: (session: ManagedSession, cardId?: number) => Promise<void> | void;\n /** Side-effect hook fired after the prompt resolves (success OR failure). */\n afterPrompt?: (session: ManagedSession, cardId?: number) => Promise<void> | void;\n}\n\n// \u2500\u2500 Reusable decorators \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\nconst soulBundle: PromptDecorator = async (prompt, { session }) => {\n const { buildSoulBundle } = await import(\"./soul-bundle.js\");\n const bundle = buildSoulBundle(sessionType(session));\n return bundle ? `${bundle}\\n\\n---\\n\\n${prompt}` : prompt;\n};\n\nconst channelMessages: PromptDecorator = async (prompt, { cardId, parentCardId }) => {\n if (cardId === undefined) return prompt;\n const { channelUnread } = await import(\"./tasks/kanban-channel.js\");\n const workerName = `Worker-${String(cardId).padStart(2, \"0\")}`;\n const msgs = channelUnread(parentCardId ?? cardId, workerName);\n if (msgs.length === 0) return prompt;\n const lines = msgs.map(m => `[${m.from_agent}\u2192${m.to_agent}]${m.directive ? \" \u26A1\" : \"\"} ${m.message}`);\n return `[CHANNEL \u2014 ${msgs.length} message(s) for ${workerName}]\\n${lines.join(\"\\n\")}\\n[/CHANNEL]\\n\\n${prompt}`;\n};\n\nconst orcContext: PromptDecorator = async (prompt, { cardId }) => {\n const { localDateTime } = await import(\"../utils/local-time.js\");\n return `[CONTEXT \u2014 do not respond to this section]\\n[PROJECT] card #${cardId}\\n[CURRENT TIME] ${localDateTime()}\\n[/CONTEXT]\\n\\n${prompt}`;\n};\n\nconst orcNotifications: PromptDecorator = async (prompt, { cardId }) => {\n if (cardId === undefined) return prompt;\n const { drainOrcNotifications } = await import(\"./spin-notifications.js\");\n const n = drainOrcNotifications(cardId);\n return n.length ? `${n.join(\"\\n\")}\\n\\n${prompt}` : prompt;\n};\n\nconst orcChannel: PromptDecorator = async (prompt, { cardId }) => {\n if (cardId === undefined) return prompt;\n const { channelUnread } = await import(\"./tasks/kanban-channel.js\");\n const msgs = channelUnread(cardId, \"Orc\");\n if (msgs.length === 0) return prompt;\n const lines = msgs.map(m => `[${m.from_agent}\u2192${m.to_agent}]${m.directive ? \" \u26A1\" : \"\"} ${m.message}`);\n return `[CHANNEL \u2014 ${msgs.length} message(s)]\\n${lines.join(\"\\n\")}\\n[/CHANNEL]\\n\\n${prompt}`;\n};\n\n// \u2500\u2500 The registry \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\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport const SESSION_PROFILES: Record<SessionType, SessionProfile> = {\n A: { agent: \"professor\", transportMode: \"persistent\", resolution: \"active\", terminateAfter: \"external\", decorators: [] },\n B: { agent: \"browsie\", transportMode: \"oneshot\", resolution: \"transient\", terminateAfter: \"response\", decorators: [soulBundle] },\n C: { agent: \"coding\", transportMode: \"oneshot\", resolution: \"transient\", terminateAfter: \"response\", decorators: [soulBundle] },\n T: { agent: \"professor\", transportMode: \"oneshot\", resolution: \"transient\", terminateAfter: \"response\", decorators: [soulBundle, channelMessages] },\n P: { agent: \"professor\", transportMode: \"oneshot\", resolution: \"transient\", terminateAfter: \"response\", decorators: [soulBundle] },\n S: { agent: \"coding\", transportMode: \"oneshot\", resolution: \"transient\", terminateAfter: \"call\", decorators: [] },\n W: { agent: \"browsie\", transportMode: \"oneshot\", resolution: \"transient\", terminateAfter: \"response\", decorators: [soulBundle, channelMessages] },\n H: { agent: \"coding\", transportMode: \"oneshot\", resolution: \"transient\", terminateAfter: \"response\", decorators: [soulBundle] },\n D: { agent: \"dreamy\", transportMode: \"persistent\", resolution: \"transient\", terminateAfter: \"external\", decorators: [] },\n O: {\n agent: \"browsie\", // \u2190 preserves current Orc agent (NOT professor)\n transportMode: \"persistent\",\n resolution: \"singleton\", // \u2190 one Orc; reuse the visible O session\n terminateAfter: \"external\",\n decorators: [orcContext, soulBundle, orcNotifications, orcChannel],\n beforePrompt: async (_session, cardId) => {\n const { updateBridgeLockField } = await import(\"./transport/bridge-lock-transport.js\");\n const { setActiveOrcCard } = await import(\"./transport/orc-tools.js\");\n if (cardId !== undefined) { updateBridgeLockField(\"orc_active\", cardId); setActiveOrcCard(cardId); }\n },\n afterPrompt: async () => {\n const { updateBridgeLockField } = await import(\"./transport/bridge-lock-transport.js\");\n const { setActiveOrcCard } = await import(\"./transport/orc-tools.js\");\n updateBridgeLockField(\"orc_active\", null); setActiveOrcCard(null);\n },\n },\n};\n\nexport function profileFor(type: SessionType): SessionProfile {\n return SESSION_PROFILES[type];\n}\n", "/**\n * spin-types.ts \u2014 Types and helpers for the Spin session system (#943, #953).\n * Importable by any module that needs ManagedSession or SessionType without pulling in the full Spin class.\n */\n\nimport type { AgentName } from \"./subagent-runtime.js\";\nimport type { IKiroTransport } from \"./transport/kiro-transport.js\";\nimport type { SandboxPolicy } from \"./tool-sandbox.js\";\nimport { logError } from \"./logger.js\";\n\nexport type SessionType = \"A\" | \"B\" | \"C\" | \"T\" | \"P\" | \"S\" | \"O\" | \"W\" | \"D\" | \"H\";\n\nexport interface ManagedSession {\n id: string; // \"1749563282_A_01\"\n userId: string;\n platform: string;\n chatId: number;\n threadId?: number | string;\n\n // Transport\n transport?: IKiroTransport;\n delivery: \"streaming\" | \"simple\";\n model?: string;\n provider?: string;\n pid?: number;\n peer?: string; // remote host name (hollow session)\n remoteSessionId?: string; // session ID on the peer\n\n // Lifecycle\n active: boolean; // true = current session for this userId+platform\n status: \"creating\" | \"ready\" | \"paused\" | \"ended\";\n idleTimeoutMs: number;\n lastActiveAt: number;\n motherId?: string;\n name?: string;\n\n // Context\n workingDir?: string;\n contextPercent?: number;\n\n // Metrics\n messageCount: number;\n tokenCount: number;\n toolCallCount: number;\n\n // Session event log (last 5 events)\n log: string[];\n\n // Display\n shortIndex: number;\n\n // Pipeline state (#1040 \u2014 merged from SessionRegistry)\n busy: boolean;\n queue: Array<{ msg: import(\"../types/platform.js\").InboundMessage; adapter: import(\"../types/platform.js\").PlatformAdapter }>;\n fullMode: boolean;\n pendingStart: boolean;\n seen: boolean;\n compacting: boolean;\n ctxWarned: boolean;\n compactFailures: number;\n primingTerms: string[];\n pendingWait?: string;\n\n // Completion buffer (#1040 \u2014 merged from completion-buffer.ts)\n completions: Array<{ sessionId: string; goal: string; status: string; result: string; elapsedMs: number; inputTokens: number; outputTokens: number }>;\n\n // Session-scoped metadata (#1271). Set ONCE at session allocation from\n // `SpinSessionSpec.metadata`; never merged on `sessionId` reuse. Use\n // `onStepComplete`'s event for per-step data.\n metadata?: Record<string, unknown>;\n}\n\nexport interface SpinRequest {\n type: SessionType;\n agent?: import(\"./subagent-runtime.js\").AgentName; // override typeAgent() default\n goal: string;\n title?: string;\n source: \"task\" | \"user\" | \"agent\" | \"peer\";\n cardId?: number;\n parentCardId?: number;\n deliveryMode?: \"silent\" | \"deliver\" | \"announce\";\n priority?: string;\n tools?: SandboxPolicy;\n timeoutMs?: number;\n callbackPeer?: string; // #675: peer to notify on completion\n sourcePeer?: string; // #949: which peer delegated this task\n chatId?: string; // #1008: delivery target chat (fallback: masterChatId)\n maxToolRounds?: number; // #1283: per-task circuit breaker override\n}\n\n// \u2500\u2500 #1271: unified session API \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\nexport interface SpinSessionSpec {\n type: SessionType;\n\n // Identity\n userId?: string; // default: master user\n platform?: string; // default: \"background\"\n chatId?: number; // default: 0\n\n // Work\n goal?: string; // user-facing \u2192 creates kanban card\n prompt?: string; // background one-shot \u2192 no card\n\n // Reuse / continuation (multi-step sleep, pipeline main turn)\n sessionId?: string; // reuse an existing session (send next prompt to it)\n\n // Lifecycle overrides (default comes from the profile)\n active?: boolean;\n persistent?: boolean;\n terminateAfter?: \"call\" | \"response\" | \"external\";\n\n // Kanban tracking\n cardId?: number;\n parentCardId?: number;\n title?: string;\n priority?: \"CRITICAL\" | \"HIGH\" | \"MEDIUM\" | \"LOW\";\n source?: \"task\" | \"user\" | \"agent\" | \"peer\";\n\n // Execution\n agent?: import(\"./subagent-runtime.js\").AgentName; // override the profile's agent\n timeoutMs?: number;\n maxToolRounds?: number; // #1283: per-task circuit breaker override\n\n // Delivery (continuation / pipeline)\n deliveryMode?: \"deliver\" | \"silent\" | \"announce\";\n imageContent?: unknown; // \u2192 sendPrompt arg 3 (image passthrough)\n callbackPeer?: string;\n sourcePeer?: string;\n // NOTE: no `stream` field. Streaming is a transport property\n // (transport.onIntermediateResponse / onToolCallStart / onSegmentBreak) that the\n // PIPELINE sets before calling spin() and resets in its finally \u2014 Spin never touches it.\n // sendPrompt is (sessionKey, message, image?, userId?) \u2014 4 args, no stream.\n\n // Extension / future-proofing\n metadata?: Record<string, unknown>; // session-scoped initial data, set ONCE at allocation\n // (not merged on sessionId-reuse \u2014 see design \u00A72)\n\n // Result\n await?: boolean;\n\n // Progress hook (partial-result reporting \u2014 sleep, workers)\n onStepComplete?: (event: StepEvent) => void | Promise<void>;\n}\n\nexport interface StepEvent {\n sessionId: string;\n cardId?: number;\n stepIndex: number; // 1-based call count within this session\n result?: string; // undefined on failure\n error?: Error;\n durationMs: number;\n inputTokens?: number; // per-call absolute (usage.input), not a delta\n outputTokens?: number; // per-call absolute (usage.output)\n}\n\nexport interface SpinResult {\n sessionId: string;\n cardId?: number;\n result?: string; // present when await: true\n}\n\nexport interface DispatchBackgroundOptions {\n prompt: string;\n type?: SessionType; // default \"S\" (ephemeral one-shot)\n agent?: import(\"./subagent-runtime.js\").AgentName; // override the profile agent\n timeoutMs?: number;\n}\n\n// \u2500\u2500 Helpers \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\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function sessionType(session: ManagedSession): SessionType {\n const type = session.id.split(\"_\")[1];\n if (!type) logError(\"spin-types\", `Malformed session ID \"${session.id}\" \u2014 no type segment, defaulting to A`);\n return (type ?? \"A\") as SessionType;\n}\n\n/** Session type from a raw session-id string (companion to sessionType(session)). */\nexport function sessionTypeOf(sessionId: string): SessionType {\n return (sessionId.split(\"_\")[1] ?? \"A\") as SessionType;\n}\n\n/**\n * #1022: compaction fires only for A (main) and C (coding) session types.\n * Every other type (B, D, O, S, T, P, W, H) is never compacted. Hard requirement.\n */\nconst COMPACTABLE_TYPES: ReadonlySet<SessionType> = new Set<SessionType>([\"A\", \"C\"]);\nexport function isCompactable(sessionId: string): boolean {\n return COMPACTABLE_TYPES.has(sessionTypeOf(sessionId));\n}\n\nexport function sessionCreatedAt(session: ManagedSession): number {\n return parseInt(session.id.split(\"_\")[0] ?? \"0\", 10) * 1000;\n}\n\nconst TYPE_LABELS: Record<SessionType, string> = {\n A: \"Main\", B: \"Browse\", C: \"Code\", T: \"Task\", P: \"Peer\",\n S: \"System\", O: \"Orc\", W: \"Worker\", D: \"Dreamy\", H: \"Healer\",\n};\n\nconst TYPE_AGENT_MAP: Partial<Record<SessionType, AgentName>> = {\n A: \"professor\", C: \"coding\", B: \"browsie\", D: \"dreamy\",\n O: \"professor\", T: \"professor\", W: \"browsie\", H: \"coding\",\n};\n\nexport function typeLabel(t: SessionType): string { return TYPE_LABELS[t]; }\n\n/** #1271: single source of truth = SessionProfile. Kept as fallback for callers\n * that import spin-types without pulling in spin-profiles. */\nexport function typeAgent(t: SessionType): AgentName {\n try {\n // Lazy require to avoid circular import (spin-profiles \u2192 spin-types).\n // The static map is also kept for back-compat in the standalone abmind path.\n const { SESSION_PROFILES } = require(\"./spin-profiles.js\") as typeof import(\"./spin-profiles.js\");\n return SESSION_PROFILES[t].agent;\n } catch {\n return TYPE_AGENT_MAP[t] ?? \"professor\";\n }\n}\n\nexport function parseSessionType(input: string): SessionType | null {\n switch (input.toLowerCase()) {\n case \"browse\": return \"B\";\n case \"code\": return \"C\";\n case \"task\": return \"T\";\n default: return null;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SESSION_PROFILES"]
|
|
7
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_user_registry,
|
|
5
5
|
loadUsers
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-E7XD5UGB.js";
|
|
7
7
|
import {
|
|
8
8
|
__esm
|
|
9
9
|
} from "./chunk-7K2YZTLD.js";
|
|
@@ -24,4 +24,4 @@ export {
|
|
|
24
24
|
getMasterUserId,
|
|
25
25
|
init_master_user
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-CK7YTA2F.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
logDebug,
|
|
6
6
|
logInfo,
|
|
7
7
|
logWarn
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-XRTXYN66.js";
|
|
9
9
|
import {
|
|
10
10
|
abmindHome,
|
|
11
11
|
init_paths
|
|
@@ -148,4 +148,4 @@ export {
|
|
|
148
148
|
getHookSummary,
|
|
149
149
|
fire
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-DZJ5QZFD.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
init_logger,
|
|
5
5
|
logTrace
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-XRTXYN66.js";
|
|
7
7
|
|
|
8
8
|
// src/components/env.ts
|
|
9
9
|
init_logger();
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
readEnv,
|
|
27
27
|
readEnvWithDefault
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-E67KESEG.js.map
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
import {
|
|
4
4
|
getEnv,
|
|
5
5
|
init_env_schema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6PA5JBUU.js";
|
|
7
7
|
import {
|
|
8
8
|
init_logger,
|
|
9
9
|
logInfo,
|
|
10
10
|
logWarn
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XRTXYN66.js";
|
|
12
12
|
import {
|
|
13
13
|
abtarsHome,
|
|
14
14
|
init_paths
|
|
@@ -100,4 +100,4 @@ export {
|
|
|
100
100
|
buildUsersBlock,
|
|
101
101
|
init_user_registry
|
|
102
102
|
};
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-E7XD5UGB.js.map
|