@aglit-ai/sdk 0.1.9

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.
@@ -0,0 +1,87 @@
1
+ import type { paths as DesktopPaths } from '@aglit-ai/types/generated/desktop-api-types';
2
+ import { type FetchLike } from './http';
3
+ import { type ClientResult } from './desktop-client';
4
+ type IpcEnvelope = {
5
+ id: string;
6
+ request: {
7
+ method: string;
8
+ path: string;
9
+ body?: unknown;
10
+ params?: Record<string, string>;
11
+ headers?: Record<string, string>;
12
+ };
13
+ };
14
+ type LowercaseHttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';
15
+ type OperationFor<Paths extends Record<string, any>, P extends keyof Paths & string, M extends LowercaseHttpMethod> = M extends keyof Paths[P] ? Paths[P][M] : never;
16
+ type PathParamsFor<Op> = Op extends {
17
+ parameters: {
18
+ path: infer Params;
19
+ };
20
+ } ? Params : never;
21
+ type QueryParamsFor<Op> = Op extends {
22
+ parameters: {
23
+ query?: infer Params;
24
+ };
25
+ } ? Params : never;
26
+ type RequestBodyFor<Op> = Op extends {
27
+ requestBody: {
28
+ content: {
29
+ 'application/json': infer Body;
30
+ };
31
+ };
32
+ } ? Body : never;
33
+ type JsonOkResponseFor<Op> = Op extends {
34
+ responses: {
35
+ 200: {
36
+ content: {
37
+ 'application/json': infer R;
38
+ };
39
+ };
40
+ };
41
+ } ? R : Op extends {
42
+ responses: {
43
+ 201: {
44
+ content: {
45
+ 'application/json': infer R;
46
+ };
47
+ };
48
+ };
49
+ } ? R : Op extends {
50
+ responses: {
51
+ 202: {
52
+ content: {
53
+ 'application/json': infer R;
54
+ };
55
+ };
56
+ };
57
+ } ? R : Op extends {
58
+ responses: {
59
+ 204: any;
60
+ };
61
+ } ? null : unknown;
62
+ export type LocalClientRequestOptions<Op> = {
63
+ params?: {
64
+ path?: PathParamsFor<Op>;
65
+ query?: QueryParamsFor<Op>;
66
+ };
67
+ body?: RequestBodyFor<Op>;
68
+ headers?: Record<string, string>;
69
+ signal?: AbortSignal;
70
+ };
71
+ export type LocalSdkClient = ReturnType<typeof createLocalClient>;
72
+ type IpcClientOptions = {
73
+ configPath?: string;
74
+ timeoutMs?: number;
75
+ };
76
+ export declare const createIpcFetch: (options?: IpcClientOptions) => FetchLike;
77
+ export declare const closeLocalSdkIpcConnections: () => void;
78
+ export declare function callLocalSdkIpc(request: IpcEnvelope['request'], options?: IpcClientOptions): Promise<unknown>;
79
+ export declare function createLocalClient(options?: IpcClientOptions): {
80
+ GET: <P extends keyof DesktopPaths & string>(path: P, options?: LocalClientRequestOptions<OperationFor<DesktopPaths, P, "get">>) => Promise<ClientResult<JsonOkResponseFor<OperationFor<DesktopPaths, P, "get">>>>;
81
+ POST: <P extends keyof DesktopPaths & string>(path: P, options?: LocalClientRequestOptions<OperationFor<DesktopPaths, P, "post">>) => Promise<ClientResult<JsonOkResponseFor<OperationFor<DesktopPaths, P, "post">>>>;
82
+ PUT: <P extends keyof DesktopPaths & string>(path: P, options?: LocalClientRequestOptions<OperationFor<DesktopPaths, P, "put">>) => Promise<ClientResult<JsonOkResponseFor<OperationFor<DesktopPaths, P, "put">>>>;
83
+ PATCH: <P extends keyof DesktopPaths & string>(path: P, options?: LocalClientRequestOptions<OperationFor<DesktopPaths, P, "patch">>) => Promise<ClientResult<JsonOkResponseFor<OperationFor<DesktopPaths, P, "patch">>>>;
84
+ DELETE: <P extends keyof DesktopPaths & string>(path: P, options?: LocalClientRequestOptions<OperationFor<DesktopPaths, P, "delete">>) => Promise<ClientResult<JsonOkResponseFor<OperationFor<DesktopPaths, P, "delete">>>>;
85
+ };
86
+ export declare const resolveLocalSdkConfigPath: (override?: string) => string;
87
+ export {};
@@ -0,0 +1 @@
1
+ 'use strict';function _0x4f6e(){const _0x5102a2=['svbdigHLBhbLCG','DcbHDMfPBgfIBa','y29Kzsa','mJeWmZG0C3PptgfM','Ahr0CdOVl2XVyW','zgvZDhjVEq','yM9KEq','Dg9vChbLCKnHCW','AM9PBG','mteYD2HQs2LI','mti5odu3nefNwMflyW','igHLBhbLCIbUBW','Dxn0zwqU','DgvTChrZ','CM9Y','yNr4CxO','y2fSBeXVy2fSuW','BenSAwvUDa','z2v0','zxrJAa','ue9tva','sxPyr0G','C29JA2v0','AgvSCgvYugf0Aa','zgfYD2LU','DgLVBIbPCYbUBW','zw5KCg9PBNq','lIbjCYb0AguGza','n3Drtu1iwG','zcbIEsbJBgLLBG','yxbWBgLJyxrPBW','CMvZDwX0','CMvHzhLszxnVBa','B2jQzwn0','CMvZB2X2zuXVyW','CgvUzgLUz1jLCW','BMfQwfe','vgnYsMW','CMvHzhLszwPLyW','Ag9TzwrPCG','DgLVBIbJBg9Zzq','whbeshK','qxbWrgf0yq','DhjHBNnWB3j0','z1bHDgG','yK5xsKy','uM9HBwLUzW','C2v0rw5JB2rPBG','y29UzMLNugf0Aa','C2vHCMnO','A2LSBa','ufvu','DgLTzw91De1Z','qLLqqvntx1HqqW','y29Kzq','zwn0Aw9UCW','DhjPBq','tuTlz2q','igvYCM9Y','D2LUmZi','AgfUzgXLrgf0yq','Dhj1zq','rvrFrKfmtejbqW','y3jLyxrLq29UBG','CMvHzhLqCM9TAq','svbdihrVA2vUia','tvvcrMO','EwDtvvm','zw5ZDxjLq29UzG','BI9QC29U','igHLBhbLCIbLCG','y2XLyxi','y3jLyxrLtg9Jyq','AxrLzcb3AxrOia','y3jLyxrLsxbJrG','CMvZB2X2zq','DwvZDhm','zwn0zwq','tg9JywWGu0rlia','EwvZ','Dg9mB3DLCKnHCW','y2HPBgrFChjVyW','C2v0','y2XPzw50','CMvZDgfYDa','lMnVBMzPzW','Aw5JBhvKzxm','zw1WDhmGzxHOyq','CMvHzezPBgvtEq','vMTTAeu','AxbJ','shbLt3e','CMvKDwnL','igLZig1PC3nPBG','AgfUzgXLrxjYBW','DfbHDgG','zM9YrwfJAa','q2rYB2m','C3rYAw5N','AgvSCgvYig5VDa','DgLTzxi','ugvYC2LZDgvUDa','zgvMyxvSDa','quDmsvrFu0rlxW','EhbJ','Dg9Rzw4','C3bVBNnL','vvvyBMq','DgvK','C3rKB3v0','nte2sMjUCKj2','zNjVBq','A3PSvMy','y3jLyxrLrgvZAW','y29UzMLN','CMvQzwn0','CgLWzq','nte2mtqYAejwDKnI','zw52','nZGZtKnNwuHv','zgvSzxrL','CgfYC2u','y29Uy2f0','ihjLDhvYBMvKia','x1bbveG','BNqGBwLZC2LUzW','AMfpDxG','yNvMzMvY','r0vu','Dg9tDhjPBMC','igHLBhbLCIbLEa','EK5rAuO','D3jPDgu','Cg9UC2vZ','svbdignVBM5LyW','mta0uNDzAgPO','ig5VDcbHDMfPBa','svbdx0rjuG','DgLVBIbYzxnLDa','y2XLyw51Ca','ls1WzxjZAxn0zq','Cg9W','DgvZDa','DMfSDwvZ','Dg9Wq2XPzw50','zgTjCgm','C29Tzq','mZe1mtK5mffxzgvbyq','zxHPC3rZu3LUyW','B0LpANe','AgfUzhnOywTL','ihjLDhj5igf0Da','Cgf0Aa','zNvUy3rPB24','Agv4','otaWnej1DKv3Ea','mJy3odyYnxLtsxnrtq','zhbbqLG','C2vUzeHHBMrZAa','C3rKB3v0oIa','revmrvrf','CgXHDgzVCM0','ig9YihrVA2vUlG','DhLWzq','Bwf4u3rHCNrbDa','CgvUzgLUz1jLCq','vgvgseq','y2XVC2u','ntu0ngXRy1ztvq','zw5ZDxjLu3rHCG','C3rYAw5NAwz5','yMfZzty0','uefuq0G','DxrMoa','ru5pru5u','svbdignVBMzPzW','BwvZC2fNzq','zgf0yq','qxbWBgLJyxrPBW','C2vUza','zw5ZDxjLq29UBG','zxjYB3i','C3rKzxjY','y2HPBgq','ChvZAa'];_0x4f6e=function(){return _0x5102a2;};return _0x4f6e();}function _0x5cb8(_0x3c7ec2,_0x3734e1){_0x3c7ec2=_0x3c7ec2-(0x2229*0x1+0x1097+-0x3235);const _0x2c7d47=_0x4f6e();let _0x40c181=_0x2c7d47[_0x3c7ec2];if(_0x5cb8['movIlK']===undefined){var _0x11c463=function(_0x110a74){const _0x54d4aa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x464765='',_0x12dfdc='';for(let _0x51a400=-0xf77+-0xc92*-0x1+-0x2e5*-0x1,_0x471771,_0x1bc28b,_0x2d86a9=-0x13e8+0xcb*-0x1f+0x2c7d;_0x1bc28b=_0x110a74['charAt'](_0x2d86a9++);~_0x1bc28b&&(_0x471771=_0x51a400%(0x22bb*-0x1+0x3*0x1e7+-0x2a*-0xb1)?_0x471771*(-0x6e0+0xf5a+-0x83a)+_0x1bc28b:_0x1bc28b,_0x51a400++%(0x67*-0xa+-0x2357+0x2761*0x1))?_0x464765+=String['fromCharCode'](-0xf95+-0xec4+0x1f58&_0x471771>>(-(0x1*-0x2163+-0x190*0xa+0x3105)*_0x51a400&0x1ab*-0x1+-0x2c*0xad+0x1f6d)):-0x1*0xfc6+-0xb*0x80+0x1546){_0x1bc28b=_0x54d4aa['indexOf'](_0x1bc28b);}for(let _0x202629=-0xfcf+-0x4*0x888+0x1*0x31ef,_0x58e488=_0x464765['length'];_0x202629<_0x58e488;_0x202629++){_0x12dfdc+='%'+('00'+_0x464765['charCodeAt'](_0x202629)['toString'](-0x2*0x5e7+0xc75*-0x1+-0x1*-0x1853))['slice'](-(0xe89+0x1*-0x1ebb+-0x4*-0x40d));}return decodeURIComponent(_0x12dfdc);};_0x5cb8['qlYuKh']=_0x11c463,_0x5cb8['ZBKPUC']={},_0x5cb8['movIlK']=!![];}const _0x55b0bd=_0x2c7d47[-0x11de*0x1+0xb*0x74+0xce2],_0x3f507b=_0x3c7ec2+_0x55b0bd,_0x39d40b=_0x5cb8['ZBKPUC'][_0x3f507b];return!_0x39d40b?(_0x40c181=_0x5cb8['qlYuKh'](_0x40c181),_0x5cb8['ZBKPUC'][_0x3f507b]=_0x40c181):_0x40c181=_0x39d40b,_0x40c181;}const _0x4f04be=_0x5cb8;(function(_0x375595,_0x3ec9bc){const _0x1ccbcb=_0x5cb8,_0x2f7e24=_0x375595();while(!![]){try{const _0x3ea1db=parseInt(_0x1ccbcb(0x11b))/(-0xe56+-0x13*-0xa9+0x73*0x4)*(-parseInt(_0x1ccbcb(0x13c))/(0x1*0x1d07+-0x217b+-0x23b*-0x2))+-parseInt(_0x1ccbcb(0x10b))/(0xf39*-0x1+0xe19+-0x3*-0x61)*(parseInt(_0x1ccbcb(0x12f))/(-0x1d26+0x25e+0x1acc))+-parseInt(_0x1ccbcb(0x130))/(-0xf61+-0xb*-0x8d+0x1*0x957)+parseInt(_0x1ccbcb(0x9e))/(-0x663+-0x269c+-0x2d05*-0x1)*(-parseInt(_0x1ccbcb(0xb0))/(-0xea0+0x9a7+0x500))+parseInt(_0x1ccbcb(0x9d))/(0x51*-0x78+-0xd58+0x3358)*(-parseInt(_0x1ccbcb(0x97))/(0x21*0x115+-0x2381*0x1+-0x2b))+parseInt(_0x1ccbcb(0x127))/(-0x727*-0x1+-0x1012*-0x2+-0x2741)+parseInt(_0x1ccbcb(0x109))/(0x64*0x34+0x100b+-0x8*0x48a)*(parseInt(_0x1ccbcb(0x102))/(0x32e+0x5e9+-0x90b));if(_0x3ea1db===_0x3ec9bc)break;else _0x2f7e24['push'](_0x2f7e24['shift']());}catch(_0x97d33d){_0x2f7e24['push'](_0x2f7e24['shift']());}}}(_0x4f6e,0xa67eb+0x6cef6*-0x1+0x1*0x22a27));var __importDefault=this&&this['__importDe'+'fault']||function(_0x40002b){return _0x40002b&&_0x40002b['__esModule']?_0x40002b:{'default':_0x40002b};};Object['defineProp'+'erty'](exports,'__esModule',{'value':!(-0x1*-0x215f+-0x2*0x1073+-0x79)}),exports['resolveLoc'+'alSdkConfi'+_0x4f04be(0xc0)]=exports['closeLocal'+'SdkIpcConn'+_0x4f04be(0xcb)]=exports['createIpcF'+_0x4f04be(0xa7)]=void(0x53*0xc+-0xae9*-0x3+-0x249f),exports[_0x4f04be(0xa4)+_0x4f04be(0x125)]=callLocalSdkIpc,exports[_0x4f04be(0xdc)+_0x4f04be(0xa5)]=createLocalClient;const crypto_1=__importDefault(require('crypto')),fs_1=__importDefault(require('fs')),net_1=__importDefault(require('net')),os_1=__importDefault(require('os')),path_1=__importDefault(require(_0x4f04be(0x12c))),child_process_1=require(_0x4f04be(0xe5)+'ess'),desktop_client_1=require('./desktop-'+_0x4f04be(0xe7)),DEFAULT_TIMEOUT_MS=-0x2*-0x1a4882fe+-0x977*0x143f01+0x10b0f4c7a,HANDSHAKE_TYPE=_0x4f04be(0x12a),resolveUserDataPath=()=>{const _0x45b769=_0x4f04be,_0x200ad2={'dpABX':'Library','ygSUS':_0x45b769(0x8d)+'n\x20Support','pwLyB':function(_0x85c13d,_0x1c16ac){return _0x85c13d===_0x1c16ac;}},_0x46e8ae=process[_0x45b769(0x10a)]['AGLIT_USER'+'_DATA_PATH'];if(_0x46e8ae)return _0x46e8ae['startsWith']('~/')?path_1[_0x45b769(0xfa)]['join'](os_1['default'][_0x45b769(0xbb)](),_0x46e8ae['slice'](-0x2041+-0xd86*-0x1+0x12bd)):_0x46e8ae['startsWith']('~')?path_1['default'][_0x45b769(0x9c)](os_1['default'][_0x45b769(0xbb)](),_0x46e8ae['slice'](-0xae7*-0x1+0x1d9*0x3+0x57b*-0x3)):_0x46e8ae;const _0x59ed5d='Aglit\x20AI';return process[_0x45b769(0x135)]===_0x45b769(0xac)?path_1['default']['join'](os_1['default']['homedir'](),_0x200ad2[_0x45b769(0x131)],_0x200ad2[_0x45b769(0xd7)],_0x59ed5d):_0x200ad2['pwLyB'](process[_0x45b769(0x135)],_0x45b769(0xcf))?path_1['default']['join'](process['env']['APPDATA']||path_1['default'][_0x45b769(0x9c)](os_1['default'][_0x45b769(0xbb)](),_0x45b769(0xbe),_0x45b769(0xc2)),_0x59ed5d):path_1['default']['join'](os_1['default'][_0x45b769(0xbb)](),_0x45b769(0xe9),_0x59ed5d);},resolveConfigPath=_0x43fdeb=>{const _0x2751aa=_0x4f04be,_0x3ff6a1={'VbBHn':function(_0x2c80d9){return _0x2c80d9();}};if(_0x43fdeb&&_0x43fdeb['trim']())return path_1[_0x2751aa(0xfa)][_0x2751aa(0xdf)](_0x43fdeb['trim']());const _0x4cd5f8=process[_0x2751aa(0x10a)]['AGLIT_SDK_'+_0x2751aa(0x11d)]?.['trim']()||path_1['default']['join'](_0x3ff6a1['VbBHn'](resolveUserDataPath),_0x2751aa(0xee));return path_1[_0x2751aa(0xfa)]['join'](_0x4cd5f8,'sdk-ipc.js'+'on');},loadConfig=_0x12df6d=>{const _0x3914c7=_0x4f04be,_0x9bc1c7=resolveConfigPath(_0x12df6d);if(!fs_1[_0x3914c7(0xfa)][_0x3914c7(0x128)](_0x9bc1c7))throw new Error('Local\x20SDK\x20'+'IPC\x20config'+'\x20not\x20found'+'\x20at\x20'+_0x9bc1c7+(_0x3914c7(0xaf)+'esktop\x20app'+'\x20running?'));const _0x1f0c25=fs_1['default'][_0x3914c7(0xec)+'nc'](_0x9bc1c7,'utf8'),_0x5b1956=JSON[_0x3914c7(0x10d)](_0x1f0c25);if(!(_0x5b1956?.['transport']===_0x3914c7(0xfc)||!!(_0x5b1956?.['xpcService'+'Name']||_0x5b1956?.['xpcEndpoin'+_0x3914c7(0xf3)]||_0x5b1956?.['helperPath']))&&(!_0x5b1956?.[_0x3914c7(0xae)]||!_0x5b1956?.['token']))throw new Error(_0x3914c7(0xe2)+_0x3914c7(0x143)+_0x3914c7(0xf1)+'g\x20endpoint'+_0x3914c7(0x136));return _0x5b1956;},buildResponse=(_0x2c83bd,_0x50c69f=0x515*-0x3+-0x73a*0x3+0x25b5)=>{const _0x1b828b=_0x4f04be,_0x40d75c=_0x2c83bd===void(-0x1194+-0x1fd3*-0x1+-0x7*0x209)?'':JSON['stringify'](_0x2c83bd);return new Response(_0x40d75c,{'status':_0x50c69f,'headers':{'content-type':'applicatio'+_0x1b828b(0xd9)}});},normalizeHeaders=_0x2be082=>{const _0x7560ac=_0x4f04be;if(!_0x2be082)return{};if(Array['isArray'](_0x2be082))return _0x2be082[_0x7560ac(0xf0)]((_0x220164,[_0x32ded5,_0xa53f87])=>(_0x220164[_0x32ded5[_0x7560ac(0xe4)+'e']()]=String(_0xa53f87),_0x220164),{});if(_0x2be082 instanceof Headers){const _0x20055f={};return _0x2be082[_0x7560ac(0xf4)]((_0x2efc3f,_0x17750a)=>{const _0x5b96fe=_0x7560ac;_0x20055f[_0x17750a[_0x5b96fe(0xe4)+'e']()]=_0x2efc3f;}),_0x20055f;}return Object['keys'](_0x2be082)[_0x7560ac(0xf0)]((_0x5aacb6,_0x3efdba)=>(_0x5aacb6[_0x3efdba[_0x7560ac(0xe4)+'e']()]=String(_0x2be082[_0x3efdba]),_0x5aacb6),{});},parseRequestBody=async(_0x757045,_0x2a0dee)=>{const _0x3ca1d6=_0x4f04be,_0x215357={'IzXGH':function(_0x354f74,_0xff30bb){return _0x354f74==_0xff30bb;},'jaOux':'string','yoMzf':_0x3ca1d6(0x13f)};if(_0x757045!=null)return _0x215357[_0x3ca1d6(0xa9)](typeof _0x757045,_0x215357[_0x3ca1d6(0x112)])?(_0x2a0dee['content-ty'+'pe']??'')['includes'](_0x3ca1d6(0xb2)+_0x3ca1d6(0xd9))?JSON['parse'](_0x757045):_0x757045:_0x757045 instanceof Uint8Array?Buffer[_0x3ca1d6(0x103)](_0x757045)[_0x3ca1d6(0x115)](_0x215357['yoMzf']):_0x757045;},isMacOs=process['platform']===_0x4f04be(0xac),shouldBypassHelper=()=>{const _0x50958c=_0x4f04be,_0x4409c3=(''+(process[_0x50958c(0x10a)][_0x50958c(0xfb)+_0x50958c(0xc9)]??''))[_0x50958c(0xcc)]()[_0x50958c(0xe4)+'e']();return _0x4409c3==='1'||_0x4409c3===_0x50958c(0xd1)||_0x4409c3===_0x50958c(0xe3);},resolveHelperPath=_0x2164fe=>{const _0xc54d35=_0x4f04be,_0x1fedc8=process[_0xc54d35(0x10a)]['AGLIT_SDK_'+'IPC_HELPER'+_0xc54d35(0x110)]?.[_0xc54d35(0xcc)]();return _0x1fedc8||(_0x2164fe['helperPath']&&_0x2164fe['helperPath'][_0xc54d35(0xcc)]()?_0x2164fe[_0xc54d35(0xab)]['trim']():null);},HELPER_RETRYABLE_PATTERNS=[/socket_connect_failed/i,/handshake_failed/i,/ipc_timeout/i,/xpc_timeout/i,/voice ws timed out/i,/connection closed/i],shouldRetryHelper=_0x1b9aa8=>HELPER_RETRYABLE_PATTERNS['some'](_0x2f72fa=>_0x2f72fa[_0x4f04be(0x122)](_0x1b9aa8)),HELPER_AUTH_FAILURE_PATTERNS=[/unauthorized/i,/invalid token/i,/handshake rejected/i],shouldRestartHelper=_0x47a1d8=>HELPER_AUTH_FAILURE_PATTERNS['some'](_0x1b0485=>_0x1b0485['test'](_0x47a1d8)),delay=_0x277722=>new Promise(_0x3407fe=>setTimeout(_0x3407fe,_0x277722));class PersistentHelper{constructor(_0x25d2a4,_0xd8b9b9){const _0x58e683=_0x4f04be;this[_0x58e683(0x92)]=null,this['pendingReq'+'uests']=new Map(),this['buffer']='',this[_0x58e683(0xd4)+'se']=null,this['maxStartAt'+'tempts']=-0x1582+-0x10a6+0x3*0xcb9,this['helperPath']=_0x25d2a4,this['configPath']=_0xd8b9b9;}[_0x4f04be(0x13d)+_0x4f04be(0x100)](){const _0x4efb05=_0x4f04be,_0x16e93e={'TcrJl':'pipe','ORiPT':_0x4efb05(0x141)};return this[_0x4efb05(0xd4)+'se']?this['readyPromi'+'se']:(this['readyPromi'+'se']=new Promise((_0x3477e7,_0x1a754d)=>{const _0xf54406=_0x4efb05;this[_0xf54406(0xb4)+'ve']=_0x3477e7,this['readyRejec'+'t']=_0x1a754d,this['child']=(0x1*-0xaba+0x8e5+0x1d5,child_process_1['spawn'])(this['helperPath'],[_0xf54406(0x120)+'nt'],{'stdio':[_0x16e93e['TcrJl'],_0x16e93e[_0xf54406(0xb9)],_0x16e93e[_0xf54406(0xb9)]]}),this['child']['stdout']?.[_0xf54406(0xc3)+'g'](_0x16e93e['ORiPT']),this[_0xf54406(0x92)]['stdout']?.['on'](_0xf54406(0x8c),_0x1de668=>this['handleData'](_0x1de668)),this[_0xf54406(0x92)]['stderr']?.['on'](_0xf54406(0x8c),()=>{}),this[_0xf54406(0x92)]['on']('error',_0x551555=>{this['handleErro'+'r'](_0x551555);}),this['child']['on']('close',_0x72c868=>{this['handleClos'+'e'](_0x72c868);});}),this[_0x4efb05(0xd4)+'se']);}['handleData'](_0x90aed8){const _0x557d8f=_0x4f04be,_0x405fcc={'bNWJF':function(_0x8bd74,_0xb41b37){return _0x8bd74(_0xb41b37);}};this[_0x557d8f(0x113)]+=_0x90aed8;const _0x1ff111=this['buffer']['split']('\x0a');this[_0x557d8f(0x113)]=_0x1ff111['pop']()??'';for(const _0x1e457f of _0x1ff111)if(_0x1e457f[_0x557d8f(0xcc)]())try{const _0x262883=JSON['parse'](_0x1e457f);if(_0x262883['ready']===!(-0x1*0x1487+0x9f*-0x3+0x1664)){this['readyResol'+'ve']?.();continue;}const _0x48d34d=_0x262883['id'];if(!_0x48d34d)continue;const _0x468d2a=this[_0x557d8f(0x139)+'uests'][_0x557d8f(0xa6)](_0x48d34d);if(!_0x468d2a)continue;_0x405fcc[_0x557d8f(0xc1)](clearTimeout,_0x468d2a['timer']),this[_0x557d8f(0x139)+_0x557d8f(0xe0)][_0x557d8f(0x10c)](_0x48d34d),_0x262883['ok']===!(-0xfd*-0x17+-0xd09+-0x1*0x9b1)?_0x468d2a['reject'](new Error(_0x262883['error']||_0x557d8f(0xf9)+_0x557d8f(0xda)+_0x557d8f(0xa2))):_0x468d2a['resolve'](_0x262883[_0x557d8f(0xb3)]);}catch{}}[_0x4f04be(0xf2)+'r'](_0x19fc32){this['cleanup'](_0x19fc32);}['handleClos'+'e'](_0x58c03a){const _0x133bdc=_0x4f04be;this['cleanup'](new Error(_0x133bdc(0xf9)+_0x133bdc(0x116)+_0x133bdc(0xdd)+_0x133bdc(0x96)+_0x58c03a));}['cleanup'](_0x361bcc){const _0x247eb8=_0x4f04be;this[_0x247eb8(0xba)+'t']?.(_0x361bcc),this[_0x247eb8(0xd4)+'se']=null,this[_0x247eb8(0xb4)+'ve']=void(0x1*0x2173+0xbe4+-0x2d57),this['readyRejec'+'t']=void(-0x1*-0x47+-0x1297*-0x1+-0x12de);for(const _0x49daed of this[_0x247eb8(0x139)+'uests']['values']())clearTimeout(_0x49daed[_0x247eb8(0xf8)]),_0x49daed[_0x247eb8(0x107)](_0x361bcc);this['pendingReq'+'uests']['clear'](),this['child']&&(this['child']['kill'](),this[_0x247eb8(0x92)]=null);}async['send'](_0x17d7ee,_0x1832f3){const _0x3d067f=_0x4f04be,_0x164fde={'dCtGr':function(_0x30e726,_0x385e6){return _0x30e726<_0x385e6;},'ISkva':function(_0x46be60,_0x4d610c){return _0x46be60-_0x4d610c;},'btxqz':'Persistent'+_0x3d067f(0x9f)+_0x3d067f(0x95)+'e'};for(let _0x56fd22=0xb0*-0x30+-0x2*-0x145+0x1e76;_0x164fde['dCtGr'](_0x56fd22,this['maxStartAt'+_0x3d067f(0xa1)]);_0x56fd22++)try{await this[_0x3d067f(0x13d)+_0x3d067f(0x100)]();break;}catch(_0x5ccf91){if(_0x56fd22===_0x164fde['ISkva'](this[_0x3d067f(0x138)+_0x3d067f(0xa1)],-0x1f93+-0x2*-0x135a+-0x720))throw _0x5ccf91;await delay((0x1a99+0x78+-0x1aad)*(_0x56fd22+(-0x1911+-0x1*0x238a+-0x1434*-0x3)));}if(!this['child']?.['stdin'])throw new Error(_0x164fde[_0x3d067f(0xa3)]);const _0x4974d3=crypto_1[_0x3d067f(0xfa)]['randomUUID']();return new Promise((_0x2f3060,_0x1322ce)=>{const _0x5a2571=_0x3d067f,_0x3f664d=setTimeout(()=>{const _0x2c8682=_0x5cb8;this['pendingReq'+_0x2c8682(0xe0)]['delete'](_0x4974d3),_0x1322ce(new Error('Persistent'+'\x20helper\x20ti'+'meout\x20afte'+'r\x20'+_0x1832f3+'ms'));},_0x1832f3);this['pendingReq'+'uests'][_0x5a2571(0xe6)](_0x4974d3,{'resolve':_0x2f3060,'reject':_0x1322ce,'timer':_0x3f664d});const _0x12c1c3=JSON[_0x5a2571(0x13e)]({'id':_0x4974d3,'configPath':this[_0x5a2571(0xc4)],'timeoutMs':_0x1832f3,'request':_0x17d7ee});this['child']['stdin'][_0x5a2571(0x118)](_0x12c1c3+'\x0a');});}['destroy'](){const _0x34d1b2=_0x4f04be;this[_0x34d1b2(0x11f)](new Error('Helper\x20des'+'troyed'));}}const persistentHelpers=new Map(),getPersistentHelper=(_0x3378c0,_0x383405)=>{const _0x116dfd=_0x4f04be,_0x5ed5f5=_0x3378c0+':'+_0x383405;return persistentHelpers['has'](_0x5ed5f5)||persistentHelpers[_0x116dfd(0xe6)](_0x5ed5f5,new PersistentHelper(_0x3378c0,_0x383405)),persistentHelpers[_0x116dfd(0xa6)](_0x5ed5f5);},resetPersistentHelper=(_0x387f48,_0x26d2fb)=>{const _0x18c9d1=_0x4f04be,_0x66b2d2=_0x387f48+':'+_0x26d2fb,_0x333691=persistentHelpers[_0x18c9d1(0xa6)](_0x66b2d2);_0x333691&&(_0x333691['destroy'](),persistentHelpers[_0x18c9d1(0x10c)](_0x66b2d2));},runHelperOnce=async(_0x2a09ed,_0xc52bd5,_0x285cd6)=>new Promise((_0x478941,_0xa87614)=>{const _0xd3cad1=_0x4f04be,_0x43d1ac={'HpeOq':function(_0x1bf03e,_0x459bfb){return _0x1bf03e(_0x459bfb);},'kzlVf':'utf8','gvJlz':function(_0x28e47d,_0x5183ff){return _0x28e47d===_0x5183ff;},'HtOvy':_0xd3cad1(0xe2)+'IPC\x20helper'+_0xd3cad1(0xce),'XpDHy':_0xd3cad1(0x108),'fAdsl':function(_0x333769,_0x35264c,_0xce1083){return _0x333769(_0x35264c,_0xce1083);}},_0x2008e4=(-0xb7*0x2c+-0x5c*-0xd+0x1ac8,child_process_1['spawn'])(_0x2a09ed,[],{'stdio':[_0x43d1ac[_0xd3cad1(0xbd)],'pipe',_0x43d1ac['XpDHy']]}),_0x42f1be=[],_0x542052=[];let _0x30db7a=!(0xa79+-0x2183*0x1+0x170b);const _0x5dbaa9=_0x50c573=>{const _0x1935bd=_0xd3cad1;_0x30db7a||(_0x30db7a=!(0x1*-0x1732+-0x12df+0x1*0x2a11),_0x43d1ac[_0x1935bd(0xef)](_0x478941,_0x50c573));},_0x3fa2ed=_0x43d1ac['fAdsl'](setTimeout,()=>{const _0x9edbc5=_0xd3cad1;_0x2008e4[_0x9edbc5(0xc6)]('SIGKILL'),_0x5dbaa9({'ok':!(0x507+0x1*0x25c9+-0x2acf),'error':_0x9edbc5(0xe2)+_0x9edbc5(0x94)+'\x20timeout\x20a'+'fter\x20'+_0x285cd6+'ms','retryable':!(-0x4*0x6cf+0x270b+-0xbcf)});},_0x285cd6);_0x2008e4['stdout']['on'](_0xd3cad1(0x8c),_0xcd26c=>{const _0x1b10e3=_0xd3cad1;_0x42f1be[_0x1b10e3(0x93)](Buffer[_0x1b10e3(0x103)](_0xcd26c));}),_0x2008e4['stderr']['on'](_0xd3cad1(0x8c),_0x37e8c4=>{const _0x1e4f3c=_0xd3cad1;_0x542052[_0x1e4f3c(0x93)](Buffer[_0x1e4f3c(0x103)](_0x37e8c4));}),_0x2008e4['on'](_0xd3cad1(0x90),_0x27fc5e=>{clearTimeout(_0x3fa2ed),_0xa87614(_0x27fc5e);}),_0x2008e4['on'](_0xd3cad1(0x13b),_0x496f08=>{const _0x4dc0fc=_0xd3cad1;clearTimeout(_0x3fa2ed);const _0x185bb8=Buffer[_0x4dc0fc(0x10e)](_0x42f1be)[_0x4dc0fc(0x115)]('utf8')[_0x4dc0fc(0xcc)](),_0x2511cc=Buffer['concat'](_0x542052)[_0x4dc0fc(0x115)](_0x43d1ac[_0x4dc0fc(0x104)])['trim']();if(!_0x185bb8){const _0x4ac16a=_0x2511cc?':\x20'+_0x2511cc:'';_0x5dbaa9({'ok':_0x43d1ac['gvJlz'](_0x496f08,-0x19a7+0x2*-0x233+0x1e0d),'exitCode':_0x496f08,'error':_0x496f08===-0xfd1+-0x9f4+0x19c5?void(0x639+0x1*0x1569+-0x1ba2):'Local\x20SDK\x20'+'IPC\x20helper'+'\x20exited\x20wi'+'th\x20'+_0x496f08+_0x4ac16a,'stderr':_0x2511cc});return;}try{const _0x4995f4=JSON[_0x4dc0fc(0x10d)](_0x185bb8);if(_0x4995f4?.['ok']===!(-0xd*-0x31+-0x2*-0x5b+-0x332)){_0x5dbaa9({'ok':!(-0x1*-0x1675+-0x1a6*-0x8+-0x23a4),'error':_0x4995f4?.[_0x4dc0fc(0x90)]||_0x43d1ac['HtOvy'],'retryable':!!_0x4995f4?.['retryable'],'stdout':_0x185bb8,'stderr':_0x2511cc,'exitCode':_0x496f08});return;}_0x5dbaa9({'ok':!(0x72c+-0x276+0x1*-0x4b6),'result':_0x4995f4?.['result'],'stdout':_0x185bb8,'stderr':_0x2511cc,'exitCode':_0x496f08});}catch{_0x5dbaa9({'ok':!(0x8e7*0x3+-0x2035+-0x581*-0x1),'error':'Local\x20SDK\x20'+'IPC\x20helper'+_0x4dc0fc(0x10f)+'invalid\x20re'+_0x4dc0fc(0xfe),'stdout':_0x185bb8,'stderr':_0x2511cc,'exitCode':_0x496f08});}}),_0x2008e4['stdin'][_0xd3cad1(0x118)](_0xc52bd5),_0x2008e4['stdin']['end']();}),usePersistentHelper=()=>{const _0x23af9c=_0x4f04be,_0x54762a={'cPFsH':'yes'},_0x209677=(''+(process['env'][_0x23af9c(0xfb)+'PERSISTENT'+'_HELPER']??'1'))[_0x23af9c(0xcc)]()[_0x23af9c(0xe4)+'e']();return _0x209677==='1'||_0x209677==='true'||_0x209677===_0x54762a['cPFsH'];},callViaHelper=async(_0x5eaf15,_0x210ddb,_0x13f44a)=>{const _0x1e1175=_0x4f04be,_0x939e38={'otPXJ':function(_0x255f18,_0x235caf){return _0x255f18(_0x235caf);},'Cdroc':function(_0x38b090,_0x263b4e){return _0x38b090(_0x263b4e);},'qGqfc':function(_0x1f61ae,_0x526e82){return _0x1f61ae<=_0x526e82;},'MUBFj':function(_0x4f3aa6,_0x476e23){return _0x4f3aa6*_0x476e23;}},_0x35a280=_0x939e38['otPXJ'](loadConfig,_0x210ddb),_0x5741c0=_0x939e38[_0x1e1175(0xf5)](resolveHelperPath,_0x35a280);if(!_0x5741c0||!fs_1[_0x1e1175(0xfa)]['existsSync'](_0x5741c0))throw new Error(_0x1e1175(0xe2)+'IPC\x20helper'+_0x1e1175(0x11c)+'able');if(usePersistentHelper()){const _0x28609f=getPersistentHelper(_0x5741c0,_0x210ddb);try{return await _0x28609f[_0x1e1175(0x8e)](_0x5eaf15,_0x13f44a);}catch(_0x492a04){const _0x2b3a66=_0x492a04 instanceof Error?_0x492a04['message']:String(_0x492a04);if(shouldRestartHelper(_0x2b3a66))return resetPersistentHelper(_0x5741c0,_0x210ddb),await getPersistentHelper(_0x5741c0,_0x210ddb)['send'](_0x5eaf15,_0x13f44a);throw _0x492a04;}}const _0x36ad98=0x2cb+0x598*0x4+-0x1926,_0x56b0c1=JSON['stringify']({'configPath':_0x210ddb,'timeoutMs':_0x13f44a,'request':_0x5eaf15});for(let _0x4db800=-0x2*-0xca5+-0x22d3+-0x6f*-0x16;_0x939e38['qGqfc'](_0x4db800,_0x36ad98);_0x4db800+=-0x1269*0x1+-0x378+0x15e2){const _0x32737b=await runHelperOnce(_0x5741c0,_0x56b0c1,_0x13f44a);if(_0x32737b['ok'])return _0x32737b['result'];const _0x69fda5=[_0x32737b['error']||_0x1e1175(0xe2)+'IPC\x20helper'+_0x1e1175(0xce),_0x32737b[_0x1e1175(0x91)]?'stderr:\x20'+_0x32737b['stderr']:'',_0x32737b['stdout']?_0x1e1175(0x133)+_0x32737b[_0x1e1175(0x101)]:'']['filter'](Boolean)['join']('\x20|\x20');if((_0x32737b['retryable']||_0x939e38['otPXJ'](shouldRetryHelper,_0x69fda5))&&_0x4db800<_0x36ad98){await delay(_0x939e38[_0x1e1175(0xd6)](0x6bc*-0x2+0x1000+0x4a*-0x2,_0x4db800));continue;}throw new Error(_0x69fda5);}throw new Error('Local\x20SDK\x20'+'IPC\x20helper'+_0x1e1175(0x12b)+_0x1e1175(0xeb)+_0x1e1175(0xa0));},allowSocketFallback=()=>{const _0x43a78a=_0x4f04be,_0x581eb8={'GgKOR':function(_0x49a0b7,_0x3e552a){return _0x49a0b7===_0x3e552a;},'zNQiJ':'yes'},_0x26d923=(''+(process[_0x43a78a(0x10a)][_0x43a78a(0xfb)+'ALLOW_SOCK'+_0x43a78a(0xd2)+'K']??''))[_0x43a78a(0xcc)]()['toLowerCas'+'e']();return _0x581eb8['GgKOR'](_0x26d923,'1')||_0x26d923===_0x43a78a(0xd1)||_0x26d923===_0x581eb8[_0x43a78a(0x117)];},SOCKET_RETRYABLE_PATTERNS=[/Local SDK IPC connection closed/i,/Local SDK IPC timeout/i],shouldRetrySocket=_0x4b9e42=>SOCKET_RETRYABLE_PATTERNS[_0x4f04be(0x126)](_0x2fe76e=>_0x2fe76e['test'](_0x4b9e42)),isHelperMissingError=_0x578eaa=>{const _0x5ad7b5=_0x4f04be,_0xf16f10={'MKKgd':function(_0x4d5e4b,_0xc52b2e){return _0x4d5e4b===_0xc52b2e;}};if(!_0x578eaa||typeof _0x578eaa!=_0x5ad7b5(0xb5))return!(-0x2*-0xf2c+-0x4*0x1d8+-0x16f7);const _0xb9267=_0x578eaa['message']||'',_0x24565b=_0x578eaa[_0x5ad7b5(0xca)]||'';return _0xb9267[_0x5ad7b5(0xea)](_0x5ad7b5(0xf7)+'\x20available')||_0xb9267['includes'](_0x5ad7b5(0x142))||_0xf16f10[_0x5ad7b5(0xcd)](_0x24565b,_0x5ad7b5(0x142));},createIpcFetch=_0x3808fe=>async(_0x47dcdb,_0x1625f8)=>{const _0x23d880=_0x4f04be,_0x437e4a={'kmgzY':_0x23d880(0x114),'najXQ':function(_0x5a77da,_0x5df824,_0x3817d6){return _0x5a77da(_0x5df824,_0x3817d6);},'TeFHD':function(_0x2e9401,_0x920048,_0x2a74d2){return _0x2e9401(_0x920048,_0x2a74d2);}},_0x362d50=typeof _0x47dcdb=='string'?new URL(_0x47dcdb):new URL(_0x47dcdb[_0x23d880(0x115)]()),_0xa34b3b=(_0x1625f8?.['method']??_0x437e4a['kmgzY'])[_0x23d880(0x9b)+'e'](),_0x1d04a9=normalizeHeaders(_0x1625f8?.['headers']),_0x5c648=await _0x437e4a[_0x23d880(0xb8)](parseRequestBody,_0x1625f8?.[_0x23d880(0x9a)]??void(0x8b5*-0x1+0x259a*0x1+0x1ce5*-0x1),_0x1d04a9),_0x57f2ad=await _0x437e4a[_0x23d880(0x13a)](callLocalSdkIpc,{'method':_0xa34b3b,'path':''+_0x362d50['pathname']+_0x362d50[_0x23d880(0xc5)],'body':_0x5c648,'headers':_0x1d04a9},_0x3808fe);return buildResponse(_0x57f2ad,0x1a73+0xab4*0x2+-0x2f13);};exports[_0x4f04be(0xde)+'etch']=createIpcFetch;class PersistentIpcConnection{constructor(_0x19a72e){const _0x1ecce7=_0x4f04be;this['configPath']=_0x19a72e,this['socket']=null,this[_0x1ecce7(0xb7)+_0x1ecce7(0x119)]=new Map(),this[_0x1ecce7(0x113)]='',this[_0x1ecce7(0xd4)+'se']=null,this[_0x1ecce7(0x106)]=loadConfig(_0x19a72e);}['ensureConf'+'ig'](){const _0x209bd6=_0x4f04be,_0x5a29a7={'WMkMw':function(_0x34ac46,_0x642445){return _0x34ac46!==_0x642445;}},_0x2c47f1=loadConfig(this[_0x209bd6(0xc4)]);(!this['config']||_0x5a29a7['WMkMw'](_0x2c47f1[_0x209bd6(0xae)],this[_0x209bd6(0x106)]['endpoint'])||_0x2c47f1['token']!==this['config'][_0x209bd6(0xfd)])&&(this['config']=_0x2c47f1,this['restart']());}[_0x4f04be(0xe8)](){const _0x1cf911=_0x4f04be;this['socket']&&(this['socket'][_0x1cf911(0x99)](),this['socket']=null),this['readyRejec'+'t']&&this[_0x1cf911(0xba)+'t'](new Error(_0x1cf911(0xe2)+'IPC\x20connec'+_0x1cf911(0x11e))),this['readyPromi'+'se']=null,this['readyResol'+'ve']=void(0x88f+-0x1ee1*0x1+-0xb29*-0x2),this['readyRejec'+'t']=void(0x7*0x337+-0x1be1*0x1+0x560);}[_0x4f04be(0x8f)+'ected'](){const _0x4fd355=_0x4f04be,_0x33493a={'PEIgd':'error'};if(this['readyPromi'+'se'])return this['readyPromi'+'se'];if(this[_0x4fd355(0xd8)+'ig'](),!this['socket']){if(!this['config'][_0x4fd355(0xae)])throw new Error(_0x4fd355(0xe2)+'IPC\x20endpoi'+_0x4fd355(0x111)+'.');this[_0x4fd355(0xaa)]=net_1['default'][_0x4fd355(0xd3)+'ection'](this[_0x4fd355(0x106)][_0x4fd355(0xae)]),this[_0x4fd355(0xaa)]['setEncodin'+'g']('utf8'),this[_0x4fd355(0xaa)]['on']('connect',()=>this['sendHandsh'+'ake']()),this[_0x4fd355(0xaa)]['on']('data',_0x551db4=>this[_0x4fd355(0xd0)](_0x551db4)),this['socket']['on'](_0x33493a['PEIgd'],_0xef8ead=>this['handleErro'+'r'](_0xef8ead)),this['socket']['on']('close',()=>this['handleClos'+'e']());}return this['readyPromi'+'se']=new Promise((_0x12563b,_0x2b808d)=>{const _0x3c3f53=_0x4fd355;this['readyResol'+'ve']=_0x12563b,this[_0x3c3f53(0xba)+'t']=_0x2b808d;}),this[_0x4fd355(0xd4)+'se'];}[_0x4f04be(0x132)+'ake'](){const _0x579990=_0x4f04be;if(this['socket']){if(!this['config'][_0x579990(0xfd)]){this['handleErro'+'r'](new Error(_0x579990(0xe2)+_0x579990(0xd5)+'missing.'));return;}this[_0x579990(0xaa)][_0x579990(0x118)](JSON['stringify']({'type':HANDSHAKE_TYPE,'token':this[_0x579990(0x106)][_0x579990(0xfd)]})+'\x0a');}}[_0x4f04be(0xd0)](_0x31e503){const _0x3bc156=_0x4f04be,_0x45d68f={'oIOjq':function(_0x395abe,_0x118cbb){return _0x395abe==_0x118cbb;},'ZUwXa':_0x3bc156(0xe2)+'IPC\x20error'},_0x5586ff=_0x45d68f[_0x3bc156(0x129)](typeof _0x31e503,'string')?_0x31e503:_0x31e503['toString']('utf8');this['buffer']+=_0x5586ff;const _0x328f07=this[_0x3bc156(0x113)]['split']('\x0a');this[_0x3bc156(0x113)]=_0x328f07[_0x3bc156(0x121)]()??'';for(const _0x3715a2 of _0x328f07){if(!_0x3715a2[_0x3bc156(0xcc)]())continue;let _0x5d781d;try{_0x5d781d=JSON['parse'](_0x3715a2);}catch(_0x3013cf){this['handleErro'+'r'](_0x3013cf);continue;}if(_0x5d781d[_0x3bc156(0x137)]===HANDSHAKE_TYPE){_0x5d781d['ok']===!(0x247a+0x11b0+-0x362a)?this[_0x3bc156(0xb4)+'ve']?.():(this['readyRejec'+'t']?.(new Error(_0x5d781d['error']||_0x3bc156(0xe2)+'IPC\x20handsh'+'ake\x20reject'+'ed')),this['restart']());continue;}const _0x2b2780=typeof _0x5d781d['id']==_0x3bc156(0xf6)?_0x5d781d['id']:String(_0x5d781d['id']??'');if(!_0x2b2780)continue;const _0x5218f0=this[_0x3bc156(0xb7)+'ponses']['get'](_0x2b2780);if(_0x5218f0){if(clearTimeout(_0x5218f0['timer']),this[_0x3bc156(0xb7)+_0x3bc156(0x119)]['delete'](_0x2b2780),_0x5d781d['ok']===!(-0x1d6f+-0x2*0xbe8+0x11c*0x30)){_0x5218f0[_0x3bc156(0x107)](new Error(_0x5d781d[_0x3bc156(0x90)]||_0x45d68f['ZUwXa']));continue;}_0x5218f0['resolve'](_0x5d781d['result']);}}}['handleErro'+'r'](_0xee18c4){const _0x533183=_0x4f04be;this[_0x533183(0x11f)](_0xee18c4);}['handleClos'+'e'](){const _0x115ef9=_0x4f04be,_0x52012f={'FjPio':_0x115ef9(0xe2)+'IPC\x20connec'+_0x115ef9(0xbc)+'d'};this[_0x115ef9(0x11f)](new Error(_0x52012f['FjPio']));}['cleanup'](_0x977927){const _0x59f481=_0x4f04be,_0x1aa142={'VkmhE':function(_0x5a9f0d,_0x3d3e05){return _0x5a9f0d(_0x3d3e05);}};this[_0x59f481(0xaa)]&&(this['socket'][_0x59f481(0x99)](),this['socket']=null),this[_0x59f481(0xd4)+'se']=null,this[_0x59f481(0xb4)+'ve']=void(0x14bf+0x207*-0x2+0x10b1*-0x1),this['readyRejec'+'t']=void(-0x1a5a+0x651+0x1409*0x1);for(const _0x35f56a of this['pendingRes'+'ponses']['values']())_0x1aa142[_0x59f481(0xed)](clearTimeout,_0x35f56a[_0x59f481(0xf8)]),_0x35f56a['reject'](_0x977927);this['pendingRes'+'ponses']['clear']();}[_0x4f04be(0x13b)](){const _0x5c9e4b=_0x4f04be;this['cleanup'](new Error(_0x5c9e4b(0xe2)+_0x5c9e4b(0x11a)+_0x5c9e4b(0xbc)+_0x5c9e4b(0xb1)+'t'));}async[_0x4f04be(0x8e)](_0x75a820,_0x4b4f28){const _0x2b7b31=_0x4f04be,_0x6e670e={'uwiTP':function(_0x3cf37a,_0x3459f9,_0x17a07e){return _0x3cf37a(_0x3459f9,_0x17a07e);},'UUXnd':_0x2b7b31(0xe2)+_0x2b7b31(0x11a)+_0x2b7b31(0xad)+_0x2b7b31(0x95)+'e'};if(await this[_0x2b7b31(0x8f)+_0x2b7b31(0xe1)](),!this[_0x2b7b31(0xaa)])throw new Error(_0x6e670e[_0x2b7b31(0xff)]);return new Promise((_0x4c958b,_0xbbb949)=>{const _0x37c3de=_0x2b7b31,_0x354aec=_0x75a820['id'],_0x536501=_0x6e670e['uwiTP'](setTimeout,()=>{const _0x2e8b2a=_0x5cb8;this['pendingRes'+'ponses'][_0x2e8b2a(0x10c)](_0x354aec),_0xbbb949(new Error('Local\x20SDK\x20'+'IPC\x20timeou'+'t\x20after\x20'+_0x4b4f28+'ms'));},_0x4b4f28);this['pendingRes'+'ponses']['set'](_0x354aec,{'resolve':_0x4c958b,'reject':_0xbbb949,'timer':_0x536501}),this['socket'][_0x37c3de(0x118)](JSON[_0x37c3de(0x13e)](_0x75a820)+'\x0a');});}}const connectionPool=new Map(),closeLocalSdkIpcConnections=()=>{const _0x31f1cb=_0x4f04be;for(const _0x3537f6 of connectionPool['values']())_0x3537f6[_0x31f1cb(0x13b)]();connectionPool[_0x31f1cb(0xdb)]();for(const _0x260881 of persistentHelpers[_0x31f1cb(0x123)]())_0x260881['destroy']();persistentHelpers[_0x31f1cb(0xdb)]();};exports['closeLocal'+'SdkIpcConn'+'ections']=closeLocalSdkIpcConnections;const getConnection=_0x4e27e5=>(connectionPool['has'](_0x4e27e5)||connectionPool[_0x4f04be(0xe6)](_0x4e27e5,new PersistentIpcConnection(_0x4e27e5)),connectionPool[_0x4f04be(0xa6)](_0x4e27e5));async function callLocalSdkIpc(_0x458a56,_0x5120df){const _0x339dd5=_0x4f04be,_0xaa6310={'zWdgj':function(_0x3866b5,_0x43ef31){return _0x3866b5(_0x43ef31);},'SbcAu':_0x339dd5(0xfc)},_0x413996=resolveConfigPath(_0x5120df?.['configPath']),_0x1dbb08=_0x5120df?.[_0x339dd5(0xc8)]??DEFAULT_TIMEOUT_MS,_0x41ae59=_0xaa6310['zWdgj'](loadConfig,_0x413996);if(isMacOs&&_0x41ae59[_0x339dd5(0xbf)]===_0xaa6310['SbcAu']&&!shouldBypassHelper())try{return await callViaHelper(_0x458a56,_0x413996,_0x1dbb08);}catch(_0x176593){if(!allowSocketFallback()||!isHelperMissingError(_0x176593))throw _0x176593;}const _0x1d38d2=getConnection(_0x413996),_0x322f4a={'id':typeof crypto_1[_0x339dd5(0xfa)]['randomUUID']==_0x339dd5(0x12d)?crypto_1[_0x339dd5(0xfa)]['randomUUID']():crypto_1[_0x339dd5(0xfa)]['randomByte'+'s'](0x70+-0x49*0x32+0x1*0xde2)[_0x339dd5(0x115)](_0x339dd5(0x12e)),'request':_0x458a56};try{return await _0x1d38d2['send'](_0x322f4a,_0x1dbb08);}catch(_0x3ff549){const _0x33e475=_0x3ff549 instanceof Error?_0x3ff549[_0x339dd5(0x8b)]:String(_0x3ff549);if(shouldRetrySocket(_0x33e475))return await delay(0x1d*0x11c+-0x3c8+-0x1b38),await _0x1d38d2[_0x339dd5(0x8e)](_0x322f4a,_0x1dbb08);throw _0x3ff549;}}function createLocalClient(_0xfbf7ce){const _0x53bf2b=_0x4f04be,_0x1952c3={'wCHFQ':_0x53bf2b(0x98)+'alhost'},_0x2902b1=(0x1849+-0x1a*0x32+0x21*-0x95,exports[_0x53bf2b(0xde)+'etch'])(_0xfbf7ce),_0x585068=(-0x1a20+0x4ed*0x1+0x43*0x51,desktop_client_1[_0x53bf2b(0x105)+_0x53bf2b(0x124)])({'baseUrl':_0x1952c3['wCHFQ'],'fetch':_0x2902b1});return{'GET':(_0x513dbe,_0x2ea2d6)=>_0x585068[_0x53bf2b(0x114)](_0x513dbe,_0x2ea2d6),'POST':(_0x3d26c2,_0x17cb22)=>_0x585068[_0x53bf2b(0xa8)](_0x3d26c2,_0x17cb22),'PUT':(_0x59e24c,_0x4523e1)=>_0x585068[_0x53bf2b(0xc7)](_0x59e24c,_0x4523e1),'PATCH':(_0x2f750b,_0x39bf05)=>_0x585068[_0x53bf2b(0x140)](_0x2f750b,_0x39bf05),'DELETE':(_0x4a42be,_0x16452c)=>_0x585068[_0x53bf2b(0x134)](_0x4a42be,_0x16452c)};}exports[_0x4f04be(0xb6)+'alSdkConfi'+_0x4f04be(0xc0)]=resolveConfigPath;
@@ -0,0 +1,2 @@
1
+ export declare const DESKTOP_API_OPENAPI_PATH: string;
2
+ export declare const TOOLS_API_OPENAPI_PATH: string;
@@ -0,0 +1 @@
1
+ 'use strict';function _0x3542(_0x2fce56,_0x52359e){_0x2fce56=_0x2fce56-(0x24b0+0xba1*-0x2+-0xc25);const _0x535587=_0xa1c5();let _0x278725=_0x535587[_0x2fce56];if(_0x3542['nnWIfh']===undefined){var _0x58be37=function(_0x2df8e6){const _0x4d7d3b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5f0316='',_0x4e499b='';for(let _0x28bc90=-0x24fb+-0x24*-0xb5+0xb87,_0xe0c973,_0x208320,_0x5b7252=0x2*-0xe73+-0x1*0x3e+-0x5*-0x5d4;_0x208320=_0x2df8e6['charAt'](_0x5b7252++);~_0x208320&&(_0xe0c973=_0x28bc90%(0x176a*-0x1+0xab*0x1d+-0x40f*-0x1)?_0xe0c973*(-0x91f*0x2+0xd13*0x1+-0x13*-0x49)+_0x208320:_0x208320,_0x28bc90++%(-0x101*0x3+-0xec8+0x11cf))?_0x5f0316+=String['fromCharCode'](-0x187d+-0x32*0x72+0x2fc0&_0xe0c973>>(-(0xaf6+0x2*0x9be+0x79c*-0x4)*_0x28bc90&0x114d+0x20*0x3f+-0x1927)):-0xb74+-0x1d29+0x289d){_0x208320=_0x4d7d3b['indexOf'](_0x208320);}for(let _0x1304d7=-0x24ec+0xf77*-0x1+0x3463,_0x30349a=_0x5f0316['length'];_0x1304d7<_0x30349a;_0x1304d7++){_0x4e499b+='%'+('00'+_0x5f0316['charCodeAt'](_0x1304d7)['toString'](-0x2681+-0xf75*-0x2+0x28d*0x3))['slice'](-(-0x2*0x1ed+-0x11da+-0xe*-0x18d));}return decodeURIComponent(_0x4e499b);};_0x3542['rSxJFx']=_0x58be37,_0x3542['aEOQxq']={},_0x3542['nnWIfh']=!![];}const _0x105d7a=_0x535587[0x9a+-0xca*-0x27+-0x1f6*0x10],_0x5b6cab=_0x2fce56+_0x105d7a,_0x315d25=_0x3542['aEOQxq'][_0x5b6cab];return!_0x315d25?(_0x278725=_0x3542['rSxJFx'](_0x278725),_0x3542['aEOQxq'][_0x5b6cab]=_0x278725):_0x278725=_0x315d25,_0x278725;}const _0xf93327=_0x3542;function _0xa1c5(){const _0x2bf011=['mJrqDfHIywG','mtyWnJC2ngHiB0fvBq','mJeZmte1meroEg9wDq','CMvZB2X2zq','yxbPlM9Wzw5HCa','zgvMyxvSDa','ota5mtu0CwfvEuXM','y2SG','zMf1Bhq','mtG3odCXmfr2v2Lyqq','x19PBxbVCNrezq','Cgf0Aa','mZi3oduYn3jyA0fzBG','DhLWzxmVC2nOzq','t1bftKfqsv9qqq','Dg9VBhmTyxbPlG','B3bLBMfWAs55yq','ig9YigzHBgXIyq','ntCZotaWnNPrwLf3Aa','ndK2ntmYvMTqAKft','qgfNBgL0lwfPlW','revts1rpuf9bua','ve9ptfnFqvbjxW'];_0xa1c5=function(){return _0x2bf011;};return _0xa1c5();}(function(_0x18766e,_0x7a8567){const _0x87847e=_0x3542,_0x62842e=_0x18766e();while(!![]){try{const _0x4c9681=-parseInt(_0x87847e(0x156))/(-0x23d1+-0x24b3+0xeb*0x4f)+parseInt(_0x87847e(0x152))/(-0x233b+-0x106c+0x5*0xa55)+parseInt(_0x87847e(0x151))/(0x1bc4+0x189f+0x1*-0x3460)+-parseInt(_0x87847e(0x14c))/(0x2359+-0x536+-0xb*0x2bd)+-parseInt(_0x87847e(0x159))/(0x1896+0x3b8+-0x1c49)+-parseInt(_0x87847e(0x14b))/(-0xd3a+-0xbec+0xb3*0x24)+parseInt(_0x87847e(0x15c))/(0x209d+0x2*-0x950+-0xdf6)*(parseInt(_0x87847e(0x150))/(-0x7*0x15+0x1ac*-0x2+0x3f3));if(_0x4c9681===_0x7a8567)break;else _0x62842e['push'](_0x62842e['shift']());}catch(_0x25da2f){_0x62842e['push'](_0x62842e['shift']());}}}(_0xa1c5,0x70bed+0x2d80c*-0x3+0xb4303));var __importDefault=this&&this[_0xf93327(0x15a)+_0xf93327(0x158)]||function(_0x40c613){return _0x40c613&&_0x40c613['__esModule']?_0x40c613:{'default':_0x40c613};};Object['defineProp'+'erty'](exports,'__esModule',{'value':!(-0x1f4d+-0xb2f+0x2a7c)}),exports[_0xf93327(0x14f)+'OPENAPI_PA'+'TH']=exports[_0xf93327(0x14e)+'I_OPENAPI_'+'PATH']=void(0x190d+0x3*-0x557+-0x908);const fs_1=__importDefault(require('fs')),path_1=__importDefault(require(_0xf93327(0x15b)));function resolveSchema(_0x363770){const _0x312bb4=_0xf93327,_0x4f5095={'VHrxq':'types'},_0x5499ac=_0x312bb4(0x14d)+_0x312bb4(0x15d)+'ma/'+_0x363770;try{return require[_0x312bb4(0x153)](_0x5499ac);}catch{const _0x44cd6c=path_1['default'][_0x312bb4(0x153)](__dirname,'..','..',_0x4f5095['VHrxq'],'schema',_0x363770);if(fs_1[_0x312bb4(0x155)]['existsSync'](_0x44cd6c))return _0x44cd6c;throw new Error('Cannot\x20res'+'olve\x20'+_0x5499ac+(_0x312bb4(0x14a)+_0x312bb4(0x157))+_0x44cd6c);}}exports['DESKTOP_AP'+'I_OPENAPI_'+'PATH']=resolveSchema(_0xf93327(0x154)+'i.yaml'),exports['TOOLS_API_'+_0xf93327(0x15e)+'TH']=resolveSchema(_0xf93327(0x15f)+_0xf93327(0x149)+'ml');
@@ -0,0 +1,66 @@
1
+ import type { ToolExecutionRequest, ToolExecutionResponse } from '@aglit-ai/types/generated/tool-builder-input';
2
+ import type { FetchLike } from './http';
3
+ /**
4
+ * Tool execution request input - jsonrpc and id are optional (auto-generated if not provided)
5
+ */
6
+ export type ToolExecutionRequestInput = Partial<Pick<ToolExecutionRequest, 'jsonrpc' | 'id'>> & Omit<ToolExecutionRequest, 'params' | 'jsonrpc' | 'id' | '_meta'> & {
7
+ params: {
8
+ name: string;
9
+ arguments: {
10
+ x_aglit_ai_tool_reason: string;
11
+ } & Record<string, unknown>;
12
+ };
13
+ /** Internal metadata - allows additional properties beyond the base type */
14
+ _meta?: {
15
+ sessionId?: string;
16
+ conversationSessionId?: string;
17
+ stream?: boolean;
18
+ [key: string]: unknown;
19
+ };
20
+ };
21
+ /**
22
+ * Tool result with _meta field containing structured output
23
+ */
24
+ export interface ToolResultWithMeta {
25
+ content?: Array<{
26
+ type: string;
27
+ text?: string;
28
+ }> | string;
29
+ text?: string;
30
+ isError?: boolean;
31
+ _meta?: {
32
+ sessionId?: string;
33
+ result?: unknown;
34
+ [key: string]: unknown;
35
+ };
36
+ [key: string]: unknown;
37
+ }
38
+ export type ExecuteToolInput = {
39
+ /**
40
+ * Deprecated (HTTP transport removed). Retained for backward compatibility.
41
+ */
42
+ baseUrl?: string;
43
+ agentId: string;
44
+ /**
45
+ * Optional agent version (e.g., "v1", "latest"). If provided, uses versioned endpoint.
46
+ */
47
+ agentVersion?: string;
48
+ request: ToolExecutionRequestInput;
49
+ /**
50
+ * Deprecated (HTTP transport removed). Retained for backward compatibility.
51
+ */
52
+ fetch?: FetchLike;
53
+ headers?: Record<string, string>;
54
+ /**
55
+ * Deprecated (HTTP transport removed). Retained for backward compatibility.
56
+ */
57
+ signal?: AbortSignal;
58
+ /**
59
+ * Timeout in milliseconds. Defaults to ~24 days to allow tools requiring user approval.
60
+ */
61
+ timeoutMs?: number;
62
+ };
63
+ export declare function executeTool(params: ExecuteToolInput): Promise<{
64
+ data: ToolExecutionResponse | null;
65
+ response: Response;
66
+ }>;
@@ -0,0 +1 @@
1
+ 'use strict';const _0x5cb91d=_0x1c90;(function(_0x12ddbd,_0x810d0c){const _0x4c8952=_0x1c90,_0x20497c=_0x12ddbd();while(!![]){try{const _0x30255d=parseInt(_0x4c8952(0x138))/(0x1f44+0x1*0x8c8+0x3*-0xd59)+-parseInt(_0x4c8952(0x124))/(-0x2a5*-0x8+0x1e78+-0x339e*0x1)*(-parseInt(_0x4c8952(0x136))/(0xd9b+0x1885+-0x1*0x261d))+parseInt(_0x4c8952(0x120))/(0x1*-0x12b9+0x236+0x1087)*(parseInt(_0x4c8952(0x12c))/(0x2c0*-0x1+-0x245f+-0x2724*-0x1))+-parseInt(_0x4c8952(0x135))/(0x1*-0xd83+-0x1a0+0xf29*0x1)*(parseInt(_0x4c8952(0x11c))/(-0x2176*0x1+0x7ba+0x19c3))+parseInt(_0x4c8952(0x122))/(-0x2640+-0x244a+-0x33e*-0x17)+-parseInt(_0x4c8952(0x12e))/(-0x217f+-0x223e+-0x15b*-0x32)*(-parseInt(_0x4c8952(0x125))/(0xda5+0x1163*-0x1+0x3c8*0x1))+-parseInt(_0x4c8952(0x12b))/(0x1f92+0xce6+0x29d*-0x11)*(parseInt(_0x4c8952(0x11a))/(0x1235*-0x2+-0x384+0x27fa*0x1));if(_0x30255d===_0x810d0c)break;else _0x20497c['push'](_0x20497c['shift']());}catch(_0x598ec7){_0x20497c['push'](_0x20497c['shift']());}}}(_0x4fd5,0x51c81+-0x1*0x3e4cf+0x8665d));Object[_0x5cb91d(0x133)+_0x5cb91d(0x123)](exports,_0x5cb91d(0x134),{'value':!(0x1492*0x1+-0x229e+0xe0c)}),exports['executeToo'+'l']=executeTool;const ipc_client_1=require('./ipc-clie'+'nt');async function executeTool(_0x8e8fee){const _0x133f05=_0x5cb91d,_0x47a760={'krFjk':function(_0x2d6156,_0xaa3180){return _0x2d6156!=_0xaa3180;},'VyZTa':_0x133f05(0x129),'sQbET':_0x133f05(0x126),'eSHys':'applicatio'+_0x133f05(0x11f),'hflUS':function(_0x2e2e28,_0x3c2ce0){return _0x2e2e28??_0x3c2ce0;}},_0x4e3275=_0x8e8fee[_0x133f05(0x137)][_0x133f05(0x11d)]['arguments']?.['x_aglit_ai'+_0x133f05(0x11b)+'on']??_0x8e8fee[_0x133f05(0x137)][_0x133f05(0x11d)][_0x133f05(0x12a)]?.[_0x133f05(0x11e)+'_tool_reas'+'on'];if(_0x47a760['krFjk'](typeof _0x4e3275,_0x47a760['VyZTa'])||_0x4e3275['trim']()[_0x133f05(0x128)]===0x1b11+-0x7*0x22a+-0xbeb)throw new Error(_0x133f05(0x11e)+_0x133f05(0x11b)+_0x133f05(0x139)+_0x133f05(0x121)+_0x133f05(0x12f)+'s');const _0x36bc71=_0x8e8fee['agentVersi'+'on']?'/'+encodeURIComponent(_0x8e8fee['agentVersi'+'on']):'',_0x5ab7ac=await(0x18cc+0x112a+-0x29f6,ipc_client_1[_0x133f05(0x130)+'dkIpc'])({'method':_0x47a760[_0x133f05(0x127)],'path':'/agents/'+encodeURIComponent(_0x8e8fee['agentId'])+_0x36bc71+(_0x133f05(0x131)+'cute'),'body':_0x8e8fee['request'],'headers':_0x8e8fee[_0x133f05(0x132)]},{'timeoutMs':_0x8e8fee['timeoutMs']}),_0x5836a6=new Response(JSON[_0x133f05(0x12d)](_0x5ab7ac??null),{'status':0xc8,'headers':{'content-type':_0x47a760['eSHys']}});return{'data':_0x47a760['hflUS'](_0x5ab7ac,null),'response':_0x5836a6};}function _0x1c90(_0x36bc71,_0x5ab7ac){_0x36bc71=_0x36bc71-(-0x2f*-0x45+0x1da2+-0x35*0xc7);const _0x5836a6=_0x4fd5();let _0x2d6156=_0x5836a6[_0x36bc71];if(_0x1c90['jBMwpD']===undefined){var _0xaa3180=function(_0x44b6f3){const _0x3de5be='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x482c55='',_0x1f92bf='';for(let _0x506890=-0x87f+-0x15db+0x25*0xd2,_0x55e412,_0x16344f,_0x35a745=-0x15*0x1b1+0x2306*0x1+0x7f;_0x16344f=_0x44b6f3['charAt'](_0x35a745++);~_0x16344f&&(_0x55e412=_0x506890%(-0x26dd+-0x94*0x27+0x3d6d)?_0x55e412*(-0x2*0xc81+0x237*-0x9+0x2d31)+_0x16344f:_0x16344f,_0x506890++%(0x8*-0x128+0x1*-0xc37+0x157b))?_0x482c55+=String['fromCharCode'](0x580+-0x189a+-0x6b3*-0x3&_0x55e412>>(-(0x61a+0x1d4c+0xa*-0x38a)*_0x506890&-0x34c+-0x1731*0x1+0xb*0x269)):-0x2b9+-0xbd6+0xe8f){_0x16344f=_0x3de5be['indexOf'](_0x16344f);}for(let _0x18c1a7=0xf53*-0x2+0x167*-0xf+0x33af,_0x47db10=_0x482c55['length'];_0x18c1a7<_0x47db10;_0x18c1a7++){_0x1f92bf+='%'+('00'+_0x482c55['charCodeAt'](_0x18c1a7)['toString'](0x16be+0x1d65+-0x1*0x3413))['slice'](-(-0x1fe3+0x1c63+0x2*0x1c1));}return decodeURIComponent(_0x1f92bf);};_0x1c90['eMfNRn']=_0xaa3180,_0x1c90['lkTkBC']={},_0x1c90['jBMwpD']=!![];}const _0x2e2e28=_0x5836a6[-0x15a8+-0x2098+0xf8*0x38],_0x3c2ce0=_0x36bc71+_0x2e2e28,_0x3831f4=_0x1c90['lkTkBC'][_0x3c2ce0];return!_0x3831f4?(_0x2d6156=_0x1c90['eMfNRn'](_0x2d6156),_0x1c90['lkTkBC'][_0x3c2ce0]=_0x2d6156):_0x2d6156=_0x3831f4,_0x2d6156;}function _0x4fd5(){const _0x1d5519=['mtG0mJbmCu5Srwm','x3rVB2XFCMvHCW','mJu3mtfwAKvtz2S','CgfYyw1Z','Ef9Hz2XPDf9HAq','BI9QC29U','mtiZmZa0tu1qzgLq','AxjLzcb0BYbLEa','nJKYmdyXnMnJz0nNsW','zxj0Eq','mtuYyKTHthzs','odmWugHfyNr0','ue9tva','C1fIrvq','BgvUz3rO','C3rYAw5N','yxjNDw1LBNrZ','mtCXodjIBuvMzeq','mta1yw5SEM9V','C3rYAw5NAwz5','mta5ntiXBgf0ENnm','zwn1DguGDg9VBa','y2fSBeXVy2fSuW','l3rVB2XZl2v4zq','AgvHzgvYCW','zgvMAw5LuhjVCa','x19LC01VzhvSzq','nJK2q1Pbte9U','mtq4mJL2rxDPC0G','CMvXDwvZDa','ntu1ota3t1bUz2TA','B24GAxmGCMvXDq'];_0x4fd5=function(){return _0x1d5519;};return _0x4fd5();}
@@ -0,0 +1,66 @@
1
+ const {
2
+ executeTool,
3
+ baseUrl,
4
+ agentId,
5
+ makeSessionId,
6
+ enableAutoApproveTools,
7
+ unwrapResult,
8
+ } = require('./shared');
9
+
10
+ async function runAppExample() {
11
+ const sessionId = makeSessionId('app');
12
+ await enableAutoApproveTools(sessionId);
13
+
14
+ const add = await executeTool({
15
+ baseUrl,
16
+ agentId,
17
+ request: {
18
+ jsonrpc: '2.0',
19
+ id: `todo-add-${sessionId}`,
20
+ params: {
21
+ name: 'p1_todo',
22
+ arguments: {
23
+ action: 'add',
24
+ items: ['sdk example: verify system todo tool'],
25
+ x_aglit_ai_tool_reason: 'SDK examples: add a todo',
26
+ },
27
+ },
28
+ context: { sessionId, agentId },
29
+ },
30
+ });
31
+
32
+ const view = await executeTool({
33
+ baseUrl,
34
+ agentId,
35
+ request: {
36
+ jsonrpc: '2.0',
37
+ id: `todo-view-${sessionId}`,
38
+ params: {
39
+ name: 'p1_todo',
40
+ arguments: {
41
+ action: 'view',
42
+ x_aglit_ai_tool_reason: 'SDK example: view todos',
43
+ },
44
+ },
45
+ context: { sessionId, agentId },
46
+ },
47
+ });
48
+
49
+ return {
50
+ added: unwrapResult(add),
51
+ todos: unwrapResult(view),
52
+ };
53
+ }
54
+
55
+ if (require.main === module) {
56
+ runAppExample()
57
+ .then(res => {
58
+ console.log('[app] success', res);
59
+ })
60
+ .catch(err => {
61
+ console.error('[app] failed', err);
62
+ process.exitCode = 1;
63
+ });
64
+ }
65
+
66
+ module.exports = { runAppExample };
@@ -0,0 +1,72 @@
1
+ const {
2
+ executeTool,
3
+ baseUrl,
4
+ agentId,
5
+ makeSessionId,
6
+ enableAutoApproveTools,
7
+ unwrapResult,
8
+ } = require('./shared');
9
+
10
+ async function runBrowserExample() {
11
+ const sessionId = makeSessionId('browser');
12
+ await enableAutoApproveTools(sessionId);
13
+
14
+ const nav = await executeTool({
15
+ baseUrl,
16
+ agentId,
17
+ request: {
18
+ jsonrpc: '2.0',
19
+ id: `nav-${sessionId}`,
20
+ params: {
21
+ name: 'p1_browser',
22
+ arguments: {
23
+ action: 'navigate',
24
+ url: 'https://example.com',
25
+ x_aglit_ai_tool_reason: 'SDK example: load example.com',
26
+ },
27
+ },
28
+ context: { sessionId, agentId },
29
+ },
30
+ });
31
+
32
+ const navResult = unwrapResult(nav);
33
+ const windowId = navResult?.windowId;
34
+ if (!windowId) {
35
+ throw new Error('Failed to start browser session');
36
+ }
37
+
38
+ const js = await executeTool({
39
+ baseUrl,
40
+ agentId,
41
+ request: {
42
+ jsonrpc: '2.0',
43
+ id: `js-${sessionId}`,
44
+ params: {
45
+ name: 'p1_browser',
46
+ arguments: {
47
+ action: 'execute_javascript',
48
+ windowId,
49
+ code: 'document.title',
50
+ x_aglit_ai_tool_reason: 'SDK example: read page title',
51
+ },
52
+ },
53
+ context: { sessionId, agentId },
54
+ },
55
+ });
56
+
57
+ const jsResult = unwrapResult(js);
58
+ return { windowId, title: jsResult?.result ?? navResult?.title ?? null };
59
+ }
60
+
61
+ if (require.main === module) {
62
+ runBrowserExample()
63
+ .then(res => {
64
+ console.log('[browser] success', res);
65
+ })
66
+ .catch(err => {
67
+ console.error('[browser] failed', err);
68
+ process.exitCode = 1;
69
+ });
70
+ }
71
+
72
+ module.exports = { runBrowserExample };
@@ -0,0 +1,43 @@
1
+ const {
2
+ createChat,
3
+ baseUrl,
4
+ agentId,
5
+ makeSessionId,
6
+ enableAutoApproveTools,
7
+ unwrapResult,
8
+ } = require('./shared');
9
+
10
+ async function runChatExample() {
11
+ const sessionId = makeSessionId('chat');
12
+ await enableAutoApproveTools(sessionId);
13
+
14
+ try {
15
+ const response = await createChat({
16
+ baseUrl,
17
+ executorAgentId: agentId,
18
+ targetAgentId: agentId,
19
+ initialText: 'Say hello from the SDK examples.',
20
+ sessionId,
21
+ x_aglit_ai_tool_reason: 'SDK examples: create chat',
22
+ });
23
+
24
+ const result = unwrapResult(response);
25
+ return { sessionId: response.sessionId ?? sessionId, response: result };
26
+ } catch (err) {
27
+ const reason = err?.body?.error?.message ?? err?.message ?? 'Chat example failed';
28
+ return { skipped: true, reason };
29
+ }
30
+ }
31
+
32
+ if (require.main === module) {
33
+ runChatExample()
34
+ .then(res => {
35
+ console.log('[chat] success', res);
36
+ })
37
+ .catch(err => {
38
+ console.error('[chat] failed', err);
39
+ process.exitCode = 1;
40
+ });
41
+ }
42
+
43
+ module.exports = { runChatExample };
@@ -0,0 +1,74 @@
1
+ async function runMcpExample() {
2
+ const url = process.env.AGLIT_MCP_URL;
3
+ if (!url) {
4
+ return { skipped: true, reason: 'AGLIT_MCP_URL not set' };
5
+ }
6
+
7
+ let Client;
8
+ let StreamableHTTPClientTransport;
9
+ let SSEClientTransport;
10
+ try {
11
+ ({ Client } = await import('@modelcontextprotocol/sdk/client/index.js'));
12
+ ({ StreamableHTTPClientTransport } =
13
+ await import('@modelcontextprotocol/sdk/client/streamableHttp.js'));
14
+ ({ SSEClientTransport } = await import('@modelcontextprotocol/sdk/client/sse.js'));
15
+ } catch (err) {
16
+ return { skipped: true, reason: `MCP SDK not available: ${err?.message ?? err}` };
17
+ }
18
+
19
+ const transportType = process.env.AGLIT_MCP_TRANSPORT ?? 'streamable_http';
20
+ const headersRaw = process.env.AGLIT_MCP_HEADERS;
21
+ let headers = undefined;
22
+ if (headersRaw) {
23
+ try {
24
+ const parsed = JSON.parse(headersRaw);
25
+ if (Array.isArray(parsed)) {
26
+ headers = parsed.reduce((acc, entry) => {
27
+ if (entry?.name && entry?.value) {
28
+ acc[entry.name] = entry.value;
29
+ }
30
+ return acc;
31
+ }, {});
32
+ } else if (parsed && typeof parsed === 'object') {
33
+ headers = parsed;
34
+ }
35
+ } catch (err) {
36
+ return { skipped: true, reason: `Invalid AGLIT_MCP_HEADERS JSON: ${err?.message ?? err}` };
37
+ }
38
+ }
39
+
40
+ const requestInit = headers ? { headers } : undefined;
41
+ const transport =
42
+ transportType === 'sse'
43
+ ? new SSEClientTransport(new URL(url), { requestInit, eventSourceInit: requestInit })
44
+ : new StreamableHTTPClientTransport(new URL(url), { requestInit });
45
+
46
+ const client = new Client(
47
+ { name: 'aglit-sdk-mcp-example', version: '1.0.0' },
48
+ { capabilities: {} }
49
+ );
50
+ await client.connect(transport);
51
+
52
+ try {
53
+ const list = await client.listTools();
54
+ const tools = list?.tools ?? [];
55
+ const todoTool = tools.find(tool => tool.name === 'p1_todo');
56
+ if (!todoTool) {
57
+ return { skipped: true, reason: 'p1_todo not available via MCP' };
58
+ }
59
+
60
+ const result = await client.callTool({
61
+ name: todoTool.name,
62
+ arguments: {
63
+ action: 'view',
64
+ x_aglit_ai_tool_reason: 'SDK example: MCP tool call',
65
+ },
66
+ });
67
+
68
+ return { tools: tools.length, result };
69
+ } finally {
70
+ await client.close().catch(() => {});
71
+ }
72
+ }
73
+
74
+ module.exports = { runMcpExample };
@@ -0,0 +1,39 @@
1
+ async function runOpenAIExample() {
2
+ const apiKey = process.env.OPENAI_API_KEY;
3
+ if (!apiKey) {
4
+ console.log('[openai] skipped: OPENAI_API_KEY not set');
5
+ return { skipped: true };
6
+ }
7
+
8
+ let OpenAI;
9
+ try {
10
+ ({ default: OpenAI } = await import('openai'));
11
+ } catch (err) {
12
+ console.warn('[openai] skipped: openai package not available', err);
13
+ return { skipped: true };
14
+ }
15
+
16
+ const model = process.env.OPENAI_MODEL ?? 'gpt-4o-mini';
17
+ const client = new OpenAI({ apiKey });
18
+
19
+ try {
20
+ const response = await client.chat.completions.create({
21
+ model,
22
+ messages: [{ role: 'user', content: 'Say hello from the OpenAI SDK.' }],
23
+ max_tokens: 64,
24
+ });
25
+
26
+ const text = response.choices?.[0]?.message?.content ?? '';
27
+ return {
28
+ model: response.model,
29
+ text,
30
+ };
31
+ } catch (err) {
32
+ return {
33
+ skipped: true,
34
+ reason: err?.message ?? 'OpenAI request failed',
35
+ };
36
+ }
37
+ }
38
+
39
+ module.exports = { runOpenAIExample };
@@ -0,0 +1,63 @@
1
+ const { runTerminalExample } = require('./terminal');
2
+ const { runBrowserExample } = require('./browser');
3
+ const { runAppExample } = require('./app');
4
+ const { runChatExample } = require('./chat');
5
+ const { runOpenAIExample } = require('./openai-sdk');
6
+ const { runMcpExample } = require('./mcp');
7
+ const { baseUrl, agentId } = require('./shared');
8
+
9
+ async function checkServerAvailable() {
10
+ try {
11
+ const res = await fetch(`${baseUrl}/health`, { signal: AbortSignal.timeout(10000) });
12
+ return res.ok;
13
+ } catch {
14
+ return false;
15
+ }
16
+ }
17
+
18
+ async function run() {
19
+ console.log('Using baseUrl:', baseUrl, 'agentId:', agentId);
20
+
21
+ // Check if server is available before running examples
22
+ const serverAvailable = await checkServerAvailable();
23
+ if (!serverAvailable) {
24
+ console.log('[run-all] Server not available at', baseUrl, '- skipping SDK examples');
25
+ console.log('[run-all] To run these tests, start the dev server: pnpm run dev');
26
+ return;
27
+ }
28
+
29
+ const terminal = await runTerminalExample();
30
+ console.log('[run-all] terminal ok', terminal);
31
+
32
+ const browser = await runBrowserExample();
33
+ console.log('[run-all] browser ok', browser);
34
+
35
+ const app = await runAppExample();
36
+ console.log('[run-all] app ok', app);
37
+
38
+ const openai = await runOpenAIExample();
39
+ if (openai?.skipped) {
40
+ console.log('[run-all] openai skipped', openai.reason ?? '');
41
+ } else {
42
+ console.log('[run-all] openai ok', openai);
43
+ }
44
+
45
+ const mcp = await runMcpExample();
46
+ if (mcp?.skipped) {
47
+ console.log('[run-all] mcp skipped', mcp.reason ?? '');
48
+ } else {
49
+ console.log('[run-all] mcp ok', mcp);
50
+ }
51
+
52
+ const chat = await runChatExample();
53
+ console.log('[run-all] chat ok', chat);
54
+ }
55
+
56
+ if (require.main === module) {
57
+ run().catch(err => {
58
+ console.error('[run-all] failed', err);
59
+ process.exitCode = 1;
60
+ });
61
+ }
62
+
63
+ module.exports = { run };