From 449b14c0744d4222f62ce4cd19688d35e3221bff Mon Sep 17 00:00:00 2001 From: Tynan Daly Date: Thu, 23 Jan 2025 15:16:52 -0500 Subject: [PATCH 1/3] fix bun builds + malformed mcp url --- lib/utils/computerLogger.ts | 36 ++++++++++++++++++++---------------- lib/utils/logger.ts | 30 ++++++++++++++---------------- lib/utils/urls.ts | 2 +- package.json | 5 +++-- 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/lib/utils/computerLogger.ts b/lib/utils/computerLogger.ts index 6745117..349e512 100644 --- a/lib/utils/computerLogger.ts +++ b/lib/utils/computerLogger.ts @@ -1,5 +1,12 @@ -import fs from 'fs'; -import path from 'path'; +import { + mkdirSync, + appendFileSync, + writeFileSync, + readdirSync, + unlinkSync, + rmdirSync, +} from 'node:fs'; +import { join } from 'node:path'; import { LogConfig, type ComputerMessage, @@ -39,12 +46,12 @@ export class ComputerLogger { const parsedOptions = LogConfig.parse(options); this.logDir = parsedOptions.logDir; this.conversationFile = 'conversation.jsonl'; - this.runDir = path.join(this.logDir, parsedOptions.runDir); + this.runDir = join(this.logDir, parsedOptions.runDir); logger.debug(`Creating run directory: ${this.runDir}`); - this.conversationLogFile = path.join(this.runDir, this.conversationFile); + this.conversationLogFile = join(this.runDir, this.conversationFile); - fs.mkdirSync(this.logDir, { recursive: true }); - fs.mkdirSync(this.runDir, { recursive: true }); + mkdirSync(this.logDir, { recursive: true }); + mkdirSync(this.runDir, { recursive: true }); } /** @@ -52,7 +59,7 @@ export class ComputerLogger { * @param command - The command action to log */ public logSend(command: Action): void { - fs.appendFileSync(this.conversationLogFile, JSON.stringify(command) + '\n'); + appendFileSync(this.conversationLogFile, JSON.stringify(command) + '\n'); } /** @@ -69,7 +76,7 @@ export class ComputerLogger { } messageDict.tool_result.base64_image = null; - fs.appendFileSync( + appendFileSync( this.conversationLogFile, JSON.stringify(messageDict) + '\n' ); @@ -84,16 +91,13 @@ export class ComputerLogger { private logScreenshot(message: ComputerMessage): string | null { if (message.tool_result.base64_image) { const timestamp = message.metadata.request_timestamp.toISOString(); - const screenshot_file = path.join( - this.runDir, - `screenshot_${timestamp}.png` - ); + const screenshot_file = join(this.runDir, `screenshot_${timestamp}.png`); logger.debug(`Logging screenshot to: ${screenshot_file}`); const imageBuffer = Buffer.from( message.tool_result.base64_image, 'base64' ); - fs.writeFileSync(screenshot_file, new Uint8Array(imageBuffer)); + writeFileSync(screenshot_file, new Uint8Array(imageBuffer)); return screenshot_file; } return null; @@ -104,9 +108,9 @@ export class ComputerLogger { */ public cleanup(): void { logger.debug(`Cleaning up run directory: ${this.runDir}`); - fs.readdirSync(this.runDir).forEach((file) => { - fs.unlinkSync(path.join(this.runDir, file)); + readdirSync(this.runDir).forEach((file) => { + unlinkSync(join(this.runDir, file)); }); - fs.rmdirSync(this.runDir); + rmdirSync(this.runDir); } } diff --git a/lib/utils/logger.ts b/lib/utils/logger.ts index 764a092..b4c4e58 100644 --- a/lib/utils/logger.ts +++ b/lib/utils/logger.ts @@ -1,26 +1,24 @@ import pino from 'pino'; -const transport = pino.transport({ - target: 'pino-pretty', - options: { - translateTime: 'HH:MM:ss Z', - ignore: 'pid,hostname', - colorize: true, - levelFirst: true, +const logger = pino({ + level: process.env.LOG_LEVEL || 'info', + base: { + env: process.env.NODE_ENV || 'development', }, -}); - -export const logger = pino( - { - level: process.env.LOG_LEVEL || 'info', - base: { - env: process.env.NODE_ENV || 'development', + transport: { + target: 'pino-pretty', + options: { + translateTime: 'HH:MM:ss Z', + ignore: 'pid,hostname', + colorize: true, + levelFirst: true, }, }, - transport -); +}); // Create child loggers for different modules export const createModuleLogger = (module: string) => { return logger.child({ module }); }; + +export { logger }; diff --git a/lib/utils/urls.ts b/lib/utils/urls.ts index 369bbca..942fae4 100644 --- a/lib/utils/urls.ts +++ b/lib/utils/urls.ts @@ -38,5 +38,5 @@ export function getStreamUrl(baseURL: string, machineId: string): string { export function getMcpUrl(baseURL: string, machineId: string | null): string { if (machineId === null) throw new Error('Unable to get MCP Url: machineId is null.'); - return `${baseURL}/compute/${machineId}/mcp`; + return `${baseURL}${machineId}/mcp`; } diff --git a/package.json b/package.json index 358697c..0a41db0 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@hdr/sdk-preview", "module": "./dist/index.mjs", "types": "./dist/index.d.ts", - "version": "0.3.1", + "version": "0.3.2", "files": [ "dist" ], @@ -46,12 +46,13 @@ ] }, "scripts": { - "build": "bun build ./lib/index.ts --outdir ./dist --target node --format esm && mv ./dist/index.js ./dist/index.mjs && tsc --emitDeclarationOnly --outDir dist", + "build": "bun build ./lib/index.ts --outdir ./dist --target node --format esm --external fs --external path && mv ./dist/index.js ./dist/index.mjs && tsc --emitDeclarationOnly --outDir dist", "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"", "format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"", "lint": "eslint ./lib", "lint:fix": "eslint ./lib --fix", "prepare": "husky", + "clean": "rm -rf dist", "publish": "npm publish" }, "type": "module" From 95d04700607b1a50c587a14614021b4f71021e3b Mon Sep 17 00:00:00 2001 From: Tynan Daly Date: Thu, 23 Jan 2025 16:15:01 -0500 Subject: [PATCH 2/3] checkpoint for fixing now that we have a working version --- bun.lockb | Bin 97551 -> 107376 bytes lib/utils/logger.ts | 10 +- package-lock.json | 440 +++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 4 files changed, 439 insertions(+), 13 deletions(-) diff --git a/bun.lockb b/bun.lockb index a24a245d77533421017531bcc11b129e44f3a4c2..216cbd2d6354c19040fe2ae733db57b068a36dff 100755 GIT binary patch delta 19579 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 delta 13374 zcmeI2d3+T`w#U00u5bfUKp-K6B_V;pkdOq(%>p+NmV{iQMhRgP32+GsVatNzmY}0z zaEm22o3e?52nsPEimaj%MISCBxB?D};)XMf>)`vIUX+=qZ{C|f<}d4$U!VHba;na$ z)77^-_0{ti-2J`ho`jye4}6*MeG6lH`odjBSDx6Fw&T)fn}*I^o;&3Dg+rUK%KvNi z^|~g>s4MK!fifk#mB%;4#A4Dl3A6SHb2&G_%2cgE(^|^CGB2w z%6B{RAQDSzrUrv^;!7&DQn(mU?uW+%%ZGhW=W;?${+0d z5c-J$SM|2_PAe;_tPD=oW(4QYV|*IL+YNt+v1b~rsH!X}tI&cKbE|^o^R){S?2f^T zIpskna*B2rqi_M`VtLV&+2!JzcPW<`THnVme-SQAF*P{3s+jsI(~HVxAXg^Z9++NK zQ60~0ifizPSX!K9ui-YNtW{CzJeq4-W-`{p|9}*QRplk|r9|DFs#)`=%$^$D#z1W- z-++`DSnLdZHIgu@DRs*C_4~*AF)`RL9c2(1Fo%ZXs?v)1`9(9!w4(CjIYs3a!6rnA zSa!sbFCk^1X+GOhS+^oQHh})pE)FRZElSn2cF2q1+#oe)y4e$QJ$Pd^1zo8KBBeo- z3{9hL&B%03BhYJ3Bg2v1kfIpx+n!-f#r1A*-9kU%GlS*DLGc##;?Zjd+6HC#?Ilx4 z(enXPf;7F6~USFg5{bvgMnp&eURL;HF-=_CKQpb#x+l< zo||RQCkz=zaoP}j9%-m*FWsE^wi;@ek8&i=wqm|)_SB+^>6(^2%ub9dva_?W{$8s#vx^58z>h!DA!(*5ERM^ zma?}^VKUcd*I({^-l#v-vTH|UQMjs2@O$@QC~9kT)jHhgZN>VqoHb2UerKQeN*K{Z zov=FC0GOuo!+f4kV1v}5b{XED5t@dlYYeN^0@xs{&*6?f?_QYbGnBCJVD?yb7yG;e zvDv9(qlEB)<_BsX~(d#_mX!i|}?*wTRK3R3l#D|O=pGR&&VFQMICCJ;k}of zRNGE}r-!Od_j}Xhe%8n2=D{4Vwe=ZK$En;5zxR6zxr@XRG%4$;Y3v+0g86$NgUNIV zj*ESsQ!u|el$PP`-pdXxkIKiD<6z>-3sinvpJxdyMdfwQ@c!8;M;9)RX0LZzb@q8C z!BVA_X9>9!6&jx5J?ga3tY8l7ZM&(t)w={HGqFO$yACF^B+w&##yh=LZl>Sco@ay% zfCD=EJfmR4RcLgEcNsZpj1idhUk=l)C}_p=LDYKG;Z8p9NLYVZh%iqr>=Je7#Tnis zxkmp!s&=s7JDrU~Zk6UrZig)}Cv;JC8g?0Vw&fWFgxn6yokgAb3v1`|Zi2~@ zG_$mvfk`0S{d)3@5rgQ5&PtessC_f;fyu;KwKSjcW0J}p>i3RilnGXox=yLhA(uh8 zDF`f2Uwg%@0QaQ9QdMZj3}bFzRXfb@-A+MEQyT9Hb?M(2pesU&02V}c)+5sQ-=3ea-zX2H?;Bg5LJ7H-{>$@H6pGY zszOHjy>$eCi8V-mr&N8IsvYGw9v`L}5uV{Hq`+@nKV0P&_&q0Z=NOe&kYS`}t47L~ zWvh_Ue(xEcuCfa3ip(UQjo-cvWhTY2EEP(hqd6+1(C-~L!j1!+6vplb%cZNmWBzS~ zYNSa4C9-lfLBkU;cKd=1&slQGDz9yZr$>M_v1U>nP$6T}$F|k1pHf_HX&~E!P|yuX z5~+h2A*A!Av}bR(>e<9C$)>Dn>dvuY)skW3wbH*MThNnGu(WbVTIv5GljTQ@gqxLq zP0I8M6)TC<)s^GyX|uN41pwDsNu;#qaj7){mjZDL+mw}lO-g%iT`Qe0J(Lsz(K8N6 zy9q$_T`9lCB{LC7#UvnU63~@re3!ApCd-8+(hFt?A)PNpOPN*rk5Y!64WxdKQ*TLC zHNK0wV|=)Ja(pXMs#VBEHH`03Eq$&AO~G|Ql1R~Uy%3T}F>Qem(!V2{(Ql#E+m_;i zT1_jp23q7)h?EK41!Mwu14$x<-y?){zLfGhtJIdl?*$?ikbxEhO}#fEtXkL-AaWUy zbiNcfJP5jhy+9)61t3YJ^g9Sddn1taze#EL5|Dm}cyC8onctMs;T5a)*QM0I3Pj;y zr=3VCf6bAvJMs;rB#~18ri?Eg-vW|EO2rW&q+gR#f7GhArL51p4i_o)?>Stg=>Gsn z`7t2r7!ZD3wVv3qT5>0yl8=y*M2hb}6+${+O8e7R>Hkg23_f?-pD#tv7uNfcow4q( zZ^%oc9Bjy zk&^A?aFLSjtg}>->B2>By%-^mlx!>)QPjhcJ&{u0OD_K;rRWb%`T0`%$5Sr)lO5@E z+WB-sMba+?wj~2;ARRNEhUZHu8swCVl@iM_s1qq5J&v}*!+(^HiQ3>$7cO^rA<4l&+7vE z7?pN!p*~jCaUG{V;W}OoR)zWmwUq0X>I~P3YQ%ko`c-N**GcL-u0<+;aiKn0ZQwdZ z>Gv1vQ`K0mLA8bJH03o5^1rkcxjmO99F zwu)L-sLxUJxz1IGmldkidqY+KLe;`qk<mCf~H>fkPG53e6f|UWiTCHALsG6Ih%Cjn< zFHrfb3e{7v2H4F?UtOrCF9}t_)dBq$wFMTwG*q=)6VPu{MQaMxi?9Q*+g0neh3cAR zp{iPs@R7D`kiX-Lxt)H>`mC+Dr#M!TDT%q-LfvA*Qvv>)CaKd;ef8x zf`_pWb`rK&B|Uts_NEbAM7k_xf;9y`&MD!hJgNnIs+TC z8v7m%=quIgN3m}W_H7L4t5yC+?1MGH)++rm>|2X{j|KE~Y6~pvAno3Iad z0JcH3-i&?guy1of->CM&;vUAn#{>E%HTQAsgS`oRTtz*BeUD(@69IjTIt)u)k9}JL zdc9h(1^ZwpVGSy2EB0-`zO4a$yE+cbc@+EV1NshCSC4(Lv#@8>;3u(fBlbNR(4SRj zU}GM`zJ`FlTdi)uzD?M-EuimJ`P;A$)&SeD^zGQU8T+;e^aE-OEc|iodn%y6po*Tt zKG*@+LDhN(_C0}pI|BMkYA-Bq3-&!7&=0A(Ph%hKP1vg{>KW|Yiha)n^uy{fEVUl{ zb_Vp<)qHqVV#*F1xT&jpOrn%W1A+lh$>0>DnBq<9f7_H{ZdoW&yQ9M zpT)@M1I8Imy#`I)g_SP^jK65=rWZ!5Q_z#pvzkhNakN^p8#`YN7~g2>1T<$4h8_$U z-)ZXJgQL~A(6i7VG?mpjTCLxUsf_{S@0$7=I%XfXz7#Ni($t!lMyuxgG4|zvuGidzg!RgYSpYyYo| z2cMPX<)qa4f7xf$c~KCk|LR0mQpg_X1u{-IQ#$B=-nq{GWGCtQHIT>WMM6lzMVTPm zd29JAdCAI~jJ#_}ItwK0{wkBQzd2>{#0(s|?7hvfu&yZVzr0;-~ z$t$e9$VvJhNLIclwQ|bb*JOFIn+_z&vtO#^bvPSH`a6)amS8xLbPiab2ILE6J4d0o zN3s`!_GGM&S4b%nui#B9$$PhywF0An3}#Ruo@x#F_-3W1PP;MAi+Y(ydhsSYpsH`O zzpJ^ti{8$h-9h)5-j4dE)$)=$9Eh`XzzC2F#L@DVXeC$$Rs(VBLqHt)Fn9#42OGen zU?X@8Yyz9X?8W_sf8Uhb;MDfW)SJfcXr30#1RCz;SQ_%mlN5e9Js0(I?-J-Usr- z`EBq9coqB?I0PEOKJYx)3!Ve}fqaCJUs!(N1vG44BNoQ^6!4-!jGm zxyil*atD42{tP}$r?;ME(wNCs+cOnt73WSoL*e=Ym`i z0GER+KmiyGdVuf2N$?hU4Rk?WR}c;EhTjG9!AOt?ih$fZmx3(tI_OT@STKZq98x|x zO(GaH`3BXWLLazX8i1e3p8==A?La>N$c;RM{3uWeqTur3>oW4=z<4kbEOBnm0WHkC zy6DmI&rtRS5M4KbpB+d31du4X9t6Rd?Z><5YxQbb#IXSN)0nd-~f0I>;z))(_lN;1{%PVpdM@n>w!ewBj9215LgXXfd|0@64EQkn4k{a z1Keen2wDVc!L8sHa3hdO-h})kxEU+}H2_uC)*@W$Zv(QT3xPzU=u_ZcAotW_aKCht z5M2hAg5_W(SPRwwnXTm40Vx-V>o$T7;8E}x*aWr!G3E*IIM@nyfTutW5RZr_R)PIM z46WYH%`w;05pjI0W7Y(oU98`o03( z@|Vd=9p(0xCa!rM90sD$Z7kMHUIJI{Msercz`gn3ARi5+|2yC56Ng(SiNoINid<;GUp8zTQ415lzJNOoP4*V6I0bhYHfvv^9 zik`oKuYpWRmj}8umX2}{ijuS78}K(E4Sxb|n;*%42YvwGgTFgm^3uj_CpzY|Kp`n2 z(Uu_t#wVv-S(WPVnw-+LqU74(>}kEXAB)u|>)R*v(C391O*@zq`{~mn-Lsl`OLzG` z47p>op(iIKCM2TjiVo(netL3S_f+S1q0tTP2Ce$a&<}MmyZ6`Ajp7J%a(_KJ(mm(- z-W|`^wP@Ka-q4fKk%W#>k>(Tq_3)J9Nc$*RU7vAxc5fJ%X6O?s@e-@TsZJ z_pKYK>6g$qA(?QAG|x$2_t0jv5uJX|)~3(UqOUzg_gv_rD;6&(E4?9vn&gC(gnop7 zq&YH0507+Ch}PV_G<*8j9UtvuX}8QPjx=j%VcgTnT$Z9I8)2QzSA=)(Y@QPSX=gLi zhX(hkXsg%by3C9zY=egW_UPlgnwR4 zpMGKJ>X)xJ^lxa}606-4tlrrJp8qs|88+S6KOtGBo)B%m=F>+SmCd+=+;DrV)Sgtgh42Utml2LPF%#bv^Feb+Ir?Cd^;m2{eMO~ZL@V5hY zkCcQI%{?BOo)j1rvEYNpsBsp5ag2EfeIwlimHvsw&Nsen{(;jXg>5{>+>@r)M7|hf z`{}OLTMPbv!>a|f=x6)*-57I1I`cUdW6n$0rx`!QnC}Y@i8a4XXMPc}X73DSY^*s6 z8R;H_9UYN#xXYRPgTKtCAlBTR!EB0R?YQe=oS2yZ#TRpE(KjJU;;l5+JeP&;`LX7Y zqH}kwnK%HQ?%CWu7k<1UyMC(pllBSyj;l@ z&-50{{JBMndkAyv?k_wm-v2z#8YL;g$EFu&pL8wEe4sSU-h-KA&5(FX}+{ zk`8BSDfcb9(KR5`)`=WxtV}d(Gnrj+lDSLDw)sim zZ#_KewqJIPe^eT7G|4c(&DMK0ca>Wz%<7@KFU36*oRs-c?DaRdjv~e|K$WC-6PB&Z=PRQcw+81mi^XNbvoS~HB3+bwcA2&ErR2>Z;R4_=1zPT>7HBO z-Fx}l83p0F)_No-^d*2}&98>B@wg|N54FsDV_d_RJ>}t-BzLxkjyr~biI zEtk#2R>cFr8YDdB+HCtwch;o^m*(B6cG=VD&jS6{1p8{YXPadK*491teQJH}MSuF! z1@b6x9y=drn|!slM&(Oo@;{Fn=^g}M-fsJ+5x4A|LC-`sKLTe@jyYf?y4@q=lSWKw z5q*2X+q96!3>#492y+fCQU>MPAI6TKJG42jU+5BA$YX`bc8{OWKhtpJoy?s#I@*)_ zIeo>Ejvpf3v+nIL{%B;}!koRdWf{bNJk&Bz507zAyXQ9ibnN{J$K>Jaw3zPvR$QNG z=H%&v-+dr7C*Y*8x D#WX>| diff --git a/lib/utils/logger.ts b/lib/utils/logger.ts index b4c4e58..99c9e16 100644 --- a/lib/utils/logger.ts +++ b/lib/utils/logger.ts @@ -5,15 +5,7 @@ const logger = pino({ base: { env: process.env.NODE_ENV || 'development', }, - transport: { - target: 'pino-pretty', - options: { - translateTime: 'HH:MM:ss Z', - ignore: 'pid,hostname', - colorize: true, - levelFirst: true, - }, - }, + // Remove the transport config to avoid worker threads }); // Create child loggers for different modules diff --git a/package-lock.json b/package-lock.json index e274fc2..dbb23b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,18 @@ { "name": "@hdr/sdk-preview", - "version": "0.1.0", + "version": "0.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@hdr/sdk-preview", - "version": "0.1.0", + "version": "0.3.2", "dependencies": { "@anthropic-ai/sdk": "^0.33.1", "@modelcontextprotocol/sdk": "^1.1.0", "dotenv": "^16.4.7", + "esbuild": "^0.24.2", + "eventsource": "^3.0.2", "husky": "^9.1.7", "lint-staged": "^15.2.10", "pino": "^9.5.0", @@ -22,7 +24,6 @@ "@eslint/js": "^9.16.0", "@trivago/prettier-plugin-sort-imports": "^5.1.0", "@types/bun": "latest", - "@types/node": "^22.10.5", "eslint": "^9.16.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", @@ -171,6 +172,381 @@ "node": ">=6.9.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -1135,6 +1511,45 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/esbuild": { + "version": "0.24.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.2", + "@esbuild/android-arm": "0.24.2", + "@esbuild/android-arm64": "0.24.2", + "@esbuild/android-x64": "0.24.2", + "@esbuild/darwin-arm64": "0.24.2", + "@esbuild/darwin-x64": "0.24.2", + "@esbuild/freebsd-arm64": "0.24.2", + "@esbuild/freebsd-x64": "0.24.2", + "@esbuild/linux-arm": "0.24.2", + "@esbuild/linux-arm64": "0.24.2", + "@esbuild/linux-ia32": "0.24.2", + "@esbuild/linux-loong64": "0.24.2", + "@esbuild/linux-mips64el": "0.24.2", + "@esbuild/linux-ppc64": "0.24.2", + "@esbuild/linux-riscv64": "0.24.2", + "@esbuild/linux-s390x": "0.24.2", + "@esbuild/linux-x64": "0.24.2", + "@esbuild/netbsd-arm64": "0.24.2", + "@esbuild/netbsd-x64": "0.24.2", + "@esbuild/openbsd-arm64": "0.24.2", + "@esbuild/openbsd-x64": "0.24.2", + "@esbuild/sunos-x64": "0.24.2", + "@esbuild/win32-arm64": "0.24.2", + "@esbuild/win32-ia32": "0.24.2", + "@esbuild/win32-x64": "0.24.2" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -1348,6 +1763,25 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, + "node_modules/eventsource": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.2.tgz", + "integrity": "sha512-YolzkJNxsTL3tCJMWFxpxtG2sCjbZ4LQUBUrkdaJK0ub0p6lmJt+2+1SwhKjLc652lpH9L/79Ptez972H9tphw==", + "dependencies": { + "eventsource-parser": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz", + "integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", diff --git a/package.json b/package.json index 0a41db0..ce80cb9 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ ] }, "scripts": { - "build": "bun build ./lib/index.ts --outdir ./dist --target node --format esm --external fs --external path && mv ./dist/index.js ./dist/index.mjs && tsc --emitDeclarationOnly --outDir dist", + "build": "bun build ./lib/index.ts --outdir ./dist --target bun --format esm && mv ./dist/index.js ./dist/index.mjs && tsc --emitDeclarationOnly --outDir dist", "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"", "format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"", "lint": "eslint ./lib", From 200f53ff66921e6c05696ef13ee151c9f1cea44f Mon Sep 17 00:00:00 2001 From: Tynan Daly Date: Thu, 23 Jan 2025 16:56:32 -0500 Subject: [PATCH 3/3] dist tests --- tests/bun-dist.test.ts | 39 +++++++++++++++++++++++++++++++++++ tests/bun-test.ts | 46 ++++++++++++++++++++++++++++++++++++++++++ tests/bun.test.ts | 46 ++++++++++++++++++++++++++++++++++++++++++ tests/node-test.ts | 36 +++++++++++++++++++++++++++++++++ 4 files changed, 167 insertions(+) create mode 100644 tests/bun-dist.test.ts create mode 100644 tests/bun-test.ts create mode 100644 tests/bun.test.ts create mode 100644 tests/node-test.ts diff --git a/tests/bun-dist.test.ts b/tests/bun-dist.test.ts new file mode 100644 index 0000000..b9bade0 --- /dev/null +++ b/tests/bun-dist.test.ts @@ -0,0 +1,39 @@ +import { describe, test, expect } from 'bun:test'; +import { Computer } from '../dist/bun'; + +describe('Computer SDK Bun Distribution Test', () => { + test('should load built distribution', () => { + const computer = new Computer(); + expect(computer).toBeDefined(); + expect(computer.isConnected()).toBe(false); + }); + + test('should connect using built distribution', async () => { + const apiKey = process.env.HDR_API_KEY; + if (!apiKey) { + console.log( + 'No HDR_API_KEY found in environment, skipping connection test' + ); + return; + } + + const computer = new Computer({ + apiKey, + }); + + try { + await computer.connect(); + expect(computer.isConnected()).toBe(true); + + const metadata = await computer.getMetadata(); + expect(metadata).toBeDefined(); + expect(metadata.machine_id).toBeDefined(); + + await computer.close(); + expect(computer.isConnected()).toBe(false); + } catch (error) { + console.error('Test failed:', error); + throw error; + } + }); +}); diff --git a/tests/bun-test.ts b/tests/bun-test.ts new file mode 100644 index 0000000..d0f849a --- /dev/null +++ b/tests/bun-test.ts @@ -0,0 +1,46 @@ +import { describe, test, expect } from 'bun:test'; +import { Computer } from '../lib'; + +describe('Computer SDK Bun Integration', () => { + test('should create Computer instance', () => { + const computer = new Computer(); + expect(computer).toBeDefined(); + expect(computer.isConnected()).toBe(false); + }); + + test('should handle missing API key gracefully', () => { + const computer = new Computer({ + apiKey: undefined, + }); + expect(computer).toBeDefined(); + }); + + test('should connect with valid API key', async () => { + const apiKey = process.env.HDR_API_KEY; + if (!apiKey) { + console.log( + 'No HDR_API_KEY found in environment, skipping connection test' + ); + return; + } + + const computer = new Computer({ + apiKey, + }); + + try { + await computer.connect(); + expect(computer.isConnected()).toBe(true); + + const metadata = await computer.getMetadata(); + expect(metadata).toBeDefined(); + expect(metadata.machine_id).toBeDefined(); + + await computer.close(); + expect(computer.isConnected()).toBe(false); + } catch (error) { + console.error('Test failed:', error); + throw error; + } + }); +}); diff --git a/tests/bun.test.ts b/tests/bun.test.ts new file mode 100644 index 0000000..d0f849a --- /dev/null +++ b/tests/bun.test.ts @@ -0,0 +1,46 @@ +import { describe, test, expect } from 'bun:test'; +import { Computer } from '../lib'; + +describe('Computer SDK Bun Integration', () => { + test('should create Computer instance', () => { + const computer = new Computer(); + expect(computer).toBeDefined(); + expect(computer.isConnected()).toBe(false); + }); + + test('should handle missing API key gracefully', () => { + const computer = new Computer({ + apiKey: undefined, + }); + expect(computer).toBeDefined(); + }); + + test('should connect with valid API key', async () => { + const apiKey = process.env.HDR_API_KEY; + if (!apiKey) { + console.log( + 'No HDR_API_KEY found in environment, skipping connection test' + ); + return; + } + + const computer = new Computer({ + apiKey, + }); + + try { + await computer.connect(); + expect(computer.isConnected()).toBe(true); + + const metadata = await computer.getMetadata(); + expect(metadata).toBeDefined(); + expect(metadata.machine_id).toBeDefined(); + + await computer.close(); + expect(computer.isConnected()).toBe(false); + } catch (error) { + console.error('Test failed:', error); + throw error; + } + }); +}); diff --git a/tests/node-test.ts b/tests/node-test.ts new file mode 100644 index 0000000..897629f --- /dev/null +++ b/tests/node-test.ts @@ -0,0 +1,36 @@ +import { Computer } from '../lib'; + +async function testNodeComputer() { + console.log('Testing Computer SDK with Node.js...'); + + const computer = new Computer({ + apiKey: process.env.HDR_API_KEY, + }); + + try { + console.log('Connecting to computer...'); + await computer.connect(); + + console.log('Getting metadata...'); + const metadata = await computer.getMetadata(); + console.log('Metadata:', metadata); + + await computer.close(); + console.log('Test completed successfully'); + } catch (error) { + console.error('Test failed:', error); + if (error instanceof Error) { + console.error('Error details:', { + name: error.name, + message: error.message, + stack: error.stack, + }); + } + process.exit(1); + } +} + +testNodeComputer().catch((error) => { + console.error('Unhandled error:', error); + process.exit(1); +});