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
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var _chunkJHGIWNHLcjs = require('./chunk-JHGIWNHL.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkMNCWB5F7cjs = require('./chunk-MNCWB5F7.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkGIZL57FEcjs = require('./chunk-GIZL57FE.cjs');
|
|
10
10
|
|
|
11
11
|
// src/commands/skills-new.ts
|
|
12
12
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
@@ -25,7 +25,7 @@ async function createSkill(ctx) {
|
|
|
25
25
|
console.log(_chalk2.default.red("Skills registry not available."));
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
|
-
const answers = await
|
|
28
|
+
const answers = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, [
|
|
29
29
|
{
|
|
30
30
|
type: "input",
|
|
31
31
|
name: "name",
|
|
@@ -65,7 +65,7 @@ async function createSkill(ctx) {
|
|
|
65
65
|
console.log(_chalk2.default.gray("Canceled: no name provided."));
|
|
66
66
|
return null;
|
|
67
67
|
}
|
|
68
|
-
const storageResult = await
|
|
68
|
+
const storageResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
69
69
|
type: "select",
|
|
70
70
|
name: "level",
|
|
71
71
|
message: "Where should this skill be saved?",
|
|
@@ -81,7 +81,7 @@ async function createSkill(ctx) {
|
|
|
81
81
|
const storageLevel = storageResult.level;
|
|
82
82
|
if (skillsRegistry.hasSkill(name)) {
|
|
83
83
|
console.log(_chalk2.default.yellow(`A skill named "${name}" already exists.`));
|
|
84
|
-
const result = await
|
|
84
|
+
const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
85
85
|
type: "confirm",
|
|
86
86
|
name: "overwrite",
|
|
87
87
|
message: "Do you want to overwrite it?",
|
|
@@ -100,7 +100,7 @@ async function createSkill(ctx) {
|
|
|
100
100
|
console.log(_chalk2.default.gray(` Similarity: ${(match.score * 100).toFixed(0)}%`));
|
|
101
101
|
}
|
|
102
102
|
console.log();
|
|
103
|
-
const result = await
|
|
103
|
+
const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
104
104
|
type: "select",
|
|
105
105
|
name: "proceed",
|
|
106
106
|
message: "How would you like to proceed?",
|
|
@@ -150,7 +150,7 @@ Output only the raw markdown content, no code fences.`
|
|
|
150
150
|
console.log(content.length > 800 ? content.slice(0, 800) + "\n...(truncated)" : content);
|
|
151
151
|
console.log(_chalk2.default.gray("\u2500".repeat(50)));
|
|
152
152
|
console.log();
|
|
153
|
-
const confirmResult = await
|
|
153
|
+
const confirmResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
154
154
|
type: "confirm",
|
|
155
155
|
name: "confirm",
|
|
156
156
|
message: "Save this skill?",
|
|
@@ -160,7 +160,7 @@ Output only the raw markdown content, no code fences.`
|
|
|
160
160
|
console.log(_chalk2.default.gray("Canceled."));
|
|
161
161
|
return null;
|
|
162
162
|
}
|
|
163
|
-
const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") :
|
|
163
|
+
const baseDir = storageLevel === "project" ? _path2.default.join(ctx.workspaceRoot, ".autohand", "skills") : _chunkGIZL57FEcjs.AUTOHAND_PATHS.skills;
|
|
164
164
|
const skillDir = _path2.default.join(baseDir, name);
|
|
165
165
|
const skillPath = _path2.default.join(skillDir, "SKILL.md");
|
|
166
166
|
try {
|
|
@@ -169,7 +169,7 @@ Output only the raw markdown content, no code fences.`
|
|
|
169
169
|
console.log(_chalk2.default.green(`\u2713 Saved new skill to ${skillPath}`));
|
|
170
170
|
const success = await skillsRegistry.saveSkill(name, content);
|
|
171
171
|
if (success) {
|
|
172
|
-
const activateResult = await
|
|
172
|
+
const activateResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
173
173
|
type: "confirm",
|
|
174
174
|
name: "activate",
|
|
175
175
|
message: "Activate this skill now?",
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkMNCWB5F7cjs = require('./chunk-MNCWB5F7.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
|
|
4
7
|
|
|
5
8
|
// src/commands/permissions.ts
|
|
6
9
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
@@ -9,9 +12,9 @@ async function permissions(ctx) {
|
|
|
9
12
|
const blacklist = ctx.permissionManager.getBlacklist();
|
|
10
13
|
const settings = ctx.permissionManager.getSettings();
|
|
11
14
|
console.log();
|
|
12
|
-
console.log(_chalk2.default.bold.cyan("
|
|
15
|
+
console.log(_chalk2.default.bold.cyan(_chunkLOXOD4IScjs.t.call(void 0, "commands.permissions.title")));
|
|
13
16
|
console.log(_chalk2.default.gray("\u2500".repeat(50)));
|
|
14
|
-
console.log(_chalk2.default.gray(
|
|
17
|
+
console.log(_chalk2.default.gray(_chunkLOXOD4IScjs.t.call(void 0, "commands.permissions.mode", { mode: settings.mode || "interactive" })));
|
|
15
18
|
console.log();
|
|
16
19
|
if (whitelist.length === 0 && blacklist.length === 0) {
|
|
17
20
|
console.log(_chalk2.default.gray("No saved permissions yet."));
|
|
@@ -21,7 +24,7 @@ async function permissions(ctx) {
|
|
|
21
24
|
return null;
|
|
22
25
|
}
|
|
23
26
|
if (whitelist.length > 0) {
|
|
24
|
-
console.log(_chalk2.default.bold.green(
|
|
27
|
+
console.log(_chalk2.default.bold.green(_chunkLOXOD4IScjs.t.call(void 0, "commands.permissions.allowed")));
|
|
25
28
|
console.log();
|
|
26
29
|
whitelist.forEach((pattern, index) => {
|
|
27
30
|
console.log(_chalk2.default.green(` ${index + 1}. ${pattern}`));
|
|
@@ -29,7 +32,7 @@ async function permissions(ctx) {
|
|
|
29
32
|
console.log();
|
|
30
33
|
}
|
|
31
34
|
if (blacklist.length > 0) {
|
|
32
|
-
console.log(_chalk2.default.bold.red(
|
|
35
|
+
console.log(_chalk2.default.bold.red(_chunkLOXOD4IScjs.t.call(void 0, "commands.permissions.denied")));
|
|
33
36
|
console.log();
|
|
34
37
|
blacklist.forEach((pattern, index) => {
|
|
35
38
|
console.log(_chalk2.default.red(` ${index + 1}. ${pattern}`));
|
|
@@ -39,7 +42,7 @@ async function permissions(ctx) {
|
|
|
39
42
|
console.log(_chalk2.default.gray("\u2500".repeat(50)));
|
|
40
43
|
console.log(_chalk2.default.gray(`Total: ${whitelist.length} approved, ${blacklist.length} denied`));
|
|
41
44
|
console.log();
|
|
42
|
-
const actionResult = await
|
|
45
|
+
const actionResult = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
43
46
|
type: "select",
|
|
44
47
|
name: "action",
|
|
45
48
|
message: "What would you like to do?",
|
|
@@ -55,7 +58,7 @@ async function permissions(ctx) {
|
|
|
55
58
|
}
|
|
56
59
|
const { action } = actionResult;
|
|
57
60
|
if (action === "remove_approved" && whitelist.length > 0) {
|
|
58
|
-
const result = await
|
|
61
|
+
const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
59
62
|
type: "select",
|
|
60
63
|
name: "pattern",
|
|
61
64
|
message: "Select item to remove from approved list:",
|
|
@@ -66,7 +69,7 @@ async function permissions(ctx) {
|
|
|
66
69
|
console.log(_chalk2.default.yellow(`Removed "${result.pattern}" from approved list.`));
|
|
67
70
|
}
|
|
68
71
|
} else if (action === "remove_denied" && blacklist.length > 0) {
|
|
69
|
-
const result = await
|
|
72
|
+
const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
70
73
|
type: "select",
|
|
71
74
|
name: "pattern",
|
|
72
75
|
message: "Select item to remove from denied list:",
|
|
@@ -77,7 +80,7 @@ async function permissions(ctx) {
|
|
|
77
80
|
console.log(_chalk2.default.yellow(`Removed "${result.pattern}" from denied list.`));
|
|
78
81
|
}
|
|
79
82
|
} else if (action === "clear_all") {
|
|
80
|
-
const result = await
|
|
83
|
+
const result = await _chunkMNCWB5F7cjs.safePrompt.call(void 0, {
|
|
81
84
|
type: "confirm",
|
|
82
85
|
name: "confirm",
|
|
83
86
|
message: "Clear all saved permissions? This cannot be undone.",
|
|
@@ -97,7 +100,7 @@ async function permissions(ctx) {
|
|
|
97
100
|
}
|
|
98
101
|
var metadata = {
|
|
99
102
|
command: "/permissions",
|
|
100
|
-
description:
|
|
103
|
+
description: _chunkLOXOD4IScjs.t.call(void 0, "commands.permissions.description"),
|
|
101
104
|
implemented: true
|
|
102
105
|
};
|
|
103
106
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
var _chunkQRQ5EX7Icjs = require('./chunk-QRQ5EX7I.cjs');
|
|
4
|
+
|
|
5
|
+
// src/commands/completion.ts
|
|
2
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
3
|
-
var _enquirer = require('enquirer'); var _enquirer2 = _interopRequireDefault(_enquirer);
|
|
4
7
|
|
|
5
8
|
// src/completions/index.ts
|
|
6
9
|
var _fsextra = require('fs-extra'); var _fsextra2 = _interopRequireDefault(_fsextra);
|
|
@@ -276,58 +279,55 @@ async function execute(args) {
|
|
|
276
279
|
if (detected) {
|
|
277
280
|
console.log(_chalk2.default.gray(`Detected shell: ${detected}`));
|
|
278
281
|
}
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
initial: detected || "bash"
|
|
282
|
+
const shellOptions = [
|
|
283
|
+
{ label: "Bash", value: "bash" },
|
|
284
|
+
{ label: "Zsh", value: "zsh" },
|
|
285
|
+
{ label: "Fish", value: "fish" }
|
|
286
|
+
];
|
|
287
|
+
const shellResult = await _chunkQRQ5EX7Icjs.showModal.call(void 0, {
|
|
288
|
+
title: "Select your shell:",
|
|
289
|
+
options: shellOptions,
|
|
290
|
+
initialIndex: shellOptions.findIndex((o) => o.value === (detected || "bash"))
|
|
289
291
|
});
|
|
290
|
-
|
|
291
|
-
shell = await prompt.run();
|
|
292
|
-
} catch (e) {
|
|
292
|
+
if (!shellResult) {
|
|
293
293
|
console.log(_chalk2.default.gray("Cancelled."));
|
|
294
294
|
return;
|
|
295
295
|
}
|
|
296
|
+
shell = shellResult.value;
|
|
296
297
|
}
|
|
297
|
-
const
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
]
|
|
298
|
+
const actionOptions = [
|
|
299
|
+
{ label: "Print completion script to terminal", value: "print" },
|
|
300
|
+
{ label: "Install completion to default location", value: "install" },
|
|
301
|
+
{ label: "Show installation instructions", value: "instructions" }
|
|
302
|
+
];
|
|
303
|
+
const actionResult = await _chunkQRQ5EX7Icjs.showModal.call(void 0, {
|
|
304
|
+
title: "What would you like to do?",
|
|
305
|
+
options: actionOptions
|
|
306
306
|
});
|
|
307
|
-
|
|
308
|
-
const action = await actionPrompt.run();
|
|
309
|
-
switch (action) {
|
|
310
|
-
case "print":
|
|
311
|
-
console.log();
|
|
312
|
-
console.log(_chalk2.default.cyan(`# ${shell} completion script for autohand`));
|
|
313
|
-
console.log(_chalk2.default.cyan("# Copy and save to appropriate location"));
|
|
314
|
-
console.log();
|
|
315
|
-
console.log(generateCompletion(shell));
|
|
316
|
-
break;
|
|
317
|
-
case "install":
|
|
318
|
-
const installPath = await installCompletion(shell);
|
|
319
|
-
console.log();
|
|
320
|
-
console.log(_chalk2.default.green("Completion script installed to:"));
|
|
321
|
-
console.log(_chalk2.default.cyan(` ${installPath}`));
|
|
322
|
-
console.log();
|
|
323
|
-
console.log(getInstallInstructions(shell));
|
|
324
|
-
break;
|
|
325
|
-
case "instructions":
|
|
326
|
-
console.log(getInstallInstructions(shell));
|
|
327
|
-
break;
|
|
328
|
-
}
|
|
329
|
-
} catch (e2) {
|
|
307
|
+
if (!actionResult) {
|
|
330
308
|
console.log(_chalk2.default.gray("Cancelled."));
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
const action = actionResult.value;
|
|
312
|
+
switch (action) {
|
|
313
|
+
case "print":
|
|
314
|
+
console.log();
|
|
315
|
+
console.log(_chalk2.default.cyan(`# ${shell} completion script for autohand`));
|
|
316
|
+
console.log(_chalk2.default.cyan("# Copy and save to appropriate location"));
|
|
317
|
+
console.log();
|
|
318
|
+
console.log(generateCompletion(shell));
|
|
319
|
+
break;
|
|
320
|
+
case "install":
|
|
321
|
+
const installPath = await installCompletion(shell);
|
|
322
|
+
console.log();
|
|
323
|
+
console.log(_chalk2.default.green("Completion script installed to:"));
|
|
324
|
+
console.log(_chalk2.default.cyan(` ${installPath}`));
|
|
325
|
+
console.log();
|
|
326
|
+
console.log(getInstallInstructions(shell));
|
|
327
|
+
break;
|
|
328
|
+
case "instructions":
|
|
329
|
+
console.log(getInstallInstructions(shell));
|
|
330
|
+
break;
|
|
331
331
|
}
|
|
332
332
|
}
|
|
333
333
|
async function runCompletionCommand(shell) {
|
|
@@ -1,55 +1,62 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CUSTOM_THEMES_DIR,
|
|
3
|
-
getTheme,
|
|
4
3
|
initTheme,
|
|
5
|
-
isThemeInitialized,
|
|
6
4
|
listAvailableThemes,
|
|
7
5
|
saveConfig
|
|
8
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZBIBLOZL.js";
|
|
7
|
+
import {
|
|
8
|
+
getTheme,
|
|
9
|
+
isThemeInitialized
|
|
10
|
+
} from "./chunk-JS7IPR7P.js";
|
|
11
|
+
import {
|
|
12
|
+
showModal
|
|
13
|
+
} from "./chunk-PNSRJT46.js";
|
|
14
|
+
import {
|
|
15
|
+
t
|
|
16
|
+
} from "./chunk-UET7BDX2.js";
|
|
9
17
|
|
|
10
18
|
// src/commands/theme.ts
|
|
11
19
|
import chalk from "chalk";
|
|
12
|
-
import enquirer from "enquirer";
|
|
13
20
|
async function theme(ctx) {
|
|
14
|
-
const { Select } = enquirer;
|
|
15
21
|
const themes = listAvailableThemes();
|
|
16
22
|
const currentTheme = isThemeInitialized() ? getTheme().name : ctx.config.ui?.theme || "dark";
|
|
17
|
-
console.log(chalk.cyan(
|
|
18
|
-
|
|
23
|
+
console.log(chalk.cyan(`
|
|
24
|
+
\u{1F3A8} ${t("commands.theme.title")}
|
|
25
|
+
`));
|
|
26
|
+
console.log(chalk.gray(t("commands.theme.currentTheme", { theme: chalk.white(currentTheme) })));
|
|
19
27
|
console.log(chalk.gray(`Custom themes location: ${CUSTOM_THEMES_DIR}
|
|
20
28
|
`));
|
|
21
|
-
const
|
|
22
|
-
name,
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
const options = themes.map((name) => ({
|
|
30
|
+
label: name === currentTheme ? `${name} (current)` : name,
|
|
31
|
+
value: name,
|
|
32
|
+
description: name === "dark" ? "Default dark theme" : name === "light" ? "Light theme" : "Custom theme"
|
|
25
33
|
}));
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
const selected = await prompt.run();
|
|
34
|
-
if (selected === currentTheme) {
|
|
35
|
-
console.log(chalk.gray("\nNo change made."));
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
initTheme(selected);
|
|
39
|
-
ctx.config.ui = { ...ctx.config.ui, theme: selected };
|
|
40
|
-
await saveConfig(ctx.config);
|
|
41
|
-
console.log(chalk.green(`
|
|
42
|
-
\u2713 Theme changed to '${selected}'`));
|
|
43
|
-
const newTheme = getTheme();
|
|
44
|
-
console.log("\nTheme preview:");
|
|
45
|
-
console.log(` ${newTheme.fg("accent", "\u25CF accent")} ${newTheme.fg("success", "\u25CF success")} ${newTheme.fg("error", "\u25CF error")} ${newTheme.fg("warning", "\u25CF warning")}`);
|
|
46
|
-
console.log(` ${newTheme.fg("muted", "\u25CF muted")} ${newTheme.fg("dim", "\u25CF dim")} ${newTheme.fg("text", "\u25CF text")}`);
|
|
47
|
-
console.log();
|
|
48
|
-
return null;
|
|
49
|
-
} catch {
|
|
34
|
+
const result = await showModal({
|
|
35
|
+
title: t("commands.theme.selectPrompt"),
|
|
36
|
+
options,
|
|
37
|
+
initialIndex: themes.indexOf(currentTheme)
|
|
38
|
+
});
|
|
39
|
+
if (!result) {
|
|
50
40
|
console.log(chalk.gray("\nTheme selection cancelled."));
|
|
51
41
|
return null;
|
|
52
42
|
}
|
|
43
|
+
const selected = result.value;
|
|
44
|
+
if (selected === currentTheme) {
|
|
45
|
+
console.log(chalk.gray(`
|
|
46
|
+
${t("commands.theme.noChange")}`));
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
initTheme(selected);
|
|
50
|
+
ctx.config.ui = { ...ctx.config.ui, theme: selected };
|
|
51
|
+
await saveConfig(ctx.config);
|
|
52
|
+
console.log(chalk.green(`
|
|
53
|
+
\u2713 ${t("commands.theme.changed", { theme: selected })}`));
|
|
54
|
+
const newTheme = getTheme();
|
|
55
|
+
console.log("\nTheme preview:");
|
|
56
|
+
console.log(` ${newTheme.fg("accent", "\u25CF accent")} ${newTheme.fg("success", "\u25CF success")} ${newTheme.fg("error", "\u25CF error")} ${newTheme.fg("warning", "\u25CF warning")}`);
|
|
57
|
+
console.log(` ${newTheme.fg("muted", "\u25CF muted")} ${newTheme.fg("dim", "\u25CF dim")} ${newTheme.fg("text", "\u25CF text")}`);
|
|
58
|
+
console.log();
|
|
59
|
+
return null;
|
|
53
60
|
}
|
|
54
61
|
async function themeInfo() {
|
|
55
62
|
if (!isThemeInitialized()) {
|
|
@@ -77,7 +84,7 @@ async function themeInfo() {
|
|
|
77
84
|
}
|
|
78
85
|
var metadata = {
|
|
79
86
|
command: "/theme",
|
|
80
|
-
description: "
|
|
87
|
+
description: t("commands.theme.description"),
|
|
81
88
|
implemented: true
|
|
82
89
|
};
|
|
83
90
|
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _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; }
|
|
2
|
+
|
|
3
|
+
var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
|
|
4
|
+
|
|
5
|
+
// src/commands/sessions.ts
|
|
2
6
|
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
3
7
|
var metadata = {
|
|
4
8
|
command: "/sessions",
|
|
5
|
-
description:
|
|
9
|
+
description: _chunkLOXOD4IScjs.t.call(void 0, "commands.sessions.description"),
|
|
6
10
|
implemented: true
|
|
7
11
|
};
|
|
8
12
|
async function sessions(ctx) {
|
|
@@ -12,7 +16,7 @@ async function sessions(ctx) {
|
|
|
12
16
|
projectFilter ? { project: projectFilter } : void 0
|
|
13
17
|
);
|
|
14
18
|
if (allSessions.length === 0) {
|
|
15
|
-
console.log(_chalk2.default.gray(
|
|
19
|
+
console.log(_chalk2.default.gray(_chunkLOXOD4IScjs.t.call(void 0, "commands.sessions.noSessions")));
|
|
16
20
|
return null;
|
|
17
21
|
}
|
|
18
22
|
console.log(_chalk2.default.cyan(`
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
t
|
|
3
|
+
} from "./chunk-UET7BDX2.js";
|
|
4
|
+
|
|
1
5
|
// src/commands/automode.ts
|
|
2
6
|
import chalk from "chalk";
|
|
3
7
|
var metadata = {
|
|
4
8
|
command: "/automode",
|
|
5
|
-
description: "
|
|
9
|
+
description: t("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
|
+
` ${t("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
|
];
|
|
@@ -5,6 +5,7 @@ var DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
|
5
5
|
var DEFAULT_MAX_TOTAL_SIZE = 100 * 1024 * 1024;
|
|
6
6
|
var DEFAULT_MAX_RETRIES = 3;
|
|
7
7
|
var DEFAULT_RETRY_DELAY = 1e3;
|
|
8
|
+
var MAX_FILES_PER_REQUEST = 100;
|
|
8
9
|
var SyncApiClient = class {
|
|
9
10
|
constructor(config) {
|
|
10
11
|
this.baseUrl = config?.baseUrl || DEFAULT_BASE_URL;
|
|
@@ -89,29 +90,41 @@ var SyncApiClient = class {
|
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
91
92
|
* Upload sync manifest and request pre-signed URLs for file uploads
|
|
93
|
+
* Batches requests to stay within API limits (max 100 files per request)
|
|
92
94
|
*/
|
|
93
95
|
async initiateUpload(token, manifest, filePaths) {
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
96
|
+
const batches = [];
|
|
97
|
+
for (let i = 0; i < filePaths.length; i += MAX_FILES_PER_REQUEST) {
|
|
98
|
+
batches.push(filePaths.slice(i, i + MAX_FILES_PER_REQUEST));
|
|
99
|
+
}
|
|
100
|
+
const allUploadUrls = {};
|
|
101
|
+
for (let batchIndex = 0; batchIndex < batches.length; batchIndex++) {
|
|
102
|
+
const batch = batches[batchIndex];
|
|
103
|
+
const response = await this.fetchWithRetry(
|
|
104
|
+
`${this.baseUrl}/v1/sync/upload`,
|
|
105
|
+
{
|
|
106
|
+
method: "POST",
|
|
107
|
+
headers: {
|
|
108
|
+
Authorization: `Bearer ${token}`,
|
|
109
|
+
"Content-Type": "application/json"
|
|
110
|
+
},
|
|
111
|
+
body: JSON.stringify({
|
|
112
|
+
// Only include manifest on first batch
|
|
113
|
+
...batchIndex === 0 ? { manifest } : {},
|
|
114
|
+
files: batch
|
|
115
|
+
})
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
if (!response.ok) {
|
|
119
|
+
const error = await response.text().catch(() => "Unknown error");
|
|
120
|
+
throw new Error(`API error: ${response.status} ${error}`);
|
|
106
121
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
throw new Error(`API error: ${response.status} ${error}`);
|
|
122
|
+
const data = await response.json();
|
|
123
|
+
const batchUrls = data.uploadUrls || {};
|
|
124
|
+
Object.assign(allUploadUrls, batchUrls);
|
|
111
125
|
}
|
|
112
|
-
const data = await response.json();
|
|
113
126
|
return {
|
|
114
|
-
uploadUrls:
|
|
127
|
+
uploadUrls: allUploadUrls
|
|
115
128
|
};
|
|
116
129
|
}
|
|
117
130
|
/**
|
|
@@ -180,26 +193,36 @@ var SyncApiClient = class {
|
|
|
180
193
|
}
|
|
181
194
|
/**
|
|
182
195
|
* Request pre-signed URLs for file downloads
|
|
196
|
+
* Batches requests to stay within API limits (max 100 files per request)
|
|
183
197
|
*/
|
|
184
198
|
async initiateDownload(token, filePaths) {
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
|
|
199
|
+
const batches = [];
|
|
200
|
+
for (let i = 0; i < filePaths.length; i += MAX_FILES_PER_REQUEST) {
|
|
201
|
+
batches.push(filePaths.slice(i, i + MAX_FILES_PER_REQUEST));
|
|
202
|
+
}
|
|
203
|
+
const allDownloadUrls = {};
|
|
204
|
+
for (const batch of batches) {
|
|
205
|
+
const response = await this.fetchWithRetry(
|
|
206
|
+
`${this.baseUrl}/v1/sync/download`,
|
|
207
|
+
{
|
|
208
|
+
method: "POST",
|
|
209
|
+
headers: {
|
|
210
|
+
Authorization: `Bearer ${token}`,
|
|
211
|
+
"Content-Type": "application/json"
|
|
212
|
+
},
|
|
213
|
+
body: JSON.stringify({ files: batch })
|
|
214
|
+
}
|
|
215
|
+
);
|
|
216
|
+
if (!response.ok) {
|
|
217
|
+
const error = await response.text().catch(() => "Unknown error");
|
|
218
|
+
throw new Error(`API error: ${response.status} ${error}`);
|
|
194
219
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
throw new Error(`API error: ${response.status} ${error}`);
|
|
220
|
+
const data = await response.json();
|
|
221
|
+
const batchUrls = data.downloadUrls || {};
|
|
222
|
+
Object.assign(allDownloadUrls, batchUrls);
|
|
199
223
|
}
|
|
200
|
-
const data = await response.json();
|
|
201
224
|
return {
|
|
202
|
-
downloadUrls:
|
|
225
|
+
downloadUrls: allDownloadUrls
|
|
203
226
|
};
|
|
204
227
|
}
|
|
205
228
|
/**
|