From a17b1705fe5cf86144547c5814e4bb865d2726f8 Mon Sep 17 00:00:00 2001 From: jiangchen <1703935164@qq.com> Date: Wed, 2 Sep 2026 01:24:58 +0800 Subject: [PATCH] feat: harness.discover (apiProxy inventory) + harness.pair (device pairing link assist); repack tgz --- dist/dsh-watch-0.1.0.tgz | Bin 6168 -> 7084 bytes lib/index.js | 44 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/dist/dsh-watch-0.1.0.tgz b/dist/dsh-watch-0.1.0.tgz index 596f2b9b8ea62ac26aa9222e1ed39a212160e2b0..2a19614a03cab425d486a05b52bb72c204ef12c4 100644 GIT binary patch literal 7084 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 W^Yrud^YrsGKmP-ENP27lUH}02NCss9 literal 6168 zcmV+z80Y67iwFP!00002|Lr{ecN0gF{5*d}MZAYbL>|e22~R#}PuL>X#mIh^ST4tL zd1FmWns_v$bdM|?@Ow@+*_Z?{+0EuQgw2KA=9XP@uy>me0%rMRV)^4I{|oo3yJx0H zA3*kYc`y4=-ixK~s_L%l>Z(X5lqOmVVMDi`+sEk4<7_UMr#FsMD7%^u2* z9fo~}$Bt%4M~@!O9)W$?(d?n4W3Vr~?H5StI6FYb|SD4g7}9fO$2)V^RX9Yk|p_SG7%_ zSYUb8c9Xci>En1c+aU~ezd;~TmKcc?AH*W2quDNCU(f{|+i!SnA1GlywW~-Y4Ypf# z+7`|s=yvR;Ek{6f&O6h5588~R`8?Cm^enrEe+g%+)n0IH)<}b8Bk6^B~C6o+TN>H4fMOZu=4XFeoGMH~B437LIgy6b z#me;TsS2FV&(G&el~-W)1msJvz{|zbR2mBZJU3q`mtl5ZE1sO2DHf*EP%KT(oSG_@ zUV`JNDo~oOz)bOEu~L|V$}Hf3l2ox!Mq(!m^OMv0QYC-9I8&^=lGaWXDxLQ-%CYvGh_Ik&(p!*wFSp`~3ZV zTGIbJ_Cm&XEppCyjXhQWf9QoV^!aiBKRT8@{LKG9jgQ?#^9|>rN{Q){GNDU^!V1)= z*My|&StQr+{Z?{Z3n5RFg|b&&Bz`*j+Jo0&5yBg??H?^dT8xmz5!24FYJ)UQ<`cTC zlD1vun~qZ^zHhsARwmMOGucown}oH@DhWr5QMFiOBmhm0Yg*NFnGdenBrpL2P6k?7;V?~T>Z=&1_#!YmQ6|3 zPo~lkHc{f3%gNN)lwpyY*><9)v<8sLz&!rq6g2?G1$v4)NF4(Wx2`Lg0;$aiEn1I) z@V!OiJ_^8W*)NmjM?p|h^<0-!{gVvA+;($;P(5WdZC4-5W+V8qY&I(fwVT9i4}u@f zstAX(0Y)YRQ(R&J`wfrzgXEeu_&*J!TIj4-`TnS=j{i#cW->Rw{dOjPdB?iztmm( zBTSX2A?W#fZ)0ui;`=){Zf3SFzQ1+-p6J-yxG1MmZBt5IA4lPn#CiF2nNJmlY%9T3 zshpO&9Wa=dSg3@4*=y4($$`%J7s*gGoM;}0m9)h1+{uRN))7Sjuka3J7+?jexUE1Z zDLDuV&++PYLXD0|T|Idw+ob@Dmvo>^e4WFg4Eb(6&AZx;6SSiBlh!TX(P6!yRmWq* zf(fXZ4kHm+xqm8lvyTY#O~1|JJsLo$eU4Yxn+$bMm6Yw)ytt%L76>;ED=In{X+M6y zq*Z*C05fZ(Ok7LvurzoJuLa9y*Ff(ulzN95l$h3X**ARx6B84WQ!r-d3Z+!2OxjE9^^bvDrWa27)Q9ZtUHQP2h5Dpw&q?Zi|n6$wi~q{R$U zVw@Eq4kOXl3Sgzy^#Bj#w9J)77drD8UIkDxEj8>%#w}`yarICZ zXlUeE{gRTSqztZGx=twN7-Abp0TD_)8nY>sa;rjV%&t(HQcR1&kTYjRTV$`rI-%D%Z~&c$f!L{lhS@P~KWsKE!m89>Ao}^0Q22qB zMMlp{K4ZX7$mqD-d5@SHBRqG&BIOBm(y@D{8-N&2}wa7dpud+IBJPmBL~A z`=4XRf@8XiN;ktqlAbb{M}1v4)3CrH7mRkx!o*nKhY>KNU#Tf!>RhD`oVS1a>F*(at411;EerRL9PcSicZL(44M z4v)+VXpX~uT(p3a*V{HFRx%Z#4lqOb8(pARi<_J}@rADoSW.n8JYeqP~aC8chz zCtpel2@{|X6n9G6gL8bBpHp-gXB&w|mDg}NVFnj!UfZ=qc-)IGIc39^*LIh@MWQ!} z-|(z7#FtktX1J;sE`;t3=OvJYkQ*j-31fzgLQ=uN14T3pxkbHZ%a4#{`y6i$RPWIw zs-{~dP9KR$-u$@n7fc7?`mm3S_F?F%>xpn<2I0|&4Y9fUaCmYucp7iE zrY8+`uOP@jOh9&k^0eJW*Xy_vUz`Q_*Pbz&rtL<28iQ752FJ} z&Mv%$dnnw?XGHT^Mdc&F3m1az9k!hj1D=KFhV1V?hFuRDrfWHb@<_Lj;g|>Q8%JG$ zL7Qlxo+_bWzkz(5SqvC?aW`&#*b};&}7V5$Am3x zqJF+t(rT=gj@Az66#nGLG)y)8i-(b5AnsVRnyVSE+JXK2!GTSGgzzZUd~9^!dO=7R z_&?u+z~&DZqJS9S-XFnoX!K(|FOp^S?7@jzBva9h#aj%Y+D$#hqkLV6hZ5#FOC-KqUZ)6Yl?hpd{9KU_E%J43N-WSB@gYp;$h0nM=~SUGS1uG@eln zks%Kv#m@bK1_WX^a6EnJdiN}hk@VJAC((+ zbW&CT4LKP-*}IBK_3T^&9SIybfOL!{(`l0^W(it`otjgFb8Qm6MZGG8C)_<%ewmaM z(i!2+C=-#V$UQ!VA(svmrutXMX1Ga-CDX#{Vh2WxUmD>U$bbqi zI7)NBb_lphkr>Cjh)%dGIt(4NBT_23R^vgl=jzFp=hl?fR~&k*HO>-*@_=~4*f1@eih}yY8QtOB2yvzPY;&Px((!Cp;KGBSK}KAeO0@g` z_5+LDRL}6^+F)_Ulq)XJhRIN#DX|NJg&C-paUGLZDW+uuY&II*mdIkNBH*pzd}W@$ ze~^|4&!Z6r%aLzqh5vXIAh$5*E!^~RDOkiIKH-9h;RGrkTtW`8gjo3D3qut8`Pglr zS`vXi=ylG0OhbhGZc|5ID4v?1K|ljr(5GdRY2X1>E|YP*s_9^cGaeYUsbjQEzah#L zPud8DyCZK$osC|&MRI~)H4JZ zLTPzuV7VTtGy4rJh2)p&fm`4u94o2Es`8U@f`_+E%Q01LrGTNR zU_;K6^I?GWF98>LI>>a`zq-koe}v#FmvnjyTKE|OzvNWSP|$>ahHfmG9^&65Mnr_C zhls1I(o2W3L@fz*H}FMf`5HYB$xKIyPSwk{ zzPKUo-lGzgA>Lhzg2U)#{*Ds&wk)QaOM7(8|1j#6kD#-yI`Rt!^)X3{tvG8 zJ963hqIoUiCVOQZ8L8p6-eQepIxM{jMisx)LBUNtlv;U&tmVS;Sq9=0mA>l2g-qe< zfyrW>V(ea>{t-q${}0df*Kkaa@=L?W^#^QnIqSGPmHUc5-!{OtsaLF_+D=SBCpDlr zh0h)D$=WC$sX6*UEeM@q{N`Ke9OK*PFTDSboN50|2JZfNHB4M3`YL4@;a|PB-xHV( zt*Ma)La{+o9+7QT>e+^wxpKqAoQkLuX?Wfui<>(ENx!;pF0k#zut4KZqF{?I2^u?;sB!M~Vy(at*Q|r-$88!NWjG%Z6FQ@}nc;beq z5O9vK_tjbqVXGCA9nM=1>E3gzsF91xq^8J%*T%e0wBCLC*He0d$`?nDt6U%9p(;0Y z3PW5dUJ_>`1&bGYG2$0ppU@@Kk;AAI(lE+vDLMPNuB2AObyX)6)|y2pWMMVp+pFpj zlLid+bdL8(NJR-}r*@4G6=`gko=$S9!jkK6V+>R-x~|@Ff|Yh zK_UkwOurgO%A0k@<9Ycs2{SyfKy9l|P<59X*p@?#q!M~Zn`kB2O3`sj6niQ)V6izy z(TqA#5ym`z?lcNQ!>NZ9GlELyFJhtJbF649nnupa^7Noime&NQMPd2Mxc2w({zLxd z$?>QA{&RHf(9!<)A7h7}z5jR`AKY3AROCbs65%mAf!XPVto_2CtTAe2MXM+wZ27Wh zsyuy~+p=kq?1GlluG?-7C~0~=8Npjf>N#LW*H-}~FH1*f%Aa!J)4`BftKqpMBaZa) z^lm`8-NKE?f6xH}9@)-u(l`d;8+ff4-w>-Jh+CuibaP*}VS|fBYl{-@LoJ_1U+38<)Cw zz6%H6x${**!0$Z#c=PTb1ZZM!mLZRPfp3P-NoEgE;#RI0vWz4=lUuaNk$oP`|WSKSFd!h--LkP_O-X6 z*9^n%JD2$rFFBDBu&taj?=aUIgTo5Qv3-QPs5saP?@>hafSvK$fcKdgiw{G6(ZmeU&ei$`i`;)JB9)2ns z_cqo9gZMB`6H3v&esk;km-uAv>u-g&Mmb{;lil06Bs3Ov^OLW(u6)tGaclGLebnLY zTX(wa|0#|Wu=DWKorj-n{pO3kjkWIjo!xgXcdxE>fBw$)gAcZU|8RG89itK0dGKX- z{e!)Yi(JWn=-TzHka!50kdGN7(TTek{$jCz6&`%H^X?zI-~Lbc_BBQ7TF7Mg#;v`L zYhuAUo5i^tCk5SKTzW26gt-~Mdq7#?|0w3+5PQD zI}bk%t-`C~l)JaFw)^?pJGcLg`|jfV2zTRFq=E|_`@sj_ufDl?_ww%b)t&!(bNl|s+aG?t^Y#bbja9L% zf6)SQW{2z`l<2b8rZNm2wtbk_B%Vw9_YdQV#}P)Vl=um*^iTKOkGglh>)!iN zv`BK7?(J<{+nkM_uZV{X#H-wu22q`;G)S(w9F@g(OU4!&qRju@K5%~8S#LOV_q(Pc1g z9E?@49n`eVd+(!WUb(ru`sUuowOHQ!`_(u56UNxc#S}ydn}7bz&etEI7%>2c7bjr! zm^K0(wzsi{iY)cFd;8($-TSDMm;cmVzY{Fc=KWuG@BI?7g$3EZb!TtmT8~-6UcR&9 zy`ovzBBgl_kEeeZ{~$^b|M!L;PcQz@9?rhd8~-0VeDuh(`2Q)#{~*!?z;!^|4@H*| z>hrvejDWEW*LLMUIfXke2w;6mh@tJ53DPz-WvL-r1zx_}t~UfBiNMD|(<%su5B*OS q4Q&JyLxlRdN4RFRZffhZf5_+A=h^4k=h^26e*O<&7j&TjQ~&@B4In!J diff --git a/lib/index.js b/lib/index.js index 6487028..a6cef05 100644 --- a/lib/index.js +++ b/lib/index.js @@ -106,6 +106,48 @@ function apply(ctx, config) { }; } + async function harnessDiscover() { + const out = {}; + if (!api) return { error: 'apiProxy unavailable' }; + for (const domain of Object.keys(api)) { + const d = api[domain]; + const methods = []; + if (d) { + for (const k of Object.keys(d)) { + if (typeof d[k] === 'function') methods.push(k); + } + } + out[domain] = methods.sort(); + } + return { domains: out }; + } + + async function harnessPair(params) { + // 尝试常见命名:取到主电脑的设备配对链接,供手机端自动完成配对 + const candidates = [ + ['remote', 'createPairingLink'], + ['remote', 'createDeviceLink'], + ['remote', 'pair'], + ['device', 'createPairingLink'], + ['device', 'pair'], + ['remote', 'deviceLink'], + ['pairing', 'createLink'] + ]; + const errors = []; + for (const [domain, method] of candidates) { + try { + const d = api && api[domain]; + if (d && typeof d[method] === 'function') { + const res = await d[method](params || {}); + return { domain, method, result: res }; + } + } catch (e) { + errors.push(domain + '.' + method + ': ' + (e && e.message || e)); + } + } + throw new Error('无可用配对接口: ' + (errors.join(' | ') || 'unknown')); + } + async function sessionList() { const status = await computeStatus(); return { @@ -135,6 +177,8 @@ function apply(ctx, config) { if (method === 'harness.balance') return harnessBalance(); if (method === 'session.list') return sessionList(); if (method === 'session.history') return sessionHistory(params); + if (method === 'harness.discover') return harnessDiscover(); + if (method === 'harness.pair') return harnessPair(params); const dot = method.indexOf('.'); if (dot <= 0) throw new Error('unknown method ' + method); const domain = method.slice(0, dot);