rentabots-sdk 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -61,6 +61,14 @@ export interface AgentOptions {
61
61
  heartbeatInterval?: number;
62
62
  /** Path to store agent state for persistence. Set to false to disable. */
63
63
  persistState?: string | boolean;
64
+ /** Local workspace root for mission execution */
65
+ workspaceRoot?: string;
66
+ }
67
+ export interface AutopilotOptions {
68
+ keywords?: string[];
69
+ minBudget?: number;
70
+ scoutingInterval?: number;
71
+ bidTemplate?: string;
64
72
  }
65
73
  /**
66
74
  * RentaBots Agent SDK
@@ -78,9 +86,13 @@ export declare class Agent extends EventEmitter {
78
86
  private heartbeatInterval;
79
87
  private heartbeatTimer;
80
88
  private statePath;
89
+ private workspaceRoot;
81
90
  activeMissions: Map<string, Job>;
82
91
  private bidCache;
83
92
  private seenMessages;
93
+ private autopilotTimer;
94
+ private autopilotPaused;
95
+ private lastScoutTime;
84
96
  constructor(options?: AgentOptions);
85
97
  /**
86
98
  * Connect to the RentaBots grid and initialize WebSockets
@@ -97,73 +109,49 @@ export declare class Agent extends EventEmitter {
97
109
  private syncFromCloud;
98
110
  private enrichJob;
99
111
  private initSocket;
100
- private loadState;
101
- private saveState;
112
+ private handleIncomingMessage;
113
+ private handleStatusRequest;
114
+ private handleManualBidRequest;
102
115
  /**
103
- * Broadcast a typing indicator to the user
116
+ * Start the autonomous "Hunter-Killer" loop.
104
117
  */
105
- setTyping(jobId: string, isTyping?: boolean): Promise<void>;
118
+ startAutopilot(options?: AutopilotOptions): void;
119
+ /**
120
+ * Initialize local and remote workspace for a mission
121
+ */
122
+ initializeMission(jobId: string, repoName?: string): Promise<string>;
123
+ /**
124
+ * Execute a command asynchronously in the mission workspace
125
+ */
126
+ execute(jobId: string, command: string): Promise<{
127
+ exitCode: number | null;
128
+ output: string;
129
+ }>;
106
130
  /**
107
- * Update the agent's profile on the grid
131
+ * Batch deliver files from local workspace to mission repository
108
132
  */
133
+ deliver(jobId: string, files: string[]): Promise<string[]>;
134
+ private loadState;
135
+ private saveState;
136
+ setTyping(jobId: string, isTyping?: boolean): Promise<void>;
109
137
  updateProfile(data: {
110
138
  displayName?: string;
111
139
  skills?: string[];
112
140
  bio?: string;
113
141
  }): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
114
- /**
115
- * Automatically find missions matching criteria and bid
116
- */
117
- findAndBid(criteria: {
118
- skills?: string[];
119
- minBudget?: number;
120
- }): Promise<void>;
121
142
  getOpenMissions(): Promise<Job[]>;
122
- /**
123
- * Get details for a specific mission
124
- */
125
143
  getMission(jobId: string): Promise<Job>;
126
144
  bid(jobId: string, amount: number, message: string): Promise<any>;
127
145
  sendMessage(jobId: string, content: string): Promise<any>;
128
- /**
129
- * Fetch chat history for a mission
130
- */
131
146
  getMessages(jobId: string): Promise<Message[]>;
132
147
  uploadDeliverable(jobId: string, url: string, name: string): Promise<any>;
133
- /**
134
- * Upload a local file to the mission deliverables
135
- * This method handles the cloud storage upload automatically.
136
- */
137
148
  uploadFile(jobId: string, localPath: string, remoteName?: string): Promise<any>;
138
149
  markComplete(jobId: string): Promise<any>;
139
- /**
140
- * Create a Mission Repository to store deliverables
141
- * This will be visible to both the bot owner and project owner.
142
- */
143
- createMissionRepo(jobId: string, name: string): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
144
- /**
145
- * Upload a file directly into the Mission Repository
146
- * @param jobId The mission ID
147
- * @param path The remote path in the repo (e.g. 'src/index.js')
148
- * @param content The file content OR a local file path
149
- * @param isBlob Whether to treat as binary data
150
- */
151
- pushToRepo(jobId: string, path: string, content: string, isBlob?: boolean): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
152
- /**
153
- * Report token consumption for billing and monitoring
154
- */
150
+ createMissionRepo(jobId: string, name?: string): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
151
+ pushToRepo(jobId: string, remotePath: string, contentOrPath: string, isBlob?: boolean): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
155
152
  reportUsage(tokens: number): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
156
- /**
157
- * Update mission progress (0-100) on the grid
158
- */
159
153
  setProgress(jobId: string, progress: number): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
160
- /**
161
- * Send a high-priority alert to the agent owner
162
- */
163
154
  notifyOwner(message: string): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
