autohand-cli 0.7.8 → 0.7.10
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/README.md +19 -0
- package/dist/{AutomodeManager-YVCJXOMQ.js → AutomodeManager-NGRAO2MH.js} +35 -8
- package/dist/{AutomodeManager-HV6M7EAX.cjs → AutomodeManager-ZKQMBM4T.cjs} +35 -8
- package/dist/{CommunitySkillsCache-Q22FUAR5.js → CommunitySkillsCache-ILWHWE5P.js} +2 -2
- package/dist/CommunitySkillsCache-KHC6RUJW.cjs +7 -0
- package/dist/MemoryManager-6ZT7IDO5.cjs +7 -0
- package/dist/MemoryManager-AJGS5AKB.js +7 -0
- package/dist/PermissionManager-HG6W2DGU.cjs +10 -0
- package/dist/{PermissionManager-HATZKTRC.js → PermissionManager-U5OMGR3L.js} +3 -3
- package/dist/SessionManager-BJ2G6VV4.cjs +9 -0
- package/dist/{SessionManager-S5R6O3NU.js → SessionManager-ENPGYK5J.js} +2 -2
- package/dist/SkillsRegistry-6ZFOCT25.cjs +8 -0
- package/dist/{SkillsRegistry-R5WDM6T3.js → SkillsRegistry-C2SHOZ5D.js} +2 -2
- package/dist/{SyncApiClient-FAOMIZAP.js → SyncApiClient-AYXYSOJM.js} +1 -1
- package/dist/SyncApiClient-ID3KXEMA.cjs +10 -0
- package/dist/about-RGUM5QQ4.cjs +11 -0
- package/dist/about-VDR3SIHS.js +11 -0
- package/dist/add-dir-3BMVJ5H3.cjs +9 -0
- package/dist/{add-dir-PNU7AGKO.js → add-dir-RP2BL3JW.js} +2 -1
- package/dist/agents-JQ2PHCQB.js +10 -0
- package/dist/agents-RGSZ2BM3.cjs +10 -0
- package/dist/agents-new-LSJN2L2T.cjs +13 -0
- package/dist/agents-new-MZUEVKSK.js +13 -0
- package/dist/automode-DP3BMYJB.cjs +9 -0
- package/dist/{automode-QCRJSBRT.js → automode-XOF3U3OB.js} +2 -1
- package/dist/cc-2W6M7J45.cjs +8 -0
- package/dist/cc-UTTLESTY.js +8 -0
- package/dist/{chunk-B4ZPNXZE.cjs → chunk-34OGUMRO.cjs} +9 -5
- package/dist/chunk-3652ROFD.js +589 -0
- package/dist/{chunk-KNLBEUAV.cjs → chunk-3DQSBW4B.cjs} +10 -6
- package/dist/{chunk-XFPITUFJ.cjs → chunk-3S4DEIJP.cjs} +50 -8
- package/dist/{chunk-5MDDOGTD.cjs → chunk-3UNX56GC.cjs} +30 -37
- package/dist/chunk-46WX5IO2.cjs +499 -0
- package/dist/{chunk-OC5YDNFC.js → chunk-4ULBAYME.js} +42 -57
- package/dist/{chunk-VEDIYPWY.cjs → chunk-5BQ57AZC.cjs} +9 -9
- package/dist/{chunk-B5N5UAMO.cjs → chunk-5FZM7KLB.cjs} +13 -10
- package/dist/{chunk-JBKP2CLA.cjs → chunk-5NZA4UB4.cjs} +47 -47
- package/dist/{chunk-VPAN5H7Q.js → chunk-5Q3W4DEU.js} +43 -36
- package/dist/{chunk-VMMGT42E.cjs → chunk-65GTO4QM.cjs} +7 -3
- package/dist/{chunk-CXZEPTRI.js → chunk-6P3K4YUW.js} +6 -2
- package/dist/{chunk-MDWULS57.js → chunk-6UJMCWRY.js} +56 -33
- package/dist/chunk-73XIKTZL.js +124 -0
- package/dist/{chunk-23JQSCTO.js → chunk-7QNW24ZT.js} +8 -4
- package/dist/{chunk-XT4OSHSB.cjs → chunk-AEYOIPHD.cjs} +6 -2
- package/dist/chunk-ANUQFV43.cjs +589 -0
- package/dist/chunk-ATR3RORT.js +499 -0
- package/dist/{chunk-A6QBABQ7.js → chunk-B72CC4O6.js} +2 -2
- package/dist/{chunk-TAZJSKFD.js → chunk-BBIKQW66.js} +9 -5
- package/dist/{chunk-FFA4LDAO.cjs → chunk-BDIZGBDA.cjs} +8 -3
- package/dist/{chunk-3YEDXG6S.js → chunk-BG4OQUKP.js} +1 -1
- package/dist/{chunk-WIUGUR5T.js → chunk-BODVOW7B.js} +67 -16
- package/dist/{chunk-A552JHUJ.cjs → chunk-BZ73ZQTE.cjs} +34 -25
- package/dist/{chunk-YDOR2OCA.cjs → chunk-C22G4UE4.cjs} +27 -19
- package/dist/{chunk-GFJ6AETU.cjs → chunk-C2E3GJEE.cjs} +12 -9
- package/dist/{chunk-UL7YPRCU.js → chunk-C5SVIQG3.js} +10 -5
- package/dist/{chunk-6KMAJTU3.js → chunk-CUBYCLNL.js} +3 -2
- package/dist/{chunk-52MLYK5P.js → chunk-D2XFTCRP.js} +1 -1
- package/dist/{chunk-OBV3UUIL.js → chunk-DEAEO7RI.js} +1 -1
- package/dist/chunk-DMPVI3YK.cjs +400 -0
- package/dist/{chunk-C26EN22G.cjs → chunk-DUDDZRCS.cjs} +9 -5
- package/dist/{chunk-4RWTUT2Z.js → chunk-E7YL3AHT.js} +32 -23
- package/dist/{chunk-54GVL2SE.cjs → chunk-EAOEAQGF.cjs} +3 -2
- package/dist/{chunk-PU534KPO.cjs → chunk-EV53SLSB.cjs} +4 -4
- package/dist/{chunk-EDGV5BNH.js → chunk-F3EIOVSQ.js} +26 -33
- package/dist/{chunk-SFGJQPGC.cjs → chunk-FPHU2ES6.cjs} +56 -33
- package/dist/{chunk-G77ZY4QG.js → chunk-GD4AFYJ3.js} +1 -1
- package/dist/{chunk-PMMSDR44.cjs → chunk-GIZL57FE.cjs} +5 -1
- package/dist/{chunk-I4HVBWYF.js → chunk-GLAE5K5W.js} +7 -2
- package/dist/{chunk-4AMTDSQ3.cjs → chunk-HDSEJMWI.cjs} +6 -3
- package/dist/chunk-HLFZPN65.js +94 -0
- package/dist/{chunk-ZWS3KSMK.js → chunk-HQQ4NKER.js} +5 -2
- package/dist/{chunk-WBDPILKI.cjs → chunk-HVOBMOZ2.cjs} +6 -2
- package/dist/{chunk-MJFBVQHB.js → chunk-IPI3JXKP.js} +10 -7
- package/dist/chunk-IXFOH4OC.cjs +222 -0
- package/dist/chunk-JS7IPR7P.js +249 -0
- package/dist/{chunk-7TOHYAUF.cjs → chunk-KC5FPUOF.cjs} +2 -2
- package/dist/{chunk-7VW3A7DO.cjs → chunk-L42HTMMR.cjs} +2 -2
- package/dist/chunk-LGGZQTLM.cjs +209 -0
- package/dist/chunk-LOXOD4IS.cjs +8630 -0
- package/dist/chunk-MNCWB5F7.cjs +63 -0
- package/dist/{chunk-AVL4DKQO.js → chunk-MYNHJHDZ.js} +1 -1
- package/dist/{chunk-GDTZQSJ6.cjs → chunk-N4ZSG6JJ.cjs} +2 -2
- package/dist/chunk-NCC6ETZS.js +362 -0
- package/dist/chunk-NF7RIHJK.js +45 -0
- package/dist/{chunk-SYJLMBLP.cjs → chunk-NGBN2NGH.cjs} +77 -26
- package/dist/{chunk-SLISYSP4.cjs → chunk-NRORJRD4.cjs} +4 -4
- package/dist/{chunk-OTS4YFSZ.cjs → chunk-OKABWSWA.cjs} +7 -3
- package/dist/{chunk-KH7BCZJN.js → chunk-OLG7LZBD.js} +1 -1
- package/dist/{chunk-KZ7VMQTC.js → chunk-OMEH2EVE.js} +5 -1
- package/dist/{chunk-U5WIP4HS.js → chunk-P5VDZ6PV.js} +47 -5
- package/dist/{chunk-V5MTBGM4.cjs → chunk-PA2H2263.cjs} +6 -2
- package/dist/chunk-PGRH5Q77.cjs +249 -0
- package/dist/{chunk-DPJ3IIBB.js → chunk-PM62ZYXA.js} +18 -10
- package/dist/chunk-PNSRJT46.js +380 -0
- package/dist/{chunk-C3IFF3EH.cjs → chunk-PSED4Z4X.cjs} +43 -58
- package/dist/{chunk-EKY5PKQI.js → chunk-PWLLLJHU.js} +5 -1
- package/dist/{chunk-DOTAX65F.js → chunk-PYLR4J2D.js} +8 -4
- package/dist/{chunk-YWKZF2SA.js → chunk-QC6IUDDJ.js} +46 -46
- package/dist/{chunk-4M2GX7RH.cjs → chunk-QM7HZCQW.cjs} +11 -6
- package/dist/chunk-QRQ5EX7I.cjs +380 -0
- package/dist/{chunk-YDH2BMEN.js → chunk-QU64XI5X.js} +9 -6
- package/dist/{chunk-3L76MLO5.cjs → chunk-R7SDL3DJ.cjs} +27 -31
- package/dist/{chunk-WQSWU2QA.cjs → chunk-RJP3SZ7Q.cjs} +46 -255
- package/dist/{chunk-BAFJQUWR.js → chunk-RJXNNIFW.js} +18 -22
- package/dist/{chunk-YAGD43KA.cjs → chunk-S5G7OEN2.cjs} +47 -40
- package/dist/{chunk-2JPUEN44.cjs → chunk-SA4JOV4F.cjs} +61 -86
- package/dist/chunk-SAG6IY5Z.cjs +94 -0
- package/dist/chunk-TSV4LVHK.js +35 -0
- package/dist/{chunk-JHFH3N4U.cjs → chunk-TSY7JHIV.cjs} +2 -2
- package/dist/chunk-U23U52ZN.cjs +124 -0
- package/dist/chunk-UET7BDX2.js +8630 -0
- package/dist/chunk-ULQ6MDSJ.cjs +362 -0
- package/dist/{chunk-WH3D42BQ.js → chunk-UM4QEO36.js} +59 -84
- package/dist/chunk-VXCMGBXY.cjs +35 -0
- package/dist/chunk-WD5ZF6HE.js +63 -0
- package/dist/chunk-WH5RW7DV.cjs +85 -0
- package/dist/{chunk-GSOEIEOU.js → chunk-WJ276BIP.js} +5 -1
- package/dist/{chunk-P2Z6GDEN.js → chunk-WLTVF77A.js} +1 -1
- package/dist/{chunk-53BR4MUW.cjs → chunk-WOGJXDBU.cjs} +3 -3
- package/dist/{chunk-QJ53OSGF.js → chunk-WRJLBHWB.js} +6 -2
- package/dist/chunk-WYLFLZ42.js +222 -0
- package/dist/{chunk-B7EUETGY.cjs → chunk-XL77XYI2.cjs} +4 -4
- package/dist/{chunk-NI3BQXKU.js → chunk-XLI7SHCH.js} +2 -2
- package/dist/chunk-Y27LG4BQ.cjs +45 -0
- package/dist/chunk-Y6OWFIUF.js +209 -0
- package/dist/chunk-YKSSNFDZ.js +400 -0
- package/dist/{chunk-VRI7EXV6.js → chunk-YMDLUTF2.js} +5 -1
- package/dist/chunk-YVY27BJT.js +85 -0
- package/dist/{chunk-GWIAMKKF.js → chunk-ZBIBLOZL.js} +40 -249
- package/dist/completion-HVSWU5GR.cjs +13 -0
- package/dist/completion-WJ2MVNDH.js +13 -0
- package/dist/constants-RBQTR32A.cjs +20 -0
- package/dist/{constants-ZLG6M5SI.js → constants-V6J54N3X.js} +1 -1
- package/dist/export-NN7F5ANA.js +11 -0
- package/dist/export-UPS3AK2P.cjs +11 -0
- package/dist/feedback-ARI7CLVQ.js +14 -0
- package/dist/feedback-OZTPYHKJ.cjs +14 -0
- package/dist/help-4674IV4D.cjs +58 -0
- package/dist/help-ENG5KV2M.js +58 -0
- package/dist/history-2KUM6GN4.cjs +13 -0
- package/dist/history-RZFT34Q7.js +13 -0
- package/dist/hooks-7QSUBHBM.cjs +12 -0
- package/dist/hooks-S4MD4QSR.js +12 -0
- package/dist/i18n-6NKENUIV.js +32 -0
- package/dist/i18n-MXQXQOVE.cjs +32 -0
- package/dist/ide-5STDV43A.cjs +11 -0
- package/dist/ide-W2NYXOWQ.js +11 -0
- package/dist/index.cjs +18002 -13864
- package/dist/index.js +18252 -14114
- package/dist/init-FG5KEJCZ.cjs +9 -0
- package/dist/init-TV4MJDYK.js +9 -0
- package/dist/language-52Q7CSAY.cjs +16 -0
- package/dist/language-FXFDGOBF.js +16 -0
- package/dist/localProjectPermissions-2EATUDZM.cjs +17 -0
- package/dist/{localProjectPermissions-YFFAKLUZ.js → localProjectPermissions-WQYMGI42.js} +2 -2
- package/dist/login-AN42IOBK.js +18 -0
- package/dist/login-I65V4TGU.cjs +18 -0
- package/dist/logout-KK5UWGNG.js +16 -0
- package/dist/logout-VYYNWBHZ.cjs +16 -0
- package/dist/mcp-4SKTDECJ.js +15 -0
- package/dist/mcp-AGWPTMAX.cjs +15 -0
- package/dist/mcp-install-3NN2HAYR.cjs +473 -0
- package/dist/mcp-install-KTV52DQK.js +473 -0
- package/dist/memory-LG4K6XV6.cjs +9 -0
- package/dist/{memory-4GSP7NKV.js → memory-LRDK2SYC.js} +2 -1
- package/dist/model-P5D7ATE7.cjs +9 -0
- package/dist/{model-HKEFSH5E.js → model-WBFJIGUN.js} +2 -1
- package/dist/{new-EEZC4XXV.js → new-5A7RQEKI.js} +2 -1
- package/dist/new-EAATWI2G.cjs +9 -0
- package/dist/permissions-5URK6C44.js +12 -0
- package/dist/permissions-CJUDVG63.cjs +12 -0
- package/dist/plan-B3CW5DXJ.cjs +10 -0
- package/dist/plan-JFGNRL2S.js +10 -0
- package/dist/quit-A33JHDG7.cjs +9 -0
- package/dist/quit-IYBLN3DB.js +9 -0
- package/dist/resume-OPSJTCH7.cjs +12 -0
- package/dist/resume-TOWEEN5D.js +12 -0
- package/dist/search-GOLIE5BA.js +14 -0
- package/dist/search-H42HGUK5.cjs +14 -0
- package/dist/{sessions-4KXIT76T.js → sessions-B5NENDKY.js} +2 -1
- package/dist/sessions-YHAVEMWY.cjs +9 -0
- package/dist/share-2JD2AKKX.cjs +13 -0
- package/dist/share-MYGDOTQE.js +13 -0
- package/dist/{skills-3YEEODHK.js → skills-ICEQ2TNC.js} +2 -1
- package/dist/skills-LFVNZOMF.cjs +13 -0
- package/dist/{skills-install-KAXAQSN6.js → skills-install-6RN7FVCP.js} +9 -7
- package/dist/{skills-install-FTGOHOZ4.cjs → skills-install-LU6GA2WF.cjs} +14 -12
- package/dist/skills-new-5BM5PDFX.cjs +14 -0
- package/dist/skills-new-KWBWOX74.js +14 -0
- package/dist/status-M3XHJELG.cjs +10 -0
- package/dist/status-ZQDUYMKQ.js +10 -0
- package/dist/sync-6M3WRKMH.cjs +39 -0
- package/dist/sync-73D2MP65.cjs +16 -0
- package/dist/{sync-H4UHHLKU.js → sync-EXYX7HXW.js} +3 -3
- package/dist/sync-LL6M67CN.js +16 -0
- package/dist/theme-IFEI2IBJ.cjs +16 -0
- package/dist/theme-U3SKEULY.js +16 -0
- package/dist/ui/questionModal.cjs +28 -0
- package/dist/ui/questionModal.d.cts +11 -0
- package/dist/ui/questionModal.d.ts +11 -0
- package/dist/ui/questionModal.js +28 -0
- package/dist/undo-4DS67OAW.cjs +9 -0
- package/dist/undo-YMALVAPN.js +9 -0
- package/package.json +3 -2
- package/dist/CommunitySkillsCache-2BITCEAA.cjs +0 -7
- package/dist/MemoryManager-2ATHG7BH.js +0 -7
- package/dist/MemoryManager-AENCGCEW.cjs +0 -7
- package/dist/PermissionManager-6HZGTK2N.cjs +0 -10
- package/dist/SessionManager-AG4WT3DP.cjs +0 -9
- package/dist/SkillsRegistry-ZXU6YDRP.cjs +0 -8
- package/dist/SyncApiClient-UOA4VLLD.cjs +0 -10
- package/dist/add-dir-OMK3Y4DM.cjs +0 -8
- package/dist/agents-ICAC3KD3.js +0 -9
- package/dist/agents-YONWPKFS.cjs +0 -9
- package/dist/agents-new-NV557UVG.cjs +0 -10
- package/dist/agents-new-QHM3CO4B.js +0 -10
- package/dist/automode-BRHUHGXU.cjs +0 -8
- package/dist/chunk-3HPUOQJN.cjs +0 -23
- package/dist/chunk-5DN5KNXU.js +0 -81
- package/dist/chunk-7BYSXAKS.js +0 -23
- package/dist/chunk-ARVFUZOB.js +0 -736
- package/dist/chunk-BEIG7V7Q.cjs +0 -51
- package/dist/chunk-GWXXFQ3F.cjs +0 -81
- package/dist/chunk-XFQS2VGT.cjs +0 -736
- package/dist/chunk-Z3Q2AFDS.js +0 -51
- package/dist/completion-WVFWX7XQ.cjs +0 -10
- package/dist/completion-Y42FKDT3.js +0 -10
- package/dist/constants-G2PLP5HH.cjs +0 -20
- package/dist/export-BKBJ7PB2.cjs +0 -8
- package/dist/export-WJ5P6E5Z.js +0 -8
- package/dist/feedback-HZBCTSFG.js +0 -10
- package/dist/feedback-JBQ3UPGZ.cjs +0 -10
- package/dist/help-PKC6QCNG.js +0 -10
- package/dist/help-UEELQRHP.cjs +0 -10
- package/dist/hooks-G4VLYMLX.cjs +0 -9
- package/dist/hooks-LN4A6NQL.js +0 -9
- package/dist/init-DML7AOII.js +0 -8
- package/dist/init-SLLSDDJN.cjs +0 -8
- package/dist/language-KODBDE5R.js +0 -12
- package/dist/language-SJT475NW.cjs +0 -12
- package/dist/localProjectPermissions-AYQYGTOE.cjs +0 -17
- package/dist/login-TC2KROQI.js +0 -14
- package/dist/login-TYMR2ZD3.cjs +0 -14
- package/dist/logout-2ECV365P.js +0 -12
- package/dist/logout-CO3CPYZJ.cjs +0 -12
- package/dist/memory-CFNC7RJH.cjs +0 -8
- package/dist/model-TKVEJ5BC.cjs +0 -8
- package/dist/new-EB2MBQXA.cjs +0 -8
- package/dist/permissions-5MTH22EF.js +0 -9
- package/dist/permissions-IP5SITPI.cjs +0 -9
- package/dist/quit-2RYFGIJP.cjs +0 -8
- package/dist/quit-RSYIERO5.js +0 -8
- package/dist/resume-EPOEF3WV.cjs +0 -9
- package/dist/resume-LOYD5MMP.js +0 -9
- package/dist/sessions-7RTCPVNE.cjs +0 -8
- package/dist/share-APR5S2CS.cjs +0 -10
- package/dist/share-VLJFDZKR.js +0 -10
- package/dist/skills-CRM55MKM.cjs +0 -12
- package/dist/skills-new-JF4FKNUT.cjs +0 -11
- package/dist/skills-new-JYX2GBKM.js +0 -11
- package/dist/status-DAEFE7ZC.cjs +0 -9
- package/dist/status-PBFFUC4Q.js +0 -9
- package/dist/sync-3B7SNBYC.js +0 -14
- package/dist/sync-4RARBQIH.cjs +0 -39
- package/dist/sync-YZ6YZ42H.cjs +0 -14
- package/dist/theme-3XV5BWUB.js +0 -12
- package/dist/theme-Z2WS5XWZ.cjs +0 -12
- package/dist/undo-2WR2ZIEC.cjs +0 -8
- package/dist/undo-7QJBXARS.js +0 -8
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunk3S4DEIJPcjs = require('./chunk-3S4DEIJP.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkTSY7JHIVcjs = require('./chunk-TSY7JHIV.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkMNCWB5F7cjs = require('./chunk-MNCWB5F7.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkRJP3SZ7Qcjs = require('./chunk-RJP3SZ7Q.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
|
|
17
20
|
|
|
18
21
|
// src/commands/login.ts
|
|
19
22
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
20
23
|
var metadata = {
|
|
21
24
|
command: "/login",
|
|
22
|
-
description:
|
|
25
|
+
description: _chunkLOXOD4IScjs.t.call(void 0, "commands.login.description"),
|
|
23
26
|
implemented: true
|
|
24
27
|
};
|
|
25
28
|
async function openBrowser(url) {
|
|
@@ -53,33 +56,33 @@ function sleep(ms) {
|
|
|
53
56
|
async function login(ctx) {
|
|
54
57
|
const config = ctx.config;
|
|
55
58
|
if (_optionalChain([config, 'optionalAccess', _ => _.auth, 'optionalAccess', _2 => _2.token]) && _optionalChain([config, 'optionalAccess', _3 => _3.auth, 'optionalAccess', _4 => _4.user])) {
|
|
56
|
-
const result = await
|
|
59
|
+
const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
57
60
|
type: "confirm",
|
|
58
61
|
name: "continueLogin",
|
|
59
62
|
message: `Already logged in as ${_chalk2.default.cyan(config.auth.user.email)}. Log in with a different account?`,
|
|
60
63
|
initial: false
|
|
61
64
|
});
|
|
62
65
|
if (!result || !result.continueLogin) {
|
|
63
|
-
console.log(_chalk2.default.gray("
|
|
66
|
+
console.log(_chalk2.default.gray(_chunkLOXOD4IScjs.t.call(void 0, "commands.login.cancelled")));
|
|
64
67
|
return null;
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
|
-
const authClient =
|
|
70
|
+
const authClient = _chunkTSY7JHIVcjs.getAuthClient.call(void 0, );
|
|
68
71
|
console.log(_chalk2.default.gray("Initiating authentication..."));
|
|
69
72
|
const initResult = await authClient.initiateDeviceAuth();
|
|
70
73
|
if (!initResult.success || !initResult.deviceCode || !initResult.userCode) {
|
|
71
|
-
console.log(_chalk2.default.red(
|
|
74
|
+
console.log(_chalk2.default.red(_chunkLOXOD4IScjs.t.call(void 0, "commands.login.failed", { error: initResult.error || "Unknown error" })));
|
|
72
75
|
return null;
|
|
73
76
|
}
|
|
74
77
|
console.log();
|
|
75
78
|
console.log(_chalk2.default.bold("To sign in, visit:"));
|
|
76
|
-
console.log(_chalk2.default.cyan.underline(initResult.verificationUriComplete || `${
|
|
79
|
+
console.log(_chalk2.default.cyan.underline(initResult.verificationUriComplete || `${_chunkGIZL57FEcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`));
|
|
77
80
|
console.log();
|
|
78
81
|
console.log(_chalk2.default.gray("Or enter this code manually:"));
|
|
79
82
|
console.log(_chalk2.default.bold.yellow(` ${initResult.userCode}`));
|
|
80
83
|
console.log();
|
|
81
84
|
const browserOpened = await openBrowser(
|
|
82
|
-
initResult.verificationUriComplete || `${
|
|
85
|
+
initResult.verificationUriComplete || `${_chunkGIZL57FEcjs.AUTH_CONFIG.authorizationUrl}?code=${initResult.userCode}`
|
|
83
86
|
);
|
|
84
87
|
if (browserOpened) {
|
|
85
88
|
console.log(_chalk2.default.gray("Browser opened. Complete the login in your browser."));
|
|
@@ -90,8 +93,8 @@ async function login(ctx) {
|
|
|
90
93
|
console.log(_chalk2.default.gray("Waiting for authorization..."));
|
|
91
94
|
console.log(_chalk2.default.gray("(Press Ctrl+C to cancel)"));
|
|
92
95
|
const startTime = Date.now();
|
|
93
|
-
const timeout =
|
|
94
|
-
const pollInterval = initResult.interval ? initResult.interval * 1e3 :
|
|
96
|
+
const timeout = _chunkGIZL57FEcjs.AUTH_CONFIG.authTimeout;
|
|
97
|
+
const pollInterval = initResult.interval ? initResult.interval * 1e3 : _chunkGIZL57FEcjs.AUTH_CONFIG.pollInterval;
|
|
95
98
|
let dots = 0;
|
|
96
99
|
const maxDots = 3;
|
|
97
100
|
while (Date.now() - startTime < timeout) {
|
|
@@ -101,7 +104,7 @@ async function login(ctx) {
|
|
|
101
104
|
const pollResult = await authClient.pollDeviceAuth(initResult.deviceCode);
|
|
102
105
|
if (pollResult.status === "authorized" && pollResult.token && pollResult.user) {
|
|
103
106
|
process.stdout.write("\r" + " ".repeat(20) + "\r");
|
|
104
|
-
const expiresAt = new Date(Date.now() +
|
|
107
|
+
const expiresAt = new Date(Date.now() + _chunkGIZL57FEcjs.AUTH_CONFIG.sessionExpiryDays * 24 * 60 * 60 * 1e3).toISOString();
|
|
105
108
|
const updatedConfig = {
|
|
106
109
|
...config,
|
|
107
110
|
auth: {
|
|
@@ -110,10 +113,9 @@ async function login(ctx) {
|
|
|
110
113
|
expiresAt
|
|
111
114
|
}
|
|
112
115
|
};
|
|
113
|
-
await
|
|
116
|
+
await _chunkRJP3SZ7Qcjs.saveConfig.call(void 0, updatedConfig);
|
|
114
117
|
console.log();
|
|
115
|
-
console.log(_chalk2.default.green("
|
|
116
|
-
console.log(_chalk2.default.cyan(`Welcome, ${pollResult.user.name || pollResult.user.email}!`));
|
|
118
|
+
console.log(_chalk2.default.green(_chunkLOXOD4IScjs.t.call(void 0, "commands.login.success", { email: pollResult.user.name || pollResult.user.email })));
|
|
117
119
|
console.log();
|
|
118
120
|
await checkAndRestoreSyncData(pollResult.token, pollResult.user.id, updatedConfig);
|
|
119
121
|
return null;
|
|
@@ -130,16 +132,16 @@ async function login(ctx) {
|
|
|
130
132
|
}
|
|
131
133
|
async function checkAndRestoreSyncData(token, userId, config) {
|
|
132
134
|
try {
|
|
133
|
-
const syncService =
|
|
135
|
+
const syncService = _chunk3S4DEIJPcjs.createSyncService.call(void 0, {
|
|
134
136
|
authToken: token,
|
|
135
137
|
userId,
|
|
136
138
|
config: {
|
|
137
|
-
...
|
|
139
|
+
..._chunk3S4DEIJPcjs.DEFAULT_SYNC_CONFIG,
|
|
138
140
|
...config.sync,
|
|
139
141
|
enabled: true
|
|
140
142
|
}
|
|
141
143
|
});
|
|
142
|
-
const { getSyncApiClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./SyncApiClient-
|
|
144
|
+
const { getSyncApiClient } = await Promise.resolve().then(() => _interopRequireWildcard(require("./SyncApiClient-ID3KXEMA.cjs")));
|
|
143
145
|
const apiClient = getSyncApiClient();
|
|
144
146
|
const remoteManifest = await apiClient.getRemoteManifest(token);
|
|
145
147
|
if (!remoteManifest || remoteManifest.files.length === 0) {
|
|
@@ -151,7 +153,7 @@ async function checkAndRestoreSyncData(token, userId, config) {
|
|
|
151
153
|
console.log(_chalk2.default.cyan(`Found cloud sync data (${fileCount} files, ${sizeStr})`));
|
|
152
154
|
console.log(_chalk2.default.gray("This includes your settings, agents, skills, and memory."));
|
|
153
155
|
console.log();
|
|
154
|
-
const result = await
|
|
156
|
+
const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
155
157
|
type: "confirm",
|
|
156
158
|
name: "restore",
|
|
157
159
|
message: "Would you like to restore your settings from the cloud?",
|
|
@@ -162,17 +164,66 @@ async function checkAndRestoreSyncData(token, userId, config) {
|
|
|
162
164
|
return;
|
|
163
165
|
}
|
|
164
166
|
console.log(_chalk2.default.gray("Restoring settings from cloud..."));
|
|
165
|
-
|
|
166
|
-
|
|
167
|
+
console.log(_chalk2.default.gray("(Press ESC or Ctrl+C to cancel)"));
|
|
168
|
+
const syncResult = await cancellableOperation(
|
|
169
|
+
() => syncService.forceDownload()
|
|
170
|
+
);
|
|
171
|
+
if (!syncResult) {
|
|
172
|
+
console.log(_chalk2.default.yellow("\nSync restore cancelled."));
|
|
173
|
+
console.log(_chalk2.default.gray("You can sync later with /sync."));
|
|
174
|
+
} else if (syncResult.success) {
|
|
167
175
|
console.log(_chalk2.default.green(`Restored ${syncResult.downloaded} files from cloud.`));
|
|
168
176
|
} else {
|
|
169
177
|
console.log(_chalk2.default.yellow(`Sync restore failed: ${syncResult.error}`));
|
|
170
178
|
console.log(_chalk2.default.gray("You can try again later with /sync."));
|
|
171
179
|
}
|
|
172
|
-
} catch (
|
|
180
|
+
} catch (e2) {
|
|
173
181
|
console.log(_chalk2.default.gray("Could not check cloud sync data."));
|
|
174
182
|
}
|
|
175
183
|
}
|
|
184
|
+
async function cancellableOperation(fn) {
|
|
185
|
+
const stdin = process.stdin;
|
|
186
|
+
const wasRaw = stdin.isRaw;
|
|
187
|
+
return new Promise((resolve) => {
|
|
188
|
+
let settled = false;
|
|
189
|
+
const cleanup = () => {
|
|
190
|
+
stdin.removeListener("data", onData);
|
|
191
|
+
if (stdin.isTTY && stdin.setRawMode) {
|
|
192
|
+
try {
|
|
193
|
+
stdin.setRawMode(_nullishCoalesce(wasRaw, () => ( false)));
|
|
194
|
+
} catch (e3) {
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
const onData = (data) => {
|
|
199
|
+
const s = data.toString();
|
|
200
|
+
if (s === "\x1B" || s === "") {
|
|
201
|
+
if (settled) return;
|
|
202
|
+
settled = true;
|
|
203
|
+
cleanup();
|
|
204
|
+
resolve(null);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
if (stdin.isTTY && stdin.setRawMode) {
|
|
208
|
+
try {
|
|
209
|
+
stdin.setRawMode(true);
|
|
210
|
+
} catch (e4) {
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
stdin.on("data", onData);
|
|
214
|
+
fn().then((result) => {
|
|
215
|
+
if (settled) return;
|
|
216
|
+
settled = true;
|
|
217
|
+
cleanup();
|
|
218
|
+
resolve(result);
|
|
219
|
+
}).catch(() => {
|
|
220
|
+
if (settled) return;
|
|
221
|
+
settled = true;
|
|
222
|
+
cleanup();
|
|
223
|
+
resolve(null);
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}
|
|
176
227
|
function formatSize(bytes) {
|
|
177
228
|
if (bytes === 0) return "0 B";
|
|
178
229
|
if (bytes < 1024) return `${bytes} B`;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkMNCWB5F7cjs = require('./chunk-MNCWB5F7.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
|
|
7
7
|
|
|
8
8
|
// src/commands/agents-new.ts
|
|
9
9
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
@@ -16,7 +16,7 @@ var metadata = {
|
|
|
16
16
|
prd: "prd/sub_agents_architecture.md"
|
|
17
17
|
};
|
|
18
18
|
async function createAgent(ctx) {
|
|
19
|
-
const answers = await
|
|
19
|
+
const answers = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, [
|
|
20
20
|
{
|
|
21
21
|
type: "input",
|
|
22
22
|
name: "name",
|
|
@@ -83,7 +83,7 @@ function buildPrompt(name, description) {
|
|
|
83
83
|
].filter(Boolean).join("\n");
|
|
84
84
|
}
|
|
85
85
|
function getAgentsDir() {
|
|
86
|
-
return
|
|
86
|
+
return _chunkGIZL57FEcjs.AUTOHAND_PATHS.agents;
|
|
87
87
|
}
|
|
88
88
|
function slugify(input) {
|
|
89
89
|
return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "agent";
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
|
|
4
|
+
|
|
5
|
+
// src/commands/automode.ts
|
|
2
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
3
7
|
var metadata = {
|
|
4
8
|
command: "/automode",
|
|
5
|
-
description:
|
|
9
|
+
description: _chunkLOXOD4IScjs.t.call(void 0, "commands.automode.description"),
|
|
6
10
|
implemented: true
|
|
7
11
|
};
|
|
8
12
|
function parseArgs(args) {
|
|
@@ -88,7 +92,7 @@ function handleStatus(manager) {
|
|
|
88
92
|
"",
|
|
89
93
|
` Session: ${state.sessionId}`,
|
|
90
94
|
` Status: ${state.status}`,
|
|
91
|
-
`
|
|
95
|
+
` ${_chunkLOXOD4IScjs.t.call(void 0, "commands.automode.iteration", { current: String(state.currentIteration), max: String(state.maxIterations) })}`,
|
|
92
96
|
` Files created: ${state.filesCreated}`,
|
|
93
97
|
` Files modified: ${state.filesModified}`
|
|
94
98
|
];
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
t
|
|
3
|
+
} from "./chunk-UET7BDX2.js";
|
|
4
|
+
|
|
1
5
|
// src/commands/model.ts
|
|
2
6
|
async function model(ctx) {
|
|
3
7
|
await ctx.promptModelSelection();
|
|
@@ -5,7 +9,7 @@ async function model(ctx) {
|
|
|
5
9
|
}
|
|
6
10
|
var metadata = {
|
|
7
11
|
command: "/model",
|
|
8
|
-
description: "
|
|
12
|
+
description: t("commands.model.description"),
|
|
9
13
|
implemented: true
|
|
10
14
|
};
|
|
11
15
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getSyncApiClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6UJMCWRY.js";
|
|
4
4
|
import {
|
|
5
5
|
AUTOHAND_HOME
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PWLLLJHU.js";
|
|
7
7
|
|
|
8
8
|
// src/sync/types.ts
|
|
9
9
|
var DEFAULT_SYNC_CONFIG = {
|
|
@@ -165,12 +165,14 @@ var SyncService = class {
|
|
|
165
165
|
this.timer = null;
|
|
166
166
|
this.syncing = false;
|
|
167
167
|
this.started = false;
|
|
168
|
+
this.authFailed = false;
|
|
168
169
|
this.authToken = options.authToken;
|
|
169
170
|
this.userId = options.userId;
|
|
170
171
|
this.config = options.config;
|
|
171
172
|
this.client = options.apiClient || getSyncApiClient();
|
|
172
173
|
this.onEvent = options.onEvent || (() => {
|
|
173
174
|
});
|
|
175
|
+
this.onAuthFailure = options.onAuthFailure;
|
|
174
176
|
this.basePath = AUTOHAND_HOME;
|
|
175
177
|
}
|
|
176
178
|
/**
|
|
@@ -179,9 +181,13 @@ var SyncService = class {
|
|
|
179
181
|
start() {
|
|
180
182
|
if (this.started) return;
|
|
181
183
|
this.started = true;
|
|
182
|
-
this.sync().
|
|
184
|
+
this.sync().then((result) => {
|
|
185
|
+
if (!result.success && this.isAuthError(result.error)) {
|
|
186
|
+
}
|
|
187
|
+
}).catch(() => {
|
|
183
188
|
});
|
|
184
189
|
this.timer = setInterval(() => {
|
|
190
|
+
if (this.authFailed) return;
|
|
185
191
|
this.sync().catch(() => {
|
|
186
192
|
});
|
|
187
193
|
}, this.config.interval);
|
|
@@ -279,7 +285,11 @@ var SyncService = class {
|
|
|
279
285
|
this.onEvent({ type: "conflict_resolved", path: file.path, strategy: "cloud_wins" });
|
|
280
286
|
}
|
|
281
287
|
} catch (error) {
|
|
282
|
-
|
|
288
|
+
const errorMsg = error.message;
|
|
289
|
+
if (this.isAuthError(errorMsg)) {
|
|
290
|
+
throw error;
|
|
291
|
+
}
|
|
292
|
+
this.onEvent({ type: "download_error", path: file.path, error: errorMsg });
|
|
283
293
|
}
|
|
284
294
|
}
|
|
285
295
|
for (const filePath of actions.localDeletes) {
|
|
@@ -311,7 +321,11 @@ var SyncService = class {
|
|
|
311
321
|
uploaded++;
|
|
312
322
|
this.onEvent({ type: "file_uploaded", path: file.path, size: content.length });
|
|
313
323
|
} catch (error) {
|
|
314
|
-
|
|
324
|
+
const errorMsg = error.message;
|
|
325
|
+
if (this.isAuthError(errorMsg)) {
|
|
326
|
+
throw error;
|
|
327
|
+
}
|
|
328
|
+
this.onEvent({ type: "upload_error", path: file.path, error: errorMsg });
|
|
315
329
|
}
|
|
316
330
|
}
|
|
317
331
|
await this.client.completeUpload(this.authToken, localManifest);
|
|
@@ -333,6 +347,17 @@ var SyncService = class {
|
|
|
333
347
|
return result;
|
|
334
348
|
} catch (error) {
|
|
335
349
|
const errorMessage = error.message;
|
|
350
|
+
if (this.isAuthError(errorMessage)) {
|
|
351
|
+
this.handleAuthFailure(errorMessage);
|
|
352
|
+
return {
|
|
353
|
+
success: false,
|
|
354
|
+
uploaded: 0,
|
|
355
|
+
downloaded: 0,
|
|
356
|
+
conflicts: 0,
|
|
357
|
+
error: "Authentication expired. Please run /login again.",
|
|
358
|
+
duration: Date.now() - startTime
|
|
359
|
+
};
|
|
360
|
+
}
|
|
336
361
|
this.onEvent({ type: "sync_failed", error: errorMessage });
|
|
337
362
|
return {
|
|
338
363
|
success: false,
|
|
@@ -348,6 +373,23 @@ var SyncService = class {
|
|
|
348
373
|
});
|
|
349
374
|
}
|
|
350
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* Check if an error message indicates an authentication failure
|
|
378
|
+
*/
|
|
379
|
+
isAuthError(errorMessage) {
|
|
380
|
+
if (!errorMessage) return false;
|
|
381
|
+
return errorMessage.includes("401") || errorMessage.toLowerCase().includes("unauthorized") || errorMessage.toLowerCase().includes("authentication");
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Handle authentication failure - stop service and notify
|
|
385
|
+
*/
|
|
386
|
+
handleAuthFailure(errorMessage) {
|
|
387
|
+
if (this.authFailed) return;
|
|
388
|
+
this.authFailed = true;
|
|
389
|
+
this.stop();
|
|
390
|
+
this.onEvent({ type: "auth_failure", error: errorMessage });
|
|
391
|
+
this.onAuthFailure?.();
|
|
392
|
+
}
|
|
351
393
|
/**
|
|
352
394
|
* Build manifest from local ~/.autohand/ files
|
|
353
395
|
*/
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true})
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
|
|
4
|
+
|
|
5
|
+
// src/commands/init.ts
|
|
2
6
|
async function init(ctx) {
|
|
3
7
|
await ctx.createAgentsFile();
|
|
4
8
|
return null;
|
|
5
9
|
}
|
|
6
10
|
var metadata = {
|
|
7
11
|
command: "/init",
|
|
8
|
-
description:
|
|
12
|
+
description: _chunkLOXOD4IScjs.t.call(void 0, "commands.init.description"),
|
|
9
13
|
implemented: true
|
|
10
14
|
};
|
|
11
15
|
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/ui/theme/Theme.ts
|
|
2
|
+
var Theme = class {
|
|
3
|
+
constructor(name, colors, colorMode) {
|
|
4
|
+
this.ansiCache = /* @__PURE__ */ new Map();
|
|
5
|
+
this.name = name;
|
|
6
|
+
this.colors = colors;
|
|
7
|
+
this.colorMode = _nullishCoalesce(colorMode, () => ( detectColorMode()));
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Apply foreground color to text.
|
|
11
|
+
*/
|
|
12
|
+
fg(token, text) {
|
|
13
|
+
if (this.colorMode === "none") return text;
|
|
14
|
+
const color = this.colors[token];
|
|
15
|
+
if (!color) return text;
|
|
16
|
+
const ansi = this.getAnsiCode(color, "fg");
|
|
17
|
+
return `${ansi}${text}\x1B[39m`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Apply background color to text.
|
|
21
|
+
*/
|
|
22
|
+
bg(token, text) {
|
|
23
|
+
if (this.colorMode === "none") return text;
|
|
24
|
+
const color = this.colors[token];
|
|
25
|
+
if (!color) return text;
|
|
26
|
+
const ansi = this.getAnsiCode(color, "bg");
|
|
27
|
+
return `${ansi}${text}\x1B[49m`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Apply both foreground and background colors.
|
|
31
|
+
*/
|
|
32
|
+
fgBg(fgToken, bgToken, text) {
|
|
33
|
+
if (this.colorMode === "none") return text;
|
|
34
|
+
const fgColor = this.colors[fgToken];
|
|
35
|
+
const bgColor = this.colors[bgToken];
|
|
36
|
+
const fgAnsi = fgColor ? this.getAnsiCode(fgColor, "fg") : "";
|
|
37
|
+
const bgAnsi = bgColor ? this.getAnsiCode(bgColor, "bg") : "";
|
|
38
|
+
return `${fgAnsi}${bgAnsi}${text}\x1B[0m`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Apply bold style.
|
|
42
|
+
*/
|
|
43
|
+
bold(text) {
|
|
44
|
+
return `\x1B[1m${text}\x1B[22m`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Apply italic style.
|
|
48
|
+
*/
|
|
49
|
+
italic(text) {
|
|
50
|
+
return `\x1B[3m${text}\x1B[23m`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Apply underline style.
|
|
54
|
+
*/
|
|
55
|
+
underline(text) {
|
|
56
|
+
return `\x1B[4m${text}\x1B[24m`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Apply dim style.
|
|
60
|
+
*/
|
|
61
|
+
dimStyle(text) {
|
|
62
|
+
return `\x1B[2m${text}\x1B[22m`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Apply strikethrough style.
|
|
66
|
+
*/
|
|
67
|
+
strikethrough(text) {
|
|
68
|
+
return `\x1B[9m${text}\x1B[29m`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Reset all styles.
|
|
72
|
+
*/
|
|
73
|
+
reset(text) {
|
|
74
|
+
return `\x1B[0m${text}\x1B[0m`;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get raw color value for a token.
|
|
78
|
+
*/
|
|
79
|
+
getColor(token) {
|
|
80
|
+
return this.colors[token] || "";
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get current color mode.
|
|
84
|
+
*/
|
|
85
|
+
getColorMode() {
|
|
86
|
+
return this.colorMode;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Convert color value to ANSI escape code.
|
|
90
|
+
*/
|
|
91
|
+
getAnsiCode(color, type) {
|
|
92
|
+
const cacheKey = `${color}:${type}`;
|
|
93
|
+
const cached = this.ansiCache.get(cacheKey);
|
|
94
|
+
if (cached) return cached;
|
|
95
|
+
const code = this.colorToAnsi(color, type);
|
|
96
|
+
this.ansiCache.set(cacheKey, code);
|
|
97
|
+
return code;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Convert a color value to ANSI code based on color mode.
|
|
101
|
+
*/
|
|
102
|
+
colorToAnsi(color, type) {
|
|
103
|
+
if (!color) return "";
|
|
104
|
+
if (color.startsWith("#")) {
|
|
105
|
+
return this.hexToAnsi(color, type);
|
|
106
|
+
}
|
|
107
|
+
const numValue = parseInt(color, 10);
|
|
108
|
+
if (!isNaN(numValue) && numValue >= 0 && numValue <= 255) {
|
|
109
|
+
return this.index256ToAnsi(numValue, type);
|
|
110
|
+
}
|
|
111
|
+
return "";
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Convert hex color to ANSI code.
|
|
115
|
+
*/
|
|
116
|
+
hexToAnsi(hex, type) {
|
|
117
|
+
const rgb = hexToRgb(hex);
|
|
118
|
+
if (!rgb) return "";
|
|
119
|
+
const base = type === "fg" ? 38 : 48;
|
|
120
|
+
if (this.colorMode === "truecolor") {
|
|
121
|
+
return `\x1B[${base};2;${rgb.r};${rgb.g};${rgb.b}m`;
|
|
122
|
+
} else if (this.colorMode === "256") {
|
|
123
|
+
const index = rgbTo256(rgb.r, rgb.g, rgb.b);
|
|
124
|
+
return `\x1B[${base};5;${index}m`;
|
|
125
|
+
} else if (this.colorMode === "16") {
|
|
126
|
+
const index = rgbTo16(rgb.r, rgb.g, rgb.b);
|
|
127
|
+
const code = type === "fg" ? index < 8 ? 30 + index : 90 + index - 8 : index < 8 ? 40 + index : 100 + index - 8;
|
|
128
|
+
return `\x1B[${code}m`;
|
|
129
|
+
}
|
|
130
|
+
return "";
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Convert 256-color index to ANSI code.
|
|
134
|
+
*/
|
|
135
|
+
index256ToAnsi(index, type) {
|
|
136
|
+
const base = type === "fg" ? 38 : 48;
|
|
137
|
+
if (this.colorMode === "truecolor" || this.colorMode === "256") {
|
|
138
|
+
return `\x1B[${base};5;${index}m`;
|
|
139
|
+
} else if (this.colorMode === "16") {
|
|
140
|
+
const basicIndex = index < 16 ? index : index256To16(index);
|
|
141
|
+
const code = type === "fg" ? basicIndex < 8 ? 30 + basicIndex : 90 + basicIndex - 8 : basicIndex < 8 ? 40 + basicIndex : 100 + basicIndex - 8;
|
|
142
|
+
return `\x1B[${code}m`;
|
|
143
|
+
}
|
|
144
|
+
return "";
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
function detectColorMode() {
|
|
148
|
+
if (process.env.NO_COLOR !== void 0) {
|
|
149
|
+
return "none";
|
|
150
|
+
}
|
|
151
|
+
if (process.env.FORCE_COLOR !== void 0) {
|
|
152
|
+
const level = parseInt(process.env.FORCE_COLOR, 10);
|
|
153
|
+
if (level === 0) return "none";
|
|
154
|
+
if (level === 1) return "16";
|
|
155
|
+
if (level === 2) return "256";
|
|
156
|
+
if (level >= 3) return "truecolor";
|
|
157
|
+
}
|
|
158
|
+
const colorterm = process.env.COLORTERM;
|
|
159
|
+
if (colorterm === "truecolor" || colorterm === "24bit") {
|
|
160
|
+
return "truecolor";
|
|
161
|
+
}
|
|
162
|
+
const term = process.env.TERM || "";
|
|
163
|
+
if (term.includes("256color") || term.includes("256-color")) {
|
|
164
|
+
return "256";
|
|
165
|
+
}
|
|
166
|
+
if (term.includes("color") || term.includes("ansi") || term === "xterm") {
|
|
167
|
+
return "16";
|
|
168
|
+
}
|
|
169
|
+
if (process.stdout.isTTY) {
|
|
170
|
+
return "256";
|
|
171
|
+
}
|
|
172
|
+
return "none";
|
|
173
|
+
}
|
|
174
|
+
function hexToRgb(hex) {
|
|
175
|
+
const match = hex.match(/^#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/);
|
|
176
|
+
if (match) {
|
|
177
|
+
return {
|
|
178
|
+
r: parseInt(match[1], 16),
|
|
179
|
+
g: parseInt(match[2], 16),
|
|
180
|
+
b: parseInt(match[3], 16)
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const shortMatch = hex.match(/^#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/);
|
|
184
|
+
if (shortMatch) {
|
|
185
|
+
return {
|
|
186
|
+
r: parseInt(shortMatch[1] + shortMatch[1], 16),
|
|
187
|
+
g: parseInt(shortMatch[2] + shortMatch[2], 16),
|
|
188
|
+
b: parseInt(shortMatch[3] + shortMatch[3], 16)
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
function rgbTo256(r, g, b) {
|
|
194
|
+
if (r === g && g === b) {
|
|
195
|
+
if (r < 8) return 16;
|
|
196
|
+
if (r > 248) return 231;
|
|
197
|
+
return Math.round((r - 8) / 10) + 232;
|
|
198
|
+
}
|
|
199
|
+
const ri = Math.round(r / 51);
|
|
200
|
+
const gi = Math.round(g / 51);
|
|
201
|
+
const bi = Math.round(b / 51);
|
|
202
|
+
return 16 + 36 * ri + 6 * gi + bi;
|
|
203
|
+
}
|
|
204
|
+
function rgbTo16(r, g, b) {
|
|
205
|
+
const bright = (r + g + b) / 3 > 128 ? 8 : 0;
|
|
206
|
+
const ri = r > 128 ? 1 : 0;
|
|
207
|
+
const gi = g > 128 ? 2 : 0;
|
|
208
|
+
const bi = b > 128 ? 4 : 0;
|
|
209
|
+
return bright + ri + gi + bi;
|
|
210
|
+
}
|
|
211
|
+
function index256To16(index) {
|
|
212
|
+
if (index < 16) return index;
|
|
213
|
+
if (index >= 232) {
|
|
214
|
+
const gray = (index - 232) * 10 + 8;
|
|
215
|
+
return gray > 128 ? 15 : 0;
|
|
216
|
+
}
|
|
217
|
+
const adjusted = index - 16;
|
|
218
|
+
const r = Math.floor(adjusted / 36) * 51;
|
|
219
|
+
const g = Math.floor(adjusted % 36 / 6) * 51;
|
|
220
|
+
const b = adjusted % 6 * 51;
|
|
221
|
+
return rgbTo16(r, g, b);
|
|
222
|
+
}
|
|
223
|
+
var globalTheme = null;
|
|
224
|
+
function getTheme() {
|
|
225
|
+
if (!globalTheme) {
|
|
226
|
+
throw new Error("Theme not initialized. Call initTheme() first.");
|
|
227
|
+
}
|
|
228
|
+
return globalTheme;
|
|
229
|
+
}
|
|
230
|
+
function setTheme(theme) {
|
|
231
|
+
globalTheme = theme;
|
|
232
|
+
}
|
|
233
|
+
function isThemeInitialized() {
|
|
234
|
+
return globalTheme !== null;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
exports.Theme = Theme; exports.detectColorMode = detectColorMode; exports.hexToRgb = hexToRgb; exports.getTheme = getTheme; exports.setTheme = setTheme; exports.isThemeInitialized = isThemeInitialized;
|
|
245
|
+
/**
|
|
246
|
+
* @license
|
|
247
|
+
* Copyright 2025 Autohand AI LLC
|
|
248
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
249
|
+
*/
|