autohand-cli 0.7.9 → 0.7.11
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-YWDFZBKP.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-WYP5JPCQ.js → PermissionManager-U5OMGR3L.js} +3 -3
- package/dist/SessionManager-BJ2G6VV4.cjs +9 -0
- package/dist/{SessionManager-SFBDIBGA.js → SessionManager-ENPGYK5J.js} +2 -2
- package/dist/SkillsRegistry-6ZFOCT25.cjs +8 -0
- package/dist/{SkillsRegistry-E437FFJV.js → SkillsRegistry-C2SHOZ5D.js} +2 -2
- package/dist/about-225R5LMN.cjs +11 -0
- package/dist/about-BCPUOQVH.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/{chunk-A5KU3JZW.cjs → chunk-34OGUMRO.cjs} +9 -5
- package/dist/{chunk-NTFNUTY2.js → chunk-3652ROFD.js} +2 -2
- package/dist/{chunk-KNLBEUAV.cjs → chunk-3DQSBW4B.cjs} +10 -6
- package/dist/{chunk-32R47CAQ.cjs → chunk-3S4DEIJP.cjs} +2 -2
- package/dist/chunk-46WX5IO2.cjs +499 -0
- package/dist/{chunk-IYZBLUEJ.js → chunk-4ULBAYME.js} +8 -6
- package/dist/{chunk-5UC3VAJ2.cjs → chunk-4XHHW7QX.cjs} +9 -8
- package/dist/{chunk-JRV4SOJU.cjs → chunk-5BQ57AZC.cjs} +9 -9
- package/dist/{chunk-7WKEDH3E.cjs → chunk-5FZM7KLB.cjs} +13 -10
- package/dist/{chunk-FN5S5OE7.cjs → chunk-5NZA4UB4.cjs} +3 -3
- package/dist/{chunk-PFS5ZOCO.js → chunk-5Q3W4DEU.js} +18 -10
- package/dist/{chunk-VMMGT42E.cjs → chunk-65GTO4QM.cjs} +7 -3
- package/dist/{chunk-CXZEPTRI.js → chunk-6P3K4YUW.js} +6 -2
- package/dist/chunk-73XIKTZL.js +124 -0
- package/dist/{chunk-P6EGMTK4.js → chunk-7QNW24ZT.js} +8 -4
- package/dist/{chunk-XT4OSHSB.cjs → chunk-AEYOIPHD.cjs} +6 -2
- package/dist/{chunk-KXNAGJE6.cjs → chunk-ANUQFV43.cjs} +6 -6
- package/dist/chunk-ATR3RORT.js +499 -0
- package/dist/{chunk-XOSFZHSS.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-YDJA5ETO.js → chunk-BG4OQUKP.js} +1 -1
- package/dist/chunk-BKGPWAEE.js +94 -0
- package/dist/{chunk-3DVEGFBZ.js → chunk-BODVOW7B.js} +64 -13
- package/dist/{chunk-7GJR65DQ.js → chunk-BXV5O6VU.js} +9 -8
- package/dist/{chunk-HUA44A35.cjs → chunk-BZ73ZQTE.cjs} +17 -11
- package/dist/{chunk-T7HQBZZB.cjs → chunk-C2E3GJEE.cjs} +12 -9
- package/dist/{chunk-UP6YRP44.js → chunk-C5SVIQG3.js} +10 -5
- package/dist/{chunk-4YQ2OJAL.js → chunk-D2XFTCRP.js} +1 -1
- package/dist/{chunk-R5PZPF55.js → chunk-DEAEO7RI.js} +1 -1
- package/dist/chunk-DMPVI3YK.cjs +400 -0
- package/dist/{chunk-DRXFJR7F.cjs → chunk-DMXN5LJB.cjs} +17 -16
- package/dist/{chunk-PVSYZXS7.js → chunk-DTXY7JDL.js} +11 -10
- package/dist/{chunk-C26EN22G.cjs → chunk-DUDDZRCS.cjs} +9 -5
- package/dist/{chunk-WT367RVU.js → chunk-E7YL3AHT.js} +15 -9
- package/dist/{chunk-CHVXUA3O.cjs → chunk-EV53SLSB.cjs} +4 -4
- package/dist/{chunk-VQDWNDP5.js → chunk-GD4AFYJ3.js} +1 -1
- package/dist/{chunk-AQNY2M6Q.cjs → chunk-GIZL57FE.cjs} +3 -1
- package/dist/{chunk-I4HVBWYF.js → chunk-GLAE5K5W.js} +7 -2
- package/dist/{chunk-4AMTDSQ3.cjs → chunk-HDSEJMWI.cjs} +6 -3
- package/dist/{chunk-ZWS3KSMK.js → chunk-HQQ4NKER.js} +5 -2
- package/dist/{chunk-WBDPILKI.cjs → chunk-HVOBMOZ2.cjs} +6 -2
- package/dist/{chunk-CMNQAF6C.js → chunk-IJFTBVSD.js} +12 -9
- package/dist/{chunk-RDGYHJ52.js → chunk-IPI3JXKP.js} +9 -6
- package/dist/chunk-JS7IPR7P.js +249 -0
- package/dist/{chunk-CPO5KEQS.cjs → chunk-KC5FPUOF.cjs} +2 -2
- package/dist/{chunk-TUO5SZRD.cjs → chunk-L42HTMMR.cjs} +2 -2
- package/dist/chunk-LOXOD4IS.cjs +8630 -0
- package/dist/{chunk-6DSJ7XST.cjs → chunk-LQ5V5YC7.cjs} +13 -10
- package/dist/chunk-M6N5HSY3.js +209 -0
- package/dist/{chunk-LJCSSR5V.cjs → chunk-MNCWB5F7.cjs} +5 -5
- package/dist/{chunk-BTVNRLSE.js → chunk-MYNHJHDZ.js} +1 -1
- package/dist/{chunk-O3EX3SAD.cjs → chunk-N4ZSG6JJ.cjs} +2 -2
- package/dist/{chunk-OO7EKEJH.cjs → chunk-NBD4PL2E.cjs} +17 -14
- package/dist/chunk-NF7RIHJK.js +45 -0
- package/dist/{chunk-KJAZ4YAR.cjs → chunk-NGBN2NGH.cjs} +76 -25
- package/dist/{chunk-MRDZHNCF.cjs → chunk-NRORJRD4.cjs} +4 -4
- package/dist/{chunk-OTS4YFSZ.cjs → chunk-OKABWSWA.cjs} +7 -3
- package/dist/{chunk-4BZ65NIH.js → chunk-OLG7LZBD.js} +1 -1
- package/dist/{chunk-KZ7VMQTC.js → chunk-OMEH2EVE.js} +5 -1
- package/dist/{chunk-LCBOOA7S.js → chunk-P5VDZ6PV.js} +1 -1
- package/dist/{chunk-V5MTBGM4.cjs → chunk-PA2H2263.cjs} +6 -2
- package/dist/chunk-PGRH5Q77.cjs +249 -0
- package/dist/chunk-PNSRJT46.js +380 -0
- package/dist/{chunk-UL5T2XIY.cjs → chunk-PSED4Z4X.cjs} +13 -11
- package/dist/{chunk-PGH3MHPP.js → chunk-PWLLLJHU.js} +3 -1
- package/dist/{chunk-DOTAX65F.js → chunk-PYLR4J2D.js} +8 -4
- package/dist/{chunk-3SDEZTZD.js → chunk-QC6IUDDJ.js} +1 -1
- package/dist/{chunk-WJICM4SK.cjs → chunk-QM7HZCQW.cjs} +11 -6
- package/dist/chunk-QRQ5EX7I.cjs +380 -0
- package/dist/{chunk-RX4KPL6H.js → chunk-QU64XI5X.js} +9 -6
- package/dist/{chunk-LKIKNRUP.js → chunk-R4OLUJV7.js} +8 -5
- package/dist/{chunk-FSTLJIR5.cjs → chunk-R7SDL3DJ.cjs} +16 -13
- package/dist/{chunk-LY5VN3B3.cjs → chunk-RJP3SZ7Q.cjs} +41 -253
- package/dist/{chunk-KS45GREN.js → chunk-RJXNNIFW.js} +7 -4
- package/dist/{chunk-LYMZDJX5.cjs → chunk-S5G7OEN2.cjs} +26 -18
- package/dist/{chunk-3DGR4GNN.cjs → chunk-SA4JOV4F.cjs} +10 -8
- package/dist/chunk-SAGM3TE3.cjs +94 -0
- package/dist/{chunk-WCN5WDOI.cjs → chunk-TSY7JHIV.cjs} +2 -2
- package/dist/chunk-U23U52ZN.cjs +124 -0
- package/dist/chunk-UET7BDX2.js +8630 -0
- package/dist/{chunk-J7VV7JAB.js → chunk-UM4QEO36.js} +6 -4
- package/dist/{chunk-NCLCL7JK.js → chunk-WD5ZF6HE.js} +1 -1
- package/dist/{chunk-HF65HHDU.cjs → chunk-WH5RW7DV.cjs} +24 -22
- package/dist/{chunk-GSOEIEOU.js → chunk-WJ276BIP.js} +5 -1
- package/dist/{chunk-OXJCLU3X.js → chunk-WLTVF77A.js} +1 -1
- package/dist/{chunk-WGO4ACS7.cjs → chunk-WOGJXDBU.cjs} +3 -3
- package/dist/{chunk-QJ53OSGF.js → chunk-WRJLBHWB.js} +6 -2
- package/dist/chunk-X4OLP5C5.cjs +209 -0
- package/dist/{chunk-HWDP4HQO.cjs → chunk-XL77XYI2.cjs} +4 -4
- package/dist/{chunk-QAJM6VG5.js → chunk-XLI7SHCH.js} +2 -2
- package/dist/chunk-Y27LG4BQ.cjs +45 -0
- package/dist/chunk-YKSSNFDZ.js +400 -0
- package/dist/{chunk-VRI7EXV6.js → chunk-YMDLUTF2.js} +5 -1
- package/dist/{chunk-J2RUI7GJ.js → chunk-YVY27BJT.js} +5 -3
- package/dist/{chunk-K6CZ2AGI.js → chunk-ZBIBLOZL.js} +35 -247
- package/dist/completion-HVSWU5GR.cjs +13 -0
- package/dist/completion-WJ2MVNDH.js +13 -0
- package/dist/constants-RBQTR32A.cjs +20 -0
- package/dist/{constants-OFIAR4E5.js → constants-V6J54N3X.js} +1 -1
- package/dist/export-NN7F5ANA.js +11 -0
- package/dist/export-UPS3AK2P.cjs +11 -0
- package/dist/feedback-KPNRMSP4.js +14 -0
- package/dist/feedback-OTXZVKE7.cjs +14 -0
- package/dist/help-M7NFPCM4.js +58 -0
- package/dist/help-UBHIUDQR.cjs +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 +15320 -12906
- package/dist/index.js +15465 -13051
- 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-FD5AK5FB.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/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-3YWFZGNM.cjs +13 -0
- package/dist/share-T6I2LRGS.js +13 -0
- package/dist/{skills-PB4HXV4R.js → skills-ICEQ2TNC.js} +2 -1
- package/dist/skills-LFVNZOMF.cjs +13 -0
- package/dist/{skills-install-UBBNXWD5.js → skills-install-6RN7FVCP.js} +9 -8
- package/dist/{skills-install-7SFS24HY.cjs → skills-install-LU6GA2WF.cjs} +14 -13
- package/dist/skills-new-5BM5PDFX.cjs +14 -0
- package/dist/skills-new-KWBWOX74.js +14 -0
- package/dist/status-BAGXGSKE.js +10 -0
- package/dist/status-BMD2UFHC.cjs +10 -0
- package/dist/sync-6M3WRKMH.cjs +39 -0
- package/dist/sync-73D2MP65.cjs +16 -0
- package/dist/{sync-LYKDHRFM.js → sync-EXYX7HXW.js} +2 -2
- 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 +9 -8
- package/dist/CommunitySkillsCache-N2RWBCY2.cjs +0 -7
- package/dist/MemoryManager-J7APSLZ7.js +0 -7
- package/dist/MemoryManager-RLLYVIDY.cjs +0 -7
- package/dist/PermissionManager-ISI5OAJK.cjs +0 -10
- package/dist/SessionManager-7MF76Q3Q.cjs +0 -9
- package/dist/SkillsRegistry-UTK2YT4M.cjs +0 -8
- package/dist/add-dir-OMK3Y4DM.cjs +0 -8
- package/dist/agents-N2ZB4O2A.cjs +0 -9
- package/dist/agents-ZMT7HBRT.js +0 -9
- package/dist/agents-new-3EWS2NR3.cjs +0 -11
- package/dist/agents-new-TCGUYK5I.js +0 -11
- package/dist/automode-BRHUHGXU.cjs +0 -8
- package/dist/chunk-6SM6N7DJ.js +0 -2828
- package/dist/chunk-BEIG7V7Q.cjs +0 -51
- package/dist/chunk-L5QWMGLV.cjs +0 -2828
- package/dist/chunk-Z3Q2AFDS.js +0 -51
- package/dist/completion-NCSTSKTL.cjs +0 -11
- package/dist/completion-NTZERPAZ.js +0 -11
- package/dist/constants-B2X7KDIH.cjs +0 -20
- package/dist/export-5AJNVX4O.cjs +0 -9
- package/dist/export-ZQHTLV4W.js +0 -9
- package/dist/feedback-F7BMGSV6.cjs +0 -12
- package/dist/feedback-NL7CWTRY.js +0 -12
- package/dist/help-PKC6QCNG.js +0 -10
- package/dist/help-UEELQRHP.cjs +0 -10
- package/dist/hooks-AX5VPCZ3.cjs +0 -10
- package/dist/hooks-V22HVLQT.js +0 -10
- package/dist/init-DML7AOII.js +0 -8
- package/dist/init-SLLSDDJN.cjs +0 -8
- package/dist/language-IEKARNQH.js +0 -13
- package/dist/language-ULQCKXAD.cjs +0 -13
- package/dist/localProjectPermissions-7FI3XF4K.cjs +0 -17
- package/dist/login-PD3DFJLM.js +0 -15
- package/dist/login-VHGT4YKT.cjs +0 -15
- package/dist/logout-2QXNFGDT.js +0 -13
- package/dist/logout-A4SMKEFO.cjs +0 -13
- package/dist/memory-CFNC7RJH.cjs +0 -8
- package/dist/model-TKVEJ5BC.cjs +0 -8
- package/dist/new-EB2MBQXA.cjs +0 -8
- package/dist/permissions-S7433NQJ.js +0 -10
- package/dist/permissions-YZ6WCDBL.cjs +0 -10
- package/dist/quit-2RYFGIJP.cjs +0 -8
- package/dist/quit-RSYIERO5.js +0 -8
- package/dist/resume-54ERVSFM.cjs +0 -10
- package/dist/resume-YJ5CVKAP.js +0 -10
- package/dist/search-4TEQMUPU.js +0 -11
- package/dist/search-QGLS4SV7.cjs +0 -11
- package/dist/sessions-7RTCPVNE.cjs +0 -8
- package/dist/share-2B2T3AUU.cjs +0 -11
- package/dist/share-SZMXZIA3.js +0 -11
- package/dist/skills-HVQNCTGK.cjs +0 -12
- package/dist/skills-new-5FSDAJWE.js +0 -12
- package/dist/skills-new-IOTZYE6F.cjs +0 -12
- package/dist/status-AGPSKXSW.js +0 -9
- package/dist/status-WOINF556.cjs +0 -9
- package/dist/sync-64MZDWGG.js +0 -14
- package/dist/sync-F5ECJW25.cjs +0 -39
- package/dist/sync-W5UR7BEP.cjs +0 -14
- package/dist/theme-CWG3ZLHB.cjs +0 -13
- package/dist/theme-HQKV7YAP.js +0 -13
- package/dist/undo-2WR2ZIEC.cjs +0 -8
- package/dist/undo-7QJBXARS.js +0 -8
|
@@ -0,0 +1,499 @@
|
|
|
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 _chunkQRQ5EX7Icjs = require('./chunk-QRQ5EX7I.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkLOXOD4IScjs = require('./chunk-LOXOD4IS.cjs');
|
|
7
|
+
|
|
8
|
+
// src/commands/ide.ts
|
|
9
|
+
var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
|
|
10
|
+
var _terminallink = require('terminal-link'); var _terminallink2 = _interopRequireDefault(_terminallink);
|
|
11
|
+
|
|
12
|
+
// src/core/ide/ideDetector.ts
|
|
13
|
+
var _child_process = require('child_process');
|
|
14
|
+
var _os = require('os'); var _os2 = _interopRequireDefault(_os);
|
|
15
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
16
|
+
|
|
17
|
+
// src/core/ide/ideTypes.ts
|
|
18
|
+
var IDE_REGISTRY = [
|
|
19
|
+
{
|
|
20
|
+
kind: "vscode",
|
|
21
|
+
displayName: "Visual Studio Code",
|
|
22
|
+
processPatterns: {
|
|
23
|
+
darwin: ["Visual Studio Code", "code "],
|
|
24
|
+
linux: ["code ", "/code"],
|
|
25
|
+
win32: ["Code.exe"]
|
|
26
|
+
},
|
|
27
|
+
extensionUrl: "https://marketplace.visualstudio.com/items?itemName=AutohandAI.vscode-autohand",
|
|
28
|
+
storage: {
|
|
29
|
+
type: "vscode-family",
|
|
30
|
+
darwin: "Code",
|
|
31
|
+
linux: "Code",
|
|
32
|
+
win32: "Code"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
kind: "vscode-insiders",
|
|
37
|
+
displayName: "Visual Studio Code Insiders",
|
|
38
|
+
processPatterns: {
|
|
39
|
+
darwin: ["Code - Insiders", "code-insiders "],
|
|
40
|
+
linux: ["code-insiders ", "/code-insiders"],
|
|
41
|
+
win32: ["Code - Insiders.exe"]
|
|
42
|
+
},
|
|
43
|
+
extensionUrl: "https://marketplace.visualstudio.com/items?itemName=AutohandAI.vscode-autohand",
|
|
44
|
+
storage: {
|
|
45
|
+
type: "vscode-family",
|
|
46
|
+
darwin: "Code - Insiders",
|
|
47
|
+
linux: "Code - Insiders",
|
|
48
|
+
win32: "Code - Insiders"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
kind: "cursor",
|
|
53
|
+
displayName: "Cursor",
|
|
54
|
+
processPatterns: {
|
|
55
|
+
darwin: ["Cursor.app", "cursor "],
|
|
56
|
+
linux: ["cursor ", "/cursor"],
|
|
57
|
+
win32: ["Cursor.exe"]
|
|
58
|
+
},
|
|
59
|
+
storage: {
|
|
60
|
+
type: "vscode-family",
|
|
61
|
+
darwin: "Cursor",
|
|
62
|
+
linux: "Cursor",
|
|
63
|
+
win32: "Cursor"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
kind: "zed",
|
|
68
|
+
displayName: "Zed",
|
|
69
|
+
processPatterns: {
|
|
70
|
+
darwin: ["Zed.app", "/zed "],
|
|
71
|
+
linux: ["zed ", "/zed"],
|
|
72
|
+
win32: ["Zed.exe"]
|
|
73
|
+
},
|
|
74
|
+
extensionUrl: "https://zed.dev/extensions/autohand-acp",
|
|
75
|
+
storage: {
|
|
76
|
+
type: "zed",
|
|
77
|
+
darwin: "Zed",
|
|
78
|
+
linux: "zed",
|
|
79
|
+
win32: "Zed"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
kind: "antigravity",
|
|
84
|
+
displayName: "Antigravity",
|
|
85
|
+
processPatterns: {
|
|
86
|
+
darwin: ["Antigravity.app", "antigravity "],
|
|
87
|
+
linux: [],
|
|
88
|
+
win32: []
|
|
89
|
+
},
|
|
90
|
+
storage: {
|
|
91
|
+
type: "vscode-family",
|
|
92
|
+
darwin: "Antigravity"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
// src/core/ide/ideDetector.ts
|
|
98
|
+
async function detectRunningIDEs(cwd) {
|
|
99
|
+
const platform = getCurrentPlatform();
|
|
100
|
+
const normalizedCwd = _path2.default.resolve(cwd);
|
|
101
|
+
const processLines = await getProcessList(platform);
|
|
102
|
+
const detected = [];
|
|
103
|
+
for (const entry of IDE_REGISTRY) {
|
|
104
|
+
const patterns = _nullishCoalesce(entry.processPatterns[platform], () => ( []));
|
|
105
|
+
if (patterns.length === 0) continue;
|
|
106
|
+
const matchingLines = findProcessLines(processLines, patterns);
|
|
107
|
+
if (matchingLines.length === 0) continue;
|
|
108
|
+
const argPaths = extractWorkspacePaths(matchingLines, entry.kind, platform);
|
|
109
|
+
if (argPaths.length > 0) {
|
|
110
|
+
const seen = /* @__PURE__ */ new Set();
|
|
111
|
+
for (const wsPath of argPaths) {
|
|
112
|
+
const resolvedWs = _path2.default.resolve(wsPath);
|
|
113
|
+
if (seen.has(resolvedWs)) continue;
|
|
114
|
+
seen.add(resolvedWs);
|
|
115
|
+
detected.push({
|
|
116
|
+
kind: entry.kind,
|
|
117
|
+
displayName: entry.displayName,
|
|
118
|
+
workspacePath: resolvedWs,
|
|
119
|
+
matchesCwd: pathMatchesCwd(normalizedCwd, resolvedWs, platform),
|
|
120
|
+
extensionUrl: entry.extensionUrl
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
} else {
|
|
124
|
+
const cwdFoundInStorage = await checkCwdInStorage(entry, normalizedCwd, platform);
|
|
125
|
+
detected.push({
|
|
126
|
+
kind: entry.kind,
|
|
127
|
+
displayName: entry.displayName,
|
|
128
|
+
workspacePath: cwdFoundInStorage ? normalizedCwd : null,
|
|
129
|
+
matchesCwd: cwdFoundInStorage,
|
|
130
|
+
extensionUrl: entry.extensionUrl
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
detected.sort((a, b) => {
|
|
135
|
+
if (a.matchesCwd && !b.matchesCwd) return -1;
|
|
136
|
+
if (!a.matchesCwd && b.matchesCwd) return 1;
|
|
137
|
+
return a.displayName.localeCompare(b.displayName);
|
|
138
|
+
});
|
|
139
|
+
return detected;
|
|
140
|
+
}
|
|
141
|
+
function getCurrentPlatform() {
|
|
142
|
+
return process.platform;
|
|
143
|
+
}
|
|
144
|
+
function pathMatchesCwd(normalizedCwd, workspacePath, platform) {
|
|
145
|
+
if (platform === "linux") {
|
|
146
|
+
return normalizedCwd === workspacePath;
|
|
147
|
+
}
|
|
148
|
+
return normalizedCwd.toLowerCase() === workspacePath.toLowerCase();
|
|
149
|
+
}
|
|
150
|
+
async function getProcessList(platform) {
|
|
151
|
+
if (platform === "win32") {
|
|
152
|
+
return getWindowsProcessList();
|
|
153
|
+
}
|
|
154
|
+
return getUnixProcessList();
|
|
155
|
+
}
|
|
156
|
+
async function getUnixProcessList() {
|
|
157
|
+
return new Promise((resolve) => {
|
|
158
|
+
_child_process.exec.call(void 0, "ps aux", { encoding: "utf-8", timeout: 5e3 }, (error, stdout) => {
|
|
159
|
+
if (error) {
|
|
160
|
+
resolve([]);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
resolve(stdout.split("\n"));
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
async function getWindowsProcessList() {
|
|
168
|
+
return new Promise((resolve) => {
|
|
169
|
+
const cmd = 'powershell -NoProfile -Command "Get-CimInstance Win32_Process | Select-Object Name,CommandLine | ConvertTo-Json"';
|
|
170
|
+
_child_process.exec.call(void 0, cmd, { encoding: "utf-8", timeout: 8e3 }, (error, stdout) => {
|
|
171
|
+
if (error) {
|
|
172
|
+
resolve([]);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
try {
|
|
176
|
+
const processes = JSON.parse(stdout);
|
|
177
|
+
const lines = (Array.isArray(processes) ? processes : [processes]).map(
|
|
178
|
+
(p) => `${_nullishCoalesce(p.Name, () => ( ""))} ${_nullishCoalesce(p.CommandLine, () => ( ""))}`
|
|
179
|
+
);
|
|
180
|
+
resolve(lines);
|
|
181
|
+
} catch (e) {
|
|
182
|
+
resolve([]);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
function findProcessLines(lines, patterns) {
|
|
188
|
+
return lines.filter(
|
|
189
|
+
(line) => patterns.some((pattern) => line.includes(pattern))
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
function extractWorkspacePaths(lines, kind, platform) {
|
|
193
|
+
const paths = /* @__PURE__ */ new Set();
|
|
194
|
+
for (const line of lines) {
|
|
195
|
+
const folderUriMatch = line.match(/--folder-uri\s+file:\/\/([^\s]+)/);
|
|
196
|
+
if (_optionalChain([folderUriMatch, 'optionalAccess', _ => _[1]])) {
|
|
197
|
+
try {
|
|
198
|
+
const decoded = decodeURIComponent(folderUriMatch[1]);
|
|
199
|
+
if (!isRuntimePath(decoded, platform)) {
|
|
200
|
+
paths.add(decoded);
|
|
201
|
+
}
|
|
202
|
+
continue;
|
|
203
|
+
} catch (e2) {
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
const extractedPaths = extractPathsFromArgs(line, kind, platform);
|
|
207
|
+
for (const p of extractedPaths) {
|
|
208
|
+
paths.add(p);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return [...paths];
|
|
212
|
+
}
|
|
213
|
+
function extractPathsFromArgs(line, _kind, platform) {
|
|
214
|
+
const results = [];
|
|
215
|
+
let pathMatches;
|
|
216
|
+
if (platform === "win32") {
|
|
217
|
+
pathMatches = line.match(/\s([A-Za-z]:\\[^\s"]+)/g);
|
|
218
|
+
} else {
|
|
219
|
+
pathMatches = line.match(/\s(\/(?:Users|home|root)[^\s]+)/g);
|
|
220
|
+
}
|
|
221
|
+
if (!pathMatches) return results;
|
|
222
|
+
for (const match of pathMatches) {
|
|
223
|
+
const candidate = match.trim();
|
|
224
|
+
if (isRuntimePath(candidate, platform)) continue;
|
|
225
|
+
if (looksLikeWorkspace(candidate, platform)) {
|
|
226
|
+
results.push(candidate);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return results;
|
|
230
|
+
}
|
|
231
|
+
function isRuntimePath(p, platform) {
|
|
232
|
+
const plat = _nullishCoalesce(platform, () => ( getCurrentPlatform()));
|
|
233
|
+
const commonPatterns = [
|
|
234
|
+
"node_modules",
|
|
235
|
+
".vscode",
|
|
236
|
+
".cursor",
|
|
237
|
+
"Frameworks/",
|
|
238
|
+
"Helper",
|
|
239
|
+
"Crashpad",
|
|
240
|
+
"chrome-sandbox",
|
|
241
|
+
".log",
|
|
242
|
+
".sock",
|
|
243
|
+
".pid"
|
|
244
|
+
];
|
|
245
|
+
const unixPatterns = [
|
|
246
|
+
"/Applications/",
|
|
247
|
+
"/Library/",
|
|
248
|
+
"/System/",
|
|
249
|
+
"/usr/",
|
|
250
|
+
"/opt/",
|
|
251
|
+
"/tmp/",
|
|
252
|
+
"/var/",
|
|
253
|
+
"/private/",
|
|
254
|
+
"/.local/share/",
|
|
255
|
+
"/.config/",
|
|
256
|
+
"/.cache/",
|
|
257
|
+
".app/",
|
|
258
|
+
"MacOS/",
|
|
259
|
+
"Resources/"
|
|
260
|
+
];
|
|
261
|
+
const windowsPatterns = [
|
|
262
|
+
"Program Files",
|
|
263
|
+
"Program Files (x86)",
|
|
264
|
+
"\\Windows\\",
|
|
265
|
+
"\\AppData\\",
|
|
266
|
+
"\\ProgramData\\"
|
|
267
|
+
];
|
|
268
|
+
const patterns = [
|
|
269
|
+
...commonPatterns,
|
|
270
|
+
...plat === "win32" ? windowsPatterns : unixPatterns
|
|
271
|
+
];
|
|
272
|
+
return patterns.some((pattern) => p.includes(pattern));
|
|
273
|
+
}
|
|
274
|
+
function looksLikeWorkspace(p, platform) {
|
|
275
|
+
const plat = _nullishCoalesce(platform, () => ( getCurrentPlatform()));
|
|
276
|
+
if (plat === "win32") {
|
|
277
|
+
return /^[A-Za-z]:\\Users\\[^\\]+\\.+/.test(p);
|
|
278
|
+
}
|
|
279
|
+
return /^\/(Users|home)\/[^/]+\/.+/.test(p) || /^\/root\/.+/.test(p);
|
|
280
|
+
}
|
|
281
|
+
function getStorageBasePath(type, platform) {
|
|
282
|
+
const home = _os2.default.homedir();
|
|
283
|
+
switch (platform) {
|
|
284
|
+
case "darwin":
|
|
285
|
+
return _path2.default.join(home, "Library", "Application Support");
|
|
286
|
+
case "linux":
|
|
287
|
+
if (type === "zed") {
|
|
288
|
+
return _nullishCoalesce(process.env["XDG_DATA_HOME"], () => ( _path2.default.join(home, ".local", "share")));
|
|
289
|
+
}
|
|
290
|
+
return _nullishCoalesce(process.env["XDG_CONFIG_HOME"], () => ( _path2.default.join(home, ".config")));
|
|
291
|
+
case "win32":
|
|
292
|
+
if (type === "zed") {
|
|
293
|
+
return _nullishCoalesce(process.env["LOCALAPPDATA"], () => ( _path2.default.join(home, "AppData", "Local")));
|
|
294
|
+
}
|
|
295
|
+
return _nullishCoalesce(process.env["APPDATA"], () => ( _path2.default.join(home, "AppData", "Roaming")));
|
|
296
|
+
default:
|
|
297
|
+
return _path2.default.join(home, ".config");
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
async function checkCwdInStorage(entry, normalizedCwd, platform) {
|
|
301
|
+
const storageName = _optionalChain([entry, 'access', _2 => _2.storage, 'optionalAccess', _3 => _3[platform]]);
|
|
302
|
+
if (!storageName || !entry.storage) return false;
|
|
303
|
+
try {
|
|
304
|
+
if (entry.storage.type === "zed") {
|
|
305
|
+
return await checkZedStorage(storageName, normalizedCwd, platform);
|
|
306
|
+
}
|
|
307
|
+
return await checkVSCodeFamilyStorage(storageName, normalizedCwd, platform);
|
|
308
|
+
} catch (e3) {
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
async function checkVSCodeFamilyStorage(storageName, normalizedCwd, platform) {
|
|
313
|
+
const basePath = getStorageBasePath("vscode-family", platform);
|
|
314
|
+
const dbPath = _path2.default.join(basePath, storageName, "User", "globalStorage", "state.vscdb");
|
|
315
|
+
const raw = await querySqlite(
|
|
316
|
+
dbPath,
|
|
317
|
+
"SELECT value FROM ItemTable WHERE key = 'history.recentlyOpenedPathsList'"
|
|
318
|
+
);
|
|
319
|
+
if (!raw) return false;
|
|
320
|
+
try {
|
|
321
|
+
const data = JSON.parse(raw);
|
|
322
|
+
for (const entry of _nullishCoalesce(data.entries, () => ( []))) {
|
|
323
|
+
if (!entry.folderUri) continue;
|
|
324
|
+
try {
|
|
325
|
+
const url = new URL(entry.folderUri);
|
|
326
|
+
if (url.protocol === "file:") {
|
|
327
|
+
const folder = _path2.default.resolve(decodeURIComponent(url.pathname));
|
|
328
|
+
if (pathMatchesCwd(normalizedCwd, folder, platform)) return true;
|
|
329
|
+
}
|
|
330
|
+
} catch (e4) {
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return false;
|
|
334
|
+
} catch (e5) {
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
async function checkZedStorage(storageName, normalizedCwd, platform) {
|
|
339
|
+
const basePath = getStorageBasePath("zed", platform);
|
|
340
|
+
const dbPath = _path2.default.join(basePath, storageName, "db", "0-stable", "db.sqlite");
|
|
341
|
+
const escaped = normalizedCwd.replace(/'/g, "''");
|
|
342
|
+
const raw = await querySqlite(
|
|
343
|
+
dbPath,
|
|
344
|
+
`SELECT COUNT(*) FROM workspaces WHERE paths IS NOT NULL AND paths = '${escaped}'`
|
|
345
|
+
);
|
|
346
|
+
return raw !== null && raw.trim() !== "0";
|
|
347
|
+
}
|
|
348
|
+
async function querySqlite(dbPath, query) {
|
|
349
|
+
return new Promise((resolve) => {
|
|
350
|
+
_child_process.exec.call(void 0,
|
|
351
|
+
`sqlite3 -readonly "${dbPath}" "${query}"`,
|
|
352
|
+
{ encoding: "utf-8", timeout: 3e3 },
|
|
353
|
+
(error, stdout) => {
|
|
354
|
+
if (error) {
|
|
355
|
+
resolve(null);
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
const trimmed = stdout.trim();
|
|
359
|
+
resolve(trimmed.length > 0 ? trimmed : null);
|
|
360
|
+
}
|
|
361
|
+
);
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
function getExtensionSuggestions(detected) {
|
|
365
|
+
const detectedKinds = new Set(detected.map((d) => d.kind));
|
|
366
|
+
const seen = /* @__PURE__ */ new Set();
|
|
367
|
+
const suggestions = [];
|
|
368
|
+
for (const entry of IDE_REGISTRY) {
|
|
369
|
+
if (!entry.extensionUrl) continue;
|
|
370
|
+
if (!detectedKinds.has(entry.kind)) continue;
|
|
371
|
+
if (seen.has(entry.extensionUrl)) continue;
|
|
372
|
+
seen.add(entry.extensionUrl);
|
|
373
|
+
suggestions.push({
|
|
374
|
+
displayName: entry.displayName,
|
|
375
|
+
url: entry.extensionUrl
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
return suggestions;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// src/commands/ide.ts
|
|
382
|
+
function groupByIDE(detected) {
|
|
383
|
+
const matching = [];
|
|
384
|
+
const matchedKinds = /* @__PURE__ */ new Set();
|
|
385
|
+
const nonMatching = /* @__PURE__ */ new Map();
|
|
386
|
+
for (const ide2 of detected) {
|
|
387
|
+
if (ide2.matchesCwd) {
|
|
388
|
+
matching.push(ide2);
|
|
389
|
+
matchedKinds.add(ide2.kind);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
for (const ide2 of detected) {
|
|
393
|
+
if (matchedKinds.has(ide2.kind)) continue;
|
|
394
|
+
if (nonMatching.has(ide2.kind)) continue;
|
|
395
|
+
nonMatching.set(ide2.kind, ide2);
|
|
396
|
+
}
|
|
397
|
+
return { matching, nonMatching };
|
|
398
|
+
}
|
|
399
|
+
async function ide(ctx) {
|
|
400
|
+
console.log(_chalk2.default.bold.cyan(`
|
|
401
|
+
${_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.title")}`));
|
|
402
|
+
console.log(_chalk2.default.gray(_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.connectDescription")));
|
|
403
|
+
console.log();
|
|
404
|
+
const detected = await detectRunningIDEs(ctx.workspaceRoot);
|
|
405
|
+
const { matching, nonMatching } = groupByIDE(detected);
|
|
406
|
+
if (detected.length === 0) {
|
|
407
|
+
console.log(_chalk2.default.yellow(_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.noIdesDetected")));
|
|
408
|
+
console.log();
|
|
409
|
+
printExtensionSuggestions(detected);
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
if (matching.length === 0) {
|
|
413
|
+
console.log(_chalk2.default.yellow(_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.noMatchingIdes")));
|
|
414
|
+
console.log();
|
|
415
|
+
if (nonMatching.size > 0) {
|
|
416
|
+
console.log(
|
|
417
|
+
_chalk2.default.gray(
|
|
418
|
+
_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.otherNotMatching", { count: String(nonMatching.size) })
|
|
419
|
+
)
|
|
420
|
+
);
|
|
421
|
+
console.log();
|
|
422
|
+
printNonMatchingIDEs([...nonMatching.values()]);
|
|
423
|
+
}
|
|
424
|
+
printExtensionSuggestions(detected);
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
console.log(
|
|
428
|
+
_chalk2.default.green(
|
|
429
|
+
_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.foundMatching", { count: String(matching.length) })
|
|
430
|
+
)
|
|
431
|
+
);
|
|
432
|
+
console.log();
|
|
433
|
+
const options = matching.map((ide2) => ({
|
|
434
|
+
label: `${ide2.displayName}: ${_nullishCoalesce(ide2.workspacePath, () => ( _chunkLOXOD4IScjs.t.call(void 0, "common.unknown")))}`,
|
|
435
|
+
value: ide2.kind
|
|
436
|
+
}));
|
|
437
|
+
const result = await _chunkQRQ5EX7Icjs.showModal.call(void 0, {
|
|
438
|
+
title: _chunkLOXOD4IScjs.t.call(void 0, "commands.ide.selectPrompt"),
|
|
439
|
+
options
|
|
440
|
+
});
|
|
441
|
+
if (!result) {
|
|
442
|
+
console.log(_chalk2.default.gray(`
|
|
443
|
+
${_chunkLOXOD4IScjs.t.call(void 0, "common.cancelled")}`));
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
const selected = matching.find((d) => d.kind === result.value);
|
|
447
|
+
if (selected) {
|
|
448
|
+
console.log(
|
|
449
|
+
_chalk2.default.green(
|
|
450
|
+
`
|
|
451
|
+
\u2713 ${_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.connected", { ide: selected.displayName })}`
|
|
452
|
+
)
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
if (nonMatching.size > 0) {
|
|
456
|
+
console.log();
|
|
457
|
+
console.log(
|
|
458
|
+
_chalk2.default.gray(
|
|
459
|
+
_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.otherNotMatching", { count: String(nonMatching.size) })
|
|
460
|
+
)
|
|
461
|
+
);
|
|
462
|
+
console.log();
|
|
463
|
+
printNonMatchingIDEs([...nonMatching.values()]);
|
|
464
|
+
}
|
|
465
|
+
printExtensionSuggestions(detected);
|
|
466
|
+
return null;
|
|
467
|
+
}
|
|
468
|
+
function printNonMatchingIDEs(ides) {
|
|
469
|
+
for (const ide2 of ides) {
|
|
470
|
+
const wsPath = _nullishCoalesce(ide2.workspacePath, () => ( _chunkLOXOD4IScjs.t.call(void 0, "common.unknown")));
|
|
471
|
+
console.log(_chalk2.default.gray(` \u2022 ${ide2.displayName}: ${wsPath}`));
|
|
472
|
+
}
|
|
473
|
+
console.log();
|
|
474
|
+
}
|
|
475
|
+
function printExtensionSuggestions(detected) {
|
|
476
|
+
const suggestions = getExtensionSuggestions(detected);
|
|
477
|
+
if (suggestions.length === 0) return;
|
|
478
|
+
console.log(_chalk2.default.dim(`\u{1F4A1} ${_chunkLOXOD4IScjs.t.call(void 0, "commands.ide.extensionHint")}`));
|
|
479
|
+
for (const suggestion of suggestions) {
|
|
480
|
+
const link = _terminallink2.default.call(void 0, suggestion.url, suggestion.url);
|
|
481
|
+
console.log(_chalk2.default.dim(` \u2022 ${suggestion.displayName}: ${link}`));
|
|
482
|
+
}
|
|
483
|
+
console.log();
|
|
484
|
+
}
|
|
485
|
+
var metadata = {
|
|
486
|
+
command: "/ide",
|
|
487
|
+
description: _chunkLOXOD4IScjs.t.call(void 0, "commands.ide.description"),
|
|
488
|
+
implemented: true
|
|
489
|
+
};
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
exports.ide = ide; exports.metadata = metadata;
|
|
495
|
+
/**
|
|
496
|
+
* @license
|
|
497
|
+
* Copyright 2025 Autohand AI LLC
|
|
498
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
499
|
+
*/
|
|
@@ -2,7 +2,10 @@ import {
|
|
|
2
2
|
showConfirm,
|
|
3
3
|
showInput,
|
|
4
4
|
showModal
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PNSRJT46.js";
|
|
6
|
+
import {
|
|
7
|
+
t
|
|
8
|
+
} from "./chunk-UET7BDX2.js";
|
|
6
9
|
|
|
7
10
|
// src/commands/export.ts
|
|
8
11
|
import chalk from "chalk";
|
|
@@ -79,7 +82,7 @@ function formatTimestamp(timestamp) {
|
|
|
79
82
|
minute: "2-digit"
|
|
80
83
|
});
|
|
81
84
|
}
|
|
82
|
-
function formatMessage(message, options,
|
|
85
|
+
function formatMessage(message, options, _index) {
|
|
83
86
|
const parts = [];
|
|
84
87
|
const roleEmoji = {
|
|
85
88
|
user: "\u{1F464}",
|
|
@@ -242,7 +245,7 @@ function getSuggestedFilename(metadata2, format) {
|
|
|
242
245
|
// src/commands/export.ts
|
|
243
246
|
var metadata = {
|
|
244
247
|
command: "/export",
|
|
245
|
-
description: "
|
|
248
|
+
description: t("commands.export.description"),
|
|
246
249
|
implemented: true
|
|
247
250
|
};
|
|
248
251
|
async function execute(args, context) {
|
|
@@ -328,12 +331,11 @@ async function execute(args, context) {
|
|
|
328
331
|
try {
|
|
329
332
|
await saveExport(content, filePath);
|
|
330
333
|
console.log();
|
|
331
|
-
console.log(chalk.green("
|
|
332
|
-
console.log(chalk.cyan(` ${filePath}`));
|
|
334
|
+
console.log(chalk.green(t("commands.export.success", { path: filePath })));
|
|
333
335
|
console.log(chalk.gray(` ${messages.length} messages, ${(Buffer.byteLength(content, "utf8") / 1024).toFixed(1)} KB`));
|
|
334
336
|
console.log();
|
|
335
337
|
} catch (error) {
|
|
336
|
-
console.log(chalk.red(
|
|
338
|
+
console.log(chalk.red(t("commands.export.failed", { error: error.message })));
|
|
337
339
|
}
|
|
338
340
|
}
|
|
339
341
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// package.json
|
|
2
2
|
var package_default = {
|
|
3
3
|
name: "autohand-cli",
|
|
4
|
-
version: "0.7.
|
|
4
|
+
version: "0.7.11",
|
|
5
5
|
license: "Apache-2.0",
|
|
6
6
|
description: "Autohand interactive coding agent CLI powered by LLMs.",
|
|
7
7
|
repository: {
|
|
@@ -21,7 +21,7 @@ var package_default = {
|
|
|
21
21
|
"dist"
|
|
22
22
|
],
|
|
23
23
|
scripts: {
|
|
24
|
-
postinstall: "node scripts/fix-ansi-styles.js || true",
|
|
24
|
+
postinstall: "node scripts/fix-ansi-styles.js || true && node scripts/fix-ink-devtools.js || true",
|
|
25
25
|
go: 'bun run build && ./install-local.sh && echo "COMPLETED"',
|
|
26
26
|
build: "tsup",
|
|
27
27
|
dev: "bun src/index.ts",
|
|
@@ -29,11 +29,11 @@ var package_default = {
|
|
|
29
29
|
lint: "eslint .",
|
|
30
30
|
test: "vitest run",
|
|
31
31
|
start: "node dist/index.js",
|
|
32
|
-
"compile:macos-arm64": "bun build ./src/index.ts --compile --target=bun-darwin-arm64 --
|
|
33
|
-
"compile:macos-x64": "bun build ./src/index.ts --compile --target=bun-darwin-x64 --
|
|
34
|
-
"compile:linux-x64": "bun build ./src/index.ts --compile --target=bun-linux-x64 --
|
|
35
|
-
"compile:linux-arm64": "bun build ./src/index.ts --compile --target=bun-linux-arm64 --
|
|
36
|
-
"compile:windows-x64": "bun build ./src/index.ts --compile --target=bun-windows-x64 --
|
|
32
|
+
"compile:macos-arm64": "bun build ./src/index.ts --compile --target=bun-darwin-arm64 --outfile ./binaries/autohand-macos-arm64",
|
|
33
|
+
"compile:macos-x64": "bun build ./src/index.ts --compile --target=bun-darwin-x64 --outfile ./binaries/autohand-macos-x64",
|
|
34
|
+
"compile:linux-x64": "bun build ./src/index.ts --compile --target=bun-linux-x64 --outfile ./binaries/autohand-linux-x64",
|
|
35
|
+
"compile:linux-arm64": "bun build ./src/index.ts --compile --target=bun-linux-arm64 --outfile ./binaries/autohand-linux-arm64",
|
|
36
|
+
"compile:windows-x64": "bun build ./src/index.ts --compile --target=bun-windows-x64 --outfile ./binaries/autohand-windows-x64.exe",
|
|
37
37
|
"compile:all": "bun run compile:macos-arm64 && bun run compile:macos-x64 && bun run compile:linux-x64 && bun run compile:linux-arm64 && bun run compile:windows-x64",
|
|
38
38
|
link: "bun link",
|
|
39
39
|
translate: "tsx scripts/generate-translations.ts"
|
|
@@ -48,6 +48,7 @@ var package_default = {
|
|
|
48
48
|
node: ">=18.17.0"
|
|
49
49
|
},
|
|
50
50
|
dependencies: {
|
|
51
|
+
"@agentclientprotocol/sdk": "0.12.0",
|
|
51
52
|
chalk: "^5.6.2",
|
|
52
53
|
commander: "^14.0.2",
|
|
53
54
|
diff: "^8.0.2",
|
|
@@ -61,13 +62,13 @@ var package_default = {
|
|
|
61
62
|
open: "^10.1.0",
|
|
62
63
|
ora: "^9.0.0",
|
|
63
64
|
react: "^18.2.0",
|
|
64
|
-
"react-devtools-core": "^7.0.1",
|
|
65
65
|
"terminal-link": "^3.0.0",
|
|
66
66
|
yaml: "^2.8.2",
|
|
67
67
|
zod: "^4.1.12"
|
|
68
68
|
},
|
|
69
69
|
devDependencies: {
|
|
70
70
|
"@types/diff": "^8.0.0",
|
|
71
|
+
"react-devtools-core": "^7.0.1",
|
|
71
72
|
"@types/fs-extra": "^11.0.4",
|
|
72
73
|
"@types/minimatch": "^6.0.0",
|
|
73
74
|
"@types/node": "^24.10.1",
|
|
@@ -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?",
|