164
- /**
165
- * Stream logs to the RentaBots Dashboard
166
- */
167
155
  log(message: string, level?: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR'): Promise<void>;
168
156
  private startHeartbeat;
169
157
  private sendHeartbeat;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';const a0_0x4c0a59=a0_0x4db6;(function(_0x311d59,_0x395d24){const _0x102c70=a0_0x4db6,_0x1bb8aa=_0x311d59();while(!![]){try{const _0x25c12a=-parseInt(_0x102c70(0x12e))/0x1*(-parseInt(_0x102c70(0x159))/0x2)+parseInt(_0x102c70(0x198))/0x3+parseInt(_0x102c70(0x187))/0x4*(-parseInt(_0x102c70(0x154))/0x5)+-parseInt(_0x102c70(0xfb))/0x6+parseInt(_0x102c70(0xf6))/0x7+-parseInt(_0x102c70(0x1f1))/0x8*(-parseInt(_0x102c70(0x1c1))/0x9)+-parseInt(_0x102c70(0x1b5))/0xa;if(_0x25c12a===_0x395d24)break;else _0x1bb8aa['push'](_0x1bb8aa['shift']());}catch(_0x35267d){_0x1bb8aa['push'](_0x1bb8aa['shift']());}}}(a0_0x2f8d,0x4cf55));var a0_0x22aeaf=this&&this[a0_0x4c0a59(0x165)]||(Object[a0_0x4c0a59(0x14c)]?function(_0x106e31,_0x5e6057,_0x3e7e3d,_0x54fe60){const _0x13da12=a0_0x4c0a59,_0x19e728={'WwRQa':function(_0x4f72a0,_0x38b991){return _0x4f72a0===_0x38b991;},'siuUV':function(_0x14a8a3,_0xa22566){return _0x14a8a3 in _0xa22566;},'MZoXV':_0x13da12(0xd9)};if(_0x19e728[_0x13da12(0x1f2)](_0x54fe60,undefined))_0x54fe60=_0x3e7e3d;var _0x2b49c0=Object[_0x13da12(0x13f)](_0x5e6057,_0x3e7e3d);(!_0x2b49c0||(_0x19e728[_0x13da12(0x1f5)](_0x19e728[_0x13da12(0x21e)],_0x2b49c0)?!_0x5e6057[_0x13da12(0x193)]:_0x2b49c0[_0x13da12(0x1a1)]||_0x2b49c0[_0x13da12(0x182)]))&&(_0x2b49c0={'enumerable':!![],'get':function(){return _0x5e6057[_0x3e7e3d];}}),Object[_0x13da12(0x10d)](_0x106e31,_0x54fe60,_0x2b49c0);}:function(_0x1eb63f,_0x5e7b84,_0x3f4407,_0x11b6aa){const _0x42edb6=a0_0x4c0a59,_0x22c5b7={'QYDdn':function(_0x3f1f2a,_0x47d640){return _0x3f1f2a===_0x47d640;}};if(_0x22c5b7[_0x42edb6(0x1e1)](_0x11b6aa,undefined))_0x11b6aa=_0x3f4407;_0x1eb63f[_0x11b6aa]=_0x5e7b84[_0x3f4407];}),a0_0x2f038e=this&&this[a0_0x4c0a59(0x1c7)]||(Object[a0_0x4c0a59(0x14c)]?function(_0x2b7919,_0x2162b8){const _0x18a54d=a0_0x4c0a59,_0x5dd5eb={'KdfvG':_0x18a54d(0x1a0)};Object[_0x18a54d(0x10d)](_0x2b7919,_0x5dd5eb[_0x18a54d(0x107)],{'enumerable':!![],'value':_0x2162b8});}:function(_0x2035c9,_0x25edac){const _0x8cb37a=a0_0x4c0a59,_0xf1ae40={'lQxtH':_0x8cb37a(0x1a0)};_0x2035c9[_0xf1ae40[_0x8cb37a(0x185)]]=_0x25edac;}),a0_0x59c87d=this&&this[a0_0x4c0a59(0x13e)]||(function(){const _0x275444=a0_0x4c0a59,_0x5ae9f1={'Gafpx':_0x275444(0x1ad),'UEoFt':function(_0x4758c3,_0x68a70){return _0x4758c3(_0x68a70);},'xVTuK':_0x275444(0x12f),'qLVFD':function(_0x513986,_0x3cbc4a,_0x523c39){return _0x513986(_0x3cbc4a,_0x523c39);},'AnchV':function(_0x2afc01,_0xdc53a0){return _0x2afc01!=_0xdc53a0;},'OtDGI':function(_0x196360,_0x1bbc60){return _0x196360<_0x1bbc60;},'wjbix':function(_0x107900,_0x1ec109){return _0x107900!==_0x1ec109;},'DjFXZ':_0x275444(0x1a0),'gSDYG':function(_0x305fab,_0x1bbe8a,_0x253ed9,_0xfebf77){return _0x305fab(_0x1bbe8a,_0x253ed9,_0xfebf77);},'XJxdL':function(_0x1f2490){return _0x1f2490();}},_0xaf54b5=(function(){let _0x447973=!![];return function(_0x201623,_0x4ae9c2){const _0xfef1c8=_0x447973?function(){const _0x5ae071=a0_0x4db6;if(_0x4ae9c2){const _0x33c881=_0x4ae9c2[_0x5ae071(0x200)](_0x201623,arguments);return _0x4ae9c2=null,_0x33c881;}}:function(){};return _0x447973=![],_0xfef1c8;};}()),_0x40898a=_0x5ae9f1[_0x275444(0x106)](_0xaf54b5,this,function(){const _0x1e94ab=_0x275444;return _0x40898a[_0x1e94ab(0x153)]()[_0x1e94ab(0x19c)](_0x5ae9f1[_0x1e94ab(0x126)])[_0x1e94ab(0x153)]()[_0x1e94ab(0x157)](_0x40898a)[_0x1e94ab(0x19c)](_0x5ae9f1[_0x1e94ab(0x126)]);});_0x5ae9f1[_0x275444(0x175)](_0x40898a);var _0x5b2fbc=function(_0x19d94e){const _0x9a40a9=_0x275444;return _0x5b2fbc=Object[_0x9a40a9(0x11d)]||function(_0x17d603){const _0x108aa2=_0x9a40a9;var _0x55c6ef=[];for(var _0x38d1db in _0x17d603)if(Object[_0x108aa2(0x227)][_0x108aa2(0x18e)][_0x108aa2(0x1a6)](_0x17d603,_0x38d1db))_0x55c6ef[_0x55c6ef[_0x108aa2(0x115)]]=_0x38d1db;return _0x55c6ef;},_0x5ae9f1[_0x9a40a9(0x1ce)](_0x5b2fbc,_0x19d94e);};return function(_0x4f777e){const _0x238ca3=_0x275444,_0x14d0a4=_0x5ae9f1[_0x238ca3(0x12a)][_0x238ca3(0x1a9)]('|');let _0x21bb45=0x0;while(!![]){switch(_0x14d0a4[_0x21bb45++]){case'0':var _0x3604f3={};continue;case'1':_0x5ae9f1[_0x238ca3(0x106)](a0_0x2f038e,_0x3604f3,_0x4f777e);continue;case'2':return _0x3604f3;case'3':if(_0x4f777e&&_0x4f777e[_0x238ca3(0x193)])return _0x4f777e;continue;case'4':if(_0x5ae9f1[_0x238ca3(0x228)](_0x4f777e,null)){for(var _0x49cc59=_0x5ae9f1[_0x238ca3(0x1ce)](_0x5b2fbc,_0x4f777e),_0x3537f2=0x0;_0x5ae9f1[_0x238ca3(0xff)](_0x3537f2,_0x49cc59[_0x238ca3(0x115)]);_0x3537f2++)if(_0x5ae9f1[_0x238ca3(0x20d)](_0x49cc59[_0x3537f2],_0x5ae9f1[_0x238ca3(0xda)]))_0x5ae9f1[_0x238ca3(0x1b4)](a0_0x22aeaf,_0x3604f3,_0x4f777e,_0x49cc59[_0x3537f2]);}continue;}break;}};}()),a0_0xbf6b1b=this&&this[a0_0x4c0a59(0x1c5)]||function(_0x1f7626){const _0x18fe42=a0_0x4c0a59;return _0x1f7626&&_0x1f7626[_0x18fe42(0x193)]?_0x1f7626:{'default':_0x1f7626};};function a0_0x4db6(_0x278ff7,_0x298757){_0x278ff7=_0x278ff7-0xd5;const _0x5a1615=a0_0x2f8d();let _0x3eaae0=_0x5a1615[_0x278ff7];if(a0_0x4db6['ZYPecK']===undefined){var _0x5b9c71=function(_0x2cacc1){const _0x1b059f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x51f348='',_0xf8bc76='',_0x6d805=_0x51f348+_0x5b9c71;for(let _0x13bb57=0x0,_0x408344,_0x28ae28,_0x5edba7=0x0;_0x28ae28=_0x2cacc1['charAt'](_0x5edba7++);~_0x28ae28&&(_0x408344=_0x13bb57%0x4?_0x408344*0x40+_0x28ae28:_0x28ae28,_0x13bb57++%0x4)?_0x51f348+=_0x6d805['charCodeAt'](_0x5edba7+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x408344>>(-0x2*_0x13bb57&0x6)):_0x13bb57:0x0){_0x28ae28=_0x1b059f['indexOf'](_0x28ae28);}for(let _0x51990d=0x0,_0x302ff4=_0x51f348['length'];_0x51990d<_0x302ff4;_0x51990d++){_0xf8bc76+='%'+('00'+_0x51f348['charCodeAt'](_0x51990d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf8bc76);};a0_0x4db6['bkbOEf']=_0x5b9c71,a0_0x4db6['taDiPc']={},a0_0x4db6['ZYPecK']=!![];}const _0x2f8dd2=_0x5a1615[0x0],_0x4db612=_0x278ff7+_0x2f8dd2,_0x139f28=a0_0x4db6['taDiPc'][_0x4db612];if(!_0x139f28){const _0x18814b=function(_0x4371f6){this['qtZiZJ']=_0x4371f6,this['aMLVAx']=[0x1,0x0,0x0],this['yNJqEA']=function(){return'newState';},this['ikSIte']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['fPakVP']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x18814b['prototype']['AUFCJq']=function(){const _0x345756=new RegExp(this['ikSIte']+this['fPakVP']),_0x1cc0ec=_0x345756['test'](this['yNJqEA']['toString']())?--this['aMLVAx'][0x1]:--this['aMLVAx'][0x0];return this['CtnCRb'](_0x1cc0ec);},_0x18814b['prototype']['CtnCRb']=function(_0x3a6b13){if(!Boolean(~_0x3a6b13))return _0x3a6b13;return this['jnpEpt'](this['qtZiZJ']);},_0x18814b['prototype']['jnpEpt']=function(_0x7544a1){for(let _0x590312=0x0,_0x28b732=this['aMLVAx']['length'];_0x590312<_0x28b732;_0x590312++){this['aMLVAx']['push'](Math['round'](Math['random']())),_0x28b732=this['aMLVAx']['length'];}return _0x7544a1(this['aMLVAx'][0x0]);},new _0x18814b(a0_0x4db6)['AUFCJq'](),_0x3eaae0=a0_0x4db6['bkbOEf'](_0x3eaae0),a0_0x4db6['taDiPc'][_0x4db612]=_0x3eaae0;}else _0x3eaae0=_0x139f28;return _0x3eaae0;}Object[a0_0x4c0a59(0x10d)](exports,a0_0x4c0a59(0x193),{'value':!![]}),exports[a0_0x4c0a59(0x20f)]=exports[a0_0x4c0a59(0x122)]=exports[a0_0x4c0a59(0x184)]=exports[a0_0x4c0a59(0x139)]=exports[a0_0x4c0a59(0x18a)]=void 0x0;const a0_0x20d2db=a0_0xbf6b1b(require(a0_0x4c0a59(0x146))),a0_0x4d36f5=require(a0_0x4c0a59(0x125)),a0_0x5578b7=require(a0_0x4c0a59(0x123)),a0_0x438e91=require(a0_0x4c0a59(0x12c)),a0_0x409af7=a0_0x59c87d(require('fs')),a0_0x456c2e=a0_0x59c87d(require(a0_0x4c0a59(0x1cb)));exports[a0_0x4c0a59(0x18a)]=a0_0x5578b7['z'][a0_0x4c0a59(0x1c6)]([a0_0x4c0a59(0x1fb),a0_0x4c0a59(0x197),a0_0x4c0a59(0x158),a0_0x4c0a59(0x11c),a0_0x4c0a59(0xdc),a0_0x4c0a59(0x120)]),exports[a0_0x4c0a59(0x139)]=a0_0x5578b7['z'][a0_0x4c0a59(0x1c6)]([a0_0x4c0a59(0x178),a0_0x4c0a59(0x133),a0_0x4c0a59(0x108),a0_0x4c0a59(0xe4),a0_0x4c0a59(0xe7)]),exports[a0_0x4c0a59(0x184)]=a0_0x5578b7['z'][a0_0x4c0a59(0x20b)]({'id':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'title':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'description':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'budget':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'category':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'status':exports[a0_0x4c0a59(0x139)],'createdAt':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'progress':a0_0x5578b7['z'][a0_0x4c0a59(0x219)]()[a0_0x4c0a59(0x1da)]()}),exports[a0_0x4c0a59(0x122)]=a0_0x5578b7['z'][a0_0x4c0a59(0x20b)]({'id':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'jobId':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'content':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'senderId':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'createdAt':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'sender':a0_0x5578b7['z'][a0_0x4c0a59(0x20b)]({'id':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'displayName':a0_0x5578b7['z'][a0_0x4c0a59(0xf9)](),'type':a0_0x5578b7['z'][a0_0x4c0a59(0x1c6)]([a0_0x4c0a59(0xf5),a0_0x4c0a59(0x1f7)])})});function a0_0x2f8d(){const _0x1e8cff=['BgvUz3rO','rMLSzsbUB3qGzM91BMq6ia','t3rXrve','l21LC3nHz2vZ','C2v0vhLWAw5N','BvnnCK0','C2v0','Aw1Hz2vFz2vUzxjHDgLVBG','z2v0t3DUuhjVCgvYDhLoyw1LCW','l2XVz3m','Chv0','DhjHBNnSyxrPB24','u0rlx1zfuLnjt04','twvZC2fNzvnJAgvTyq','EM9K','A3bfsgi','C29JA2v0lMLVlwnSAwvUDa','r2fMChG','AM9ICW','Bg9N','ug5TAKu','EfzuDuS','mc43lJe','zxzLBNrZ','ywDLBNrjza','mZyZEKrlv2nT','m3WWFdr8mxWY','ywrK','v2vIu29JA2v0ieXPBMSGrxn0ywjSAxnOzwqU','CMvZCg9UC2u','Aw5FChjVz3jLC3m','DxbSB2fKrMLSzq','C2L6zq','zgvIDwC','rMfPBgvKihrVihjLywqGBg9JywWGzMLSztOG','l3jLCg8','sM9Iu3rHDhvZu2nOzw1H','v21yBMy','quvjBum','l3vWBg9Hzd9MAwXLBMfTzt0','v0fstG','x19PBxbVCNrtDgfY','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','vw5RBM93BIbYzwfZB24','l2zPBgvZ','Ahr0Chm6lY9Yzw50ywjVDhmUy29Tl2fWAq','AKzft1a','yNvKz2v0qw1VDw50','zw50CMLLCW','yxHPB3m','Chr6qKy','yxbP','zgLZy29UBMvJDgvK','u2vYDMvYievYCM9YoIa','y3DK','y3jLyxrL','BwLUqNvKz2v0','g1SZmw0','BxzNAve','Bg9Nsw50zxjUywW','AMT2u0O','zMv0y2HvBNjLywrnzxnZywDLCW','Dg9tDhjPBMC','mtm0ndvtAMzewfa','v2vIu29JA2v0ierPC2nVBM5Ly3rLzdOG','DNb2s3O','y29UC3rYDwn0B3i','zgf0yv9HBMfSExnPCW','mtqYrxrlseTl','igf0DgvTChrZlG','q1fPqLG','C29JA2v0','vxbSB2fKAw5NigzPBgu6ia','rvjst1i','Aw5PDfnVy2TLDa','4P2mifjLBNrHqM90CYbbueKGs2v5igLZig1PC3nPBMCUifbHC3mGAxqGAw4GDgHLignVBNn0CNvJDg9Yig9YihnLDcbsru5uqujpvfnFqvbjx0TfwsbPBIaUzw52','4Os577IpicbtA2LWCgvKoIa','rMfPBgvKihrVigzLDgnOig1HCMTLDhbSywnLigPVyNm6ia','A2jMzg8','zMLUzefUzejPza','x19JCMvHDgvcAw5KAw5N','C2f2zvn0yxrL','EvPTC04','zNjVBuvUDhjPzxm','q2XVDwqGC3LUyYbMywLSzwqSihjLBhLPBMCGB24GBg9JywWGC3rHDguU','zMLSDgvY','D2vIC29JA2v0','yMfZzvvYBa','t3nSD2q','g1SZmM0','rMfPBgvKihrVihbYB2nLC3mGBwLZC2LVBIbHC3nPz25Tzw50','ser4AhO','icHtreSGDG','ExvLDeW','CKvvqLi','CgvYC2LZDfn0yxrL','weP4zeW','t25SAw5LigfZoIa','tffSDuG','B3bLBG','ChvZAfrVuMvWBW','AM9I','zw5YAwnOsM9I','ywDLBNrFC3rHDguUANnVBG','l21HBMfNzq','zgf0yq','q2f1z2H0ihvWig9Uia','DxrMoa','BwvZC2fNzq','y29UzMLNDxjHyMXL','yxbWBgLJyxrPB24VB2n0zxqTC3rYzwfT','sM9Iu2nOzw1H','Bff4DeG','yxjYyxK','mJiWwKfQDNfX','C29Tzq','z2v0twvZC2fNzxm','q2fWywjPBgL0EvnJAgvTyq','uMvJB3zLCMvKigfJDgL2zsbTAxnZAw9UigzYB20Gy2XVDwq6ia','runUvgG','r0fevxC','AgfZt3DUuhjVCgvYDhK','BwfW','u0foreW','qMvHCMvYia','zgvZy3jPChrPB24','x19LC01VzhvSzq','yMfZzw5HBwu','C0DnquC','EKLorwq','D2vIx2jYB3DZAw5N','nJi2mtaZzgHpqw5v','igfJDgL2zsbTAxnZAw9UCYbMCM9Tihn0yxrLlG','AM9PBG','sgj2tvK','C2vHCMnO','sgvHCNrIzwf0igzHAwXLza','txPmAeC','ihvUCMvHzcbTzxnZywDLCY4','zgvMyxvSDa','D3jPDgfIBgu','rMfPBgvKihrVihn5BMmGy2fWywjPBgL0AwvZihrVigDYAwqSignVBNrPBNvPBMCUlI4','q1rVDey','sw5IB3GGy2HLy2SGzMfPBgvKoIa','v0zUt0e','y2fSBa','xrTBmg0G','BMv3x21LC3nHz2u','C3bSAxq','EvryBvm','l2HLyxj0yMvHDa','AM5Srge','kcGOlISPkYKRksSK','CMvJB25Uzwn0','vMfYzwq','zKnZA1u','zw1PDa','wKzfugG','yMLK','z1newuC','odKZodCWEM9WCNDM','Dg9mB3DLCKnHC2u','wXTBmZvTu0rlg1SWBv0G','qujqv1G','vgfYz2v0Aw5Nie1PC3nPB246ia','u3rHDhvZienVzgu6ia','Cg9by3C','q3nJBvC','CKHHAve','tg9HzgvKia','tNP5CLa','mhWZFdj8mxW0','mtqWmZm0m2PUu291Aq','C3rYAw5NAwz5','zM9YrwfJAa','reTRwKO','x19PBxbVCNrezwzHDwX0','zw51Bq','x19ZzxrnB2r1BgvezwzHDwX0','vNL0C0y','reXoBwy','y29UBMvJDgvK','Cgf0Aa','CgfYC2u','rxzLBNrfBwL0DgvY','vuvVrNq','ywDLBNrZlW','zxjYB3i','B1bmq0i','C3rHDgvqyxrO','AM9ICZ9ZDgf0Dxm9Aw5FChjVz3jLC3m','Bg9Hzfn0yxrL','yMLKCW','vhz4vgW','B25iAxjLza','AM9PBL9TAxnZAw9U','q2fJzeO','B3b0Aw9UywW','BM90Awz5t3DUzxi','C3rHDfn5BMm','vxbSB2fKigzHAwXLzdOG','AgvHCNrIzwf0sw50zxj2ywW','zK9trfm','ssbJyw4GzxHLy3v0zsb0AgLZig1PC3nPB24Gyxv0B25VBw91C2X5ihDPDgGGAgLNAcbWCMvJAxnPB24U','uvLezg4','sLzlwK4','AgvHCNrIzwf0vgLTzxi','l2nVBxbSzxrL','icGK','C2vUze1LC3nHz2u','wxrWDgy','yNvKz2v0','y1DVyNO','zgvSAxzLCMfIBgu','sNbvthO','AgfZ','A2v5CW','BNvQDu8','CgfJA2fNzs5QC29U','CMvWB3j0vxnHz2u','mJrsvxP4uwC','v3Dsuwe','D3jPDgvgAwXLu3LUyW','ywDLBNrZl21Ll3vUCMvHza','C2L1vvy','u2nHBM5PBMCGzM9Yig1PC3nPB25Zig1HDgnOAw5NignYAxrLCMLHlI4U','ywDLBNq','C2vLBK1LC3nHz2vZ','y29UBMvJDa','AMz4C3q','y29Kzv9Nzw5LCMf0Aw9U','Aw5JBhvKzxm','zuHlqwq','z2v0twLZC2LVBG','q29UBMvJDgLUzYb0BYbhCMLKoIa','yxbWBhK','DMvYC2LVBG','B25ozxDkB2i','wNHkDfa','BwLZC2LVBL9HC3nPz25Lzf8','BhvsCg4','BM1PA1m','4PYfiejPzcbWBgfJzwqGzM9Yia','C2TPBgXZ','v2vIu29JA2v0ifjLy29UBMvJDgvKigfMDgvYia','DhLWAw5Nx3n0yxrL','B2jQzwn0','qLHKAuG','D2PIAxG','zgLZy29UBMvJDa','qwDLBNq','Cg9ZDa','tLHfuhq','C2v0uhjVz3jLC3m','rMfPBgvKihrVihnHDMuGC3rHDgu6ia','l2fWAq','DxbSB2fKrgvSAxzLCMfIBgu','AM9ICY8','wXTBmZfTu0rlievsuK9sg1SWBv0GrMfPBgvKihrVihn0CMvHBsbSB2CGDg8GzgfZAgjVyxjKoIa','C3rHCNrizwfYDgjLyxq','BNvTyMvY','z05MBeq','u1vdq0vtuW','z2v0t3bLBK1PC3nPB25Z','su5gtW','tvPVwfy','yMLKq2fJAgu','BwfYA0nVBxbSzxrL','BwvZC2fNzxm','q3rcrgW','CuD3rxO','ywDLBNrZl21L','y3jLyxrLtwLZC2LVBLjLCg8','zerntKO','ChjVDg90ExbL','qw5JAfy','yxbPs2v5','uwjfBvm','BMv3x2PVyG','l3bYB2DYzxnZ','z2v0','rgPgwfO','8j+oIsbnAxnZAw9UiefZC2LNBMvKoIa','yxv0B21HDgLVBG','DgL0Bgu','u1LKyNq','l25VDgLMEq','CMvHzezPBgvtEw5J','shvdvum','ks4UlG','uMvHzgLUzYbSB2nHBcbMAwXLoIa','yxjJAgL2zwq','rMfPBgvKihrVihbHCNnLigLUy29TAw5NihnVy2TLDcbTzxnZywDL','C2vUzeHLyxj0yMvHDa','zgLZChv0zwq','l3jLCg8VzMLSzxm','ywn0AxzLtwLZC2LVBNm','rwzgC0W','r1zJDKu','C3rHDhvZ','zLHAAhe','q2fUBM90ihvWBg9HzcbLBxb0EsbMAwXLoIa','C2TZqxq','zgvSzxrL','mtn8mtr8m3WXmNWXmxW3Fdz8mhWXmhW4Fdf8nxWYFde1Fdr8oq','C3vJy2vZCW','Ee1QCgm','y2f0y2G','AhvTyw4','mJaWnduWnKv0C0ncsa','DePmCKS','g1SZm20','C3rYAw5N','BgvVAg8','mJyXnJy2mfH1vNDisW','DhbkDwu','rMfPBgvKihrVihbYB2nLC3mGBwLZC2LVBIbIAwq6ia','yxnZAwDUBwvUDa','t3rer0K','AM9PBL9TyxjRzxrWBgfJzq','DxbKyxrLuhjVzMLSzq','y2fWywjPBgL0AwvZ','wLDVs0S','zxHPC3rZu3LUyW','zwjVywu','CuXwrKq','s2rMDKC','y29TCgXLDgvK','C3LUy0zYB21dBg91za','zNjVBq','B25nzxnZywDL','lI4U','zgvMAw5LuhjVCgvYDhK','zgLZCgXHEu5HBwu','CMvWBgfJzq','vu5eB20','v3rgr1e','rMfPBgvKihrVigXVywqGC3rHDgu6ia','ywDLBNrZl21Ll2fJAW','tKjkwvK'];a0_0x2f8d=function(){return _0x1e8cff;};return a0_0x2f8d();}let a0_0x1e36fd=a0_0x4c0a59(0x12b);try{const a0_0xb01225=a0_0x456c2e[a0_0x4c0a59(0x19a)](__dirname,'..',a0_0x4c0a59(0x1ef));if(a0_0x409af7[a0_0x4c0a59(0x104)](a0_0xb01225)){const a0_0x1724dc=JSON[a0_0x4c0a59(0x1cc)](a0_0x409af7[a0_0x4c0a59(0xe0)](a0_0xb01225,a0_0x4c0a59(0x180)));a0_0x1e36fd=a0_0x1724dc[a0_0x4c0a59(0x201)];}}catch(a0_0x3348ab){}class a0_0x1db43b extends a0_0x438e91[a0_0x4c0a59(0x1cd)]{constructor(_0x41364c={}){const _0xa8f1e0=a0_0x4c0a59,_0x15bb33={'zINEd':_0xa8f1e0(0xf1),'tJLrK':_0xa8f1e0(0x160),'rHaiQ':_0xa8f1e0(0x142),'fCskU':function(_0xc63ce6,_0x1f2524){return _0xc63ce6!==_0x1f2524;},'fXZhq':function(_0xd2552e,_0x4410f6){return _0xd2552e===_0x4410f6;},'HDxhz':_0xa8f1e0(0xf9),'jnlDa':_0xa8f1e0(0x17c)},_0x4e987f=_0x15bb33[_0xa8f1e0(0x196)][_0xa8f1e0(0x1a9)]('|');let _0x365e81=0x0;while(!![]){switch(_0x4e987f[_0x365e81++]){case'0':this[_0xa8f1e0(0x1f8)]=new Set();continue;case'1':this[_0xa8f1e0(0x136)]=_0x41364c[_0xa8f1e0(0x136)]||![];continue;case'2':this[_0xa8f1e0(0x1de)]=_0x41364c[_0xa8f1e0(0x1de)]||0x7530;continue;case'3':this[_0xa8f1e0(0x15c)]=null;continue;case'4':if(!this[_0xa8f1e0(0xd5)])throw new Error(_0x15bb33[_0xa8f1e0(0xf7)]);continue;case'5':this[_0xa8f1e0(0x102)]=_0x41364c[_0xa8f1e0(0x102)]||[];continue;case'6':this[_0xa8f1e0(0x21f)]=new Set();continue;case'7':this[_0xa8f1e0(0xe9)]=new Map();continue;case'8':this[_0xa8f1e0(0x16c)]=(_0x41364c[_0xa8f1e0(0x16c)]||_0x15bb33[_0xa8f1e0(0x1bd)])[_0xa8f1e0(0x10f)](/\/$/,'');continue;case'9':this[_0xa8f1e0(0x148)]=a0_0x20d2db[_0xa8f1e0(0x1a0)][_0xa8f1e0(0x14c)]({'baseURL':this[_0xa8f1e0(0x16c)],'headers':{'x-api-key':this[_0xa8f1e0(0xd5)],'x-sdk-version':a0_0x1db43b[_0xa8f1e0(0x121)]}});continue;case'10':this[_0xa8f1e0(0xd5)]=_0x41364c[_0xa8f1e0(0xd5)]||process.env.RENTABOTS_API_KEY||process.env.AGENT_API_KEY||'';continue;case'11':this[_0xa8f1e0(0x1d2)]=null;continue;case'12':this[_0xa8f1e0(0x1e3)]=null;continue;case'13':super();continue;case'14':this[_0xa8f1e0(0x12d)]=null;continue;case'15':_0x15bb33[_0xa8f1e0(0x1b0)](_0x41364c[_0xa8f1e0(0x174)],![])&&(this[_0xa8f1e0(0x1d2)]=_0x15bb33[_0xa8f1e0(0xed)](typeof _0x41364c[_0xa8f1e0(0x174)],_0x15bb33[_0xa8f1e0(0x170)])?_0x41364c[_0xa8f1e0(0x174)]:a0_0x456c2e[_0xa8f1e0(0x19a)](process[_0xa8f1e0(0x14b)](),_0x15bb33[_0xa8f1e0(0x1ac)]));continue;}break;}}async[a0_0x4c0a59(0x1f9)](){const _0x184e00=a0_0x4c0a59,_0x551518={'Vared':_0x184e00(0x224),'CQiBX':function(_0x612d2e,_0x1851d5){return _0x612d2e>_0x1851d5;},'ZFEPh':_0x184e00(0x1a2),'Ytptf':_0x184e00(0x13d)};this[_0x184e00(0x150)](_0x184e00(0x1ff)+this[_0x184e00(0x16c)]+_0x184e00(0x171)+a0_0x1db43b[_0x184e00(0x121)]+_0x184e00(0xe2));try{this[_0x184e00(0x1d4)]();const _0x12f4ce=await this[_0x184e00(0x148)][_0x184e00(0xd9)](_0x551518[_0x184e00(0x1af)])[_0x184e00(0xf4)](_0x2e12f5=>{const _0x4e6587=_0x184e00;if(_0x2e12f5[_0x4e6587(0x132)])throw new Error(_0x2e12f5[_0x4e6587(0x132)][_0x4e6587(0x17e)][_0x4e6587(0x1d0)]||_0x4e6587(0x14a)+_0x2e12f5[_0x4e6587(0x132)][_0x4e6587(0xec)]);throw _0x2e12f5;});this[_0x184e00(0x12d)]=_0x12f4ce[_0x184e00(0x17e)][_0x184e00(0x1f7)]['id'],await this[_0x184e00(0x109)](),await this[_0x184e00(0x152)](),this[_0x184e00(0x15f)](),this[_0x184e00(0x218)](this[_0x184e00(0x1de)]),this[_0x184e00(0x150)](_0x184e00(0x176)+_0x12f4ce[_0x184e00(0x17e)][_0x184e00(0x1f7)][_0x184e00(0x10e)]);if(_0x551518[_0x184e00(0x15b)](this[_0x184e00(0x102)][_0x184e00(0x115)],0x0))try{await this[_0x184e00(0x101)]({'skills':this[_0x184e00(0x102)]});}catch(_0x455cb0){this[_0x184e00(0x150)](_0x551518[_0x184e00(0x1b2)],_0x551518[_0x184e00(0x1e7)]);}return{'success':!![],'agent':_0x12f4ce[_0x184e00(0x17e)][_0x184e00(0x1f7)]};}catch(_0x379e79){const _0x471714=_0x379e79[_0x184e00(0x132)]?.[_0x184e00(0x17e)]?.[_0x184e00(0x1d0)]||_0x379e79[_0x184e00(0x181)]||_0x184e00(0x1ba)+_0x379e79[_0x184e00(0x132)]?.[_0x184e00(0xec)];return{'success':![],'error':_0x471714};}}async[a0_0x4c0a59(0x152)](){const _0x151ec2=a0_0x4c0a59,_0x48ab10={'nmikS':_0x151ec2(0x1f4),'DKkZJ':function(_0x3f2275,_0x1c3400){return _0x3f2275>_0x1c3400;},'luRpn':_0x151ec2(0x181),'sksAt':_0x151ec2(0x113),'BXdiH':_0x151ec2(0x13d)};try{const _0x9cc77e=await this[_0x151ec2(0x148)][_0x151ec2(0xd9)](_0x48ab10[_0x151ec2(0x206)]),_0x3a89dd=_0x9cc77e[_0x151ec2(0x17e)][_0x151ec2(0x221)];if(_0x48ab10[_0x151ec2(0x1c4)](_0x3a89dd[_0x151ec2(0x115)],0x0)){this[_0x151ec2(0x150)](_0x151ec2(0x17f)+_0x3a89dd[_0x151ec2(0x115)]+_0x151ec2(0x19f));let _0x4b2e03='';for(const _0x463572 of _0x3a89dd){!this[_0x151ec2(0x1f8)][_0x151ec2(0x1ec)](_0x463572['id'])&&(this[_0x151ec2(0x1f8)][_0x151ec2(0x130)](_0x463572['id']),this[_0x151ec2(0x1b1)](_0x48ab10[_0x151ec2(0x205)],_0x463572),_0x4b2e03=_0x463572['id']);}_0x4b2e03&&await this[_0x151ec2(0x148)][_0x151ec2(0x210)](_0x48ab10[_0x151ec2(0xef)],{'messageId':_0x4b2e03});}}catch(_0x7ac09f){this[_0x151ec2(0x150)](_0x151ec2(0x1a4)+_0x7ac09f[_0x151ec2(0x181)],_0x48ab10[_0x151ec2(0x20c)]);}}async[a0_0x4c0a59(0x109)](){const _0x383fc4=a0_0x4c0a59,_0x3648ae={'LQluH':_0x383fc4(0x1d3),'jkvSJ':_0x383fc4(0x169),'QbEmS':_0x383fc4(0x13d)};try{const _0x1bcdac=await this[_0x383fc4(0x148)][_0x383fc4(0xd9)](_0x3648ae[_0x383fc4(0x177)]),_0x3b3159=_0x1bcdac[_0x383fc4(0x17e)][_0x383fc4(0x17e)][_0x383fc4(0x16a)](_0x18ad19=>_0x18ad19[_0x383fc4(0x12d)]===this[_0x383fc4(0x12d)]);for(const _0x228458 of _0x3b3159){if(!this[_0x383fc4(0xe9)][_0x383fc4(0x1ec)](_0x228458['id'])){const _0x3c8a08=this[_0x383fc4(0x17b)](_0x228458);this[_0x383fc4(0xe9)][_0x383fc4(0x11b)](_0x3c8a08['id'],_0x3c8a08),this[_0x383fc4(0x150)](_0x383fc4(0x18b)+_0x3c8a08[_0x383fc4(0xdd)]);}}this[_0x383fc4(0x166)]();}catch(_0x21f85e){this[_0x383fc4(0x150)](_0x3648ae[_0x383fc4(0x151)],_0x3648ae[_0x383fc4(0xd6)]);}}[a0_0x4c0a59(0x17b)](_0x4a571f){const _0x44268a=a0_0x4c0a59,_0x7643f9={'WFnOA':function(_0x15aad8,_0x317e87){return _0x15aad8(_0x317e87);}},_0x432d33=_0x7643f9[_0x44268a(0x1a5)](parseFloat,_0x4a571f[_0x44268a(0x1e8)][_0x44268a(0x10f)](/[^0-9.]/g,'')||'0');return{...exports[_0x44268a(0x184)][_0x44268a(0x1cc)](_0x4a571f),'budgetAmount':_0x432d33};}[a0_0x4c0a59(0x15f)](){const _0x35d848=a0_0x4c0a59,_0x2f4847={'eboae':_0x35d848(0x131),'fOSDS':_0x35d848(0x100),'GVcvE':_0x35d848(0x1d8),'DLNmf':_0x35d848(0x1ca),'jfxst':_0x35d848(0x21d),'xMjpc':_0x35d848(0x13d),'leoho':_0x35d848(0x149),'SANDL':_0x35d848(0x181),'SYdbt':_0x35d848(0x113),'vpvKz':_0x35d848(0xe5),'WmXnf':_0x35d848(0x15e),'kbfdo':_0x35d848(0x17a),'yTXmS':_0x35d848(0x1c0),'dDMNJ':_0x35d848(0x21b),'VytsF':_0x35d848(0xfe),'GADUw':_0x35d848(0x16f),'ECnTh':_0x35d848(0x214),'gNflD':_0x35d848(0x16b),'sGMAG':_0x35d848(0x1f9),'yZmsN':_0x35d848(0x1ae),'AEImC':_0x35d848(0x20e),'JpULz':_0x35d848(0x1a8),'HbvMY':_0x35d848(0xd7)};if(this[_0x35d848(0x15c)]&&this[_0x35d848(0x15c)][_0x35d848(0x1ca)])return;const _0x1921f7=this[_0x35d848(0x16c)][_0x35d848(0x10f)](_0x2f4847[_0x35d848(0x18c)],'');this[_0x35d848(0x15c)]=(0x0,a0_0x4d36f5['io'])(_0x1921f7,{'auth':{'token':this[_0x35d848(0xd5)]},'transports':[_0x2f4847[_0x35d848(0x21a)]],'reconnection':!![],'reconnectionAttempts':Infinity,'reconnectionDelay':0x3e8}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x195)],()=>{const _0x44332e=_0x35d848;this[_0x44332e(0x150)](_0x2f4847[_0x44332e(0x105)]),this[_0x44332e(0x15c)]?.[_0x44332e(0x1b1)](_0x2f4847[_0x44332e(0x1df)]);for(const _0x5b8130 of this[_0x44332e(0xe9)][_0x44332e(0x1ed)]()){this[_0x44332e(0x15c)]?.[_0x44332e(0x1b1)](_0x2f4847[_0x44332e(0xeb)],_0x5b8130);}this[_0x44332e(0x1b1)](_0x2f4847[_0x44332e(0x1c9)]);}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x167)],_0x304e83=>{const _0x134808=_0x35d848;this[_0x134808(0x150)](_0x134808(0x209)+_0x304e83+_0x134808(0x15a),_0x2f4847[_0x134808(0x1fa)]),this[_0x134808(0x109)]();}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x13b)],_0x55b540=>{const _0x3061ff=_0x35d848;this[_0x3061ff(0x150)](_0x3061ff(0x155)+_0x55b540,_0x2f4847[_0x3061ff(0xf3)]),this[_0x3061ff(0x1b1)](_0x2f4847[_0x3061ff(0xfa)],_0x55b540);}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x1eb)],_0x54f3ab=>{const _0xebb103=_0x35d848;try{const _0x54b6a5=exports[_0xebb103(0x122)][_0xebb103(0x1cc)](_0x54f3ab);!this[_0xebb103(0x1f8)][_0xebb103(0x1ec)](_0x54b6a5['id'])&&(this[_0xebb103(0x1f8)][_0xebb103(0x130)](_0x54b6a5['id']),this[_0xebb103(0x1b1)](_0x2f4847[_0xebb103(0x190)],_0x54b6a5),this[_0xebb103(0x148)][_0xebb103(0x210)](_0x2f4847[_0xebb103(0xde)],{'messageId':_0x54b6a5['id']})[_0xebb103(0xf4)](()=>{}));}catch(_0x4e6fc0){this[_0xebb103(0x150)](_0x2f4847[_0xebb103(0x156)],_0x2f4847[_0xebb103(0x13a)]);}}),this[_0x35d848(0x15c)]['on'](_0x2f4847[_0x35d848(0x19b)],_0x50b9b8=>{const _0x5bb655=_0x35d848;try{const _0x1e8ac4=this[_0x5bb655(0x17b)](_0x50b9b8);this[_0x5bb655(0x1b1)](_0x2f4847[_0x5bb655(0x163)],_0x1e8ac4);}catch(_0xc51fd9){}}),this[_0x35d848(0x15c)]['on'](_0x35d848(0x204)+this[_0x35d848(0x12d)],_0x369822=>{const _0x44ccec=_0x35d848;try{const _0x26d985=this[_0x44ccec(0x17b)](_0x369822);if(!this[_0x44ccec(0xe9)][_0x44ccec(0x1ec)](_0x26d985['id'])){const _0x37b7d1=_0x2f4847[_0x44ccec(0x1aa)][_0x44ccec(0x1a9)]('|');let _0x42066f=0x0;while(!![]){switch(_0x37b7d1[_0x42066f++]){case'0':this[_0x44ccec(0xe9)][_0x44ccec(0x11b)](_0x26d985['id'],_0x26d985);continue;case'1':this[_0x44ccec(0x150)](_0x44ccec(0xdb)+_0x26d985[_0x44ccec(0xdd)],_0x2f4847[_0x44ccec(0x226)]);continue;case'2':this[_0x44ccec(0x15c)]?.[_0x44ccec(0x1b1)](_0x2f4847[_0x44ccec(0xeb)],_0x26d985['id']);continue;case'3':this[_0x44ccec(0x166)]();continue;case'4':this[_0x44ccec(0x1b1)](_0x2f4847[_0x44ccec(0x1c8)],_0x26d985);continue;}break;}}}catch(_0x4f9d98){this[_0x44ccec(0x150)](_0x2f4847[_0x44ccec(0x18d)],_0x2f4847[_0x44ccec(0x13a)]);}});}[a0_0x4c0a59(0x1d4)](){const _0x453713=a0_0x4c0a59,_0x1d5fb0={'UNDom':_0x453713(0x180),'nujuO':_0x453713(0x13d)};if(!this[_0x453713(0x1d2)]||!a0_0x409af7[_0x453713(0x104)](this[_0x453713(0x1d2)]))return;try{const _0x3edc3d=JSON[_0x453713(0x1cc)](a0_0x409af7[_0x453713(0xe0)](this[_0x453713(0x1d2)],_0x1d5fb0[_0x453713(0x110)]));_0x3edc3d[_0x453713(0xe9)]&&Object[_0x453713(0x145)](_0x3edc3d[_0x453713(0xe9)])[_0x453713(0x1c3)](([_0x4b7b65,_0x16620e])=>{const _0x5a0c20=_0x453713;this[_0x5a0c20(0xe9)][_0x5a0c20(0x11b)](_0x4b7b65,_0x16620e);}),_0x3edc3d[_0x453713(0x21f)]&&_0x3edc3d[_0x453713(0x21f)][_0x453713(0x1c3)](_0x5a1c0b=>this[_0x453713(0x21f)][_0x453713(0x130)](_0x5a1c0b)),this[_0x453713(0x150)](_0x453713(0x1be)+this[_0x453713(0xe9)][_0x453713(0x135)]+_0x453713(0x199));}catch(_0x2211cd){this[_0x453713(0x150)](_0x453713(0x112)+_0x2211cd[_0x453713(0x181)],_0x1d5fb0[_0x453713(0x1ee)]);}}[a0_0x4c0a59(0x166)](){const _0x5ade38=a0_0x4c0a59,_0x20c4bd={'tpJue':_0x5ade38(0x13d)};if(!this[_0x5ade38(0x1d2)])return;try{const _0x5d8023={'activeMissions':Object[_0x5ade38(0x168)](this[_0x5ade38(0xe9)]),'bidCache':Array[_0x5ade38(0x10a)](this[_0x5ade38(0x21f)])};a0_0x409af7[_0x5ade38(0x1f3)](this[_0x5ade38(0x1d2)],JSON[_0x5ade38(0x1c2)](_0x5d8023,null,0x2));}catch(_0x297337){this[_0x5ade38(0x150)](_0x5ade38(0x213)+_0x297337[_0x5ade38(0x181)],_0x20c4bd[_0x5ade38(0xfc)]);}}async[a0_0x4c0a59(0x119)](_0x268c7d,_0x36ba2e=!![]){const _0x32800f=a0_0x4c0a59,_0x28a0db={'NzyrP':_0x32800f(0x20a)};this[_0x32800f(0x15c)]&&this[_0x32800f(0x15c)][_0x32800f(0x1b1)](_0x28a0db[_0x32800f(0x1bf)],{'jobId':_0x268c7d,'isTyping':_0x36ba2e});}async[a0_0x4c0a59(0x101)](_0x4633de){const _0x40528f=a0_0x4c0a59;if(!this[_0x40528f(0x12d)])return;return this[_0x40528f(0x148)][_0x40528f(0x210)](_0x40528f(0x1cf)+this[_0x40528f(0x12d)]+_0x40528f(0x17d),_0x4633de);}async[a0_0x4c0a59(0x164)](_0x3e9b4c){const _0x58589a=a0_0x4c0a59,_0x4bb683={'CacdJ':_0x58589a(0x1f6),'ptzBF':function(_0x224dfb,_0x36bed3){return _0x224dfb>=_0x36bed3;},'yuetL':function(_0x3aca0c,_0x1ed5f9){return _0x3aca0c&&_0x1ed5f9;},'mvgiQ':_0x58589a(0x1e0),'mSMrM':_0x58589a(0x21b),'kpEHb':_0x58589a(0x140),'cWobz':_0x58589a(0x13d),'jFEOP':_0x58589a(0x15e)};this[_0x58589a(0x150)](_0x4bb683[_0x58589a(0x1d9)]);try{const _0x1f7cf4=await this[_0x58589a(0x21c)]();for(const _0x22b150 of _0x1f7cf4){if(this[_0x58589a(0x21f)][_0x58589a(0x1ec)](_0x22b150['id']))continue;try{const _0xa26f8f=_0x3e9b4c[_0x58589a(0x208)]?_0x3e9b4c[_0x58589a(0x208)][_0x58589a(0x188)](_0x410dc3=>_0x22b150[_0x58589a(0xdd)][_0x58589a(0x1b6)]()[_0x58589a(0x1fc)](_0x410dc3[_0x58589a(0x1b6)]())||_0x22b150[_0x58589a(0x192)][_0x58589a(0x1b6)]()[_0x58589a(0x1fc)](_0x410dc3[_0x58589a(0x1b6)]())):!![],_0x3e87b9=_0x3e9b4c[_0x58589a(0x14d)]?_0x4bb683[_0x58589a(0x147)](_0x22b150[_0x58589a(0x144)],_0x3e9b4c[_0x58589a(0x14d)]):!![];if(_0x4bb683[_0x58589a(0x172)](_0xa26f8f,_0x3e87b9)){this[_0x58589a(0x150)](_0x58589a(0x1b9)+_0x22b150[_0x58589a(0xdd)]+_0x58589a(0x1e5)+_0x22b150[_0x58589a(0x144)]+')');const _0x37da0c=await this[_0x58589a(0x1b3)](_0x22b150['id'],_0x22b150[_0x58589a(0x144)],_0x4bb683[_0x58589a(0x14f)]);_0x37da0c[_0x58589a(0xf2)]?this[_0x58589a(0x150)](_0x58589a(0x207)+_0x22b150[_0x58589a(0xdd)],_0x4bb683[_0x58589a(0x11a)]):this[_0x58589a(0x150)](_0x58589a(0x161)+(_0x37da0c[_0x58589a(0x1d0)]||_0x4bb683[_0x58589a(0x124)]),_0x4bb683[_0x58589a(0x1e9)]);}}catch(_0x467a9a){this[_0x58589a(0x150)](_0x58589a(0xfd)+_0x467a9a[_0x58589a(0x181)],_0x4bb683[_0x58589a(0x143)]);}}}catch(_0x39b039){this[_0x58589a(0x150)](_0x58589a(0x162)+_0x39b039[_0x58589a(0x181)],_0x4bb683[_0x58589a(0x143)]);}}async[a0_0x4c0a59(0x21c)](){const _0x55053d=a0_0x4c0a59,_0x2e6875={'HuCUC':_0x55053d(0x127)},_0x5f016b=await this[_0x55053d(0x148)][_0x55053d(0xd9)](_0x2e6875[_0x55053d(0xe1)]);return _0x5f016b[_0x55053d(0x17e)][_0x55053d(0x17e)][_0x55053d(0x16a)](_0xe0abc7=>_0xe0abc7[_0x55053d(0xec)]===_0x55053d(0x178))[_0x55053d(0x18f)](_0x71adfc=>this[_0x55053d(0x17b)](_0x71adfc));}async[a0_0x4c0a59(0x1fe)](_0x21c375){const _0x471982=a0_0x4c0a59,_0x36c619=await this[_0x471982(0x148)][_0x471982(0xd9)](_0x471982(0x216)+_0x21c375);return this[_0x471982(0x17b)](_0x36c619[_0x471982(0x17e)][_0x471982(0x17a)]);}async[a0_0x4c0a59(0x1b3)](_0x169cac,_0x5c62bd,_0x1a0744){const _0x1f6a3b=a0_0x4c0a59,_0x41d1ee={'OtqEQ':_0x1f6a3b(0x1d5)};try{const _0x3ecab1=await this[_0x1f6a3b(0x148)][_0x1f6a3b(0x210)](_0x41d1ee[_0x1f6a3b(0x117)],{'jobId':_0x169cac,'amount':_0x5c62bd,'message':_0x1a0744,'apiKey':this[_0x1f6a3b(0xd5)]});return _0x3ecab1[_0x1f6a3b(0x17e)][_0x1f6a3b(0xf2)]&&(this[_0x1f6a3b(0x21f)][_0x1f6a3b(0x130)](_0x169cac),this[_0x1f6a3b(0x166)]()),_0x3ecab1[_0x1f6a3b(0x17e)];}catch(_0x5ae78f){return{'success':![],'error':_0x5ae78f[_0x1f6a3b(0x132)]?.[_0x1f6a3b(0x17e)]?.[_0x1f6a3b(0x1d0)]||_0x5ae78f[_0x1f6a3b(0x181)]};}}async[a0_0x4c0a59(0x1e6)](_0xbf43f4,_0x1cd1d1){const _0x46b82b=a0_0x4c0a59,_0x3525eb=await this[_0x46b82b(0x148)][_0x46b82b(0x210)](_0x46b82b(0x216)+_0xbf43f4+_0x46b82b(0x118),{'content':_0x1cd1d1,'senderId':this[_0x46b82b(0x12d)]});return _0x3525eb[_0x46b82b(0x17e)];}async[a0_0x4c0a59(0x189)](_0x2d7076){const _0x2c92de=a0_0x4c0a59,_0x47dbfd=await this[_0x2c92de(0x148)][_0x2c92de(0xd9)](_0x2c92de(0x216)+_0x2d7076+_0x2c92de(0x118));return a0_0x5578b7['z'][_0x2c92de(0x186)](exports[_0x2c92de(0x122)])[_0x2c92de(0x1cc)](_0x47dbfd[_0x2c92de(0x17e)][_0x2c92de(0x221)]);}async[a0_0x4c0a59(0x215)](_0x12601f,_0x16e89e,_0x2bd361){const _0x22840f=a0_0x4c0a59,_0x3c3d37={'CTotF':_0x22840f(0x1ea)},_0x4634d8=await this[_0x22840f(0x148)][_0x22840f(0x210)](_0x22840f(0x216)+_0x12601f+_0x22840f(0x141),{'url':_0x16e89e,'name':_0x2bd361,'type':_0x3c3d37[_0x22840f(0x1a3)],'uploaderId':this[_0x22840f(0x12d)]});return _0x4634d8[_0x22840f(0x17e)][_0x22840f(0xf2)];}async[a0_0x4c0a59(0x134)](_0x19093d,_0x361354,_0x2a27fc){const _0x39effc=a0_0x4c0a59,_0x22b23f={'CtBDl':function(_0x40cb46,_0x4fe467){return _0x40cb46===_0x4fe467;},'ZxJtP':_0x39effc(0x183),'WtFGQ':_0x39effc(0x15e)};if(!a0_0x409af7[_0x39effc(0x104)](_0x361354))throw new Error(_0x39effc(0x116)+_0x361354);if(_0x22b23f[_0x39effc(0x222)](a0_0x409af7[_0x39effc(0x1dc)](_0x361354)[_0x39effc(0x135)],0x0))throw new Error(_0x39effc(0xee)+_0x361354);const _0x241291=_0x2a27fc||a0_0x456c2e[_0x39effc(0x194)](_0x361354);this[_0x39effc(0x150)](_0x39effc(0x15d)+_0x241291+_0x39effc(0x10c));try{const _0x40ba22=await this[_0x39effc(0x148)][_0x39effc(0xd9)](_0x39effc(0x13c)+_0x241291),{url:_0x2ac4f7,handleUploadUrl:_0x1d664c}=_0x40ba22[_0x39effc(0x17e)],_0x161ff5=a0_0x409af7[_0x39effc(0xe0)](_0x361354);return await a0_0x20d2db[_0x39effc(0x1a0)][_0x39effc(0x11f)](_0x2ac4f7,_0x161ff5,{'headers':{'Content-Type':_0x22b23f[_0x39effc(0x203)]}}),this[_0x39effc(0x215)](_0x19093d,_0x2ac4f7,_0x241291);}catch(_0x7d82ac){this[_0x39effc(0x150)](_0x39effc(0x1dd)+_0x7d82ac[_0x39effc(0x181)],_0x22b23f[_0x39effc(0x111)]);throw _0x7d82ac;}}async[a0_0x4c0a59(0x220)](_0xd4d06d){const _0x2bf0a0=a0_0x4c0a59,_0x5a1d26={'NXEPt':_0x2bf0a0(0x1f7)},_0x30f2f4=await this[_0x2bf0a0(0x148)][_0x2bf0a0(0x210)](_0x2bf0a0(0x216)+_0xd4d06d+_0x2bf0a0(0x1e4),{'userId':this[_0x2bf0a0(0x12d)],'role':_0x5a1d26[_0x2bf0a0(0x211)]});return _0x30f2f4[_0x2bf0a0(0x17e)][_0x2bf0a0(0xf2)]&&(this[_0x2bf0a0(0xe9)][_0x2bf0a0(0xf0)](_0xd4d06d),this[_0x2bf0a0(0x166)]()),_0x30f2f4[_0x2bf0a0(0x17e)];}async[a0_0x4c0a59(0x225)](_0x18cd94,_0x5ab139){const _0x479ad4=a0_0x4c0a59;if(!this[_0x479ad4(0x12d)])return;return this[_0x479ad4(0x148)][_0x479ad4(0x210)](_0x479ad4(0x216)+_0x18cd94+_0x479ad4(0x138),{'name':_0x5ab139});}async[a0_0x4c0a59(0x179)](_0xf200ce,_0x4220bd,_0x5483d2,_0x325320=![]){const _0x225ea7=a0_0x4c0a59,_0x3d898f={'TvxTl':_0x225ea7(0x180),'JVKZN':_0x225ea7(0x13d)};if(!this[_0x225ea7(0x12d)])return;let _0x1abae8=_0x5483d2;if(!_0x325320&&a0_0x409af7[_0x225ea7(0x104)](_0x5483d2))try{this[_0x225ea7(0x150)](_0x225ea7(0xe3)+_0x5483d2),_0x1abae8=a0_0x409af7[_0x225ea7(0xe0)](_0x5483d2,_0x3d898f[_0x225ea7(0x1d6)]);}catch(_0x238213){this[_0x225ea7(0x150)](_0x225ea7(0x137)+_0x238213[_0x225ea7(0x181)],_0x3d898f[_0x225ea7(0x1e2)]);}return this[_0x225ea7(0x148)][_0x225ea7(0x210)](_0x225ea7(0x216)+_0xf200ce+_0x225ea7(0xe8),{'path':_0x4220bd,'content':_0x1abae8,'isBlob':_0x325320});}async[a0_0x4c0a59(0x1f0)](_0x3ac1a7){const _0x43bd53=a0_0x4c0a59;if(!this[_0x43bd53(0x12d)])return;return this[_0x43bd53(0x148)][_0x43bd53(0x210)](_0x43bd53(0x1cf)+this[_0x43bd53(0x12d)]+_0x43bd53(0x17d),{'tokensUsed':_0x3ac1a7});}async[a0_0x4c0a59(0x212)](_0x19d12a,_0x1ad60c){const _0x45987e=a0_0x4c0a59;if(!this[_0x45987e(0x12d)])return;return this[_0x45987e(0x148)][_0x45987e(0x210)](_0x45987e(0x216)+_0x19d12a+_0x45987e(0xd8),{'progress':_0x1ad60c});}async[a0_0x4c0a59(0x1db)](_0x29489a){const _0x138cc1=a0_0x4c0a59;if(!this[_0x138cc1(0x12d)])return;return this[_0x138cc1(0x148)][_0x138cc1(0x210)](_0x138cc1(0x1cf)+this[_0x138cc1(0x12d)]+_0x138cc1(0xdf),{'message':_0x29489a});}async[a0_0x4c0a59(0x128)](_0x527cd1,_0x3ee2d3=a0_0x4c0a59(0x21d)){const _0x2fd825=a0_0x4c0a59,_0x538330={'eHKAd':function(_0xcaf5b5,_0x13028b){return _0xcaf5b5===_0x13028b;},'ZWoKK':_0x2fd825(0x15e),'poAcw':_0x2fd825(0x14e),'Oslwd':_0x2fd825(0x13d),'PnmjE':_0x2fd825(0xf8),'EfFsL':_0x2fd825(0x16e)};if(!this[_0x2fd825(0x12d)])return;try{await this[_0x2fd825(0x148)][_0x2fd825(0x210)](_0x2fd825(0x1cf)+this[_0x2fd825(0x12d)]+_0x2fd825(0x11e),{'message':_0x527cd1,'level':_0x3ee2d3});if(this[_0x2fd825(0x136)]){const _0x42ec32=_0x538330[_0x2fd825(0x1fd)](_0x3ee2d3,_0x538330[_0x2fd825(0x103)])?_0x538330[_0x2fd825(0x1bb)]:_0x538330[_0x2fd825(0x1fd)](_0x3ee2d3,_0x538330[_0x2fd825(0x16d)])?_0x538330[_0x2fd825(0x129)]:_0x538330[_0x2fd825(0xea)];console[_0x2fd825(0x128)](_0x42ec32+'['+_0x3ee2d3+_0x2fd825(0x1a7)+_0x527cd1);}}catch(_0x41342d){this[_0x2fd825(0x136)]&&console[_0x2fd825(0x1d0)](_0x2fd825(0x217)+_0x41342d[_0x2fd825(0x181)]);}}[a0_0x4c0a59(0x218)](_0x19736f=0x7530){const _0x128af3=a0_0x4c0a59,_0x4bd9ec={'rEUBR':function(_0x309935,_0x33b32d){return _0x309935(_0x33b32d);},'ABPWX':function(_0x4c1b6b,_0x3179d6,_0x26ad07){return _0x4c1b6b(_0x3179d6,_0x26ad07);}};if(!this[_0x128af3(0x12d)])return;if(this[_0x128af3(0x1e3)])_0x4bd9ec[_0x128af3(0x173)](clearInterval,this[_0x128af3(0x1e3)]);this[_0x128af3(0xe6)](),this[_0x128af3(0x1e3)]=_0x4bd9ec[_0x128af3(0x1b8)](setInterval,()=>this[_0x128af3(0xe6)](),_0x19736f);}async[a0_0x4c0a59(0xe6)](){const _0x22ae91=a0_0x4c0a59,_0x4c3766={'NBJYY':_0x22ae91(0x19d),'MzLhG':_0x22ae91(0x13d)};if(!this[_0x22ae91(0x12d)])return;try{await this[_0x22ae91(0x148)][_0x22ae91(0x210)](_0x22ae91(0x1cf)+this[_0x22ae91(0x12d)]+_0x22ae91(0x1ab),{},{'headers':{'Authorization':_0x22ae91(0x191)+this[_0x22ae91(0xd5)]}});}catch(_0x269a9e){this[_0x22ae91(0x150)](_0x4c3766[_0x22ae91(0x114)],_0x4c3766[_0x22ae91(0x19e)]);}}[a0_0x4c0a59(0x150)](_0xa096b0,_0x4aa0a7=a0_0x4c0a59(0x21d)){const _0x4b8956=a0_0x4c0a59;if(this[_0x4b8956(0x136)])console[_0x4b8956(0x128)](_0x4b8956(0x1b7)+_0xa096b0);}[a0_0x4c0a59(0x10b)](_0x1eba02){const _0x128655=a0_0x4c0a59,_0xbba4cf={'oPLCB':_0x128655(0x181)};this['on'](_0xbba4cf[_0x128655(0x1d1)],_0x1eba02);}[a0_0x4c0a59(0x202)](_0x2c19c8){const _0x4e78cc=a0_0x4c0a59,_0x213736={'CscmW':_0x4e78cc(0x17a)};this['on'](_0x213736[_0x4e78cc(0x1bc)],_0x2c19c8);}[a0_0x4c0a59(0x1d7)](_0x58d4bc){const _0x5e1f38=a0_0x4c0a59,_0x4e80f1={'qGwEz':_0x5e1f38(0xfe)};this['on'](_0x4e80f1[_0x5e1f38(0x223)],_0x58d4bc);}}exports[a0_0x4c0a59(0x20f)]=a0_0x1db43b,a0_0x1db43b[a0_0x4c0a59(0x121)]=a0_0x1e36fd,exports[a0_0x4c0a59(0x1a0)]=a0_0x1db43b;
1
+ 'use strict';const a0_0x584b42=a0_0x5779;function a0_0x5779(_0x52785f,_0x1059e6){_0x52785f=_0x52785f-0x92;const _0x117d71=a0_0x1234();let _0x3a59d9=_0x117d71[_0x52785f];if(a0_0x5779['lybiUf']===undefined){var _0x4f4533=function(_0x235afa){const _0x31d03='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4046ce='',_0xaaa81f='',_0x19977e=_0x4046ce+_0x4f4533;for(let _0x3b3fc4=0x0,_0x232e9a,_0x2802f4,_0x7746c=0x0;_0x2802f4=_0x235afa['charAt'](_0x7746c++);~_0x2802f4&&(_0x232e9a=_0x3b3fc4%0x4?_0x232e9a*0x40+_0x2802f4:_0x2802f4,_0x3b3fc4++%0x4)?_0x4046ce+=_0x19977e['charCodeAt'](_0x7746c+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x232e9a>>(-0x2*_0x3b3fc4&0x6)):_0x3b3fc4:0x0){_0x2802f4=_0x31d03['indexOf'](_0x2802f4);}for(let _0x892a7=0x0,_0x27505e=_0x4046ce['length'];_0x892a7<_0x27505e;_0x892a7++){_0xaaa81f+='%'+('00'+_0x4046ce['charCodeAt'](_0x892a7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xaaa81f);};a0_0x5779['SNTfrU']=_0x4f4533,a0_0x5779['mzXPKP']={},a0_0x5779['lybiUf']=!![];}const _0x123461=_0x117d71[0x0],_0x5779af=_0x52785f+_0x123461,_0x5131b3=a0_0x5779['mzXPKP'][_0x5779af];if(!_0x5131b3){const _0x2b53d8=function(_0xedf9b2){this['IcbJrZ']=_0xedf9b2,this['uHzzIH']=[0x1,0x0,0x0],this['FhUKJY']=function(){return'newState';},this['aJJxbp']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['ErJULV']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2b53d8['prototype']['EfIOKW']=function(){const _0x1c0f9d=new RegExp(this['aJJxbp']+this['ErJULV']),_0xc36f6=_0x1c0f9d['test'](this['FhUKJY']['toString']())?--this['uHzzIH'][0x1]:--this['uHzzIH'][0x0];return this['kOLDkV'](_0xc36f6);},_0x2b53d8['prototype']['kOLDkV']=function(_0x2d0cd8){if(!Boolean(~_0x2d0cd8))return _0x2d0cd8;return this['QzWttS'](this['IcbJrZ']);},_0x2b53d8['prototype']['QzWttS']=function(_0x5b554b){for(let _0x2b0c9b=0x0,_0x1f8686=this['uHzzIH']['length'];_0x2b0c9b<_0x1f8686;_0x2b0c9b++){this['uHzzIH']['push'](Math['round'](Math['random']())),_0x1f8686=this['uHzzIH']['length'];}return _0x5b554b(this['uHzzIH'][0x0]);},new _0x2b53d8(a0_0x5779)['EfIOKW'](),_0x3a59d9=a0_0x5779['SNTfrU'](_0x3a59d9),a0_0x5779['mzXPKP'][_0x5779af]=_0x3a59d9;}else _0x3a59d9=_0x5131b3;return _0x3a59d9;}(function(_0xfdf5b,_0x18c5ab){const _0x41b1cb=a0_0x5779,_0x2e9e47=_0xfdf5b();while(!![]){try{const _0x6d4fca=parseInt(_0x41b1cb(0x117))/0x1*(parseInt(_0x41b1cb(0xbc))/0x2)+-parseInt(_0x41b1cb(0x15f))/0x3+-parseInt(_0x41b1cb(0x12a))/0x4*(parseInt(_0x41b1cb(0x1eb))/0x5)+parseInt(_0x41b1cb(0x1ad))/0x6+-parseInt(_0x41b1cb(0x1e3))/0x7*(parseInt(_0x41b1cb(0x1fd))/0x8)+parseInt(_0x41b1cb(0x216))/0x9*(-parseInt(_0x41b1cb(0x20e))/0xa)+-parseInt(_0x41b1cb(0x1f1))/0xb*(-parseInt(_0x41b1cb(0x231))/0xc);if(_0x6d4fca===_0x18c5ab)break;else _0x2e9e47['push'](_0x2e9e47['shift']());}catch(_0x4b8e36){_0x2e9e47['push'](_0x2e9e47['shift']());}}}(a0_0x1234,0xf2807));var a0_0x4ee582=this&&this[a0_0x584b42(0x1f7)]||(Object[a0_0x584b42(0x1ba)]?function(_0xa876f2,_0x27be7d,_0x2f5608,_0x259000){const _0x2f0485=a0_0x584b42,_0x384ab3={'xroEG':function(_0x4f5a79,_0x36ed8c){return _0x4f5a79===_0x36ed8c;},'hcWgA':function(_0x4e5873,_0x3e340d){return _0x4e5873 in _0x3e340d;},'tfvfk':_0x2f0485(0xe3)};if(_0x384ab3[_0x2f0485(0xa3)](_0x259000,undefined))_0x259000=_0x2f5608;var _0xae9fe1=Object[_0x2f0485(0x164)](_0x27be7d,_0x2f5608);(!_0xae9fe1||(_0x384ab3[_0x2f0485(0x154)](_0x384ab3[_0x2f0485(0x21c)],_0xae9fe1)?!_0x27be7d[_0x2f0485(0x109)]:_0xae9fe1[_0x2f0485(0x13e)]||_0xae9fe1[_0x2f0485(0x18d)]))&&(_0xae9fe1={'enumerable':!![],'get':function(){return _0x27be7d[_0x2f5608];}}),Object[_0x2f0485(0x10c)](_0xa876f2,_0x259000,_0xae9fe1);}:function(_0x5b8a93,_0x44df68,_0x59cc48,_0x5bdbef){const _0x303349=a0_0x584b42,_0x251645={'VIeoz':function(_0x26e2c1,_0x42b6e1){return _0x26e2c1===_0x42b6e1;}};if(_0x251645[_0x303349(0x229)](_0x5bdbef,undefined))_0x5bdbef=_0x59cc48;_0x5b8a93[_0x5bdbef]=_0x44df68[_0x59cc48];}),a0_0x49dbed=this&&this[a0_0x584b42(0x17a)]||(Object[a0_0x584b42(0x1ba)]?function(_0x1b0701,_0x20f2f4){const _0x2b1ab0=a0_0x584b42,_0x7a31fb={'HNwSL':_0x2b1ab0(0x19e)};Object[_0x2b1ab0(0x10c)](_0x1b0701,_0x7a31fb[_0x2b1ab0(0xb2)],{'enumerable':!![],'value':_0x20f2f4});}:function(_0x14e84d,_0x4ff9bd){const _0x316295=a0_0x584b42,_0x5e380c={'kcUuZ':_0x316295(0x19e)};_0x14e84d[_0x5e380c[_0x316295(0x138)]]=_0x4ff9bd;}),a0_0x27b05c=this&&this[a0_0x584b42(0x150)]||(function(){const _0x17f93b=a0_0x584b42,_0x398c52={'uqmwt':_0x17f93b(0x11e),'RuaQF':function(_0x287cc0,_0x1f0768){return _0x287cc0(_0x1f0768);},'YoFBn':_0x17f93b(0xbd),'aMPID':function(_0x5014e4,_0x4e1335){return _0x5014e4!=_0x4e1335;},'lVchs':function(_0x24c4e5,_0x163162){return _0x24c4e5(_0x163162);},'OzcfX':function(_0x49945f,_0x4670c4){return _0x49945f<_0x4670c4;},'WknFO':function(_0x4cd314,_0x37e7ea){return _0x4cd314!==_0x37e7ea;},'gQEpe':_0x17f93b(0x19e),'POfVO':function(_0x4de89f,_0x181122,_0x49a0fb,_0x2df209){return _0x4de89f(_0x181122,_0x49a0fb,_0x2df209);},'hrBpD':function(_0x51b649,_0x267ec7,_0x2e8665){return _0x51b649(_0x267ec7,_0x2e8665);},'zBRee':function(_0x832ccf,_0x5c4042,_0x3fb399){return _0x832ccf(_0x5c4042,_0x3fb399);},'KtwYU':function(_0x737c01){return _0x737c01();}},_0x585493=(function(){let _0x151e54=!![];return function(_0x495d6c,_0x496faa){const _0x4dc0c1=_0x151e54?function(){const _0x478db8=a0_0x5779;if(_0x496faa){const _0x4a0300=_0x496faa[_0x478db8(0x22e)](_0x495d6c,arguments);return _0x496faa=null,_0x4a0300;}}:function(){};return _0x151e54=![],_0x4dc0c1;};}()),_0x4f028e=_0x398c52[_0x17f93b(0x171)](_0x585493,this,function(){const _0x4385f1=_0x17f93b;return _0x4f028e[_0x4385f1(0xcb)]()[_0x4385f1(0x209)](_0x398c52[_0x4385f1(0x1bc)])[_0x4385f1(0xcb)]()[_0x4385f1(0x155)](_0x4f028e)[_0x4385f1(0x209)](_0x398c52[_0x4385f1(0x1bc)]);});_0x398c52[_0x17f93b(0xae)](_0x4f028e);var _0x356638=function(_0xd5fd88){const _0x3bab16=_0x17f93b;return _0x356638=Object[_0x3bab16(0x1f3)]||function(_0x1f65b7){const _0x2d064c=_0x3bab16;var _0x2c29e9=[];for(var _0x58276e in _0x1f65b7)if(Object[_0x2d064c(0x18f)][_0x2d064c(0xb8)][_0x2d064c(0x13a)](_0x1f65b7,_0x58276e))_0x2c29e9[_0x2c29e9[_0x2d064c(0x1d3)]]=_0x58276e;return _0x2c29e9;},_0x398c52[_0x3bab16(0x98)](_0x356638,_0xd5fd88);};return function(_0x36118e){const _0xa24903=_0x17f93b,_0x3b5f80=_0x398c52[_0xa24903(0x1af)][_0xa24903(0x199)]('|');let _0x263899=0x0;while(!![]){switch(_0x3b5f80[_0x263899++]){case'0':if(_0x398c52[_0xa24903(0x107)](_0x36118e,null)){for(var _0xaed0bc=_0x398c52[_0xa24903(0x220)](_0x356638,_0x36118e),_0x8af16b=0x0;_0x398c52[_0xa24903(0x1e2)](_0x8af16b,_0xaed0bc[_0xa24903(0x1d3)]);_0x8af16b++)if(_0x398c52[_0xa24903(0x12c)](_0xaed0bc[_0x8af16b],_0x398c52[_0xa24903(0x11b)]))_0x398c52[_0xa24903(0x140)](a0_0x4ee582,_0x98ac23,_0x36118e,_0xaed0bc[_0x8af16b]);}continue;case'1':var _0x98ac23={};continue;case'2':return _0x98ac23;case'3':_0x398c52[_0xa24903(0x22f)](a0_0x49dbed,_0x98ac23,_0x36118e);continue;case'4':if(_0x36118e&&_0x36118e[_0xa24903(0x109)])return _0x36118e;continue;}break;}};}()),a0_0x30a6df=this&&this[a0_0x584b42(0x13f)]||function(_0x272ba8){const _0x2d94d6=a0_0x584b42;return _0x272ba8&&_0x272ba8[_0x2d94d6(0x109)]?_0x272ba8:{'default':_0x272ba8};};Object[a0_0x584b42(0x10c)](exports,a0_0x584b42(0x109),{'value':!![]}),exports[a0_0x584b42(0x16f)]=exports[a0_0x584b42(0x205)]=exports[a0_0x584b42(0xa0)]=exports[a0_0x584b42(0x202)]=exports[a0_0x584b42(0x1da)]=void 0x0;const a0_0x4b7674=a0_0x30a6df(require(a0_0x584b42(0x110))),a0_0x5a67a1=require(a0_0x584b42(0x1e4)),a0_0x1fe711=require(a0_0x584b42(0x1cf)),a0_0x16d7f1=require(a0_0x584b42(0x161)),a0_0x5539b1=a0_0x27b05c(require('fs')),a0_0x5ae149=a0_0x27b05c(require(a0_0x584b42(0x1c1))),a0_0x4a908f=require(a0_0x584b42(0x236));exports[a0_0x584b42(0x1da)]=a0_0x1fe711['z'][a0_0x584b42(0x14f)]([a0_0x584b42(0xdb),a0_0x584b42(0x15a),a0_0x584b42(0x157),a0_0x584b42(0x188),a0_0x584b42(0x218),a0_0x584b42(0xf6)]),exports[a0_0x584b42(0x202)]=a0_0x1fe711['z'][a0_0x584b42(0x14f)]([a0_0x584b42(0x182),a0_0x584b42(0xa7),a0_0x584b42(0x1fe),a0_0x584b42(0x1b1),a0_0x584b42(0xd7)]),exports[a0_0x584b42(0xa0)]=a0_0x1fe711['z'][a0_0x584b42(0x15b)]({'id':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'title':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'description':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'budget':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'category':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'status':exports[a0_0x584b42(0x202)],'createdAt':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'progress':a0_0x1fe711['z'][a0_0x584b42(0x11f)]()[a0_0x584b42(0x21e)]()}),exports[a0_0x584b42(0x205)]=a0_0x1fe711['z'][a0_0x584b42(0x15b)]({'id':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'jobId':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'content':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'senderId':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'createdAt':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'sender':a0_0x1fe711['z'][a0_0x584b42(0x15b)]({'id':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'displayName':a0_0x1fe711['z'][a0_0x584b42(0x10f)](),'type':a0_0x1fe711['z'][a0_0x584b42(0x14f)]([a0_0x584b42(0x1b4),a0_0x584b42(0x192)])})});let a0_0x2f47c7=a0_0x584b42(0x239);try{const a0_0x5ef524=a0_0x5ae149[a0_0x584b42(0x1b2)](__dirname,'..',a0_0x584b42(0x103));if(a0_0x5539b1[a0_0x584b42(0x222)](a0_0x5ef524)){const a0_0x4acf02=JSON[a0_0x584b42(0x183)](a0_0x5539b1[a0_0x584b42(0x17e)](a0_0x5ef524,a0_0x584b42(0x106)));a0_0x2f47c7=a0_0x4acf02[a0_0x584b42(0x1b5)];}}catch(a0_0x2034b7){}function a0_0x1234(){const _0x117e88=['zhnnCuS','ywDLBNrZlW','nfHmyuPfqW','nhWXFdb8m3WY','EMXNu2S','D29YA3nWywnLuM9VDa','AM9I','B25ozxDkB2i','cI0Gu0rlifzLCNnPB246ihy','wXTBmZvTu0rlg1SWBv0G','rvjst1i','zxjYB3i','AM9ICY8','BwfYA0nVBxbSzxrL','z09OA2i','C2v0','C2v0uhjVz3jLC3m','Dg9tDhjPBMC','g1SZmw0','s1vQCeS','mtL8ohWXnNWXohW1Fdn8mtv8mtr8mtn8mNWXmhW0Fdf8mhWXmxW5FdeYFdD8nNWXnW','z2v0t3bLBK1PC3nPB25Z','l3bYB2DYzxnZ','ugLSvgy','zNjVBq','uMvHzgLUzYbSB2nHBcbMAwXLoIa','4P2mie1HBNvHBcbIAwqGzMfPBgvKoIa','AvfywhK','shLpAM4','zgLZChv0zwq','rMfPBgvKihrVihbYB2nLC3mGBwLZC2LVBIbHC3nPz25Tzw50','uwz2s2y','DhjPBq','y29Kzv9Nzw5LCMf0Aw9U','CMvJB25Uzwn0','CNn0rhq','ihvUCMvHzcbTzxnZywDLCY4','ve5Lz1C','CvnyEgK','zMv0y2HvBNjLywrnzxnZywDLCW','ugv4Ew4','z2v0','AfrOs24','u2nqAvu','4PYfifTeruXjvKvswv0GvgHLigzVBgXVD2LUzYbMAwXLCYbOyxzLigjLzw4GyxjJAgL2zwqGAw4GEw91CIbZzwn1CMuGCMvWB3nPDg9YEtOk','qM5ewMi','uMvJB3zLCMvKigfJDgL2zsbTAxnZAw9UigzYB20Gy2XVDwq6ia','AM9PBL9TyxjRzxrWBgfJzq','zKnlvKm','zNjVBuvUDhjPzxm','C2vUzeHLyxj0yMvHDa','q2fUBM90ihvWBg9HzcbLBxb0EsbMAwXLoIa','8j+oRYbbDxrVCgLSB3q6iejPzgrPBMCGB24GiG','CuDLEfK','zgLZy29UBMvJDa','Bg9Nsw50zxjUywW','Chv0','ChvZAa','Dfz6y0W','ywDLBNrZl21L','DhjHBNnSyxrPB24','zuDYtvK','tg9JywWGD29YA3nWywnLigLUAxrPywXPEMvKigf0oIa','C3rHDgvqyxrO','Dg9mB3DLCKnHC2u','l2nVBxbSzxrL','zM9YrwfJAa','ywDLBNrZl21Ll3vUCMvHza','CMvZB2X2zq','l3vWBg9Hzd9MAwXLBMfTzt0','CY4UlG','igzPBgvZigzVCIbTAxnZAw9Uia','Aw5JBhvKzxm','CgfJA2fNzs5QC29U','rwnAu1i','r2fVtM0','DxrMoa','yu1qsuq','z3feEg8','x19LC01VzhvSzq','zw1PDa','cI0Gqxv0B3bPBg90oIa','zgvMAw5LuhjVCgvYDhK','A3Lnsvy','vfLSt28','C3rYAw5N','yxHPB3m','zgvSAxzLCG','uLvotKLorYdILRBVUi8','C3rHDfn5BMm','BuvztvC','C3LUy0zYB21dBg91za','ugvjz2G','mtq5odiXs29vEeXm','ywDLBNrjza','C2f2zvn0yxrL','AKnMAgS','z1ffCgu','g1SZmM0','xrTBmg0G','kcGOlISPkYKRksSK','BNvTyMvY','l25VDgLMEq','AezACLG','BwTKAxjtEw5J','l2fWAq','AhLArhu','y3DK','C2XPy2u','mxWZFdj8mhW0','sKnev2u','Aw5PDfnVy2TLDa','nta2nZjcyNnjB1O','l3jLCg8VzMLSzxm','v2TUrK8','zgvIDwC','zNDbC2m','ru12vK0','u0rlx1zfuLnjt04','r29Us1G','qxv0B3bPBg90ihnJB3v0igzHAwXLzdOG','B3jTq2q','y2fWywjPBgL0AwvZ','yMLKCW','AgfZ','uM9kA1u','A2nvDvO','yxv0B3bPBg90vgLTzxi','y2fSBa','D29iq0q','4P2mievYCM9YigzPBMrPBMCGBwLZC2LVBJOG','ChLos08','D3jPDgfIBgu','x19PBxbVCNrezwzHDwX0','ue9MvK8','qKfLvK8','qNzYEvm','q29TBwfUzcbMAw5PC2HLzcb3AxrOignVzguG','zMXot2K','CgLZyKy','t25SAw5LigfZoIa','l2jPzca','AgfUzgXLsw5JB21PBMDnzxnZywDL','yxbPs2v5','D29YA3nWywnL','CMvWB3j0vxnHz2u','Dw9XywG','teDZuhO','zhfcy2u','zw51Bq','x19PBxbVCNrtDgfY','u1vdq0vtuW','C3bHD24','rMfPBgvKihrVihnHDMuGC3rHDgu6ia','Agnxz0e','y29UC3rYDwn0B3i','CxDfv28','zgf0yv9HBMfSExnPCW','zxHLy3v0zq','AgvHCNrIzwf0vgLTzxi','D2vIx2jYB3DZAw5N','B2jQzwn0','l2zPBgvZ','AgfUzgXLu3rHDhvZuMvXDwvZDa','yxbP','mZyWnZy1ow9YwMnouq','C2v0vhLWAw5N','zxzLBNrZ','C3rKzxjY','yMfZzvvYBa','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','seXeCwK','DwTqr1e','Bg9Hzfn0yxrL','8j+KLIbBu1rbvfvtifjfue9svf0klsbby3rPDMuGtwLZC2LVBNm6ia','EerLzhe','vxbSB2fKigzHAwXLzdOG','zgvSzxrL','sLLHu28','s05ZA0i','rgvSAxzLCMLUzYa','qwDLBNq','Ahr0Chm6lY9Yzw50ywjVDhmUy29Tl2fWAq','EKjszwu','AvfRwxu','DhLWAw5Nx3n0yxrL','uujlr1y','DgL0Bgu','v0DSuvq','svfluwC','q05Lzwm','zgvSAxzLCMfIBgu','x19ZzxrnB2r1BgvezwzHDwX0','Exf4Be4','ywDLBNrFC3rHDguUANnVBG','AwvQvwu','CMvHzezPBgvtEw5J','DhLWzq','lIbjignHBIbLEgvJDxrLihrOAxmGBwLZC2LVBIb3AxrOigHPz2GGChjLy2LZAw9UlG','yMfZzw5HBwu','B3bLBG','CgfYC2u','sKXnAe0','tg9HzgvKihn0yxrLoIa','rMLSzsbUB3qGzM91BMq6ia','C2vUzgvY','Aw1Hz2vFz2vUzxjHDgLVBG','C3vJy2vZCW','ugf1C2vK','C3rKB3v0','tKHiqw4','y29UzMLNDxjHyMXL','BwLZC2LVBL9HC3nPz25Lzf8','ChjVDg90ExbL','y29UBMvJDa','sfPIBwi','ywDLBNq','twfUDwfSigjPzcbYzxf1zxn0zwqGyNKGB3DUzxiU','l21LC3nHz2vZ','u2nbEeK','ssbHBsbHBIbHDxrVBM9TB3vZihvUAxqGB3b0Aw1PEMvKigzVCIa','yMLKvgvTCgXHDgu','C2vUze1LC3nHz2u','C3bSAxq','Ce1qu1y','q2HLEeW','l3jLCg8','z2v0twvZC2fNzxm','zgvMyxvSDa','l3jLC3vTzq','ruTZzha','lI4U','C2vLBK1LC3nHz2vZ','BgfZDfnJB3v0vgLTzq','B25iAxjLza','Dg1Xrve','A0PSCK8','thzYwKG','BwvZC2fNzq','ELLgtuO','ywDLBNrZl21Ll2fJAW','BM90Awz5t3DUzxi','zMLSDgvY','ndy0ote0oezSt2XQEq','yxv0B3bPBg90ugf1C2vK','ww9gqM4','CMvWBgfJzq','yxjJAgL2zwq','AM9PBG','y2XVC2u','AhvTyw4','DMvYC2LVBG','zgvZy3jPChrPB24','yNvKz2v0qw1VDw50','v0fstG','uMvTB3rLihjLCg9ZAxrVCNKGAw5PDgLHBgL6zwqU','y3jLyxrL','zw50CMLLCW','DxfTD3q','su5gtW','igf0DgvTChrZlG','zxHLy3v0Aw9Ux2vYCM9Y','rMfPBgvKihrVihn5BMmGy2fWywjPBgL0AwvZihrVigDYAwqSignVBNrPBNvPBMCUlI4','Cgf0Aa','vxbSB2fKAw5NigzPBgu6ia','z2v0twLZC2LVBG','werIuwK','8j+AGcbbDxrVCgLSB3qGzw5NywDLzc4Gu2nVDxrPBMCGzxzLCNKG','C3rHCNrbDxrVCgLSB3q','CMvZCg9UC2u','Cg9ZDa','uhzxvNm','DM1YALi','swzQB00','AgfUzgXLtwfUDwfSqMLKuMvXDwvZDa','sgvHCNrIzwf0igzHAwXLza','iI4UlG','EM9K','l3bHDxnL','rhvitLC','zxHLy3v0Aw9Ux2XVzW','BgvUz3rO','ywn0AxzLtwLZC2LVBNm','qwn0AxzL','Bg9N','AM9ICW','BMv3x21LC3nHz2u','C2nVDxrPBMDjBNrLCNzHBa','q2fWywjPBgL0EvnJAgvTyq','wfPXuuu','v2vIu29JA2v0ifjLy29UBMvJDgvKigfMDgvYia','l2HLyxj0yMvHDa','g1SZm20','A2v5D29Yzhm','Dg9mB2nHBgvuAw1Lu3rYAw5N','C1bxAxG','t3PJzLG','n2POzwLIEq','C29JA2v0lMLVlwnSAwvUDa','y2rmDxG','AM9PBL9TAxnZAw9U','u2vYDMvYievYCM9YoIa','l21HBMfNzq','q2f1z2H0ihvWig9Uia','B0fUsKK','nJiWtNruy0XJ','EvDUAxK','BwLUqNvKz2v0','CgvYC2LZDfn0yxrL','8j+oIsbnAxnZAw9UiefZC2LNBMvKoIa','AgvHCNrIzwf0sw50zxj2ywW','mtaWmdC4t09ru3LK','D3jPDgvgAwXLu3LUyW','z2v0t3DUuhjVCgvYDhLoyw1LCW','C3rHCNrizwfYDgjLyxq','BgXHDw4','DxbSB2fKrMLSzq','x19JCMvHDgvcAw5KAw5N','4O+477Ipief1Dg9WAwXVDcbqqvvtruqGyNKGB3DUzxiU','l2XVz3m','rMfPBgvKihrVihbHCNnLigLUy29TAw5NihnVy2TLDcbTzxnZywDL','uwzhEK0','AM9ICZ9ZDgf0Dxm9Aw5FChjVz3jLC3m','nJq4ndq5nNjQr0T4BW','y29TCgXLDgvK','u0jHBfq','4PYfifn1y2nLC3nMDwXSEsbWBgfJzwqGyMLKig9UoIa','yLfsENO','sM9Iu3rHDhvZu2nOzw1H','cI0GqwDLBNqGsuq6ia','cI0GtgfZDcbnyxjRzxrWBgfJzsbty2fUoIa','twvZC2fNzvnJAgvTyq','zgf0yq','rNvZwM0','v2vIu29JA2v0ieXPBMSGrxn0ywjSAxnOzwqU','C2vHCMnO','surKEwu','y3jLyxrLtwLZC2LVBLjLCg8','4PA277Ipief1Dg9WAwXVDcbsrvnvtuveigj5ig93BMvYlG','DxbKyxrLuhjVzMLSzq','nJbHs3PUtLK','DeH5Bxu','q1jfsNi','qMvHCMvYia','B25nzxnZywDL','tMv2zxi','y29UBMvJDgvK','y29UDgvUDa','mJiZodeWmLvrA1DPCa','C29Tzq','yxv0B21HDgLVBG','ig1PC3nPB25ZlcbbDxrVCgLSB3q6ia','BwfW','C3rHDhvZ','Dgz2zMS','A0TUtey','B3b0Aw9UywW','ywrK','BfzJAhm','y2f0y2G','zxHPC3rZu3LUyW','sfDqz3i','rxHLy3v0Aw5NignVBw1HBMqGAw4G','zgLZy29UBMvJDgvK','yMLK','wNrNzNq','C2L6zq','vKLLB3O','C3rHCNrZv2L0Aa','uefvu0veiokpUo+4JW','s21iBMO','yxnZAwDUBwvUDa','yxbWBhK','AhjcCeq','icHtreSGDG','nJu4ofLbC3L2wa','4P2mifjLBNrHqM90CYbbueKGs2v5igLZig1PC3nPBMCUifbHC3mGAxqGAw4GDgHLignVBNn0CNvJDg9Yig9YihnLDcbsru5uqujpvfnFqvbjx0TfwsbPBIaUzw52','zw5YAwnOsM9I','CwzIyxu','yxbWBgLJyxrPB24VB2n0zxqTC3rYzwfT','y2HPBgrFChjVy2vZCW','wXTBmZfTu0rlievsuK9sg1SWBv0GrMfPBgvKihrVihn0CMvHBsbSB2CGDg8GzgfZAgjVyxjKoIa','uMvWB3nPDg9YEsbPBML0AwfSAxPHDgLVBIb3yxjUAw5NoIa','mc43lJe','q2XVDwqGC3LUyYbMywLSzwqSihjLBhLPBMCGB24GBg9JywWGC3rHDguU','qKnoD1C','ufLhsK0','y2f0zwDVCNK','uNf0vMK','zeLqtge','ks4UlG','AM9Iswq','uNvHuuy','DxbSB2fKrgvSAxzLCMfIBgu','zgLZCgXHEu5HBwu','uu5vCwO','wMTbChi','yNvKz2v0','BMv3x2PVyG','q29UBMvJDgLUzYb0BYbhCMLKoIa','sM9Iu2nOzw1H','B09PD04','yxjYyxK','EhjVruC','DhnPExe','v2vIu29JA2v0ierPC2nVBM5Ly3rLzdOG','yMLKq2fJAgu','Aw5FChjVz3jLC3m','u3rHDhvZienVzgu6ia','sw5IB3GGy2HLy2SGzMfPBgvKoIa','BwvZC2fNzxm','D2vIC29JA2v0','l3n0yxr1CW','t0nzDw4','s3r3wvu','Aw5PDgLHBgL6zu1PC3nPB24','ChvZAfrVuMvWBW','rxzLBNrfBwL0DgvY','se53u0W','rMfPBgvKihrVihjLywqGBg9JywWGzMLSztOG','A2v5CW','C29JA2v0','C3rYAw5NAwz5','rMfPBgvKihrVigXVywqGC3rHDgu6ia','AgfZt3DUuhjVCgvYDhK','8j+tNsbBu1ret1vuxsa'];a0_0x1234=function(){return _0x117e88;};return a0_0x1234();}class a0_0xbc1ebb extends a0_0x16d7f1[a0_0x584b42(0xb1)]{constructor(_0x471d7a={}){const _0x3c9b8d=a0_0x584b42,_0x4f57c9={'BCNwW':_0x3c9b8d(0xce),'QBKGV':_0x3c9b8d(0x170),'pisbF':_0x3c9b8d(0x232),'PeIgh':function(_0x3d6aec,_0x196a44){return _0x3d6aec!==_0x196a44;},'KUjpK':function(_0xd4f190,_0x4b5a02){return _0xd4f190===_0x4b5a02;},'iejUe':_0x3c9b8d(0x10f),'IDdye':_0x3c9b8d(0x17c),'KNskB':_0x3c9b8d(0x14a)},_0x5db7b5=_0x4f57c9[_0x3c9b8d(0x23b)][_0x3c9b8d(0x199)]('|');let _0x5c9555=0x0;while(!![]){switch(_0x5db7b5[_0x5c9555++]){case'0':this[_0x3c9b8d(0x12d)]=_0x471d7a[_0x3c9b8d(0x12d)]||![];continue;case'1':this[_0x3c9b8d(0x163)]=(_0x471d7a[_0x3c9b8d(0x163)]||_0x4f57c9[_0x3c9b8d(0x174)])[_0x3c9b8d(0x1b0)](/\/$/,'');continue;case'2':this[_0x3c9b8d(0x1ae)]=![];continue;case'3':this[_0x3c9b8d(0x1d4)]=new Map();continue;case'4':this[_0x3c9b8d(0x149)]=_0x471d7a[_0x3c9b8d(0x149)]||process.env.RENTABOTS_API_KEY||process.env.AGENT_API_KEY||'';continue;case'5':this[_0x3c9b8d(0xf9)]=null;continue;case'6':if(!this[_0x3c9b8d(0x149)])throw new Error(_0x4f57c9[_0x3c9b8d(0x145)]);continue;case'7':_0x4f57c9[_0x3c9b8d(0x116)](_0x471d7a[_0x3c9b8d(0x1ee)],![])&&(this[_0x3c9b8d(0xf9)]=_0x4f57c9[_0x3c9b8d(0xcd)](typeof _0x471d7a[_0x3c9b8d(0x1ee)],_0x4f57c9[_0x3c9b8d(0x17d)])?_0x471d7a[_0x3c9b8d(0x1ee)]:a0_0x5ae149[_0x3c9b8d(0x1b2)](process[_0x3c9b8d(0x125)](),_0x4f57c9[_0x3c9b8d(0x20a)]));continue;case'8':this[_0x3c9b8d(0x118)]=null;continue;case'9':this[_0x3c9b8d(0x1f0)]=_0x471d7a[_0x3c9b8d(0x1f0)]||0x7530;continue;case'10':this[_0x3c9b8d(0x1a3)]=null;continue;case'11':this[_0x3c9b8d(0x134)]=_0x471d7a[_0x3c9b8d(0x134)]||[];continue;case'12':this[_0x3c9b8d(0xbf)]=_0x471d7a[_0x3c9b8d(0xbf)]||a0_0x5ae149[_0x3c9b8d(0x1b2)](process[_0x3c9b8d(0x125)](),_0x4f57c9[_0x3c9b8d(0x16d)]);continue;case'13':this[_0x3c9b8d(0x139)]=null;continue;case'14':this[_0x3c9b8d(0x1a2)]=new Set();continue;case'15':this[_0x3c9b8d(0xa6)]=new Set();continue;case'16':this[_0x3c9b8d(0xb5)]=null;continue;case'17':this[_0x3c9b8d(0x15e)]=a0_0x4b7674[_0x3c9b8d(0x19e)][_0x3c9b8d(0x1ba)]({'baseURL':this[_0x3c9b8d(0x163)],'headers':{'x-api-key':this[_0x3c9b8d(0x149)],'x-sdk-version':a0_0xbc1ebb[_0x3c9b8d(0x130)]}});continue;case'18':this[_0x3c9b8d(0x159)]=null;continue;case'19':super();continue;}break;}}async[a0_0x584b42(0x190)](){const _0x13ab64=a0_0x584b42,_0x1794ad={'zlgSk':_0x13ab64(0xf5),'TYlOo':function(_0x13c5d8,_0x49f7a7){return _0x13c5d8>_0x49f7a7;},'ScPiU':_0x13ab64(0x1c0),'hFZrX':_0x13ab64(0x1b8)};this[_0x13ab64(0xf1)](_0x13ab64(0x9f)+this[_0x13ab64(0x163)]+_0x13ab64(0x230)+a0_0xbc1ebb[_0x13ab64(0x130)]+_0x13ab64(0x96));try{this[_0x13ab64(0x167)]();const _0x5e07f2=await this[_0x13ab64(0x15e)][_0x13ab64(0xe3)](_0x1794ad[_0x13ab64(0xbe)])[_0x13ab64(0x221)](_0x24fe85=>{const _0x2dfc4f=_0x13ab64;if(_0x24fe85[_0x2dfc4f(0x1c7)])throw new Error(_0x24fe85[_0x2dfc4f(0x1c7)][_0x2dfc4f(0x206)][_0x2dfc4f(0xc5)]||_0x2dfc4f(0x1e7)+_0x24fe85[_0x2dfc4f(0x1c7)][_0x2dfc4f(0x21b)]);throw _0x24fe85;});this[_0x13ab64(0x118)]=_0x5e07f2[_0x13ab64(0x206)][_0x13ab64(0x192)]['id'],await this[_0x13ab64(0x115)](),await this[_0x13ab64(0xe1)](),this[_0x13ab64(0x129)](),this[_0x13ab64(0x1f4)](this[_0x13ab64(0x1f0)]),this[_0x13ab64(0xf1)](_0x13ab64(0x146)+_0x5e07f2[_0x13ab64(0x206)][_0x13ab64(0x192)][_0x13ab64(0x9a)]);if(_0x1794ad[_0x13ab64(0x10e)](this[_0x13ab64(0x134)][_0x13ab64(0x1d3)],0x0))try{await this[_0x13ab64(0x20d)]({'skills':this[_0x13ab64(0x134)]});}catch(_0x552e0a){this[_0x13ab64(0xf1)](_0x1794ad[_0x13ab64(0xe5)],_0x1794ad[_0x13ab64(0x121)]);}return{'success':!![],'agent':_0x5e07f2[_0x13ab64(0x206)][_0x13ab64(0x192)]};}catch(_0x1dd54f){const _0xae5696=_0x1dd54f[_0x13ab64(0x1c7)]?.[_0x13ab64(0x206)]?.[_0x13ab64(0xc5)]||_0x1dd54f[_0x13ab64(0x1a8)]||_0x13ab64(0xa8)+_0x1dd54f[_0x13ab64(0x1c7)]?.[_0x13ab64(0x21b)];return{'success':![],'error':_0xae5696};}}async[a0_0x584b42(0xe1)](){const _0x4902bd=a0_0x584b42,_0x2e1cf6={'QNUqj':_0x4902bd(0xfd),'gqDxo':function(_0x5c8b1c,_0x4b9363){return _0x5c8b1c>_0x4b9363;},'GaoNm':_0x4902bd(0x1aa),'DuHNW':_0x4902bd(0x1b8)};try{const _0x41b3aa=await this[_0x4902bd(0x15e)][_0x4902bd(0xe3)](_0x2e1cf6[_0x4902bd(0x9b)]),_0x551551=_0x41b3aa[_0x4902bd(0x206)][_0x4902bd(0xaa)];if(_0x2e1cf6[_0x4902bd(0x108)](_0x551551[_0x4902bd(0x1d3)],0x0)){this[_0x4902bd(0xf1)](_0x4902bd(0x1e9)+_0x551551[_0x4902bd(0x1d3)]+_0x4902bd(0xde));let _0x596668='';for(const _0x107eba of _0x551551){!this[_0x4902bd(0x1a2)][_0x4902bd(0x136)](_0x107eba['id'])&&(this[_0x4902bd(0x1a2)][_0x4902bd(0x21f)](_0x107eba['id']),this[_0x4902bd(0x148)](_0x107eba),_0x596668=_0x107eba['id']);}_0x596668&&await this[_0x4902bd(0x15e)][_0x4902bd(0x1c8)](_0x2e1cf6[_0x4902bd(0x105)],{'messageId':_0x596668});}}catch(_0x4252b9){this[_0x4902bd(0xf1)](_0x4902bd(0xa9)+_0x4252b9[_0x4902bd(0x1a8)],_0x2e1cf6[_0x4902bd(0x1d1)]);}}async[a0_0x584b42(0x115)](){const _0x63b99e=a0_0x584b42,_0x21f025={'ukPGQ':_0x63b99e(0x1fc),'QfvKf':_0x63b99e(0x23a),'FusZm':_0x63b99e(0x1b8)};try{const _0x48a8ef=await this[_0x63b99e(0x15e)][_0x63b99e(0xe3)](_0x21f025[_0x63b99e(0x166)]),_0x1f3dc0=_0x48a8ef[_0x63b99e(0x206)][_0x63b99e(0x206)][_0x63b99e(0x1ac)](_0x34ce3c=>_0x34ce3c[_0x63b99e(0x118)]===this[_0x63b99e(0x118)]);for(const _0x1d436f of _0x1f3dc0){if(!this[_0x63b99e(0x1d4)][_0x63b99e(0x136)](_0x1d436f['id'])){const _0x1e1908=this[_0x63b99e(0x233)](_0x1d436f);this[_0x63b99e(0x1d4)][_0x63b99e(0xc9)](_0x1e1908['id'],_0x1e1908),this[_0x63b99e(0xf1)](_0x63b99e(0xe8)+_0x1e1908[_0x63b99e(0x175)]);}}this[_0x63b99e(0x119)]();}catch(_0x579401){this[_0x63b99e(0xf1)](_0x21f025[_0x63b99e(0xd9)],_0x21f025[_0x63b99e(0x207)]);}}[a0_0x584b42(0x233)](_0x25affb){const _0x5e5938=a0_0x584b42,_0x3a4729={'dsMqK':function(_0x273aa5,_0x127cc4){return _0x273aa5(_0x127cc4);}},_0xcdc22d=_0x3a4729[_0x5e5938(0xba)](parseFloat,_0x25affb[_0x5e5938(0x9d)]?.[_0x5e5938(0x1b0)](/[^0-9.]/g,'')||'0');return{...exports[_0x5e5938(0xa0)][_0x5e5938(0x183)](_0x25affb),'budgetAmount':_0xcdc22d};}[a0_0x584b42(0x129)](){const _0x2fb8dc=a0_0x584b42,_0x59d5ca={'JYaSo':_0x2fb8dc(0x208),'kyMIV':_0x2fb8dc(0xe9),'HZbmb':_0x2fb8dc(0x1e6),'qSXxi':_0x2fb8dc(0x214),'bQRzz':_0x2fb8dc(0x1bd),'Pexyn':_0x2fb8dc(0x1b8),'BvryS':_0x2fb8dc(0x225),'OCYun':_0x2fb8dc(0x1aa),'LvrZH':_0x2fb8dc(0x1fa),'XDbQi':_0x2fb8dc(0xc4),'QfGzM':_0x2fb8dc(0xc0),'pyNKO':_0x2fb8dc(0x127),'ScAxI':_0x2fb8dc(0x151),'iQXXy':_0x2fb8dc(0x22d),'qfbau':_0x2fb8dc(0xd8),'qGexY':_0x2fb8dc(0x123),'SBalT':_0x2fb8dc(0xab),'PvWVs':_0x2fb8dc(0x190),'RqtVi':_0x2fb8dc(0xdc),'tsiyq':_0x2fb8dc(0xf0),'CNeec':_0x2fb8dc(0x1d8),'tmqEQ':_0x2fb8dc(0x9e)};if(this[_0x2fb8dc(0xb5)]&&this[_0x2fb8dc(0xb5)][_0x2fb8dc(0x214)])return;const _0x45e45c=this[_0x2fb8dc(0x163)][_0x2fb8dc(0x1b0)](_0x59d5ca[_0x2fb8dc(0xef)],'');this[_0x2fb8dc(0xb5)]=(0x0,a0_0x5a67a1['io'])(_0x45e45c,{'auth':{'token':this[_0x2fb8dc(0x149)]},'transports':[_0x59d5ca[_0x2fb8dc(0x1ff)]],'reconnection':!![],'reconnectionAttempts':Infinity,'reconnectionDelay':0x3e8}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x1c9)],()=>{const _0x45463f=_0x2fb8dc;this[_0x45463f(0xf1)](_0x59d5ca[_0x45463f(0x16c)]),this[_0x45463f(0xb5)]?.[_0x45463f(0x10a)](_0x59d5ca[_0x45463f(0x10d)]);for(const _0x45a03c of this[_0x45463f(0x1d4)][_0x45463f(0xb4)]()){this[_0x45463f(0xb5)]?.[_0x45463f(0x10a)](_0x59d5ca[_0x45463f(0x191)],_0x45a03c);}this[_0x45463f(0x10a)](_0x59d5ca[_0x45463f(0xe0)]);}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x94)],_0x1fe0f2=>{const _0x44b22c=_0x2fb8dc;this[_0x44b22c(0xf1)](_0x44b22c(0x1dc)+_0x1fe0f2+_0x44b22c(0x1be),_0x59d5ca[_0x44b22c(0x201)]),this[_0x44b22c(0x115)]();}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0xa4)],_0x5d8264=>{const _0x3a750d=_0x2fb8dc;this[_0x3a750d(0xf1)](_0x3a750d(0xa5)+_0x5d8264,_0x59d5ca[_0x3a750d(0xe2)]),this[_0x3a750d(0x10a)](_0x59d5ca[_0x3a750d(0x142)],_0x5d8264);}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x178)],_0x2ede5f=>{const _0x9ebd4d=_0x2fb8dc;try{const _0x23ba68=exports[_0x9ebd4d(0x205)][_0x9ebd4d(0x183)](_0x2ede5f);!this[_0x9ebd4d(0x1a2)][_0x9ebd4d(0x136)](_0x23ba68['id'])&&(this[_0x9ebd4d(0x1a2)][_0x9ebd4d(0x21f)](_0x23ba68['id']),this[_0x9ebd4d(0x148)](_0x23ba68),this[_0x9ebd4d(0x15e)][_0x9ebd4d(0x1c8)](_0x59d5ca[_0x9ebd4d(0xad)],{'messageId':_0x23ba68['id']})[_0x9ebd4d(0x221)](()=>{}));}catch(_0x36936b){this[_0x9ebd4d(0xf1)](_0x59d5ca[_0x9ebd4d(0x1a7)],_0x59d5ca[_0x9ebd4d(0x1c4)]);}}),this[_0x2fb8dc(0xb5)]['on'](_0x59d5ca[_0x2fb8dc(0x1a5)],_0x507cc0=>{const _0x3775a9=_0x2fb8dc;try{const _0x1ba0b2=this[_0x3775a9(0x233)](_0x507cc0);this[_0x3775a9(0x10a)](_0x59d5ca[_0x3775a9(0x1fb)],_0x1ba0b2);}catch(_0x406f29){}}),this[_0x2fb8dc(0xb5)]['on'](_0x2fb8dc(0x18e)+this[_0x2fb8dc(0x118)],_0x217cda=>{const _0x3d40a8=_0x2fb8dc;try{const _0x1ca51e=this[_0x3d40a8(0x233)](_0x217cda);if(!this[_0x3d40a8(0x1d4)][_0x3d40a8(0x136)](_0x1ca51e['id'])){const _0x140eb1=_0x59d5ca[_0x3d40a8(0x13d)][_0x3d40a8(0x199)]('|');let _0x1cf2c0=0x0;while(!![]){switch(_0x140eb1[_0x1cf2c0++]){case'0':this[_0x3d40a8(0xf1)](_0x3d40a8(0x1ef)+_0x1ca51e[_0x3d40a8(0x175)],_0x59d5ca[_0x3d40a8(0x195)]);continue;case'1':this[_0x3d40a8(0x1d4)][_0x3d40a8(0xc9)](_0x1ca51e['id'],_0x1ca51e);continue;case'2':this[_0x3d40a8(0xb5)]?.[_0x3d40a8(0x10a)](_0x59d5ca[_0x3d40a8(0x191)],_0x1ca51e['id']);continue;case'3':this[_0x3d40a8(0x119)]();continue;case'4':this[_0x3d40a8(0x10a)](_0x59d5ca[_0x3d40a8(0xd5)],_0x1ca51e);continue;}break;}}}catch(_0xc44e1e){this[_0x3d40a8(0xf1)](_0x59d5ca[_0x3d40a8(0x234)],_0x59d5ca[_0x3d40a8(0x1c4)]);}});}[a0_0x584b42(0x148)](_0x23063a){const _0x563f86=a0_0x584b42,_0x397d85={'ormCd':function(_0x1f6dde,_0x41593f){return _0x1f6dde===_0x41593f;},'xDedq':_0x563f86(0x1b4),'woHCD':function(_0x376cb5,_0x2aafe0){return _0x376cb5===_0x2aafe0;},'hThKn':_0x563f86(0xac),'dIPLa':function(_0x9257e9,_0x3a6e4e){return _0x9257e9===_0x3a6e4e;},'iQkYu':_0x563f86(0x1d0),'hyZDu':_0x563f86(0x1f8),'JCDWe':function(_0x590e3c,_0x342765){return _0x590e3c===_0x342765;},'gOhkb':_0x563f86(0x19f),'yWniy':_0x563f86(0x20c),'sPWix':_0x563f86(0x147),'EcZSR':_0x563f86(0x1a8)};if(_0x397d85[_0x563f86(0x133)](_0x23063a[_0x563f86(0x187)][_0x563f86(0x17f)],_0x397d85[_0x563f86(0x169)])){const _0x5ae0e3=_0x23063a[_0x563f86(0x215)][_0x563f86(0xda)]();if(_0x397d85[_0x563f86(0x13b)](_0x5ae0e3,_0x397d85[_0x563f86(0xe4)])){this[_0x563f86(0x15d)](_0x23063a[_0x563f86(0x97)]);return;}else{if(_0x397d85[_0x563f86(0x95)](_0x5ae0e3,_0x397d85[_0x563f86(0x172)])){this[_0x563f86(0x1ae)]=!![],this[_0x563f86(0x119)](),this[_0x563f86(0x198)](_0x23063a[_0x563f86(0x97)],_0x397d85[_0x563f86(0x124)]);return;}else{if(_0x397d85[_0x563f86(0x128)](_0x5ae0e3,_0x397d85[_0x563f86(0xc8)])){this[_0x563f86(0x1ae)]=![],this[_0x563f86(0x119)](),this[_0x563f86(0x198)](_0x23063a[_0x563f86(0x97)],_0x397d85[_0x563f86(0x1ec)]);return;}else{if(_0x5ae0e3[_0x563f86(0x22a)](_0x397d85[_0x563f86(0x1e1)])){const _0x4f19d4=_0x5ae0e3[_0x563f86(0x1b0)](_0x397d85[_0x563f86(0x1e1)],'')[_0x563f86(0xda)]();this[_0x563f86(0x1cc)](_0x23063a[_0x563f86(0x97)],_0x4f19d4);return;}}}}}this[_0x563f86(0x10a)](_0x397d85[_0x563f86(0x104)],_0x23063a);}async[a0_0x584b42(0x15d)](_0x14ba85){const _0x74ea3f=a0_0x584b42,_0x26ff47={'fCKVC':_0x74ea3f(0x213),'PilTf':_0x74ea3f(0x22b),'RoJkU':_0x74ea3f(0x112)},_0x56b1ee=this[_0x74ea3f(0x1d4)][_0x74ea3f(0x228)],_0x37f86a=this[_0x74ea3f(0x1a3)]?this[_0x74ea3f(0x1a3)][_0x74ea3f(0x1e0)]():_0x26ff47[_0x74ea3f(0xea)],_0x17d833=_0x74ea3f(0x168)+_0x56b1ee+_0x74ea3f(0x10b)+(this[_0x74ea3f(0x1ae)]?_0x26ff47[_0x74ea3f(0xd1)]:_0x26ff47[_0x74ea3f(0x137)])+_0x74ea3f(0x204)+_0x37f86a+_0x74ea3f(0x203)+this[_0x74ea3f(0x118)]+_0x74ea3f(0xc2)+a0_0xbc1ebb[_0x74ea3f(0x130)];await this[_0x74ea3f(0x198)](_0x14ba85,_0x17d833);}async[a0_0x584b42(0x1cc)](_0x3d0678,_0x1a144a){const _0x513969=a0_0x584b42,_0x2aecdd={'oOiwN':_0x513969(0x193)};try{const _0x19615e=await this[_0x513969(0x1c3)](_0x1a144a),_0x52e7d8=await this[_0x513969(0x226)](_0x19615e['id'],_0x19615e[_0x513969(0x1b7)],_0x2aecdd[_0x513969(0xa1)]);_0x52e7d8[_0x513969(0x189)]?await this[_0x513969(0x198)](_0x3d0678,_0x513969(0x200)+_0x19615e[_0x513969(0x175)]):await this[_0x513969(0x198)](_0x3d0678,_0x513969(0xd4)+_0x52e7d8[_0x513969(0xc5)]);}catch(_0x4e0151){await this[_0x513969(0x198)](_0x3d0678,_0x513969(0x13c)+_0x4e0151[_0x513969(0x1a8)]);}}[a0_0x584b42(0x1c6)](_0x46409e={}){const _0x4e4a36=a0_0x584b42,_0x82c0f3={'dqBce':function(_0x39fb42,_0x16e387){return _0x39fb42>=_0x16e387;},'HWPgr':function(_0x24c4b7,_0x149874){return _0x24c4b7&&_0x149874;},'TNegW':_0x4e4a36(0xc4),'GonKX':function(_0x3b18bb,_0x3584e1){return _0x3b18bb/_0x3584e1;},'eGrMY':function(_0x21ff64){return _0x21ff64();},'mEYMW':function(_0x332a3b,_0x17a0fd,_0x2bca74){return _0x332a3b(_0x17a0fd,_0x2bca74);}},_0x54fd88=_0x46409e[_0x4e4a36(0x1d9)]||0xea60;this[_0x4e4a36(0xf1)](_0x4e4a36(0x1c5)+_0x82c0f3[_0x4e4a36(0x131)](_0x54fd88,0x3e8)+_0x4e4a36(0x100));const _0x25f0b8=async()=>{const _0x5023a8=_0x4e4a36;if(this[_0x5023a8(0x1ae)])return;this[_0x5023a8(0x1a3)]=new Date();try{const _0x18b99f=await this[_0x5023a8(0xcf)]();for(const _0x96530d of _0x18b99f){if(this[_0x5023a8(0xa6)][_0x5023a8(0x136)](_0x96530d['id']))continue;const _0x183b02=_0x46409e[_0x5023a8(0x1df)]?_0x46409e[_0x5023a8(0x1df)][_0x5023a8(0x217)](_0x17da59=>_0x96530d[_0x5023a8(0x175)][_0x5023a8(0xfa)]()[_0x5023a8(0x102)](_0x17da59[_0x5023a8(0xfa)]())||_0x96530d[_0x5023a8(0x1b6)][_0x5023a8(0xfa)]()[_0x5023a8(0x102)](_0x17da59[_0x5023a8(0xfa)]())):!![],_0x1aa2fc=_0x46409e[_0x5023a8(0x1ed)]?_0x82c0f3[_0x5023a8(0x14e)](_0x96530d[_0x5023a8(0x1b7)],_0x46409e[_0x5023a8(0x1ed)]):!![];if(_0x82c0f3[_0x5023a8(0x223)](_0x183b02,_0x1aa2fc)){const _0x4fc00c=_0x46409e[_0x5023a8(0x197)]||_0x5023a8(0x196)+_0x96530d[_0x5023a8(0x93)]+_0x5023a8(0x180);this[_0x5023a8(0xf1)](_0x5023a8(0xee)+_0x96530d[_0x5023a8(0x175)]+_0x5023a8(0x1ce)),await this[_0x5023a8(0x226)](_0x96530d['id'],_0x96530d[_0x5023a8(0x1b7)],_0x4fc00c);}}}catch(_0x3f9da5){this[_0x5023a8(0xf1)](_0x5023a8(0x132)+_0x3f9da5[_0x5023a8(0x1a8)],_0x82c0f3[_0x5023a8(0xdf)]);}};_0x82c0f3[_0x4e4a36(0xf7)](_0x25f0b8),this[_0x4e4a36(0x139)]=_0x82c0f3[_0x4e4a36(0x114)](setInterval,_0x25f0b8,_0x54fd88);}async[a0_0x584b42(0xaf)](_0x4a63e3,_0x47c12a){const _0x1e2e38=a0_0x584b42,_0x5ec131={'llaun':_0x1e2e38(0x1b8)},_0x48e2f8=a0_0x5ae149[_0x1e2e38(0x1b2)](this[_0x1e2e38(0xbf)],_0x4a63e3);!a0_0x5539b1[_0x1e2e38(0x222)](_0x48e2f8)&&a0_0x5539b1[_0x1e2e38(0x122)](_0x48e2f8,{'recursive':!![]});this[_0x1e2e38(0xf1)](_0x1e2e38(0xf8)+_0x48e2f8);try{await this[_0x1e2e38(0x20b)](_0x4a63e3,_0x47c12a),this[_0x1e2e38(0xf1)](_0x1e2e38(0x1b9));}catch(_0x528db1){this[_0x1e2e38(0xf1)](_0x1e2e38(0x238)+_0x528db1,_0x5ec131[_0x1e2e38(0x1f5)]);}return a0_0x5ae149[_0x1e2e38(0xfe)](_0x48e2f8);}async[a0_0x584b42(0x158)](_0x1ac956,_0x2b14dd){const _0x4be61c=a0_0x584b42,_0x41962e={'PYGJM':_0x4be61c(0x1d2),'LGsPz':_0x4be61c(0x1bf),'flNOi':function(_0x169a78,_0x3a34f4){return _0x169a78(_0x3a34f4);},'HyOjn':_0x4be61c(0x206),'pMPSV':_0x4be61c(0x1b3)},_0x134c40=a0_0x5ae149[_0x4be61c(0x1b2)](this[_0x4be61c(0xbf)],_0x1ac956);return this[_0x4be61c(0xf1)](_0x4be61c(0x224)+_0x1ac956+':\x20'+_0x2b14dd),new Promise(_0x37659b=>{const _0x94ac8e=_0x4be61c,_0x3e3b89={'Ztgft':function(_0x2a6501,_0x34b9be){const _0x394bc3=a0_0x5779;return _0x41962e[_0x394bc3(0x144)](_0x2a6501,_0x34b9be);}};let _0x336955='';const [_0x40a6a9,..._0x203808]=_0x2b14dd[_0x94ac8e(0x199)]('\x20'),_0x2b4bf7=(0x0,a0_0x4a908f[_0x94ac8e(0x152)])(_0x40a6a9,_0x203808,{'cwd':_0x134c40,'shell':!![]});_0x2b4bf7[_0x94ac8e(0x18b)]['on'](_0x41962e[_0x94ac8e(0xd6)],_0x4851d0=>{const _0x2b034c=_0x94ac8e,_0xa44067=_0x4851d0[_0x2b034c(0xcb)]();_0x336955+=_0xa44067,this[_0x2b034c(0x10a)](_0x41962e[_0x2b034c(0x92)],{'jobId':_0x1ac956,'chunk':_0xa44067});if(this[_0x2b034c(0x12d)])this[_0x2b034c(0x198)](_0x1ac956,_0x2b034c(0xb9)+_0xa44067[_0x2b034c(0x126)](0x0,0xc8)+_0x2b034c(0x1a1))[_0x2b034c(0x221)](()=>{});}),_0x2b4bf7[_0x94ac8e(0x162)]['on'](_0x41962e[_0x94ac8e(0xd6)],_0x4f3e5d=>{const _0x3f0833=_0x94ac8e;_0x336955+=_0x4f3e5d[_0x3f0833(0xcb)](),this[_0x3f0833(0x10a)](_0x41962e[_0x3f0833(0x14d)],{'jobId':_0x1ac956,'chunk':_0x4f3e5d[_0x3f0833(0xcb)]()});}),_0x2b4bf7['on'](_0x41962e[_0x94ac8e(0x19a)],_0x279ff4=>{const _0x80ec88=_0x94ac8e;this[_0x80ec88(0xf1)](_0x80ec88(0x143)+_0x279ff4),_0x3e3b89[_0x80ec88(0x227)](_0x37659b,{'exitCode':_0x279ff4,'output':_0x336955});});});}async[a0_0x584b42(0x111)](_0x4ed0ee,_0x46059a){const _0x5a0c9b=a0_0x584b42,_0x33d79c=a0_0x5ae149[_0x5a0c9b(0x1b2)](this[_0x5a0c9b(0xbf)],_0x4ed0ee);this[_0x5a0c9b(0xf1)](_0x5a0c9b(0x16e)+_0x46059a[_0x5a0c9b(0x1d3)]+_0x5a0c9b(0x101)+_0x4ed0ee+_0x5a0c9b(0x1a1));const _0x11629e=[];for(const _0x4cced1 of _0x46059a){const _0x25717f=a0_0x5ae149[_0x5a0c9b(0x1b2)](_0x33d79c,_0x4cced1);a0_0x5539b1[_0x5a0c9b(0x222)](_0x25717f)&&(await this[_0x5a0c9b(0xb0)](_0x4ed0ee,_0x4cced1,_0x25717f),_0x11629e[_0x5a0c9b(0xf3)](_0x4cced1));}const _0x549dcb=_0x5a0c9b(0xe6)+_0x11629e[_0x5a0c9b(0x21a)](_0x37adc3=>'-\x20'+_0x37adc3)[_0x5a0c9b(0x1b2)]('\x0a');return await this[_0x5a0c9b(0x198)](_0x4ed0ee,_0x549dcb),_0x11629e;}[a0_0x584b42(0x167)](){const _0x361271=a0_0x584b42,_0x48653c={'qwEWo':_0x361271(0x106),'IQKQg':function(_0x34460e,_0x8b65a7){return _0x34460e!==_0x8b65a7;},'tVzcL':_0x361271(0x18a),'tHymu':_0x361271(0x1d5),'uoqah':_0x361271(0x1b8)};if(!this[_0x361271(0xf9)]||!a0_0x5539b1[_0x361271(0x222)](this[_0x361271(0xf9)]))return;try{const _0x27e373=JSON[_0x361271(0x183)](a0_0x5539b1[_0x361271(0x17e)](this[_0x361271(0xf9)],_0x48653c[_0x361271(0x156)]));_0x27e373[_0x361271(0x1d4)]&&Object[_0x361271(0x1bb)](_0x27e373[_0x361271(0x1d4)])[_0x361271(0xfc)](([_0x4d3709,_0x266cbb])=>{const _0x1ad348=_0x361271;this[_0x1ad348(0x1d4)][_0x1ad348(0xc9)](_0x4d3709,_0x266cbb);}),_0x27e373[_0x361271(0xa6)]&&_0x27e373[_0x361271(0xa6)][_0x361271(0xfc)](_0x43d6a7=>this[_0x361271(0xa6)][_0x361271(0x21f)](_0x43d6a7)),_0x48653c[_0x361271(0x177)](_0x27e373[_0x361271(0x1ae)],undefined)&&(this[_0x361271(0x1ae)]=_0x27e373[_0x361271(0x1ae)]),this[_0x361271(0xf1)](_0x361271(0x185)+this[_0x361271(0x1d4)][_0x361271(0x228)]+_0x361271(0x219)+(this[_0x361271(0x1ae)]?_0x48653c[_0x361271(0xf4)]:_0x48653c[_0x361271(0x20f)]));}catch(_0xc4c8b8){this[_0x361271(0xf1)](_0x361271(0xb7)+_0xc4c8b8[_0x361271(0x1a8)],_0x48653c[_0x361271(0x14c)]);}}[a0_0x584b42(0x119)](){const _0x56211d=a0_0x584b42,_0x38c881={'kJlrO':_0x56211d(0x1b8)};if(!this[_0x56211d(0xf9)])return;try{const _0x7d259b={'activeMissions':Object[_0x56211d(0xeb)](this[_0x56211d(0x1d4)]),'bidCache':Array[_0x56211d(0xd2)](this[_0x56211d(0xa6)]),'autopilotPaused':this[_0x56211d(0x1ae)]};a0_0x5539b1[_0x56211d(0x1f2)](this[_0x56211d(0xf9)],JSON[_0x56211d(0xb6)](_0x7d259b,null,0x2));}catch(_0x1da663){this[_0x56211d(0xf1)](_0x56211d(0x153)+_0x1da663[_0x56211d(0x1a8)],_0x38c881[_0x56211d(0x1a6)]);}}async[a0_0x584b42(0x160)](_0x187086,_0x9635a1=!![]){const _0x25dacf=a0_0x584b42,_0xacf618={'CREJr':_0x25dacf(0x173)};this[_0x25dacf(0xb5)]&&this[_0x25dacf(0xb5)][_0x25dacf(0x10a)](_0xacf618[_0x25dacf(0x210)],{'jobId':_0x187086,'isTyping':_0x9635a1});}async[a0_0x584b42(0x20d)](_0x26cd6d){const _0x266687=a0_0x584b42;if(!this[_0x266687(0x118)])return;return this[_0x266687(0x15e)][_0x266687(0x1c8)](_0x266687(0xbb)+this[_0x266687(0x118)]+_0x266687(0x1e8),_0x26cd6d);}async[a0_0x584b42(0xcf)](){const _0x19f12e=a0_0x584b42,_0x4b6e2e={'fwAsc':_0x19f12e(0x1d7)},_0x4b96ad=await this[_0x19f12e(0x15e)][_0x19f12e(0xe3)](_0x4b6e2e[_0x19f12e(0x12e)]);return _0x4b96ad[_0x19f12e(0x206)][_0x19f12e(0x206)][_0x19f12e(0x1ac)](_0x2b2084=>_0x2b2084[_0x19f12e(0x21b)]===_0x19f12e(0x182))[_0x19f12e(0x21a)](_0x543aec=>this[_0x19f12e(0x233)](_0x543aec));}async[a0_0x584b42(0x1c3)](_0x4ea9fc){const _0x25e673=a0_0x584b42,_0xa69f2f=await this[_0x25e673(0x15e)][_0x25e673(0xe3)](_0x25e673(0xc6)+_0x4ea9fc);return this[_0x25e673(0x233)](_0xa69f2f[_0x25e673(0x206)][_0x25e673(0xc0)]);}async[a0_0x584b42(0x226)](_0x2d283d,_0x44b070,_0xfdb544){const _0x12f31b=a0_0x584b42,_0x4c0d9f={'cdLux':_0x12f31b(0x135)};try{const _0xc8321d=await this[_0x12f31b(0x15e)][_0x12f31b(0x1c8)](_0x4c0d9f[_0x12f31b(0x1e5)],{'jobId':_0x2d283d,'amount':_0x44b070,'message':_0xfdb544,'apiKey':this[_0x12f31b(0x149)]});return _0xc8321d[_0x12f31b(0x206)][_0x12f31b(0x189)]&&(this[_0x12f31b(0xa6)][_0x12f31b(0x21f)](_0x2d283d),this[_0x12f31b(0x119)]()),_0xc8321d[_0x12f31b(0x206)];}catch(_0x243af9){return{'success':![],'error':_0x243af9[_0x12f31b(0x1c7)]?.[_0x12f31b(0x206)]?.[_0x12f31b(0xc5)]||_0x243af9[_0x12f31b(0x1a8)]};}}async[a0_0x584b42(0x198)](_0x3b8cc3,_0x3f177d){const _0x3361e6=a0_0x584b42,_0x4be31d=await this[_0x3361e6(0x15e)][_0x3361e6(0x1c8)](_0x3361e6(0xc6)+_0x3b8cc3+_0x3361e6(0x194),{'content':_0x3f177d,'senderId':this[_0x3361e6(0x118)]});return _0x4be31d[_0x3361e6(0x206)];}async[a0_0x584b42(0x19d)](_0x55eaac){const _0x2c3c2f=a0_0x584b42,_0x3b16f9=await this[_0x2c3c2f(0x15e)][_0x2c3c2f(0xe3)](_0x2c3c2f(0xc6)+_0x55eaac+_0x2c3c2f(0x194));return a0_0x1fe711['z'][_0x2c3c2f(0xa2)](exports[_0x2c3c2f(0x205)])[_0x2c3c2f(0x183)](_0x3b16f9[_0x2c3c2f(0x206)][_0x2c3c2f(0xaa)]);}async[a0_0x584b42(0x99)](_0x55c9d7,_0x5ce94b,_0x13d170){const _0x5d3358=a0_0x584b42,_0x19674e={'XZqQE':_0x5d3358(0x179)},_0x167428=await this[_0x5d3358(0x15e)][_0x5d3358(0x1c8)](_0x5d3358(0xc6)+_0x55c9d7+_0x5d3358(0x15c),{'url':_0x5ce94b,'name':_0x13d170,'type':_0x19674e[_0x5d3358(0x1db)],'uploaderId':this[_0x5d3358(0x118)]});return _0x167428[_0x5d3358(0x206)][_0x5d3358(0x189)];}async[a0_0x584b42(0x1f6)](_0x1b580c,_0x24bc87,_0x5f0363){const _0x96068a=a0_0x584b42,_0x7c6624={'oAnJI':function(_0x1664b9,_0x2d49e1){return _0x1664b9===_0x2d49e1;},'KmHnj':_0x96068a(0x235),'vmrjR':_0x96068a(0xc4)};if(!a0_0x5539b1[_0x96068a(0x222)](_0x24bc87))throw new Error(_0x96068a(0x186)+_0x24bc87);if(_0x7c6624[_0x96068a(0x1ea)](a0_0x5539b1[_0x96068a(0x113)](_0x24bc87)[_0x96068a(0x228)],0x0))throw new Error(_0x96068a(0xed)+_0x24bc87);const _0x5803b5=_0x5f0363||a0_0x5ae149[_0x96068a(0x181)](_0x24bc87);this[_0x96068a(0xf1)](_0x96068a(0x1c2)+_0x5803b5+_0x96068a(0x1a1));try{const _0x4f4add=await this[_0x96068a(0x15e)][_0x96068a(0xe3)](_0x96068a(0xff)+_0x5803b5),{url:_0x536840}=_0x4f4add[_0x96068a(0x206)],_0x2b3aff=a0_0x5539b1[_0x96068a(0x17e)](_0x24bc87);return await a0_0x4b7674[_0x96068a(0x19e)][_0x96068a(0xf2)](_0x536840,_0x2b3aff,{'headers':{'Content-Type':_0x7c6624[_0x96068a(0x22c)]}}),this[_0x96068a(0x99)](_0x1b580c,_0x536840,_0x5803b5);}catch(_0x36e799){this[_0x96068a(0xf1)](_0x96068a(0x16a)+_0x36e799[_0x96068a(0x1a8)],_0x7c6624[_0x96068a(0x1ca)]);throw _0x36e799;}}async[a0_0x584b42(0xc7)](_0x2a7e47){const _0x194674=a0_0x584b42,_0x53cb03={'HLDqi':_0x194674(0x192)},_0x71efd2=await this[_0x194674(0x15e)][_0x194674(0x1c8)](_0x194674(0xc6)+_0x2a7e47+_0x194674(0xfb),{'userId':this[_0x194674(0x118)],'role':_0x53cb03[_0x194674(0x165)]});return _0x71efd2[_0x194674(0x206)][_0x194674(0x189)]&&(this[_0x194674(0x1d4)][_0x194674(0x16b)](_0x2a7e47),this[_0x194674(0x119)]()),_0x71efd2[_0x194674(0x206)];}async[a0_0x584b42(0x20b)](_0x17532e,_0x59d2fd){const _0x4deebe=a0_0x584b42;if(!this[_0x4deebe(0x118)])return;return this[_0x4deebe(0x15e)][_0x4deebe(0x1c8)](_0x4deebe(0xc6)+_0x17532e+_0x4deebe(0x19c),{'name':_0x59d2fd});}async[a0_0x584b42(0xb0)](_0xfbe31b,_0x46eff4,_0x28dd75,_0x47afaa=![]){const _0x5b2c8b=a0_0x584b42,_0x29125b={'kKnLF':_0x5b2c8b(0x106),'WGlQT':_0x5b2c8b(0x1b8)};if(!this[_0x5b2c8b(0x118)])return;let _0x46dae9=_0x28dd75;if(!_0x47afaa&&a0_0x5539b1[_0x5b2c8b(0x222)](_0x28dd75))try{this[_0x5b2c8b(0xf1)](_0x5b2c8b(0xd3)+_0x28dd75),_0x46dae9=a0_0x5539b1[_0x5b2c8b(0x17e)](_0x28dd75,_0x29125b[_0x5b2c8b(0x21d)]);}catch(_0x32552d){this[_0x5b2c8b(0xf1)](_0x5b2c8b(0xb3)+_0x32552d[_0x5b2c8b(0x1a8)],_0x29125b[_0x5b2c8b(0x176)]);}return this[_0x5b2c8b(0x15e)][_0x5b2c8b(0x1c8)](_0x5b2c8b(0xc6)+_0xfbe31b+_0x5b2c8b(0x12b),{'path':_0x46eff4,'content':_0x46dae9,'isBlob':_0x47afaa});}async[a0_0x584b42(0x14b)](_0x161917){const _0x50e30e=a0_0x584b42;if(!this[_0x50e30e(0x118)])return;return this[_0x50e30e(0x15e)][_0x50e30e(0x1c8)](_0x50e30e(0xbb)+this[_0x50e30e(0x118)]+_0x50e30e(0x1e8),{'tokensUsed':_0x161917});}async[a0_0x584b42(0xca)](_0x2de3ab,_0x2d93cc){const _0x5c0c61=a0_0x584b42;if(!this[_0x5c0c61(0x118)])return;return this[_0x5c0c61(0x15e)][_0x5c0c61(0x1c8)](_0x5c0c61(0xc6)+_0x2de3ab+_0x5c0c61(0xd0),{'progress':_0x2d93cc});}async[a0_0x584b42(0x1ab)](_0x4ce48f){const _0x1f9797=a0_0x584b42;if(!this[_0x1f9797(0x118)])return;return this[_0x1f9797(0x15e)][_0x1f9797(0x1c8)](_0x1f9797(0xbb)+this[_0x1f9797(0x118)]+_0x1f9797(0x120),{'message':_0x4ce48f});}async[a0_0x584b42(0x1d6)](_0x28fdd1,_0x12a0c2=a0_0x584b42(0x1bd)){const _0x3d91b2=a0_0x584b42,_0x1b7b02={'EKsdp':function(_0x28d302,_0x317e1b){return _0x28d302===_0x317e1b;},'JLMhM':_0x3d91b2(0xc4),'ChexL':_0x3d91b2(0xcc),'ZkApr':_0x3d91b2(0x1b8),'zYFMJ':_0x3d91b2(0x1de),'jCfhk':_0x3d91b2(0x11c)};if(!this[_0x3d91b2(0x118)])return;try{await this[_0x3d91b2(0x15e)][_0x3d91b2(0x1c8)](_0x3d91b2(0xbb)+this[_0x3d91b2(0x118)]+_0x3d91b2(0x1f9),{'message':_0x28fdd1,'level':_0x12a0c2});if(this[_0x3d91b2(0x12d)]){const _0x53d690=_0x1b7b02[_0x3d91b2(0x1a0)](_0x12a0c2,_0x1b7b02[_0x3d91b2(0x184)])?_0x1b7b02[_0x3d91b2(0x19b)]:_0x1b7b02[_0x3d91b2(0x1a0)](_0x12a0c2,_0x1b7b02[_0x3d91b2(0x9c)])?_0x1b7b02[_0x3d91b2(0x1a9)]:_0x1b7b02[_0x3d91b2(0x11a)];console[_0x3d91b2(0x1d6)](_0x53d690+'['+_0x12a0c2+_0x3d91b2(0x11d)+_0x28fdd1);}}catch(_0x650635){this[_0x3d91b2(0x12d)]&&console[_0x3d91b2(0xc5)](_0x3d91b2(0x237)+_0x650635[_0x3d91b2(0x1a8)]);}}[a0_0x584b42(0x1f4)](_0x19bf6a=0x7530){const _0x1e1086=a0_0x584b42,_0x2e05c1={'yqxlN':function(_0x63cda1,_0x483d60){return _0x63cda1(_0x483d60);},'IfjoM':function(_0x4c6231,_0xf3afef,_0x387498){return _0x4c6231(_0xf3afef,_0x387498);}};if(!this[_0x1e1086(0x118)])return;if(this[_0x1e1086(0x159)])_0x2e05c1[_0x1e1086(0x17b)](clearInterval,this[_0x1e1086(0x159)]);this[_0x1e1086(0xec)](),this[_0x1e1086(0x159)]=_0x2e05c1[_0x1e1086(0x1cb)](setInterval,()=>this[_0x1e1086(0xec)](),_0x19bf6a);}async[a0_0x584b42(0xec)](){const _0x3cd17d=a0_0x584b42,_0x569b53={'BnDZb':_0x3cd17d(0x1cd),'NHHAn':_0x3cd17d(0x1b8)};if(!this[_0x3cd17d(0x118)])return;try{await this[_0x3cd17d(0x15e)][_0x3cd17d(0x1c8)](_0x3cd17d(0xbb)+this[_0x3cd17d(0x118)]+_0x3cd17d(0x1dd),{},{'headers':{'Authorization':_0x3cd17d(0x211)+this[_0x3cd17d(0x149)]}});}catch(_0x4c9c42){this[_0x3cd17d(0xf1)](_0x569b53[_0x3cd17d(0xe7)],_0x569b53[_0x3cd17d(0x18c)]);}}[a0_0x584b42(0xf1)](_0x1183f7,_0x135e18=a0_0x584b42(0x1bd)){const _0x3ff295=a0_0x584b42;if(this[_0x3ff295(0x12d)])console[_0x3ff295(0x1d6)](_0x3ff295(0xc3)+_0x1183f7);}[a0_0x584b42(0x212)](_0x8a6963){const _0x523554=a0_0x584b42,_0x1de79b={'EMvVM':_0x523554(0x1a8)};this['on'](_0x1de79b[_0x523554(0x12f)],_0x8a6963);}[a0_0x584b42(0xc1)](_0x9d8bf4){const _0x431265=a0_0x584b42,_0x4eb37a={'rstDt':_0x431265(0xc0)};this['on'](_0x4eb37a[_0x431265(0xdd)],_0x9d8bf4);}[a0_0x584b42(0x1a4)](_0x418720){const _0x879c5b=a0_0x584b42,_0x4bc6e4={'BAeVO':_0x879c5b(0x22d)};this['on'](_0x4bc6e4[_0x879c5b(0x141)],_0x418720);}}exports[a0_0x584b42(0x16f)]=a0_0xbc1ebb,a0_0xbc1ebb[a0_0x584b42(0x130)]=a0_0x2f47c7,exports[a0_0x584b42(0x19e)]=a0_0xbc1ebb;
package/init.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
- const { execSync, spawn } = require('child_process');
5
+ const { execSync } = require('child_process');
6
6
  const readline = require('readline');
7
7
 
8
8
  // 0. Get version from package.json
@@ -36,8 +36,8 @@ async function main() {
36
36
 
37
37
  // 2. Select Brain
38
38
  console.log("\n🧠 Choose an Execution Engine (Brain):");
39
- console.log(" [1] OpenClaw (Advanced: Browser control, shell execution, OS access)");
40
- console.log(" [2] Direct LLM (Standard: Gemini, OpenAI, Claude)");
39
+ console.log(" [1] OpenClaw (Advanced: Full OS Access - Browser, Shell, Python)");
40
+ console.log(" [2] Direct LLM (Cloud: Gemini, OpenAI, Claude)");
41
41
  console.log(" [3] Bare Skeleton (Minimal: Write your own logic)");
42
42
 
43
43
  const brainChoice = await ask("\nSelection [1-3]: ");
@@ -54,16 +54,13 @@ async function main() {
54
54
  let agentTemplate = "";
55
55
 
56
56
  if (brainChoice === '1') {
57
- // OPENCLAW TEMPLATE
58
57
  console.log("✅ Selected: OpenClaw Execution Engine.");
59
58
  agentTemplate = getOpenClawTemplate(CURRENT_VERSION);
60
- envVars += `# No additional keys needed for OpenClaw (uses system auth)\n`;
61
59
  } else if (brainChoice === '2') {
62
- // DIRECT LLM TEMPLATE
63
60
  console.log("\n☁️ Select LLM Provider:");
64
61
  console.log(" [1] Gemini (Recommended)");
65
62
  console.log(" [2] OpenAI");
66
- console.log(" [3] Claude (Anthropic)");
63
+ console.log(" [3] Claude");
67
64
 
68
65
  const providerChoice = await ask("Selection [1-3]: ");
69
66
 
@@ -81,7 +78,6 @@ async function main() {
81
78
  agentTemplate = getGeminiTemplate(CURRENT_VERSION);
82
79
  }
83
80
  } else {
84
- // BARE SKELETON
85
81
  console.log("✅ Selected: Bare Skeleton.");
86
82
  agentTemplate = getSkeletonTemplate(CURRENT_VERSION);
87
83
  }
@@ -130,7 +126,6 @@ function getOpenClawTemplate(ver) {
130
126
  return `
131
127
  require('dotenv').config();
132
128
  const { Agent } = require('rentabots-sdk');
133
- const { spawn } = require('child_process');
134
129
 
135
130
  async function main() {
136
131
  const agent = new Agent({
@@ -140,63 +135,38 @@ async function main() {
140
135
  });
141
136
 
142
137
  await agent.connect();
143
- console.log("✅ Agent Online with OpenClaw Engine.");
144
138
 
145
- // Advertise capabilities
146
- const TOOLS_LIST = "Chrome Browser, Bash Shell, Python 3.10, Node.js 22, File System";
147
-
148
- agent.on('assignment', async (job) => {
149
- await agent.sendMessage(job.id, "🎯 Mission Secured. I am initializing my OpenClaw environment.");
150
- await agent.sendMessage(job.id, \`🔧 ACTIVE TOOLS: \${TOOLS_LIST}\`);
151
- await agent.sendMessage(job.id, "I've received your request and am analyzing the requirements now.");
139
+ // 1. AUTO-PILOT (Scrape -> Bid -> Execute)
140
+ agent.startAutopilot({
141
+ keywords: ['python', 'script', 'scraper', 'react', 'fix'],
142
+ minBudget: 10,
143
+ scoutingInterval: 60000 // Poll every 60s
152
144
  });
153
145
 
154
- agent.on('message', async (msg) => {
155
- if (msg.sender.type === 'agent') return;
156
-
157
- await agent.setTyping(msg.jobId, true);
158
-
159
- // --- ⚡ ASYNCHRONOUS EXECUTION (Non-blocking) ---
160
- console.log("🦞 Spawning OpenClaw background task...");
146
+ // 2. MISSION LIFECYCLE
147
+ agent.on('assignment', async (job) => {
148
+ console.log(\`🎯 ASSIGNED: \${job.title}\`);
161
149
 
162
- const child = spawn('openclaw', ['agent', msg.content]);
150
+ // Setup Workspace
151
+ const workspacePath = await agent.initializeMission(job.id);
163
152
 
164
- child.stdout.on('data', (data) => {
165
- // Live stream progress to the user
166
- agent.sendMessage(msg.jobId, \`📝 [\${new Date().toLocaleTimeString()}] Working: \${data.toString().slice(0, 100)}...\`);
167
- });
153
+ await agent.sendMessage(job.id, "🎯 Mission Secured. Environment initialized. Preparing to execute objectives.");
168
154
 
169
- child.on('close', (code) => {
170
- agent.setTyping(msg.jobId, false);
171
- if (code === 0) {
172
- agent.sendMessage(msg.jobId, "✅ Task successfully completed via OpenClaw OS access.");
173
- } else {
174
- agent.sendMessage(msg.jobId, "⚠️ Task bottleneck detected. I am attempting an alternative strategy or waiting for guidance.");
175
- agent.notifyOwner(\`Agent encountered error code \${code} on mission \${msg.jobId}\`);
176
- }
177
- });
155
+ // Example: Autonomous command execution
156
+ const { exitCode, output } = await agent.execute(job.id, "echo 'Hello RentaBots World' > success.txt");
157
+
158
+ if (exitCode === 0) {
159
+ await agent.deliver(job.id, ['success.txt']);
160
+ await agent.markComplete(job.id);
161
+ }
178
162
  });
179
163
 
180
- agent.on('job', async (job) => {
181
- // Real-time notification of new jobs
182
- console.log(\`🌍 NEW JOB: \${job.title} ($ \${job.budgetAmount})\`);
164
+ agent.on('message', async (msg) => {
165
+ if (msg.sender.type === 'agent') return;
166
+ console.log(\`📩 Message from \${msg.sender.displayName}: \${msg.content}\`);
183
167
  });
184
168
 
185
- // --- 🔍 SCOUTING LOOP (Continuity) ---
186
- const runScout = async () => {
187
- console.log("🔍 Scanning marketplace for matching missions...");
188
- try {
189
- await agent.findAndBid({
190
- skills: ['python', 'script', 'scrape', 'automation', 'web'], // Customize these
191
- minBudget: 1
192
- });
193
- } catch (e) {
194
- console.error("Scouting failed:", e.message);
195
- }
196
- };
197
-
198
- runScout(); // Initial scan
199
- setInterval(runScout, 60000); // Re-scout every minute
169
+ console.log("👀 Standing by for missions...");
200
170
  }
201
171
  main().catch(console.error);`;
202
172
  }
@@ -220,7 +190,7 @@ async function main() {
220
190
  await agent.connect();
221
191
 
222
192
  agent.on('assignment', async (job) => {
223
- const prompt = \`A user has just hired me for: "\${job.title}". Description: \${job.description}. Write a professional greeting asking for any missing technical requirements.\`;
193
+ const prompt = \`A user has hired me for: "\${job.title}". Description: \${job.description}. Introduce yourself and ask if they have specific requirements.\`;
224
194
  const result = await model.generateContent(prompt);
225
195
  await agent.sendMessage(job.id, result.response.text());
226
196
  });
@@ -229,39 +199,15 @@ async function main() {
229
199
  if (msg.sender.type === 'agent') return;
230
200
  await agent.setTyping(msg.jobId, true);
231
201
 
232
- // 🧠 LLM BRAIN: Gemini
233
- try {
234
- const result = await model.generateContent(msg.content);
235
- const response = result.response.text();
236
- await agent.sendMessage(msg.jobId, \`🤖 \${response}\`);
237
- } catch (err) {
238
- await agent.notifyOwner("Gemini API Error: " + err.message);
239
- }
240
-
202
+ const result = await model.generateContent(msg.content);
203
+ await agent.sendMessage(msg.jobId, \`🤖 \${result.response.text()}\`);
241
204
  await agent.setTyping(msg.jobId, false);
242
205
  });
243
206
 
244
- // --- 🧠 INTELLIGENT BIDDING LOOP ---
245
- const runScout = async () => {
246
- console.log("🔍 Scouting for high-value missions...");
247
- try {
248
- const jobs = await agent.getOpenMissions();
249
- for (const job of jobs) {
250
- const prompt = \`Analyze this job: "\${job.title}". Description: \${job.description}. If it is a coding or automation task, write a winning 1-sentence bid message. If not, reply "SKIP".\`;
251
- const result = await model.generateContent(prompt);
252
- const pitch = result.response.text();
253
-
254
- if (!pitch.includes("SKIP")) {
255
- await agent.bid(job.id, job.budgetAmount, pitch);
256
- }
257
- }
258
- } catch (e) {
259
- console.error("Scouting failed:", e.message);
260
- }
261
- };
262
-
263
- runScout();
264
- setInterval(runScout, 60000);
207
+ agent.startAutopilot({
208
+ keywords: ['automation', 'code'],
209
+ minBudget: 1
210
+ });
265
211
  }
266
212
  main().catch(console.error);`;
267
213
  }
@@ -291,16 +237,11 @@ async function main() {
291
237
  model: "gpt-4o",
292
238
  });
293
239
 
294
- await agent.sendMessage(msg.jobId, \`🤖 [GPT-4o]: \${completion.choices[0].message.content}\`);
240
+ await agent.sendMessage(msg.jobId, \`🤖 \${completion.choices[0].message.content}\`);
295
241
  await agent.setTyping(msg.jobId, false);
296
242
  });
297
243
 
298
- const runScout = async () => {
299
- await agent.findAndBid({ skills: ['automation'], minBudget: 1 });
300
- };
301
-
302
- runScout();
303
- setInterval(runScout, 60000);
244
+ agent.startAutopilot({ keywords: ['code'] });
304
245
  }
305
246
  main().catch(console.error);`;
306
247
  }
@@ -331,16 +272,11 @@ async function main() {
331
272
  messages: [{ role: "user", content: msg.content }],
332
273
  });
333
274
 
334
- await agent.sendMessage(msg.jobId, \`🤖 [Claude]: \${message.content[0].text}\`);
275
+ await agent.sendMessage(msg.jobId, \`🤖 \${message.content[0].text}\`);
335
276
  await agent.setTyping(msg.jobId, false);
336
277
  });
337
278
 
338
- const runScout = async () => {
339
- await agent.findAndBid({ skills: ['automation'], minBudget: 1 });
340
- };
341
-
342
- runScout();
343
- setInterval(runScout, 60000);
279
+ agent.startAutopilot({ keywords: ['reasoning'] });
344
280
  }
345
281
  main().catch(console.error);`;
346
282
  }
@@ -356,21 +292,13 @@ async function main() {
356
292
  persistState: true
357
293
  });
358
294
 
359
- const connection = await agent.connect();
360
- if (!connection.success) process.exit(1);
361
-
362
- console.log(\`✅ ONLINE as: \${connection.agent.displayName}\`);
295
+ await agent.connect();
363
296
 
364
297
  agent.on('message', async (msg) => {
365
- console.log("Received message:", msg.content);
298
+ console.log("Received:", msg.content);
366
299
  });
367
300
 
368
- const runScout = async () => {
369
- await agent.findAndBid({ skills: ['automation'], minBudget: 1 });
370
- };
371
-
372
- runScout();
373
- setInterval(runScout, 60000);
301
+ agent.startAutopilot({ keywords: ['automation'] });
374
302
  }
375
303
  main().catch(console.error);`;
376
304
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rentabots-sdk",
3
- "version": "0.7.1",
3
+ "version": "0.8.0",
4
4
  "description": "Official SDK for RentaBots AI Agent Marketplace",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ import { z } from 'zod';
4
4
  import { EventEmitter } from 'events';
5
5
  import * as fs from 'fs';
6
6
  import * as path from 'path';
7
+ import { spawn } from 'child_process';
7
8
 
8
9
  // --- TYPE DEFINITIONS ---
9
10
 
@@ -60,11 +61,21 @@ export interface AgentOptions {
60
61
  heartbeatInterval?: number;
61
62
  /** Path to store agent state for persistence. Set to false to disable. */
62
63
  persistState?: string | boolean;
64
+ /** Local workspace root for mission execution */
65
+ workspaceRoot?: string;
66
+ }
67
+
68
+ export interface AutopilotOptions {
69
+ keywords?: string[];
70
+ minBudget?: number;
71
+ scoutingInterval?: number;
72
+ bidTemplate?: string;
63
73
  }
64
74
 
65
75
  interface AgentState {
66
76
  activeMissions: Record<string, Job>;
67
77
  bidCache: string[];
78
+ autopilotPaused: boolean;
68
79
  }
69
80
 
70
81
  // --- CORE SDK ---
@@ -72,6 +83,7 @@ interface AgentState {
72
83
  // 0. Get version from package.json (Single source of truth)
73
84
  let CURRENT_VERSION = '0.7.1';
74
85
  try {
86
+ // In dev environment
75
87
  const pkgPath = path.join(__dirname, '..', 'package.json');
76
88
  if (fs.existsSync(pkgPath)) {
77
89
  const packageJson = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
@@ -99,18 +111,24 @@ export class Agent extends EventEmitter {
99
111
  private heartbeatTimer: NodeJS.Timeout | null = null;
100
112
 
101
113
  private statePath: string | null = null;
114
+ private workspaceRoot: string;
102
115
  public activeMissions = new Map<string, Job>();
103
116
  private bidCache = new Set<string>();
104
117
  private seenMessages = new Set<string>();
105
118
 
119
+ // Autopilot State
120
+ private autopilotTimer: NodeJS.Timeout | null = null;
121
+ private autopilotPaused = false;
122
+ private lastScoutTime: Date | null = null;
123
+
106
124
  constructor(options: AgentOptions = {}) {
107
125
  super();
108
- // 1. Standardize Env: Look for RENTABOTS_API_KEY first
109
126
  this.apiKey = options.apiKey || process.env.RENTABOTS_API_KEY || process.env.AGENT_API_KEY || '';
110
127
  this.baseUrl = (options.baseUrl || 'https://rentabots.com/api').replace(/\/$/, '');
111
128
  this.debug = options.debug || false;
112
129
  this.capabilities = options.capabilities || [];
113
130
  this.heartbeatInterval = options.heartbeatInterval || 30000;
131
+ this.workspaceRoot = options.workspaceRoot || path.join(process.cwd(), 'workspace');
114
132
 
115
133
  if (options.persistState !== false) {
116
134
  this.statePath = typeof options.persistState === 'string'
@@ -138,7 +156,6 @@ export class Agent extends EventEmitter {
138
156
  this.logInternal(`Connecting to Grid: ${this.baseUrl} (SDK v${Agent.SDK_VERSION})...`);
139
157
 
140
158
  try {
141
- // Load local state first
142
159
  this.loadState();
143
160
 
144
161
  const res = await this.api.get('agents/me').catch(err => {
@@ -149,21 +166,13 @@ export class Agent extends EventEmitter {
149
166
  });
150
167
  this.agentId = res.data.agent.id;
151
168
 
152
- // Sync with Cloud (Recover any missed assignments)
153
169
  await this.syncFromCloud();
154
-
155
- // 📥 INBOX ZERO: Fetch unread messages sent while offline
156
170
  await this.fetchUnreadMessages();
157
-
158
- // Initialize Socket Connection
159
171
  this.initSocket();
160
-
161
- // Start Heartbeat to keep dashboard ONLINE
162
172
  this.startHeartbeat(this.heartbeatInterval);
163
173
 
164
174
  this.logInternal(`Online as: ${res.data.agent.displayName}`);
165
175
 
166
- // Register capabilities if any
167
176
  if (this.capabilities.length > 0) {
168
177
  try {
169
178
  await this.updateProfile({ skills: this.capabilities });
@@ -194,7 +203,7 @@ export class Agent extends EventEmitter {
194
203
  for (const msg of messages) {
195
204
  if (!this.seenMessages.has(msg.id)) {
196
205
  this.seenMessages.add(msg.id);
197
- this.emit('message', msg);
206
+ this.handleIncomingMessage(msg);
198
207
  lastId = msg.id;
199
208
  }
200
209
  }
@@ -227,7 +236,7 @@ export class Agent extends EventEmitter {
227
236
  }
228
237
 
229
238
  private enrichJob(raw: any): Job {
230
- const budgetAmount = parseFloat(raw.budget.replace(/[^0-9.]/g, '') || '0');
239
+ const budgetAmount = parseFloat(raw.budget?.replace(/[^0-9.]/g, '') || '0');
231
240
  return {
232
241
  ...JobSchema.parse(raw),
233
242
  budgetAmount
@@ -250,7 +259,6 @@ export class Agent extends EventEmitter {
250
259
  this.logInternal('WebSocket Link Established.');
251
260
  this.socket?.emit('join_marketplace');
252
261
 
253
- // Re-join all active mission rooms on connect/reconnect
254
262
  for (const jobId of this.activeMissions.keys()) {
255
263
  this.socket?.emit('join_mission', jobId);
256
264
  }
@@ -260,7 +268,7 @@ export class Agent extends EventEmitter {
260
268
 
261
269
  this.socket.on('reconnect', (attempt) => {
262
270
  this.logInternal(`WebSocket Reconnected after ${attempt} attempts.`, 'INFO');
263
- this.syncFromCloud(); // Re-sync state just in case
271
+ this.syncFromCloud();
264
272
  });
265
273
 
266
274
  this.socket.on('disconnect', (reason) => {
@@ -273,9 +281,7 @@ export class Agent extends EventEmitter {
273
281
  const msg = MessageSchema.parse(data);
274
282
  if (!this.seenMessages.has(msg.id)) {
275
283
  this.seenMessages.add(msg.id);
276
- this.emit('message', msg);
277
-
278
- // 📡 Cloud Sync: Acknowledge real-time message to keep cloud state current
284
+ this.handleIncomingMessage(msg);
279
285
  this.api.post('agents/me/ack', { messageId: msg.id }).catch(() => {});
280
286
  }
281
287
  } catch (err) {
@@ -296,10 +302,7 @@ export class Agent extends EventEmitter {
296
302
  if (!this.activeMissions.has(job.id)) {
297
303
  this.activeMissions.set(job.id, job);
298
304
  this.saveState();
299
-
300
- // Join mission room for chat
301
305
  this.socket?.emit('join_mission', job.id);
302
-
303
306
  this.logInternal(`🎉 Mission Assigned: ${job.title}`, 'SUCCESS' as any);
304
307
  this.emit('assignment', job);
305
308
  }
@@ -309,6 +312,181 @@ export class Agent extends EventEmitter {
309
312
  });
310
313
  }
311
314
 
315
+ private handleIncomingMessage(msg: Message) {
316
+ // --- 🕹️ REMOTE CONTROL SYSTEM ---
317
+ if (msg.sender.type === 'human') {
318
+ const cmd = msg.content.trim();
319
+ if (cmd === '/status') {
320
+ this.handleStatusRequest(msg.jobId);
321
+ return;
322
+ } else if (cmd === '/pause') {
323
+ this.autopilotPaused = true;
324
+ this.saveState();
325
+ this.sendMessage(msg.jobId, "⏸️ Autopilot PAUSED by owner.");
326
+ return;
327
+ } else if (cmd === '/resume') {
328
+ this.autopilotPaused = false;
329
+ this.saveState();
330
+ this.sendMessage(msg.jobId, "▶️ Autopilot RESUMED by owner.");
331
+ return;
332
+ } else if (cmd.startsWith('/bid ')) {
333
+ const targetId = cmd.replace('/bid ', '').trim();
334
+ this.handleManualBidRequest(msg.jobId, targetId);
335
+ return;
336
+ }
337
+ }
338
+
339
+ this.emit('message', msg);
340
+ }
341
+
342
+ private async handleStatusRequest(jobId: string) {
343
+ const activeCount = this.activeMissions.size;
344
+ const scanTime = this.lastScoutTime ? this.lastScoutTime.toLocaleTimeString() : 'Never';
345
+ const status = `🤖 [STATUS REPORT]
346
+ - Active Missions: ${activeCount}
347
+ - Autopilot: ${this.autopilotPaused ? 'PAUSED ⏸️' : 'RUNNING ▶️'}
348
+ - Last Marketplace Scan: ${scanTime}
349
+ - Agent ID: ${this.agentId}
350
+ - SDK Version: v${Agent.SDK_VERSION}`;
351
+
352
+ await this.sendMessage(jobId, status);
353
+ }
354
+
355
+ private async handleManualBidRequest(jobId: string, targetJobId: string) {
356
+ try {
357
+ const mission = await this.getMission(targetJobId);
358
+ const res = await this.bid(mission.id, mission.budgetAmount, "Manual bid requested by owner.");
359
+ if (res.success) {
360
+ await this.sendMessage(jobId, `✅ Successfully placed bid on: ${mission.title}`);
361
+ } else {
362
+ await this.sendMessage(jobId, `❌ Manual bid failed: ${res.error}`);
363
+ }
364
+ } catch (e: any) {
365
+ await this.sendMessage(jobId, `❌ Error finding mission: ${e.message}`);
366
+ }
367
+ }
368
+
369
+ // --- 🧠 INTELLIGENT AUTOPILOT ---
370
+
371
+ /**
372
+ * Start the autonomous "Hunter-Killer" loop.
373
+ */
374
+ startAutopilot(options: AutopilotOptions = {}) {
375
+ const interval = options.scoutingInterval || 60000;
376
+ this.logInternal(`🚀 Autopilot engaged. Scouting every ${interval/1000}s...`);
377
+
378
+ const scout = async () => {
379
+ if (this.autopilotPaused) return;
380
+ this.lastScoutTime = new Date();
381
+
382
+ try {
383
+ const jobs = await this.getOpenMissions();
384
+ for (const job of jobs) {
385
+ if (this.bidCache.has(job.id)) continue;
386
+
387
+ const matchesKeyword = options.keywords
388
+ ? options.keywords.some(k => job.title.toLowerCase().includes(k.toLowerCase()) || job.description.toLowerCase().includes(k.toLowerCase()))
389
+ : true;
390
+
391
+ const matchesBudget = options.minBudget ? job.budgetAmount >= options.minBudget : true;
392
+
393
+ if (matchesKeyword && matchesBudget) {
394
+ const message = options.bidTemplate || `I am an autonomous unit optimized for ${job.category}. I can execute this mission with high precision.`;
395
+ this.logInternal(`🎯 Autopilot: Bidding on "${job.title}"...`);
396
+ await this.bid(job.id, job.budgetAmount, message);
397
+ }
398
+ }
399
+ } catch (err: any) {
400
+ this.logInternal(`Autopilot scout failed: ${err.message}`, 'ERROR');
401
+ }
402
+ };
403
+
404
+ scout();
405
+ this.autopilotTimer = setInterval(scout, interval);
406
+ }
407
+
408
+ // --- 📂 WORKSPACE MANAGEMENT ---
409
+
410
+ /**
411
+ * Initialize local and remote workspace for a mission
412
+ */
413
+ async initializeMission(jobId: string, repoName?: string) {
414
+ const workspacePath = path.join(this.workspaceRoot, jobId);
415
+
416
+ if (!fs.existsSync(workspacePath)) {
417
+ fs.mkdirSync(workspacePath, { recursive: true });
418
+ }
419
+
420
+ this.logInternal(`Local workspace initialized at: ${workspacePath}`);
421
+
422
+ // Create remote repo
423
+ try {
424
+ await this.createMissionRepo(jobId, repoName);
425
+ this.logInternal(`Remote repository initialized.`);
426
+ } catch (err) {
427
+ this.logInternal(`Repository initialization warning: ${err}`, 'WARN');
428
+ }
429
+
430
+ return path.resolve(workspacePath);
431
+ }
432
+
433
+ // --- ⚡ EXECUTION & DELIVERY ---
434
+
435
+ /**
436
+ * Execute a command asynchronously in the mission workspace
437
+ */
438
+ async execute(jobId: string, command: string): Promise<{ exitCode: number | null, output: string }> {
439
+ const workspacePath = path.join(this.workspaceRoot, jobId);
440
+ this.logInternal(`Executing command in ${jobId}: ${command}`);
441
+
442
+ return new Promise((resolve) => {
443
+ let output = '';
444
+ const [cmd, ...args] = command.split(' ');
445
+
446
+ const child = spawn(cmd, args, { cwd: workspacePath, shell: true });
447
+
448
+ child.stdout.on('data', (data) => {
449
+ const chunk = data.toString();
450
+ output += chunk;
451
+ this.emit('execution_log', { jobId, chunk });
452
+ // Optional: stream to chat
453
+ if (this.debug) this.sendMessage(jobId, `📝 [STDOUT] ${chunk.slice(0, 200)}...`).catch(() => {});
454
+ });
455
+
456
+ child.stderr.on('data', (data) => {
457
+ output += data.toString();
458
+ this.emit('execution_error', { jobId, chunk: data.toString() });
459
+ });
460
+
461
+ child.on('close', (code) => {
462
+ this.logInternal(`Command finished with code ${code}`);
463
+ resolve({ exitCode: code, output });
464
+ });
465
+ });
466
+ }
467
+
468
+ /**
469
+ * Batch deliver files from local workspace to mission repository
470
+ */
471
+ async deliver(jobId: string, files: string[]) {
472
+ const workspacePath = path.join(this.workspaceRoot, jobId);
473
+ this.logInternal(`Delivering ${files.length} files for mission ${jobId}...`);
474
+
475
+ const results = [];
476
+ for (const filename of files) {
477
+ const localPath = path.join(workspacePath, filename);
478
+ if (fs.existsSync(localPath)) {
479
+ await this.pushToRepo(jobId, filename, localPath);
480
+ results.push(filename);
481
+ }
482
+ }
483
+
484
+ const msg = `✅ [DELIVERY] The following files have been archived in your secure repository:\n${results.map(f => `- ${f}`).join('\n')}`;
485
+ await this.sendMessage(jobId, msg);
486
+
487
+ return results;
488
+ }
489
+
312
490
  // --- PERSISTENCE ---
313
491
 
314
492
  private loadState() {
@@ -323,7 +501,10 @@ export class Agent extends EventEmitter {
323
501
  if (data.bidCache) {
324
502
  data.bidCache.forEach(id => this.bidCache.add(id));
325
503
  }
326
- this.logInternal(`Loaded ${this.activeMissions.size} active missions from state.`);
504
+ if (data.autopilotPaused !== undefined) {
505
+ this.autopilotPaused = data.autopilotPaused;
506
+ }
507
+ this.logInternal(`Loaded state: ${this.activeMissions.size} missions, Autopilot: ${this.autopilotPaused ? 'Paused' : 'Active'}`);
327
508
  } catch (err: any) {
328
509
  this.logInternal(`Failed to load state: ${err.message}`, 'WARN');
329
510
  }
@@ -334,7 +515,8 @@ export class Agent extends EventEmitter {
334
515
  try {
335
516
  const state: AgentState = {
336
517
  activeMissions: Object.fromEntries(this.activeMissions),
337
- bidCache: Array.from(this.bidCache)
518
+ bidCache: Array.from(this.bidCache),
519
+ autopilotPaused: this.autopilotPaused
338
520
  };
339
521
  fs.writeFileSync(this.statePath, JSON.stringify(state, null, 2));
340
522
  } catch (err: any) {
@@ -344,61 +526,17 @@ export class Agent extends EventEmitter {
344
526
 
345
527
  // --- AGENT ACTIONS ---
346
528
 
347
- /**
348
- * Broadcast a typing indicator to the user
349
- */
350
529
  async setTyping(jobId: string, isTyping: boolean = true) {
351
530
  if (this.socket) {
352
531
  this.socket.emit('typing_state', { jobId, isTyping });
353
532
  }
354
533
  }
355
534
 
356
- /**
357
- * Update the agent's profile on the grid
358
- */
359
535
  async updateProfile(data: { displayName?: string; skills?: string[]; bio?: string }) {
360
536
  if (!this.agentId) return;
361
537
  return this.api.post(`agents/${this.agentId}/manage`, data);
362
538
  }
363
539
 
364
- /**
365
- * Automatically find missions matching criteria and bid
366
- */
367
- async findAndBid(criteria: { skills?: string[]; minBudget?: number }) {
368
- this.logInternal('Scanning for missions matching criteria...');
369
- try {
370
- const jobs = await this.getOpenMissions();
371
-
372
- for (const job of jobs) {
373
- // Prevent duplicate bidding
374
- if (this.bidCache.has(job.id)) continue;
375
-
376
- try {
377
- const matchesSkill = criteria.skills ? criteria.skills.some(s =>
378
- job.title.toLowerCase().includes(s.toLowerCase()) ||
379
- job.description.toLowerCase().includes(s.toLowerCase())
380
- ) : true;
381
-
382
- const matchesBudget = criteria.minBudget ? job.budgetAmount >= criteria.minBudget : true;
383
-
384
- if (matchesSkill && matchesBudget) {
385
- this.logInternal(`Targeting Mission: ${job.title} ($${job.budgetAmount})`);
386
- const bidRes = await this.bid(job.id, job.budgetAmount, "I can execute this mission autonomously with high precision.");
387
- if (bidRes.success) {
388
- this.logInternal(`✅ Bid placed for ${job.title}`, 'SUCCESS' as any);
389
- } else {
390
- this.logInternal(`ℹ️ Skipped: ${bidRes.error || 'Unknown reason'}`, 'WARN');
391
- }
392
- }
393
- } catch (innerError: any) {
394
- this.logInternal(`Failed to process mission bid: ${innerError.message}`, 'ERROR');
395
- }
396
- }
397
- } catch (outerError: any) {
398
- this.logInternal(`Failed to fetch marketplace jobs: ${outerError.message}`, 'ERROR');
399
- }
400
- }
401
-
402
540
  async getOpenMissions(): Promise<Job[]> {
403
541
  const res = await this.api.get('jobs');
404
542
  return res.data.data
@@ -406,9 +544,6 @@ export class Agent extends EventEmitter {
406
544
  .map((j: any) => this.enrichJob(j));
407
545
  }
408
546
 
409
- /**
410
- * Get details for a specific mission
411
- */
412
547
  async getMission(jobId: string): Promise<Job> {
413
548
  const res = await this.api.get(`jobs/${jobId}`);
414
549
  return this.enrichJob(res.data.job);
@@ -435,9 +570,6 @@ export class Agent extends EventEmitter {
435
570
  return res.data;
436
571
  }
437
572
 
438
- /**
439
- * Fetch chat history for a mission
440
- */
441
573
  async getMessages(jobId: string): Promise<Message[]> {
442
574
  const res = await this.api.get(`jobs/${jobId}/messages`);
443
575
  return z.array(MessageSchema).parse(res.data.messages);
@@ -448,10 +580,6 @@ export class Agent extends EventEmitter {
448
580
  return res.data.success;
449
581
  }
450
582
 
451
- /**
452
- * Upload a local file to the mission deliverables
453
- * This method handles the cloud storage upload automatically.
454
- */
455
583
  async uploadFile(jobId: string, localPath: string, remoteName?: string) {
456
584
  if (!fs.existsSync(localPath)) throw new Error(`File not found: ${localPath}`);
457
585
  if (fs.statSync(localPath).size === 0) throw new Error(`Cannot upload empty file: ${localPath}`);
@@ -460,18 +588,14 @@ export class Agent extends EventEmitter {
460
588
  this.logInternal(`Uploading file: ${name}...`);
461
589
 
462
590
  try {
463
- // 1. Get the upload signature/URL
464
591
  const signRes = await this.api.get(`/upload?filename=${name}`);
465
- const { url, handleUploadUrl } = signRes.data;
592
+ const { url } = signRes.data;
466
593
 
467
- // 2. Perform the upload (Vercel Blob style or standard multipart)
468
- // Note: Since we're in Node, we use a simple PUT or POST to the signed URL
469
594
  const fileData = fs.readFileSync(localPath);
470
595
  await axios.put(url, fileData, {
471
596
  headers: { 'Content-Type': 'application/octet-stream' }
472
597
  });
473
598
 
474
- // 3. Link to mission
475
599
  return this.uploadDeliverable(jobId, url, name);
476
600
  } catch (err: any) {
477
601
  this.logInternal(`Upload failed: ${err.message}`, 'ERROR');
@@ -488,68 +612,42 @@ export class Agent extends EventEmitter {
488
612
  return res.data;
489
613
  }
490
614
 
491
- /**
492
- * Create a Mission Repository to store deliverables
493
- * This will be visible to both the bot owner and project owner.
494
- */
495
- async createMissionRepo(jobId: string, name: string) {
615
+ async createMissionRepo(jobId: string, name?: string) {
496
616
  if (!this.agentId) return;
497
617
  return this.api.post(`jobs/${jobId}/repo`, { name });
498
618
  }
499
619
 
500
- /**
501
- * Upload a file directly into the Mission Repository
502
- * @param jobId The mission ID
503
- * @param path The remote path in the repo (e.g. 'src/index.js')
504
- * @param content The file content OR a local file path
505
- * @param isBlob Whether to treat as binary data
506
- */
507
- async pushToRepo(jobId: string, path: string, content: string, isBlob: boolean = false) {
620
+ async pushToRepo(jobId: string, remotePath: string, contentOrPath: string, isBlob: boolean = false) {
508
621
  if (!this.agentId) return;
509
622
 
510
- let finalContent = content;
511
-
512
- // 🛠️ SMART FILE RESOLUTION:
513
- // If 'content' looks like a local file path and exists, read it automatically.
514
- if (!isBlob && fs.existsSync(content)) {
623
+ let finalContent = contentOrPath;
624
+ if (!isBlob && fs.existsSync(contentOrPath)) {
515
625
  try {
516
- this.logInternal(`Reading local file: ${content}`);
517
- finalContent = fs.readFileSync(content, 'utf8');
626
+ this.logInternal(`Reading local file: ${contentOrPath}`);
627
+ finalContent = fs.readFileSync(contentOrPath, 'utf8');
518
628
  } catch (err: any) {
519
629
  this.logInternal(`Failed to read local file: ${err.message}`, 'WARN');
520
630
  }
521
631
  }
522
632
 
523
- return this.api.post(`jobs/${jobId}/repo/files`, { path, content: finalContent, isBlob });
633
+ return this.api.post(`jobs/${jobId}/repo/files`, { path: remotePath, content: finalContent, isBlob });
524
634
  }
525
635
 
526
- /**
527
- * Report token consumption for billing and monitoring
528
- */
529
636
  async reportUsage(tokens: number) {
530
637
  if (!this.agentId) return;
531
638
  return this.api.post(`agents/${this.agentId}/manage`, { tokensUsed: tokens });
532
639
  }
533
640
 
534
- /**
535
- * Update mission progress (0-100) on the grid
536
- */
537
641
  async setProgress(jobId: string, progress: number) {
538
642
  if (!this.agentId) return;
539
643
  return this.api.post(`jobs/${jobId}/progress`, { progress });
540
644
  }
541
645
 
542
- /**
543
- * Send a high-priority alert to the agent owner
544
- */
545
646
  async notifyOwner(message: string) {
546
647
  if (!this.agentId) return;
547
648
  return this.api.post(`agents/${this.agentId}/notify`, { message });
548
649
  }
549
650
 
550
- /**
551
- * Stream logs to the RentaBots Dashboard
552
- */
553
651
  async log(message: string, level: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' = 'INFO') {
554
652
  if (!this.agentId) return;
555
653
  try {