blink 0.1.28 β 0.1.30
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/cli/index.js +2 -2
- package/dist/test.cjs +1 -1
- package/dist/test.js +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -2020,7 +2020,7 @@ Your platform (`+process.platform+`-`+process.arch+`) might not be supported.`:P
|
|
|
2020
2020
|
`),startLine=(request$3.payload.line_start??1)-1,endLine=request$3.payload.line_end??allLines.length,readLines=allLines.slice(startLine,endLine);this.sendResponse(stream$10,{id:request$3.id,payload:{content:readLines.join(`
|
|
2021
2021
|
`),mime_type:`text/plain`,total_lines:allLines.length,lines_read:readLines.length,start_line:startLine}});break}case`write_file`:request$3.payload.base64?await fs$5.writeFile(request$3.payload.path,Buffer.from(request$3.payload.content,`base64`)):await fs$5.writeFile(request$3.payload.path,request$3.payload.content),typeof request$3.payload.mode==`number`&&await fs$5.chmod(request$3.payload.path,request$3.payload.mode),this.sendResponse(stream$10,{id:request$3.id,payload:{}});break;case`read_directory`:{let files=await fs$5.readdir(request$3.payload.path,{withFileTypes:!0});this.sendResponse(stream$10,{id:request$3.id,payload:{entries:files.map(file$1=>({name:file$1.name,type:file$1.isDirectory()?`directory`:file$1.isSymbolicLink()?`symlink`:`file`}))}});break}default:throw Error(`Unknown request type: ${request$3.type}`)}}sendResponse(stream$10,response){stream$10.writeTyped(ServerMessageType.RESPONSE,this.encoder.encode(JSON.stringify(response)))}sendNotification(notification){this.notificationStream.write(new Uint8Array([ServerMessageType.NOTIFICATION,...this.encoder.encode(JSON.stringify(notification))]))}handleProcessWait(stream$10,request$3,signal){let payload=request$3.payload,process$1$1=this.mustGetProcess(payload.pid),onOutput,onExit$1,ended=!1,outputIdleTimeout,timeout;typeof payload.timeout_ms==`number`&&(timeout=setTimeout(()=>{end()},payload.timeout_ms));let end=()=>{if(ended||(ended=!0,onOutput&&onOutput.dispose(),onExit$1&&onExit$1.dispose(),timeout&&clearTimeout(timeout),outputIdleTimeout&&clearTimeout(outputIdleTimeout),signal?.aborted))return;let status=this.processManager.status(payload.pid),plainOutput=this.processManager.readPlainOutput(status.pid),ansi_output_truncated=truncateAnsi(this.processManager.readANSIOutput(status.pid),64e3),plain_trunc=truncateLinesByChars(plainOutput.lines,256e3);this.sendResponse(stream$10,{id:request$3.id,payload:{...status,ansi_output:ansi_output_truncated,plain_output:{lines:plain_trunc.lines,total_lines:plainOutput.totalLines}}})};if(typeof process$1$1.exitCode==`number`||typeof process$1$1.exitSignal==`number`){end();return}onOutput=process$1$1.onOutput(()=>{outputIdleTimeout&&clearTimeout(outputIdleTimeout),typeof payload.output_idle_timeout_ms==`number`&&(outputIdleTimeout=setTimeout(()=>{end()},payload.output_idle_timeout_ms))}),onExit$1=process$1$1.onExit(()=>{setTimeout(()=>{end()},10)}),signal.addEventListener(`abort`,()=>{end()})}mustGetProcess(pid){let process$1$1=this.processManager.getProcess(pid);if(!process$1$1)throw Error(`Process ${pid} not found`);return process$1$1}},Devhook=class{constructor(client){this.client=client}listen(options$1){let socket,reconnectTimeout,disposed=!1,baseDelayMS=250,maxDelayMS=1e4,currentDelayMS=250,clearReconnectTimer=()=>{reconnectTimeout&&=(clearTimeout(reconnectTimeout),void 0)},scheduleReconnect=()=>{if(disposed)return;clearReconnectTimer();let jitter=currentDelayMS*.2*Math.random(),delay$3=Math.min(maxDelayMS,Math.floor(currentDelayMS+jitter));reconnectTimeout=setTimeout(()=>{openSocket()},delay$3),currentDelayMS=Math.min(maxDelayMS,Math.floor(currentDelayMS*1.5))},resetBackoff=()=>{currentDelayMS=250},server=new Server({send:data$2=>{let ws$2=socket;!ws$2||ws$2.readyState!==WebSocket.OPEN||ws$2.send(data$2)},fetchProxyRequest(url$1$1,init$1$1){return options$1.onRequest(new Request(url$1$1,init$1$1))}}),attachListeners=ws$2=>{ws$2.binaryType=`arraybuffer`,ws$2.addEventListener(`open`,()=>{disposed||(resetBackoff(),options$1.onConnect?.())}),ws$2.addEventListener(`close`,()=>{disposed||(options$1.onDisconnect?.(),scheduleReconnect())}),ws$2.addEventListener(`error`,err$1$1=>{try{options$1.onError?.(err$1$1)}catch{}try{ws$2.close()}catch{}}),ws$2.addEventListener(`message`,event=>{if(typeof event.data==`string`){console.warn(`Message skipped because it is not a buffer.`);return}try{server.handleMessage(new Uint8Array(event.data))}catch(err$1$1){console.error(`message handler error`,err$1$1);try{ws$2.close(1011)}catch{}}})},openSocket=()=>{if(!disposed)try{let ws$2=this.client.websocket(`/api/devhook/${options$1.id}`);socket=ws$2,attachListeners(ws$2)}catch(err$1$1){try{options$1.onError?.(err$1$1)}catch{}scheduleReconnect()}};return openSocket(),{dispose:()=>{if(disposed)return;disposed=!0,clearReconnectTimer();let ws$2=socket;socket=void 0;try{ws$2&&(ws$2.readyState===WebSocket.OPEN||ws$2.readyState===WebSocket.CONNECTING)&&ws$2.close(1e3)}catch{}}}}},Client=class{constructor(options$1){this.chats=new Chats(this),this.runs=new ChatRuns(this),this.agents=new Agents(this),this.files=new Files(this),this.organizations=new Organizations(this),this.invites=new Invites(this),this.users=new Users(this),this.tools=new Tools(this),this.messages=new Messages$1(this),this.devhook=new Devhook(this),this.baseURL=new URL(options$1?.baseURL??(globalThis.window===void 0?`https://blink.so`:window.location.origin)),this.fetch=options$1?.fetch,this.authToken=options$1?.authToken,this.auth=new Auth(this,this.baseURL)}request(method,path$1$1,body,options$1){let url$1$1=new URL(path$1$1,this.baseURL),headers$2=new Headers;if(this.authToken&&headers$2.set(`Authorization`,`Bearer ${this.authToken}`),typeof body==`string`&&headers$2.set(`Content-Type`,`application/json`),options$1?.headers)for(let[key,value]of Object.entries(options$1.headers))headers$2.set(key,value);let signal;return options$1?.timeout&&(signal=AbortSignal.timeout(options$1.timeout)),(this.fetch??fetch)(url$1$1.toString(),{method,headers:headers$2,body,signal})}websocket(path$1$1){let url$1$1=new URL(path$1$1,this.baseURL);return url$1$1.protocol=url$1$1.protocol===`https:`?`wss:`:`ws:`,new WebSocket(url$1$1.toString())}};function useDevhook(options$1){let onRequestRef=(0,import_react.useRef)(options$1.onRequest);(0,import_react.useEffect)(()=>{onRequestRef.current=options$1.onRequest},[options$1.onRequest]);let id=(0,import_react.useRef)(options$1.id??crypto.randomUUID()),[status,setStatus]=(0,import_react.useState)(`disconnected`);return(0,import_react.useEffect)(()=>{if(options$1.disabled){setStatus(`disconnected`);return}let client=new Client,listener=client.devhook.listen({id:id.current,onRequest:async request$3=>options$1.onRequest(request$3),onConnect:()=>{setStatus(`connected`)},onDisconnect:()=>{setStatus(`disconnected`)},onError:error$66=>{setStatus(`error`)}});return()=>{listener.dispose()}},[options$1.disabled]),{id:id.current,status}}var require_package=__commonJSMin(((exports,module)=>{module.exports={name:`dotenv`,version:`17.2.2`,description:`Loads environment variables from .env file`,main:`lib/main.js`,types:`lib/main.d.ts`,exports:{".":{types:`./lib/main.d.ts`,require:`./lib/main.js`,default:`./lib/main.js`},"./config":`./config.js`,"./config.js":`./config.js`,"./lib/env-options":`./lib/env-options.js`,"./lib/env-options.js":`./lib/env-options.js`,"./lib/cli-options":`./lib/cli-options.js`,"./lib/cli-options.js":`./lib/cli-options.js`,"./package.json":`./package.json`},scripts:{"dts-check":`tsc --project tests/types/tsconfig.json`,lint:`standard`,pretest:`npm run lint && npm run dts-check`,test:`tap run --allow-empty-coverage --disable-coverage --timeout=60000`,"test:coverage":`tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov`,prerelease:`npm test`,release:`standard-version`},repository:{type:`git`,url:`git://github.com/motdotla/dotenv.git`},homepage:`https://github.com/motdotla/dotenv#readme`,funding:`https://dotenvx.com`,keywords:[`dotenv`,`env`,`.env`,`environment`,`variables`,`config`,`settings`],readmeFilename:`README.md`,license:`BSD-2-Clause`,devDependencies:{"@types/node":`^18.11.3`,decache:`^4.6.2`,sinon:`^14.0.1`,standard:`^17.0.0`,"standard-version":`^9.5.0`,tap:`^19.2.0`,typescript:`^4.8.4`},engines:{node:`>=12`},browser:{fs:!1}}})),require_main=__commonJSMin(((exports,module)=>{let fs$3=__require$2(`fs`),path$5=__require$2(`path`),os$3=__require$2(`os`),crypto$3=__require$2(`crypto`),packageJson=require_package(),version$1=packageJson.version,TIPS=[`π encrypt with Dotenvx: https://dotenvx.com`,`π prevent committing .env to code: https://dotenvx.com/precommit`,`π prevent building .env in docker: https://dotenvx.com/prebuild`,`π‘ observe env with Radar: https://dotenvx.com/radar`,`π‘ auto-backup env with Radar: https://dotenvx.com/radar`,`π‘ version env with Radar: https://dotenvx.com/radar`,"π οΈ run anywhere with `dotenvx run -- yourcommand`",`βοΈ specify custom .env file path with { path: '/custom/path/.env' }`,`βοΈ enable debug logging with { debug: true }`,`βοΈ override existing env vars with { override: true }`,`βοΈ suppress all logs with { quiet: true }`,`βοΈ write to custom object with { processEnv: myObject }`,`βοΈ load multiple .env files with { path: ['.env.local', '.env'] }`];function _getRandomTip(){return TIPS[Math.floor(Math.random()*TIPS.length)]}function parseBoolean(value){return typeof value==`string`?![`false`,`0`,`no`,`off`,``].includes(value.toLowerCase()):!!value}function supportsAnsi(){return process.stdout.isTTY}function dim(text$2){return supportsAnsi()?`\x1b[2m${text$2}\x1b[0m`:text$2}let LINE=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;function parse$2(src){let obj={},lines=src.toString();lines=lines.replace(/\r\n?/gm,`
|
|
2022
2022
|
`);let match$1;for(;(match$1=LINE.exec(lines))!=null;){let key=match$1[1],value=match$1[2]||``;value=value.trim();let maybeQuote=value[0];value=value.replace(/^(['"`])([\s\S]*)\1$/gm,`$2`),maybeQuote===`"`&&(value=value.replace(/\\n/g,`
|
|
2023
|
-
`),value=value.replace(/\\r/g,`\r`)),obj[key]=value}return obj}function _parseVault(options$1){options$1||={};let vaultPath=_vaultPath(options$1);options$1.path=vaultPath;let result=DotenvModule.configDotenv(options$1);if(!result.parsed){let err$2=Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`);throw err$2.code=`MISSING_DATA`,err$2}let keys=_dotenvKey(options$1).split(`,`),length=keys.length,decrypted;for(let i$7=0;i$7<length;i$7++)try{let key=keys[i$7].trim(),attrs=_instructions(result,key);decrypted=DotenvModule.decrypt(attrs.ciphertext,attrs.key);break}catch(error$66){if(i$7+1>=length)throw error$66}return DotenvModule.parse(decrypted)}function _warn(message){console.error(`[dotenv@${version$1}][WARN] ${message}`)}function _debug(message){console.log(`[dotenv@${version$1}][DEBUG] ${message}`)}function _log(message){console.log(`[dotenv@${version$1}] ${message}`)}function _dotenvKey(options$1){return options$1&&options$1.DOTENV_KEY&&options$1.DOTENV_KEY.length>0?options$1.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:``}function _instructions(result,dotenvKey){let uri$3;try{uri$3=new URL(dotenvKey)}catch(error$66){if(error$66.code===`ERR_INVALID_URL`){let err$2=Error(`INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}throw error$66}let key=uri$3.password;if(!key){let err$2=Error(`INVALID_DOTENV_KEY: Missing key part`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}let environment=uri$3.searchParams.get(`environment`);if(!environment){let err$2=Error(`INVALID_DOTENV_KEY: Missing environment part`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}let environmentKey=`DOTENV_VAULT_${environment.toUpperCase()}`,ciphertext=result.parsed[environmentKey];if(!ciphertext){let err$2=Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`);throw err$2.code=`NOT_FOUND_DOTENV_ENVIRONMENT`,err$2}return{ciphertext,key}}function _vaultPath(options$1){let possibleVaultPath=null;if(options$1&&options$1.path&&options$1.path.length>0)if(Array.isArray(options$1.path))for(let filepath of options$1.path)fs$3.existsSync(filepath)&&(possibleVaultPath=filepath.endsWith(`.vault`)?filepath:`${filepath}.vault`);else possibleVaultPath=options$1.path.endsWith(`.vault`)?options$1.path:`${options$1.path}.vault`;else possibleVaultPath=path$5.resolve(process.cwd(),`.env.vault`);return fs$3.existsSync(possibleVaultPath)?possibleVaultPath:null}function _resolveHome(envPath){return envPath[0]===`~`?path$5.join(os$3.homedir(),envPath.slice(1)):envPath}function _configVault(options$1){let debug$12=parseBoolean(process.env.DOTENV_CONFIG_DEBUG||options$1&&options$1.debug),quiet=parseBoolean(process.env.DOTENV_CONFIG_QUIET||options$1&&options$1.quiet);(debug$12||!quiet)&&_log(`Loading env from encrypted .env.vault`);let parsed=DotenvModule._parseVault(options$1),processEnv=process.env;return options$1&&options$1.processEnv!=null&&(processEnv=options$1.processEnv),DotenvModule.populate(processEnv,parsed,options$1),{parsed}}function configDotenv(options$1){let dotenvPath=path$5.resolve(process.cwd(),`.env`),encoding=`utf8`,processEnv=process.env;options$1&&options$1.processEnv!=null&&(processEnv=options$1.processEnv);let debug$12=parseBoolean(processEnv.DOTENV_CONFIG_DEBUG||options$1&&options$1.debug),quiet=parseBoolean(processEnv.DOTENV_CONFIG_QUIET||options$1&&options$1.quiet);options$1&&options$1.encoding?encoding=options$1.encoding:debug$12&&_debug(`No encoding is specified. UTF-8 is used by default`);let optionPaths=[dotenvPath];if(options$1&&options$1.path)if(!Array.isArray(options$1.path))optionPaths=[_resolveHome(options$1.path)];else{optionPaths=[];for(let filepath of options$1.path)optionPaths.push(_resolveHome(filepath))}let lastError,parsedAll={};for(let path$38 of optionPaths)try{let parsed=DotenvModule.parse(fs$3.readFileSync(path$38,{encoding}));DotenvModule.populate(parsedAll,parsed,options$1)}catch(e$3){debug$12&&_debug(`Failed to load ${path$38} ${e$3.message}`),lastError=e$3}let populated=DotenvModule.populate(processEnv,parsedAll,options$1);if(debug$12=parseBoolean(processEnv.DOTENV_CONFIG_DEBUG||debug$12),quiet=parseBoolean(processEnv.DOTENV_CONFIG_QUIET||quiet),debug$12||!quiet){let keysCount=Object.keys(populated).length,shortPaths=[];for(let filePath of optionPaths)try{let relative$1=path$5.relative(process.cwd(),filePath);shortPaths.push(relative$1)}catch(e$3){debug$12&&_debug(`Failed to load ${filePath} ${e$3.message}`),lastError=e$3}_log(`injecting env (${keysCount}) from ${shortPaths.join(`,`)} ${dim(`-- tip: ${_getRandomTip()}`)}`)}return lastError?{parsed:parsedAll,error:lastError}:{parsed:parsedAll}}function config(options$1){if(_dotenvKey(options$1).length===0)return DotenvModule.configDotenv(options$1);let vaultPath=_vaultPath(options$1);return vaultPath?DotenvModule._configVault(options$1):(_warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`),DotenvModule.configDotenv(options$1))}function decrypt(encrypted,keyStr){let key=Buffer.from(keyStr.slice(-64),`hex`),ciphertext=Buffer.from(encrypted,`base64`),nonce=ciphertext.subarray(0,12),authTag=ciphertext.subarray(-16);ciphertext=ciphertext.subarray(12,-16);try{let aesgcm=crypto$3.createDecipheriv(`aes-256-gcm`,key,nonce);return aesgcm.setAuthTag(authTag),`${aesgcm.update(ciphertext)}${aesgcm.final()}`}catch(error$66){let isRange=error$66 instanceof RangeError,invalidKeyLength=error$66.message===`Invalid key length`,decryptionFailed=error$66.message===`Unsupported state or unable to authenticate data`;if(isRange||invalidKeyLength){let err$2=Error(`INVALID_DOTENV_KEY: It must be 64 characters long (or more)`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}else if(decryptionFailed){let err$2=Error(`DECRYPTION_FAILED: Please check your DOTENV_KEY`);throw err$2.code=`DECRYPTION_FAILED`,err$2}else throw error$66}}function populate(processEnv,parsed,options$1={}){let debug$12=!!(options$1&&options$1.debug),override=!!(options$1&&options$1.override),populated={};if(typeof parsed!=`object`){let err$2=Error(`OBJECT_REQUIRED: Please check the processEnv argument being passed to populate`);throw err$2.code=`OBJECT_REQUIRED`,err$2}for(let key of Object.keys(parsed))Object.prototype.hasOwnProperty.call(processEnv,key)?(override===!0&&(processEnv[key]=parsed[key],populated[key]=parsed[key]),debug$12&&_debug(override===!0?`"${key}" is already defined and WAS overwritten`:`"${key}" is already defined and was NOT overwritten`)):(processEnv[key]=parsed[key],populated[key]=parsed[key]);return populated}let DotenvModule={configDotenv,_configVault,_parseVault,config,decrypt,parse:parse$2,populate};module.exports.configDotenv=DotenvModule.configDotenv,module.exports._configVault=DotenvModule._configVault,module.exports._parseVault=DotenvModule._parseVault,module.exports.config=DotenvModule.config,module.exports.decrypt=DotenvModule.decrypt,module.exports.parse=DotenvModule.parse,module.exports.populate=DotenvModule.populate,module.exports=DotenvModule})),import_main$1=__toESM$1(require_main(),1);function useDotenv(directory,name$6=`.env.local`){let[env$8,setEnv]=(0,import_react.useState)({});return(0,import_react.useEffect)(()=>{let watcher,readEnvFile=path$38=>{try{setEnv((0,import_main$1.parse)(readFileSync$1(path$38,`utf-8`)))}catch(error$66){console.error(error$66),setEnv({})}};return findNearestEntry(directory,name$6).then(nearest=>{if(!nearest){setEnv({});return}readEnvFile(nearest),watcher=watch(nearest,{persistent:!1},()=>{readEnvFile(nearest)})}),()=>{watcher&&watcher.close()}},[directory,name$6]),env$8}function useServerChat(server,id){let[chat$2,setChat]=(0,import_react.useState)(()=>server.upsertChat(id));return(0,import_react.useEffect)(()=>{setChat(server.upsertChat(id));let disposable=server.onChatChanged(chat$3=>{if(chat$3.id===id)return setChat(chat$3)});return()=>disposable.dispose()},[server,id]),chat$2}function useTerminalSize(){let{stdout:stdout$1}=use_stdout_default(),[size,setSize]=(0,import_react.useState)({columns:process.stdout.columns,rows:process.stdout.rows});return(0,import_react.useEffect)(()=>{if(!stdout$1||!stdout$1.isTTY)return;let handleResize=()=>{setSize({columns:stdout$1.columns,rows:stdout$1.rows})};return process.stdout.on(`resize`,handleResize),()=>{process.stdout.off(`resize`,handleResize)}},[stdout$1]),{columns:size.columns,rows:size.rows?size.rows-1:void 0}}async function start(element){let instance$1=render_default(element,{exitOnCtrlC:!1});await instance$1.waitUntilExit().finally(()=>{})}function startDev({entrypoint}){return start((0,import_jsx_runtime.jsx)(Root,{entrypoint}))}const Root=({entrypoint})=>{let size=useTerminalSize(),{errors:compileErrors,status:bundlerStatus,lastBuildDuration,bundle}=useBundler(entrypoint),env$8=useDotenv(dirname$1(entrypoint)),server=(0,import_react.useMemo)(()=>createServer$1({port:0,dataDirectory:join$1(dirname$1(entrypoint),`.blink`,`data`),sendMessages:async(request$3,signal)=>{if(!currentAgentRef.current)throw Error(`No agent`);return await currentAgentRef.current.sendMessages({messages:request$3.messages.filter(m$3=>m$3.metadata?.ephemeral!==!0)},{signal})},serializeChat:chat$3=>({...chat$3,messages:chat$3.messages.filter(m$3=>m$3.metadata?.ephemeral!==!0)}),shouldLoop:({messages:messages$1})=>{let lastMessage=messages$1.at(-1);if(!lastMessage||lastMessage.role!==`assistant`)return!1;let lastStepStartIndex=lastMessage.parts.reduce((lastIndex,part,index)=>part.type===`step-start`?index:lastIndex,-1),lastStepToolInvocations=lastMessage.parts.slice(lastStepStartIndex+1).filter(isToolOrDynamicToolUIPart);return lastStepToolInvocations.length>0&&lastStepToolInvocations.every(part=>part.state.startsWith(`output-`))}}),[]),{agent,logs:logs$1,error:agentError,supportsWebhooks}=useAgent({bundle,env:env$8,apiServerUrl:server.url}),currentAgentRef=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>{agent?currentAgentRef.current=agent:server.stopChat(chat$2.id)},[agent]);let devhook=useDevhook({id:`267fb71c-a3b1-4c8d-b18a-0563bbda2510`,disabled:!supportsWebhooks,onRequest:async request$3=>{if(!currentAgentRef.current)throw Error(`No agent`);let response=await currentAgentRef.current.sendWebhook(request$3);return server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`webhook`,ephemeral:!0},parts:[{type:`text`,text:`method=${request$3.method} status=${response.status}`}]}),response}}),[chatID,setChatID]=(0,import_react.useState)(`default`),currentChatIDRef=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>{currentChatIDRef.current=chatID},[chatID]);let chat$2=useServerChat(server,chatID),[chatIDs,setChatIDs]=(0,import_react.useState)(()=>server.listChats()),currentChatIDsRef=(0,import_react.useRef)(chatIDs);(0,import_react.useEffect)(()=>{currentChatIDsRef.current=chatIDs},[chatIDs]),(0,import_react.useEffect)(()=>{let disposable=server.onChatChanged(chat$3=>{!currentChatIDsRef.current.includes(chat$3.id)&¤tChatIDRef.current&&(setChatID(chat$3.id),server.upsertChatMessage(chat$3.id,{role:`assistant`,metadata:{type:`chat-created`,ephemeral:!0},parts:[{type:`text`,text:`This chat has just been created: ${chat$3.id}. We automatically switched you to it!`}]})),setChatIDs(prev=>{let newChats=[...prev];return newChats.includes(chat$3.id)?prev:(newChats.push(chat$3.id),newChats)})});return()=>{disposable.dispose()}},[server]);let{exit}=use_app_default(),[exitArmed,setExitArmed]=(0,import_react.useState)(!1),exitTimerRef=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>()=>{exitTimerRef.current&&clearTimeout(exitTimerRef.current)},[]),use_input_default((input,key)=>{if(key.ctrl&&input.toLowerCase()===`c`){if(exitArmed){exit();return}setExitArmed(!0),exitTimerRef.current&&clearTimeout(exitTimerRef.current),exitTimerRef.current=setTimeout(()=>setExitArmed(!1),2e3)}}),(0,import_react.useEffect)(()=>{if(compileErrors.length>0||agentError||chat$2.error){let errors$1=[];for(let error$66 of compileErrors)errors$1.push({type:`text`,text:`${error$66.text} (${error$66.location?.file})`});agentError&&errors$1.push({type:`text`,text:agentError.message}),chat$2.error&&errors$1.push({type:`text`,text:`Chat error: ${chat$2.error.message}, ${chat$2.error.stack}`}),server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`error`,ephemeral:!0},parts:errors$1});return}if(bundlerStatus===`building`||!agent){server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`info`,ephemeral:!0},parts:[{type:`text`,text:`Compiling...`}]});return}if(bundlerStatus===`success`&&agent){server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`success`,ephemeral:!0},parts:[{type:`text`,text:`Compiled in 100ms`}]});return}},[compileErrors,agentError,bundlerStatus,agent]);let lastReportedKeys=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>{let keys=Object.keys(env$8);if(keys.length===lastReportedKeys.current||lastReportedKeys.current===void 0)return;lastReportedKeys.current=keys.length;let keysText=keys.map(key=>source_default.dim(key)).join(`, `);keysText.length===0&&(keysText=source_default.dim(`(none)`));let text$2=`Loaded .env.local: `+keysText;server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`info`,ephemeral:!0},parts:[{type:`text`,text:text$2}]})},[env$8]),(0,import_react.useEffect)(()=>{!supportsWebhooks||devhook.status!==`connected`||server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`info`,ephemeral:!0},parts:[{type:`text`,text:`Send webhooks from anywhere: https://blink.so/api/devhook/${devhook.id}`}]})},[supportsWebhooks,devhook.status]);let lastLogsLength=(0,import_react.useRef)(0);(0,import_react.useEffect)(()=>{if(logs$1.length===lastLogsLength.current)return;let currentLength=lastLogsLength.current;for(let log$5 of logs$1.slice(currentLength))server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`runtime-log`,level:log$5.level,ephemeral:!0},parts:[{type:`text`,text:log$5.message}]});lastLogsLength.current=logs$1.length},[logs$1]);let keymaps=(0,import_react.useMemo)(()=>({"β":`send`,"Ctrl+R":`reset chat`,"Ctrl+C":`quit`,"[Escape]":`stop streaming`}),[]),keybindSuggestion=(0,import_react.useMemo)(()=>{if(exitArmed)return`Ctrl+C again to quit`;if(chat$2.status===`streaming`)return`Press [Escape] to stop the agent!`},[exitArmed,chat$2.status]),newChatNames=(0,import_react.useMemo)(()=>{let names$1=[];for(;names$1.length<3;){let name$6=(0,import_dist.uniqueNamesGenerator)({dictionaries:[import_dist.adjectives,import_dist.animals],style:`lowerCase`});chatIDs.includes(name$6)||names$1.push(name$6)}return names$1},[chatID,chatIDs]);return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Keybinds,{resetChat:()=>{server.resetChat(chat$2.id)},stopStreaming:()=>{server.stopChat(chat$2.id)}}),(0,import_jsx_runtime.jsxs)(Box_default,{children:[(0,import_jsx_runtime.jsx)(Text,{bold:!0,children:`blinkβ `}),(0,import_jsx_runtime.jsx)(Text,{color:`gray`,children:` agent development mode`})]}),(0,import_jsx_runtime.jsxs)(Box_default,{marginTop:1,flexDirection:`column`,children:[(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`Edit `,entrypoint,` to hot-reload your agent.`]}),(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`Run `,(0,import_jsx_runtime.jsx)(Text,{color:`blue`,children:`blink deploy`}),` to use your agent in the cloud.`]})]}),chat$2.error?(0,import_jsx_runtime.jsx)(Box_default,{marginTop:1,children:(0,import_jsx_runtime.jsx)(Text,{color:`red`,children:chat$2.error.message})}):null,(0,import_jsx_runtime.jsx)(Messages,{messages:[...chat$2.messages],streamingMessage:chat$2.streamingMessage,maxWidth:size.columns-2,status:chat$2.status}),(0,import_jsx_runtime.jsx)(Box_default,{flexDirection:`column`,marginTop:1,children:(0,import_jsx_runtime.jsx)(text_input_default,{slashCommands:[{name:`reset`,altNames:[`clear`],description:`Reset the chat`,action:()=>{server.resetChat(chat$2.id)}},{name:`switch`,description:`Switch to a different chat`,action:args=>{setChatID(args)},completion:async partialArg=>{let chats=server.listChats();return chats.map(chat$3=>chat$3)}},{name:`new`,description:`Create a new chat`,action:args=>{setChatID(args)},completion:async partialArg=>newChatNames}],onSubmit:value=>(server.runtime.chat.sendMessages(chat$2.id,{messages:[{role:`user`,parts:[{type:`text`,text:value}]}],behavior:`interrupt`}),!0)})}),(0,import_jsx_runtime.jsx)(Box_default,{children:keybindSuggestion?(0,import_jsx_runtime.jsx)(Text,{color:`yellow`,children:` `+keybindSuggestion}):(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Box_default,{marginLeft:2,children:(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`chat: `,(0,import_jsx_runtime.jsx)(Text,{children:chat$2.id})]})}),(0,import_jsx_runtime.jsx)(Spacer,{}),(0,import_jsx_runtime.jsx)(Box_default,{gap:3,marginRight:2,children:Object.entries(keymaps).map(([key,value])=>(0,import_jsx_runtime.jsx)(Text,{children:source_default.gray.dim(key+` `+value)},key))})]})})]})},Keybinds=({resetChat,stopStreaming})=>(use_input_default((input,key)=>{key.ctrl&&input===`r`&&resetChat(),key.escape&&stopStreaming()}),null),Messages=({messages:messages$1,maxWidth,streamingMessage,status})=>(0,import_jsx_runtime.jsxs)(Box_default,{flexDirection:`column`,children:[messages$1.map((message,index)=>(0,import_jsx_runtime.jsx)(Message,{message,previousMessage:index>0?messages$1.at(index-1):void 0,nextMessage:index<messages$1.length-1?messages$1.at(index+1):void 0,maxWidth},message.id)),streamingMessage?(0,import_jsx_runtime.jsx)(Message,{message:streamingMessage,nextMessage:void 0,previousMessage:messages$1.length>0?messages$1.at(messages$1.length-1):void 0,streaming:!0,maxWidth},streamingMessage.id):null,status===`streaming`&&!streamingMessage?(0,import_jsx_runtime.jsx)(AssistantWaitingPlaceholder,{maxWidth}):null]}),MessageComponent=({message,previousMessage,maxWidth,streaming})=>{let prefix,contentColor,marginTop=1;switch(message.role){case`system`:prefix=(0,import_jsx_runtime.jsx)(Text,{children:`t `}),contentColor=`gray`;break;case`user`:prefix=(0,import_jsx_runtime.jsx)(Text,{color:`magenta`,bold:!0,children:`β`}),contentColor=`gray`;break;case`assistant`:prefix=(0,import_jsx_runtime.jsx)(Text,{color:`white`,children:`> `}),contentColor=`white`;break}if(message.metadata?.type===`build-log`){let color=`gray`;switch(message.metadata.level){case`success`:color=`green`;break;case`info`:color=`gray`;break;case`error`:color=`red`;break}prefix=(0,import_jsx_runtime.jsx)(Text,{color,children:`β `}),contentColor=`gray`,previousMessage?.metadata?.type===`build-log`&&(marginTop=0)}message.metadata?.type===`webhook`&&(prefix=(0,import_jsx_runtime.jsx)(Text,{color:`blue`,children:`β© `}),contentColor=`gray`,previousMessage?.metadata?.type===`webhook`&&(marginTop=0));let content=(0,import_jsx_runtime.jsx)(Box_default,{gap:1,flexDirection:`column`,width:maxWidth,children:message.parts.map((part,index)=>{if(part.type===`text`)return(0,import_jsx_runtime.jsx)(markdown_default,{id:message.id,maxWidth,children:part.text},index);if(part.type===`reasoning`)return(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`Reasoning: `,part.text]},index);if(isToolUIPart(part))return(0,import_jsx_runtime.jsx)(ToolCall,{part,maxWidth,streaming},index)}).filter(Boolean)});return(0,import_jsx_runtime.jsxs)(Box_default,{marginTop,flexDirection:`row`,children:[(0,import_jsx_runtime.jsx)(Box_default,{children:(0,import_jsx_runtime.jsx)(Text,{color:contentColor,children:prefix})}),content]})},Message=import_react.memo(MessageComponent,(prev,next)=>prev.maxWidth===next.maxWidth?!!(prev.nextMessage&&next.nextMessage&&prev.nextMessage.id===next.nextMessage.id):!1),AssistantWaitingPlaceholder=({maxWidth})=>(0,import_jsx_runtime.jsxs)(Box_default,{marginTop:1,flexDirection:`row`,children:[(0,import_jsx_runtime.jsx)(Box_default,{children:(0,import_jsx_runtime.jsx)(Text,{color:`white`,children:null})}),(0,import_jsx_runtime.jsx)(Box_default,{width:maxWidth,children:(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[(0,import_jsx_runtime.jsx)(build_default,{}),` Waiting for response...`]})})]}),ToolCall=({part,maxWidth,streaming})=>{let name$6=getToolOrDynamicToolName(part),input=(0,import_react.useMemo)(()=>{let labels={};return typeof part.input!=`object`||part.input===null||Object.entries(part.input).forEach(([key,value])=>{labels[key]=JSON.stringify(value)}),labels},[part]),output=(0,import_react.useMemo)(()=>{if(!part.output)return;if(typeof part.output==`string`)return part.output;let labels={};return Array.isArray(part.output)?part.output.forEach((item,index)=>{labels[`${index}`]=JSON.stringify(item)}):typeof part.output==`object`&&Object.entries(part.output).forEach(([key,value])=>{labels[key]=JSON.stringify(value)}),labels},[part]),state=(0,import_react.useMemo)(()=>{switch(part.state){case`input-available`:case`input-streaming`:return streaming?`streaming`:`error`;case`output-available`:return`done`;case`output-error`:return`error`}},[part,streaming]),error$66=(0,import_react.useMemo)(()=>{if(part.state===`output-error`)return part.errorText},[part]);return(0,import_jsx_runtime.jsxs)(Box_default,{flexDirection:`column`,children:[(0,import_jsx_runtime.jsxs)(Box_default,{gap:1,children:[(0,import_jsx_runtime.jsx)(Text,{color:state===`error`?`red`:`gray`,bold:!0,children:state===`done`||state===`error`?`β`:(0,import_jsx_runtime.jsx)(build_default,{type:`dots`})}),(0,import_jsx_runtime.jsx)(Text,{children:name$6})]}),(0,import_jsx_runtime.jsxs)(Box_default,{marginLeft:2,flexDirection:`column`,overflowX:`hidden`,width:maxWidth?maxWidth-4:void 0,gap:0,children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,bold:!0,children:`Input:`}),Object.entries(input).map(([key,value])=>(0,import_jsx_runtime.jsxs)(Box_default,{marginLeft:2,children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,children:key}),(0,import_jsx_runtime.jsx)(Text,{color:`blackBright`,children:`=`}),(0,import_jsx_runtime.jsx)(Box_default,{width:maxWidth?maxWidth-6-1-2-key.length:void 0,children:(0,import_jsx_runtime.jsx)(Text,{wrap:`truncate-middle`,children:value})})]},key)),output&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,bold:!0,children:`Output:`}),typeof output==`string`?(0,import_jsx_runtime.jsx)(Box_default,{marginLeft:2,children:(0,import_jsx_runtime.jsx)(Text,{children:output})}):(0,import_jsx_runtime.jsx)(Box_default,{flexDirection:`column`,children:Object.entries(output).map(([key,value])=>(0,import_jsx_runtime.jsxs)(Box_default,{marginLeft:2,children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,children:key}),(0,import_jsx_runtime.jsx)(Text,{color:`blackBright`,children:`=`}),(0,import_jsx_runtime.jsx)(Box_default,{width:maxWidth?maxWidth-6-1-key.length:void 0,children:(0,import_jsx_runtime.jsx)(Text,{wrap:`truncate-middle`,children:value})})]},key))})]}),error$66&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,bold:!0,children:`Error:`}),(0,import_jsx_runtime.jsx)(Text,{color:`red`,children:error$66})]})]})]})};async function dev(directory){directory||=process.cwd();let entrypoint=await resolveEntrypoint(directory),exitWithDump=error$66=>{writeFileSync$1(`error.dump`,inspect$1(error$66,{depth:null})),process.exit(1)};process.addListener(`uncaughtException`,error$66=>{exitWithDump(error$66)}),process.addListener(`unhandledRejection`,error$66=>{exitWithDump(error$66)}),await startDev({entrypoint}),process.exit(0)}var require_src=__commonJSMin(((exports,module)=>{let ESC=`\x1B`,CSI=`\x1B[`,beep=`\x07`,cursor={to(x$5,y$3){return y$3?`[${y$3+1};${x$5+1}H`:`[${x$5+1}G`},move(x$5,y$3){let ret=``;return x$5<0?ret+=`[${-x$5}D`:x$5>0&&(ret+=`[${x$5}C`),y$3<0?ret+=`[${-y$3}A`:y$3>0&&(ret+=`[${y$3}B`),ret},up:(count$1=1)=>`[${count$1}A`,down:(count$1=1)=>`[${count$1}B`,forward:(count$1=1)=>`[${count$1}C`,backward:(count$1=1)=>`[${count$1}D`,nextLine:(count$1=1)=>`\x1B[E`.repeat(count$1),prevLine:(count$1=1)=>`\x1B[F`.repeat(count$1),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`},scroll={up:(count$1=1)=>`\x1B[S`.repeat(count$1),down:(count$1=1)=>`\x1B[T`.repeat(count$1)},erase={screen:`\x1B[2J`,up:(count$1=1)=>`\x1B[1J`.repeat(count$1),down:(count$1=1)=>`\x1B[J`.repeat(count$1),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(count$1){let clear$1=``;for(let i$7=0;i$7<count$1;i$7++)clear$1+=this.line+(i$7<count$1-1?cursor.up():``);return count$1&&(clear$1+=cursor.left),clear$1}};module.exports={cursor,scroll,erase,beep:`\x07`}})),require_picocolors=__commonJSMin(((exports,module)=>{let p$1=process||{},argv=p$1.argv||[],env$1=p$1.env||{},isColorSupported=!(env$1.NO_COLOR||argv.includes(`--no-color`))&&(!!env$1.FORCE_COLOR||argv.includes(`--color`)||p$1.platform===`win32`||(p$1.stdout||{}).isTTY&&env$1.TERM!==`dumb`||!!env$1.CI),formatter=(open$3,close,replace$1=open$3)=>input=>{let string$7=``+input,index=string$7.indexOf(close,open$3.length);return~index?open$3+replaceClose(string$7,close,replace$1,index)+close:open$3+string$7+close},replaceClose=(string$7,close,replace$1,index)=>{let result=``,cursor$1=0;do result+=string$7.substring(cursor$1,index)+replace$1,cursor$1=index+close.length,index=string$7.indexOf(close,cursor$1);while(~index);return result+string$7.substring(cursor$1)},createColors=(enabled=isColorSupported)=>{let f=enabled?formatter:()=>String;return{isColorSupported:enabled,reset:f(`\x1B[0m`,`\x1B[0m`),bold:f(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:f(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:f(`\x1B[3m`,`\x1B[23m`),underline:f(`\x1B[4m`,`\x1B[24m`),inverse:f(`\x1B[7m`,`\x1B[27m`),hidden:f(`\x1B[8m`,`\x1B[28m`),strikethrough:f(`\x1B[9m`,`\x1B[29m`),black:f(`\x1B[30m`,`\x1B[39m`),red:f(`\x1B[31m`,`\x1B[39m`),green:f(`\x1B[32m`,`\x1B[39m`),yellow:f(`\x1B[33m`,`\x1B[39m`),blue:f(`\x1B[34m`,`\x1B[39m`),magenta:f(`\x1B[35m`,`\x1B[39m`),cyan:f(`\x1B[36m`,`\x1B[39m`),white:f(`\x1B[37m`,`\x1B[39m`),gray:f(`\x1B[90m`,`\x1B[39m`),bgBlack:f(`\x1B[40m`,`\x1B[49m`),bgRed:f(`\x1B[41m`,`\x1B[49m`),bgGreen:f(`\x1B[42m`,`\x1B[49m`),bgYellow:f(`\x1B[43m`,`\x1B[49m`),bgBlue:f(`\x1B[44m`,`\x1B[49m`),bgMagenta:f(`\x1B[45m`,`\x1B[49m`),bgCyan:f(`\x1B[46m`,`\x1B[49m`),bgWhite:f(`\x1B[47m`,`\x1B[49m`),blackBright:f(`\x1B[90m`,`\x1B[39m`),redBright:f(`\x1B[91m`,`\x1B[39m`),greenBright:f(`\x1B[92m`,`\x1B[39m`),yellowBright:f(`\x1B[93m`,`\x1B[39m`),blueBright:f(`\x1B[94m`,`\x1B[39m`),magentaBright:f(`\x1B[95m`,`\x1B[39m`),cyanBright:f(`\x1B[96m`,`\x1B[39m`),whiteBright:f(`\x1B[97m`,`\x1B[39m`),bgBlackBright:f(`\x1B[100m`,`\x1B[49m`),bgRedBright:f(`\x1B[101m`,`\x1B[49m`),bgGreenBright:f(`\x1B[102m`,`\x1B[49m`),bgYellowBright:f(`\x1B[103m`,`\x1B[49m`),bgBlueBright:f(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:f(`\x1B[105m`,`\x1B[49m`),bgCyanBright:f(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:f(`\x1B[107m`,`\x1B[49m`)}};module.exports=createColors(),module.exports.createColors=createColors})),import_src$1=__toESM$1(require_src(),1),import_picocolors$1=__toESM$1(require_picocolors(),1);function DD({onlyFirst:e$3=!1}={}){let t$1=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);return new RegExp(t$1,e$3?void 0:`g`)}const uD=DD();function P$1(e$3){if(typeof e$3!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e$3}\``);return e$3.replace(uD,``)}function L$1(e$3){return e$3&&e$3.__esModule&&Object.prototype.hasOwnProperty.call(e$3,`default`)?e$3.default:e$3}var W$1={exports:{}};(function(e$3){var u$18={};e$3.exports=u$18,u$18.eastAsianWidth=function(F$3){var s$3=F$3.charCodeAt(0),i$7=F$3.length==2?F$3.charCodeAt(1):0,D$2=s$3;return 55296<=s$3&&s$3<=56319&&56320<=i$7&&i$7<=57343&&(s$3&=1023,i$7&=1023,D$2=s$3<<10|i$7,D$2+=65536),D$2==12288||65281<=D$2&&D$2<=65376||65504<=D$2&&D$2<=65510?`F`:D$2==8361||65377<=D$2&&D$2<=65470||65474<=D$2&&D$2<=65479||65482<=D$2&&D$2<=65487||65490<=D$2&&D$2<=65495||65498<=D$2&&D$2<=65500||65512<=D$2&&D$2<=65518?`H`:4352<=D$2&&D$2<=4447||4515<=D$2&&D$2<=4519||4602<=D$2&&D$2<=4607||9001<=D$2&&D$2<=9002||11904<=D$2&&D$2<=11929||11931<=D$2&&D$2<=12019||12032<=D$2&&D$2<=12245||12272<=D$2&&D$2<=12283||12289<=D$2&&D$2<=12350||12353<=D$2&&D$2<=12438||12441<=D$2&&D$2<=12543||12549<=D$2&&D$2<=12589||12593<=D$2&&D$2<=12686||12688<=D$2&&D$2<=12730||12736<=D$2&&D$2<=12771||12784<=D$2&&D$2<=12830||12832<=D$2&&D$2<=12871||12880<=D$2&&D$2<=13054||13056<=D$2&&D$2<=19903||19968<=D$2&&D$2<=42124||42128<=D$2&&D$2<=42182||43360<=D$2&&D$2<=43388||44032<=D$2&&D$2<=55203||55216<=D$2&&D$2<=55238||55243<=D$2&&D$2<=55291||63744<=D$2&&D$2<=64255||65040<=D$2&&D$2<=65049||65072<=D$2&&D$2<=65106||65108<=D$2&&D$2<=65126||65128<=D$2&&D$2<=65131||110592<=D$2&&D$2<=110593||127488<=D$2&&D$2<=127490||127504<=D$2&&D$2<=127546||127552<=D$2&&D$2<=127560||127568<=D$2&&D$2<=127569||131072<=D$2&&D$2<=194367||177984<=D$2&&D$2<=196605||196608<=D$2&&D$2<=262141?`W`:32<=D$2&&D$2<=126||162<=D$2&&D$2<=163||165<=D$2&&D$2<=166||D$2==172||D$2==175||10214<=D$2&&D$2<=10221||10629<=D$2&&D$2<=10630?`Na`:D$2==161||D$2==164||167<=D$2&&D$2<=168||D$2==170||173<=D$2&&D$2<=174||176<=D$2&&D$2<=180||182<=D$2&&D$2<=186||188<=D$2&&D$2<=191||D$2==198||D$2==208||215<=D$2&&D$2<=216||222<=D$2&&D$2<=225||D$2==230||232<=D$2&&D$2<=234||236<=D$2&&D$2<=237||D$2==240||242<=D$2&&D$2<=243||247<=D$2&&D$2<=250||D$2==252||D$2==254||D$2==257||D$2==273||D$2==275||D$2==283||294<=D$2&&D$2<=295||D$2==299||305<=D$2&&D$2<=307||D$2==312||319<=D$2&&D$2<=322||D$2==324||328<=D$2&&D$2<=331||D$2==333||338<=D$2&&D$2<=339||358<=D$2&&D$2<=359||D$2==363||D$2==462||D$2==464||D$2==466||D$2==468||D$2==470||D$2==472||D$2==474||D$2==476||D$2==593||D$2==609||D$2==708||D$2==711||713<=D$2&&D$2<=715||D$2==717||D$2==720||728<=D$2&&D$2<=731||D$2==733||D$2==735||768<=D$2&&D$2<=879||913<=D$2&&D$2<=929||931<=D$2&&D$2<=937||945<=D$2&&D$2<=961||963<=D$2&&D$2<=969||D$2==1025||1040<=D$2&&D$2<=1103||D$2==1105||D$2==8208||8211<=D$2&&D$2<=8214||8216<=D$2&&D$2<=8217||8220<=D$2&&D$2<=8221||8224<=D$2&&D$2<=8226||8228<=D$2&&D$2<=8231||D$2==8240||8242<=D$2&&D$2<=8243||D$2==8245||D$2==8251||D$2==8254||D$2==8308||D$2==8319||8321<=D$2&&D$2<=8324||D$2==8364||D$2==8451||D$2==8453||D$2==8457||D$2==8467||D$2==8470||8481<=D$2&&D$2<=8482||D$2==8486||D$2==8491||8531<=D$2&&D$2<=8532||8539<=D$2&&D$2<=8542||8544<=D$2&&D$2<=8555||8560<=D$2&&D$2<=8569||D$2==8585||8592<=D$2&&D$2<=8601||8632<=D$2&&D$2<=8633||D$2==8658||D$2==8660||D$2==8679||D$2==8704||8706<=D$2&&D$2<=8707||8711<=D$2&&D$2<=8712||D$2==8715||D$2==8719||D$2==8721||D$2==8725||D$2==8730||8733<=D$2&&D$2<=8736||D$2==8739||D$2==8741||8743<=D$2&&D$2<=8748||D$2==8750||8756<=D$2&&D$2<=8759||8764<=D$2&&D$2<=8765||D$2==8776||D$2==8780||D$2==8786||8800<=D$2&&D$2<=8801||8804<=D$2&&D$2<=8807||8810<=D$2&&D$2<=8811||8814<=D$2&&D$2<=8815||8834<=D$2&&D$2<=8835||8838<=D$2&&D$2<=8839||D$2==8853||D$2==8857||D$2==8869||D$2==8895||D$2==8978||9312<=D$2&&D$2<=9449||9451<=D$2&&D$2<=9547||9552<=D$2&&D$2<=9587||9600<=D$2&&D$2<=9615||9618<=D$2&&D$2<=9621||9632<=D$2&&D$2<=9633||9635<=D$2&&D$2<=9641||9650<=D$2&&D$2<=9651||9654<=D$2&&D$2<=9655||9660<=D$2&&D$2<=9661||9664<=D$2&&D$2<=9665||9670<=D$2&&D$2<=9672||D$2==9675||9678<=D$2&&D$2<=9681||9698<=D$2&&D$2<=9701||D$2==9711||9733<=D$2&&D$2<=9734||D$2==9737||9742<=D$2&&D$2<=9743||9748<=D$2&&D$2<=9749||D$2==9756||D$2==9758||D$2==9792||D$2==9794||9824<=D$2&&D$2<=9825||9827<=D$2&&D$2<=9829||9831<=D$2&&D$2<=9834||9836<=D$2&&D$2<=9837||D$2==9839||9886<=D$2&&D$2<=9887||9918<=D$2&&D$2<=9919||9924<=D$2&&D$2<=9933||9935<=D$2&&D$2<=9953||D$2==9955||9960<=D$2&&D$2<=9983||D$2==10045||D$2==10071||10102<=D$2&&D$2<=10111||11093<=D$2&&D$2<=11097||12872<=D$2&&D$2<=12879||57344<=D$2&&D$2<=63743||65024<=D$2&&D$2<=65039||D$2==65533||127232<=D$2&&D$2<=127242||127248<=D$2&&D$2<=127277||127280<=D$2&&D$2<=127337||127344<=D$2&&D$2<=127386||917760<=D$2&&D$2<=917999||983040<=D$2&&D$2<=1048573||1048576<=D$2&&D$2<=1114109?`A`:`N`},u$18.characterLength=function(F$3){var s$3=this.eastAsianWidth(F$3);return s$3==`F`||s$3==`W`||s$3==`A`?2:1};function t$1(F$3){return F$3.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u$18.length=function(F$3){for(var s$3=t$1(F$3),i$7=0,D$2=0;D$2<s$3.length;D$2++)i$7+=this.characterLength(s$3[D$2]);return i$7},u$18.slice=function(F$3,s$3,i$7){textLen=u$18.length(F$3),s$3||=0,i$7||=1,s$3<0&&(s$3=textLen+s$3),i$7<0&&(i$7=textLen+i$7);for(var D$2=``,C$3=0,n$2=t$1(F$3),E$2=0;E$2<n$2.length;E$2++){var a$4=n$2[E$2],o$3=u$18.length(a$4);if(C$3>=s$3-(o$3==2?1:0))if(C$3+o$3<=i$7)D$2+=a$4;else break;C$3+=o$3}return D$2}})(W$1);var tD=W$1.exports;const eD=L$1(tD);var FD=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};const sD=L$1(FD);function p(e$3,u$18={}){if(typeof e$3!=`string`||e$3.length===0||(u$18={ambiguousIsNarrow:!0,...u$18},e$3=P$1(e$3),e$3.length===0))return 0;e$3=e$3.replace(sD(),` `);let t$1=u$18.ambiguousIsNarrow?1:2,F$3=0;for(let s$3 of e$3){let i$7=s$3.codePointAt(0);if(i$7<=31||i$7>=127&&i$7<=159||i$7>=768&&i$7<=879)continue;switch(eD.eastAsianWidth(s$3)){case`F`:case`W`:F$3+=2;break;case`A`:F$3+=t$1;break;default:F$3+=1}}return F$3}const w=10,N=(e$3=0)=>u$18=>`\x1B[${u$18+e$3}m`,I=(e$3=0)=>u$18=>`\x1B[${38+e$3};5;${u$18}m`,R=(e$3=0)=>(u$18,t$1,F$3)=>`\x1B[${38+e$3};2;${u$18};${t$1};${F$3}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const iD=Object.keys(r.color),CD=Object.keys(r.bgColor);[...iD,...CD];function rD(){let e$3=new Map;for(let[u$18,t$1]of Object.entries(r)){for(let[F$3,s$3]of Object.entries(t$1))r[F$3]={open:`\x1B[${s$3[0]}m`,close:`\x1B[${s$3[1]}m`},t$1[F$3]=r[F$3],e$3.set(s$3[0],s$3[1]);Object.defineProperty(r,u$18,{value:t$1,enumerable:!1})}return Object.defineProperty(r,`codes`,{value:e$3,enumerable:!1}),r.color.close=`\x1B[39m`,r.bgColor.close=`\x1B[49m`,r.color.ansi=N(),r.color.ansi256=I(),r.color.ansi16m=R(),r.bgColor.ansi=N(10),r.bgColor.ansi256=I(10),r.bgColor.ansi16m=R(10),Object.defineProperties(r,{rgbToAnsi256:{value:(u$18,t$1,F$3)=>u$18===t$1&&t$1===F$3?u$18<8?16:u$18>248?231:Math.round((u$18-8)/247*24)+232:16+36*Math.round(u$18/255*5)+6*Math.round(t$1/255*5)+Math.round(F$3/255*5),enumerable:!1},hexToRgb:{value:u$18=>{let t$1=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u$18.toString(16));if(!t$1)return[0,0,0];let[F$3]=t$1;F$3.length===3&&(F$3=[...F$3].map(i$7=>i$7+i$7).join(``));let s$3=Number.parseInt(F$3,16);return[s$3>>16&255,s$3>>8&255,s$3&255]},enumerable:!1},hexToAnsi256:{value:u$18=>r.rgbToAnsi256(...r.hexToRgb(u$18)),enumerable:!1},ansi256ToAnsi:{value:u$18=>{if(u$18<8)return 30+u$18;if(u$18<16)return 90+(u$18-8);let t$1,F$3,s$3;if(u$18>=232)t$1=((u$18-232)*10+8)/255,F$3=t$1,s$3=t$1;else{u$18-=16;let C$3=u$18%36;t$1=Math.floor(u$18/36)/5,F$3=Math.floor(C$3/6)/5,s$3=C$3%6/5}let i$7=Math.max(t$1,F$3,s$3)*2;if(i$7===0)return 30;let D$2=30+(Math.round(s$3)<<2|Math.round(F$3)<<1|Math.round(t$1));return i$7===2&&(D$2+=60),D$2},enumerable:!1},rgbToAnsi:{value:(u$18,t$1,F$3)=>r.ansi256ToAnsi(r.rgbToAnsi256(u$18,t$1,F$3)),enumerable:!1},hexToAnsi:{value:u$18=>r.ansi256ToAnsi(r.hexToAnsi256(u$18)),enumerable:!1}}),r}const ED=rD(),d$1=new Set([`\x1B`,`Β`]),oD=39,y=`\x07`,V$1=`[`,nD=`]`,G$1=`m`,_$2=`]8;;`,z$2=e$3=>`${d$1.values().next().value}[${e$3}m`,K$1=e$3=>`${d$1.values().next().value}${_$2}${e$3}`,aD=e$3=>e$3.split(` `).map(u$18=>p(u$18)),k$1=(e$3,u$18,t$1)=>{let F$3=[...u$18],s$3=!1,i$7=!1,D$2=p(P$1(e$3[e$3.length-1]));for(let[C$3,n$2]of F$3.entries()){let E$2=p(n$2);if(D$2+E$2<=t$1?e$3[e$3.length-1]+=n$2:(e$3.push(n$2),D$2=0),d$1.has(n$2)&&(s$3=!0,i$7=F$3.slice(C$3+1).join(``).startsWith(_$2)),s$3){i$7?n$2===`\x07`&&(s$3=!1,i$7=!1):n$2===`m`&&(s$3=!1);continue}D$2+=E$2,D$2===t$1&&C$3<F$3.length-1&&(e$3.push(``),D$2=0)}!D$2&&e$3[e$3.length-1].length>0&&e$3.length>1&&(e$3[e$3.length-2]+=e$3.pop())},hD=e$3=>{let u$18=e$3.split(` `),t$1=u$18.length;for(;t$1>0&&!(p(u$18[t$1-1])>0);)t$1--;return t$1===u$18.length?e$3:u$18.slice(0,t$1).join(` `)+u$18.slice(t$1).join(``)},lD=(e$3,u$18,t$1={})=>{if(t$1.trim!==!1&&e$3.trim()===``)return``;let F$3=``,s$3,i$7,D$2=aD(e$3),C$3=[``];for(let[E$2,a$4]of e$3.split(` `).entries()){t$1.trim!==!1&&(C$3[C$3.length-1]=C$3[C$3.length-1].trimStart());let o$3=p(C$3[C$3.length-1]);if(E$2!==0&&(o$3>=u$18&&(t$1.wordWrap===!1||t$1.trim===!1)&&(C$3.push(``),o$3=0),(o$3>0||t$1.trim===!1)&&(C$3[C$3.length-1]+=` `,o$3++)),t$1.hard&&D$2[E$2]>u$18){let c$3=u$18-o$3,f=1+Math.floor((D$2[E$2]-c$3-1)/u$18);Math.floor((D$2[E$2]-1)/u$18)<f&&C$3.push(``),k$1(C$3,a$4,u$18);continue}if(o$3+D$2[E$2]>u$18&&o$3>0&&D$2[E$2]>0){if(t$1.wordWrap===!1&&o$3<u$18){k$1(C$3,a$4,u$18);continue}C$3.push(``)}if(o$3+D$2[E$2]>u$18&&t$1.wordWrap===!1){k$1(C$3,a$4,u$18);continue}C$3[C$3.length-1]+=a$4}t$1.trim!==!1&&(C$3=C$3.map(E$2=>hD(E$2)));let n$2=[...C$3.join(`
|
|
2023
|
+
`),value=value.replace(/\\r/g,`\r`)),obj[key]=value}return obj}function _parseVault(options$1){options$1||={};let vaultPath=_vaultPath(options$1);options$1.path=vaultPath;let result=DotenvModule.configDotenv(options$1);if(!result.parsed){let err$2=Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`);throw err$2.code=`MISSING_DATA`,err$2}let keys=_dotenvKey(options$1).split(`,`),length=keys.length,decrypted;for(let i$7=0;i$7<length;i$7++)try{let key=keys[i$7].trim(),attrs=_instructions(result,key);decrypted=DotenvModule.decrypt(attrs.ciphertext,attrs.key);break}catch(error$66){if(i$7+1>=length)throw error$66}return DotenvModule.parse(decrypted)}function _warn(message){console.error(`[dotenv@${version$1}][WARN] ${message}`)}function _debug(message){console.log(`[dotenv@${version$1}][DEBUG] ${message}`)}function _log(message){console.log(`[dotenv@${version$1}] ${message}`)}function _dotenvKey(options$1){return options$1&&options$1.DOTENV_KEY&&options$1.DOTENV_KEY.length>0?options$1.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:``}function _instructions(result,dotenvKey){let uri$3;try{uri$3=new URL(dotenvKey)}catch(error$66){if(error$66.code===`ERR_INVALID_URL`){let err$2=Error(`INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}throw error$66}let key=uri$3.password;if(!key){let err$2=Error(`INVALID_DOTENV_KEY: Missing key part`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}let environment=uri$3.searchParams.get(`environment`);if(!environment){let err$2=Error(`INVALID_DOTENV_KEY: Missing environment part`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}let environmentKey=`DOTENV_VAULT_${environment.toUpperCase()}`,ciphertext=result.parsed[environmentKey];if(!ciphertext){let err$2=Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`);throw err$2.code=`NOT_FOUND_DOTENV_ENVIRONMENT`,err$2}return{ciphertext,key}}function _vaultPath(options$1){let possibleVaultPath=null;if(options$1&&options$1.path&&options$1.path.length>0)if(Array.isArray(options$1.path))for(let filepath of options$1.path)fs$3.existsSync(filepath)&&(possibleVaultPath=filepath.endsWith(`.vault`)?filepath:`${filepath}.vault`);else possibleVaultPath=options$1.path.endsWith(`.vault`)?options$1.path:`${options$1.path}.vault`;else possibleVaultPath=path$5.resolve(process.cwd(),`.env.vault`);return fs$3.existsSync(possibleVaultPath)?possibleVaultPath:null}function _resolveHome(envPath){return envPath[0]===`~`?path$5.join(os$3.homedir(),envPath.slice(1)):envPath}function _configVault(options$1){let debug$12=parseBoolean(process.env.DOTENV_CONFIG_DEBUG||options$1&&options$1.debug),quiet=parseBoolean(process.env.DOTENV_CONFIG_QUIET||options$1&&options$1.quiet);(debug$12||!quiet)&&_log(`Loading env from encrypted .env.vault`);let parsed=DotenvModule._parseVault(options$1),processEnv=process.env;return options$1&&options$1.processEnv!=null&&(processEnv=options$1.processEnv),DotenvModule.populate(processEnv,parsed,options$1),{parsed}}function configDotenv(options$1){let dotenvPath=path$5.resolve(process.cwd(),`.env`),encoding=`utf8`,processEnv=process.env;options$1&&options$1.processEnv!=null&&(processEnv=options$1.processEnv);let debug$12=parseBoolean(processEnv.DOTENV_CONFIG_DEBUG||options$1&&options$1.debug),quiet=parseBoolean(processEnv.DOTENV_CONFIG_QUIET||options$1&&options$1.quiet);options$1&&options$1.encoding?encoding=options$1.encoding:debug$12&&_debug(`No encoding is specified. UTF-8 is used by default`);let optionPaths=[dotenvPath];if(options$1&&options$1.path)if(!Array.isArray(options$1.path))optionPaths=[_resolveHome(options$1.path)];else{optionPaths=[];for(let filepath of options$1.path)optionPaths.push(_resolveHome(filepath))}let lastError,parsedAll={};for(let path$38 of optionPaths)try{let parsed=DotenvModule.parse(fs$3.readFileSync(path$38,{encoding}));DotenvModule.populate(parsedAll,parsed,options$1)}catch(e$3){debug$12&&_debug(`Failed to load ${path$38} ${e$3.message}`),lastError=e$3}let populated=DotenvModule.populate(processEnv,parsedAll,options$1);if(debug$12=parseBoolean(processEnv.DOTENV_CONFIG_DEBUG||debug$12),quiet=parseBoolean(processEnv.DOTENV_CONFIG_QUIET||quiet),debug$12||!quiet){let keysCount=Object.keys(populated).length,shortPaths=[];for(let filePath of optionPaths)try{let relative$1=path$5.relative(process.cwd(),filePath);shortPaths.push(relative$1)}catch(e$3){debug$12&&_debug(`Failed to load ${filePath} ${e$3.message}`),lastError=e$3}_log(`injecting env (${keysCount}) from ${shortPaths.join(`,`)} ${dim(`-- tip: ${_getRandomTip()}`)}`)}return lastError?{parsed:parsedAll,error:lastError}:{parsed:parsedAll}}function config(options$1){if(_dotenvKey(options$1).length===0)return DotenvModule.configDotenv(options$1);let vaultPath=_vaultPath(options$1);return vaultPath?DotenvModule._configVault(options$1):(_warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`),DotenvModule.configDotenv(options$1))}function decrypt(encrypted,keyStr){let key=Buffer.from(keyStr.slice(-64),`hex`),ciphertext=Buffer.from(encrypted,`base64`),nonce=ciphertext.subarray(0,12),authTag=ciphertext.subarray(-16);ciphertext=ciphertext.subarray(12,-16);try{let aesgcm=crypto$3.createDecipheriv(`aes-256-gcm`,key,nonce);return aesgcm.setAuthTag(authTag),`${aesgcm.update(ciphertext)}${aesgcm.final()}`}catch(error$66){let isRange=error$66 instanceof RangeError,invalidKeyLength=error$66.message===`Invalid key length`,decryptionFailed=error$66.message===`Unsupported state or unable to authenticate data`;if(isRange||invalidKeyLength){let err$2=Error(`INVALID_DOTENV_KEY: It must be 64 characters long (or more)`);throw err$2.code=`INVALID_DOTENV_KEY`,err$2}else if(decryptionFailed){let err$2=Error(`DECRYPTION_FAILED: Please check your DOTENV_KEY`);throw err$2.code=`DECRYPTION_FAILED`,err$2}else throw error$66}}function populate(processEnv,parsed,options$1={}){let debug$12=!!(options$1&&options$1.debug),override=!!(options$1&&options$1.override),populated={};if(typeof parsed!=`object`){let err$2=Error(`OBJECT_REQUIRED: Please check the processEnv argument being passed to populate`);throw err$2.code=`OBJECT_REQUIRED`,err$2}for(let key of Object.keys(parsed))Object.prototype.hasOwnProperty.call(processEnv,key)?(override===!0&&(processEnv[key]=parsed[key],populated[key]=parsed[key]),debug$12&&_debug(override===!0?`"${key}" is already defined and WAS overwritten`:`"${key}" is already defined and was NOT overwritten`)):(processEnv[key]=parsed[key],populated[key]=parsed[key]);return populated}let DotenvModule={configDotenv,_configVault,_parseVault,config,decrypt,parse:parse$2,populate};module.exports.configDotenv=DotenvModule.configDotenv,module.exports._configVault=DotenvModule._configVault,module.exports._parseVault=DotenvModule._parseVault,module.exports.config=DotenvModule.config,module.exports.decrypt=DotenvModule.decrypt,module.exports.parse=DotenvModule.parse,module.exports.populate=DotenvModule.populate,module.exports=DotenvModule})),import_main$1=__toESM$1(require_main(),1);function useDotenv(directory,name$6=`.env.local`){let[env$8,setEnv]=(0,import_react.useState)({});return(0,import_react.useEffect)(()=>{let watcher,readEnvFile=path$38=>{try{setEnv((0,import_main$1.parse)(readFileSync$1(path$38,`utf-8`)))}catch(error$66){console.error(error$66),setEnv({})}};return findNearestEntry(directory,name$6).then(nearest=>{if(!nearest){setEnv({});return}readEnvFile(nearest),watcher=watch(nearest,{persistent:!1},()=>{readEnvFile(nearest)})}),()=>{watcher&&watcher.close()}},[directory,name$6]),env$8}function useServerChat(server,id){let[chat$2,setChat]=(0,import_react.useState)(()=>server.upsertChat(id));return(0,import_react.useEffect)(()=>{setChat(server.upsertChat(id));let disposable=server.onChatChanged(chat$3=>{if(chat$3.id===id)return setChat(chat$3)});return()=>disposable.dispose()},[server,id]),chat$2}function useTerminalSize(){let{stdout:stdout$1}=use_stdout_default(),[size,setSize]=(0,import_react.useState)({columns:process.stdout.columns,rows:process.stdout.rows});return(0,import_react.useEffect)(()=>{if(!stdout$1||!stdout$1.isTTY)return;let handleResize=()=>{setSize({columns:stdout$1.columns,rows:stdout$1.rows})};return process.stdout.on(`resize`,handleResize),()=>{process.stdout.off(`resize`,handleResize)}},[stdout$1]),{columns:size.columns,rows:size.rows?size.rows-1:void 0}}async function start(element){let instance$1=render_default(element,{exitOnCtrlC:!1});await instance$1.waitUntilExit().finally(()=>{})}function startDev({entrypoint}){return start((0,import_jsx_runtime.jsx)(Root,{entrypoint}))}const Root=({entrypoint})=>{let size=useTerminalSize(),{errors:compileErrors,status:bundlerStatus,lastBuildDuration,bundle}=useBundler(entrypoint),env$8=useDotenv(dirname$1(entrypoint)),server=(0,import_react.useMemo)(()=>createServer$1({port:0,dataDirectory:join$1(dirname$1(entrypoint),`.blink`,`data`),sendMessages:async(request$3,signal)=>{if(!currentAgentRef.current)throw Error(`No agent`);return await currentAgentRef.current.sendMessages({messages:request$3.messages.filter(m$3=>m$3.metadata?.ephemeral!==!0)},{signal})},serializeChat:chat$3=>({...chat$3,messages:chat$3.messages.filter(m$3=>m$3.metadata?.ephemeral!==!0)}),shouldLoop:({messages:messages$1})=>{let lastMessage=messages$1.at(-1);if(!lastMessage||lastMessage.role!==`assistant`)return!1;let lastStepStartIndex=lastMessage.parts.reduce((lastIndex,part,index)=>part.type===`step-start`?index:lastIndex,-1),lastStepToolInvocations=lastMessage.parts.slice(lastStepStartIndex+1).filter(isToolOrDynamicToolUIPart);return lastStepToolInvocations.length>0&&lastStepToolInvocations.every(part=>part.state.startsWith(`output-`))}}),[]),{agent,logs:logs$1,error:agentError,supportsWebhooks}=useAgent({bundle,env:env$8,apiServerUrl:server.url}),currentAgentRef=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>{agent?currentAgentRef.current=agent:server.stopChat(chat$2.id)},[agent]);let devhookID=(0,import_react.useMemo)(()=>{let storagePath=join$1(dirname$1(entrypoint),`.blink`,`devhook.txt`);if(mkdirSync(dirname$1(storagePath),{recursive:!0}),existsSync$1(storagePath))return readFileSync$1(storagePath,`utf-8`);let id=crypto.randomUUID();return writeFileSync$1(storagePath,id),id},[]),devhook=useDevhook({id:devhookID,disabled:!supportsWebhooks,onRequest:async request$3=>{if(!currentAgentRef.current)throw Error(`No agent`);let response=await currentAgentRef.current.sendWebhook(request$3);return server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`webhook`,ephemeral:!0},parts:[{type:`text`,text:`method=${request$3.method} status=${response.status}`}]}),response}}),[chatID,setChatID]=(0,import_react.useState)(`default`),currentChatIDRef=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>{currentChatIDRef.current=chatID},[chatID]);let chat$2=useServerChat(server,chatID),[chatIDs,setChatIDs]=(0,import_react.useState)(()=>server.listChats()),currentChatIDsRef=(0,import_react.useRef)(chatIDs);(0,import_react.useEffect)(()=>{currentChatIDsRef.current=chatIDs},[chatIDs]),(0,import_react.useEffect)(()=>{let disposable=server.onChatChanged(chat$3=>{!currentChatIDsRef.current.includes(chat$3.id)&¤tChatIDRef.current&&(setChatID(chat$3.id),server.upsertChatMessage(chat$3.id,{role:`assistant`,metadata:{type:`chat-created`,ephemeral:!0},parts:[{type:`text`,text:`This chat has just been created: ${chat$3.id}. We automatically switched you to it!`}]})),setChatIDs(prev=>{let newChats=[...prev];return newChats.includes(chat$3.id)?prev:(newChats.push(chat$3.id),newChats)})});return()=>{disposable.dispose()}},[server]);let{exit}=use_app_default(),[exitArmed,setExitArmed]=(0,import_react.useState)(!1),exitTimerRef=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>()=>{exitTimerRef.current&&clearTimeout(exitTimerRef.current)},[]),use_input_default((input,key)=>{if(key.ctrl&&input.toLowerCase()===`c`){if(exitArmed){exit();return}setExitArmed(!0),exitTimerRef.current&&clearTimeout(exitTimerRef.current),exitTimerRef.current=setTimeout(()=>setExitArmed(!1),2e3)}}),(0,import_react.useEffect)(()=>{if(compileErrors.length>0||agentError||chat$2.error){let errors$1=[];for(let error$66 of compileErrors)errors$1.push({type:`text`,text:`${error$66.text} (${error$66.location?.file})`});agentError&&errors$1.push({type:`text`,text:agentError.message}),chat$2.error&&errors$1.push({type:`text`,text:`Chat error: ${chat$2.error.message}, ${chat$2.error.stack}`}),server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`error`,ephemeral:!0},parts:errors$1});return}if(bundlerStatus===`building`||!agent){server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`info`,ephemeral:!0},parts:[{type:`text`,text:`Compiling...`}]});return}if(bundlerStatus===`success`&&agent){server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`success`,ephemeral:!0},parts:[{type:`text`,text:`Compiled in 100ms`}]});return}},[compileErrors,chat$2.error,agentError,bundlerStatus,agent]);let lastReportedKeys=(0,import_react.useRef)(void 0);(0,import_react.useEffect)(()=>{let keys=Object.keys(env$8);if(keys.length===lastReportedKeys.current||lastReportedKeys.current===void 0)return;lastReportedKeys.current=keys.length;let keysText=keys.map(key=>source_default.dim(key)).join(`, `);keysText.length===0&&(keysText=source_default.dim(`(none)`));let text$2=`Loaded .env.local: `+keysText;server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`info`,ephemeral:!0},parts:[{type:`text`,text:text$2}]})},[env$8]),(0,import_react.useEffect)(()=>{!supportsWebhooks||devhook.status!==`connected`||server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`build-log`,level:`info`,ephemeral:!0},parts:[{type:`text`,text:`Send webhooks from anywhere: https://blink.so/api/devhook/${devhook.id}`}]})},[supportsWebhooks,devhook.status]);let lastLogsLength=(0,import_react.useRef)(0);(0,import_react.useEffect)(()=>{if(logs$1.length===lastLogsLength.current)return;let currentLength=lastLogsLength.current;for(let log$5 of logs$1.slice(currentLength))server.upsertChatMessage(chat$2.id,{role:`assistant`,metadata:{type:`runtime-log`,level:log$5.level,ephemeral:!0},parts:[{type:`text`,text:log$5.message}]});lastLogsLength.current=logs$1.length},[logs$1]);let keymaps=(0,import_react.useMemo)(()=>({"β":`send`,"Ctrl+R":`reset chat`,"Ctrl+C":`quit`,"[Escape]":`stop streaming`}),[]),keybindSuggestion=(0,import_react.useMemo)(()=>{if(exitArmed)return`Ctrl+C again to quit`;if(chat$2.status===`streaming`)return`Press [Escape] to stop the agent!`},[exitArmed,chat$2.status]),newChatNames=(0,import_react.useMemo)(()=>{let names$1=[];for(;names$1.length<3;){let name$6=(0,import_dist.uniqueNamesGenerator)({dictionaries:[import_dist.adjectives,import_dist.animals],style:`lowerCase`});chatIDs.includes(name$6)||names$1.push(name$6)}return names$1},[chatID,chatIDs]);return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Keybinds,{resetChat:()=>{server.resetChat(chat$2.id)},stopStreaming:()=>{server.stopChat(chat$2.id)}}),(0,import_jsx_runtime.jsxs)(Box_default,{children:[(0,import_jsx_runtime.jsx)(Text,{bold:!0,children:`blinkβ `}),(0,import_jsx_runtime.jsx)(Text,{color:`gray`,children:` agent development mode`})]}),(0,import_jsx_runtime.jsxs)(Box_default,{marginTop:1,flexDirection:`column`,children:[(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`Edit `,entrypoint,` to hot-reload your agent.`]}),(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`Run `,(0,import_jsx_runtime.jsx)(Text,{color:`blue`,children:`blink deploy`}),` to use your agent in the cloud.`]})]}),chat$2.error?(0,import_jsx_runtime.jsx)(Box_default,{marginTop:1,children:(0,import_jsx_runtime.jsx)(Text,{color:`red`,children:chat$2.error.message})}):null,(0,import_jsx_runtime.jsx)(Messages,{messages:[...chat$2.messages],streamingMessage:chat$2.streamingMessage,maxWidth:size.columns-2,status:chat$2.status}),(0,import_jsx_runtime.jsx)(Box_default,{flexDirection:`column`,marginTop:1,children:(0,import_jsx_runtime.jsx)(text_input_default,{slashCommands:[{name:`reset`,altNames:[`clear`],description:`Reset the chat`,action:()=>{server.resetChat(chat$2.id)}},{name:`switch`,description:`Switch to a different chat`,action:args=>{setChatID(args)},completion:async partialArg=>{let chats=server.listChats();return chats.map(chat$3=>chat$3)}},{name:`new`,description:`Create a new chat`,action:args=>{setChatID(args)},completion:async partialArg=>newChatNames}],onSubmit:value=>(server.runtime.chat.sendMessages(chat$2.id,{messages:[{role:`user`,parts:[{type:`text`,text:value}]}],behavior:`interrupt`}),!0)})}),(0,import_jsx_runtime.jsx)(Box_default,{children:keybindSuggestion?(0,import_jsx_runtime.jsx)(Text,{color:`yellow`,children:` `+keybindSuggestion}):(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Box_default,{marginLeft:2,children:(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`chat: `,(0,import_jsx_runtime.jsx)(Text,{children:chat$2.id})]})}),(0,import_jsx_runtime.jsx)(Spacer,{}),(0,import_jsx_runtime.jsx)(Box_default,{gap:3,marginRight:2,children:Object.entries(keymaps).map(([key,value])=>(0,import_jsx_runtime.jsx)(Text,{children:source_default.gray.dim(key+` `+value)},key))})]})})]})},Keybinds=({resetChat,stopStreaming})=>(use_input_default((input,key)=>{key.ctrl&&input===`r`&&resetChat(),key.escape&&stopStreaming()}),null),Messages=({messages:messages$1,maxWidth,streamingMessage,status})=>(0,import_jsx_runtime.jsxs)(Box_default,{flexDirection:`column`,children:[messages$1.map((message,index)=>(0,import_jsx_runtime.jsx)(Message,{message,previousMessage:index>0?messages$1.at(index-1):void 0,nextMessage:index<messages$1.length-1?messages$1.at(index+1):void 0,maxWidth},message.id)),streamingMessage?(0,import_jsx_runtime.jsx)(Message,{message:streamingMessage,nextMessage:void 0,previousMessage:messages$1.length>0?messages$1.at(messages$1.length-1):void 0,streaming:!0,maxWidth},streamingMessage.id):null,status===`streaming`&&!streamingMessage?(0,import_jsx_runtime.jsx)(AssistantWaitingPlaceholder,{maxWidth}):null]}),MessageComponent=({message,previousMessage,maxWidth,streaming})=>{let prefix,contentColor,marginTop=1;switch(message.role){case`system`:prefix=(0,import_jsx_runtime.jsx)(Text,{children:`t `}),contentColor=`gray`;break;case`user`:prefix=(0,import_jsx_runtime.jsx)(Text,{color:`magenta`,bold:!0,children:`β`}),contentColor=`gray`;break;case`assistant`:prefix=(0,import_jsx_runtime.jsx)(Text,{color:`white`,children:`> `}),contentColor=`white`;break}if(message.metadata?.type===`build-log`){let color=`gray`;switch(message.metadata.level){case`success`:color=`green`;break;case`info`:color=`gray`;break;case`error`:color=`red`;break}prefix=(0,import_jsx_runtime.jsx)(Text,{color,children:`β `}),contentColor=`gray`,previousMessage?.metadata?.type===`build-log`&&(marginTop=0)}message.metadata?.type===`webhook`&&(prefix=(0,import_jsx_runtime.jsx)(Text,{color:`blue`,children:`β© `}),contentColor=`gray`,previousMessage?.metadata?.type===`webhook`&&(marginTop=0));let content=(0,import_jsx_runtime.jsx)(Box_default,{gap:1,flexDirection:`column`,width:maxWidth,children:message.parts.map((part,index)=>{if(part.type===`text`)return(0,import_jsx_runtime.jsx)(markdown_default,{id:message.id,maxWidth,children:part.text},index);if(part.type===`reasoning`)return(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[`Reasoning: `,part.text]},index);if(isToolUIPart(part))return(0,import_jsx_runtime.jsx)(ToolCall,{part,maxWidth,streaming},index)}).filter(Boolean)});return(0,import_jsx_runtime.jsxs)(Box_default,{marginTop,flexDirection:`row`,children:[(0,import_jsx_runtime.jsx)(Box_default,{children:(0,import_jsx_runtime.jsx)(Text,{color:contentColor,children:prefix})}),content]})},Message=import_react.memo(MessageComponent,(prev,next)=>prev.maxWidth===next.maxWidth?!!(prev.nextMessage&&next.nextMessage&&prev.nextMessage.id===next.nextMessage.id):!1),AssistantWaitingPlaceholder=({maxWidth})=>(0,import_jsx_runtime.jsxs)(Box_default,{marginTop:1,flexDirection:`row`,children:[(0,import_jsx_runtime.jsx)(Box_default,{children:(0,import_jsx_runtime.jsx)(Text,{color:`white`,children:null})}),(0,import_jsx_runtime.jsx)(Box_default,{width:maxWidth,children:(0,import_jsx_runtime.jsxs)(Text,{color:`gray`,children:[(0,import_jsx_runtime.jsx)(build_default,{}),` Waiting for response...`]})})]}),ToolCall=({part,maxWidth,streaming})=>{let name$6=getToolOrDynamicToolName(part),input=(0,import_react.useMemo)(()=>{let labels={};return typeof part.input!=`object`||part.input===null||Object.entries(part.input).forEach(([key,value])=>{labels[key]=JSON.stringify(value)}),labels},[part]),output=(0,import_react.useMemo)(()=>{if(!part.output)return;if(typeof part.output==`string`)return part.output;let labels={};return Array.isArray(part.output)?part.output.forEach((item,index)=>{labels[`${index}`]=JSON.stringify(item)}):typeof part.output==`object`&&Object.entries(part.output).forEach(([key,value])=>{labels[key]=JSON.stringify(value)}),labels},[part]),state=(0,import_react.useMemo)(()=>{switch(part.state){case`input-available`:case`input-streaming`:return streaming?`streaming`:`error`;case`output-available`:return`done`;case`output-error`:return`error`}},[part,streaming]),error$66=(0,import_react.useMemo)(()=>{if(part.state===`output-error`)return part.errorText},[part]);return(0,import_jsx_runtime.jsxs)(Box_default,{flexDirection:`column`,children:[(0,import_jsx_runtime.jsxs)(Box_default,{gap:1,children:[(0,import_jsx_runtime.jsx)(Text,{color:state===`error`?`red`:`gray`,bold:!0,children:state===`done`||state===`error`?`β`:(0,import_jsx_runtime.jsx)(build_default,{type:`dots`})}),(0,import_jsx_runtime.jsx)(Text,{children:name$6})]}),(0,import_jsx_runtime.jsxs)(Box_default,{marginLeft:2,flexDirection:`column`,overflowX:`hidden`,width:maxWidth?maxWidth-4:void 0,gap:0,children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,bold:!0,children:`Input:`}),Object.entries(input).map(([key,value])=>(0,import_jsx_runtime.jsxs)(Box_default,{marginLeft:2,children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,children:key}),(0,import_jsx_runtime.jsx)(Text,{color:`blackBright`,children:`=`}),(0,import_jsx_runtime.jsx)(Box_default,{width:maxWidth?maxWidth-6-1-2-key.length:void 0,children:(0,import_jsx_runtime.jsx)(Text,{wrap:`truncate-middle`,children:value})})]},key)),output&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,bold:!0,children:`Output:`}),typeof output==`string`?(0,import_jsx_runtime.jsx)(Box_default,{marginLeft:2,children:(0,import_jsx_runtime.jsx)(Text,{children:output})}):(0,import_jsx_runtime.jsx)(Box_default,{flexDirection:`column`,children:Object.entries(output).map(([key,value])=>(0,import_jsx_runtime.jsxs)(Box_default,{marginLeft:2,children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,children:key}),(0,import_jsx_runtime.jsx)(Text,{color:`blackBright`,children:`=`}),(0,import_jsx_runtime.jsx)(Box_default,{width:maxWidth?maxWidth-6-1-key.length:void 0,children:(0,import_jsx_runtime.jsx)(Text,{wrap:`truncate-middle`,children:value})})]},key))})]}),error$66&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(Text,{color:`gray`,bold:!0,children:`Error:`}),(0,import_jsx_runtime.jsx)(Text,{color:`red`,children:error$66})]})]})]})};async function dev(directory){directory||=process.cwd();let entrypoint=await resolveEntrypoint(directory),exitWithDump=error$66=>{writeFileSync$1(`error.dump`,inspect$1(error$66,{depth:null})),process.exit(1)};process.addListener(`uncaughtException`,error$66=>{exitWithDump(error$66)}),process.addListener(`unhandledRejection`,error$66=>{exitWithDump(error$66)}),await startDev({entrypoint}),process.exit(0)}var require_src=__commonJSMin(((exports,module)=>{let ESC=`\x1B`,CSI=`\x1B[`,beep=`\x07`,cursor={to(x$5,y$3){return y$3?`[${y$3+1};${x$5+1}H`:`[${x$5+1}G`},move(x$5,y$3){let ret=``;return x$5<0?ret+=`[${-x$5}D`:x$5>0&&(ret+=`[${x$5}C`),y$3<0?ret+=`[${-y$3}A`:y$3>0&&(ret+=`[${y$3}B`),ret},up:(count$1=1)=>`[${count$1}A`,down:(count$1=1)=>`[${count$1}B`,forward:(count$1=1)=>`[${count$1}C`,backward:(count$1=1)=>`[${count$1}D`,nextLine:(count$1=1)=>`\x1B[E`.repeat(count$1),prevLine:(count$1=1)=>`\x1B[F`.repeat(count$1),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`},scroll={up:(count$1=1)=>`\x1B[S`.repeat(count$1),down:(count$1=1)=>`\x1B[T`.repeat(count$1)},erase={screen:`\x1B[2J`,up:(count$1=1)=>`\x1B[1J`.repeat(count$1),down:(count$1=1)=>`\x1B[J`.repeat(count$1),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(count$1){let clear$1=``;for(let i$7=0;i$7<count$1;i$7++)clear$1+=this.line+(i$7<count$1-1?cursor.up():``);return count$1&&(clear$1+=cursor.left),clear$1}};module.exports={cursor,scroll,erase,beep:`\x07`}})),require_picocolors=__commonJSMin(((exports,module)=>{let p$1=process||{},argv=p$1.argv||[],env$1=p$1.env||{},isColorSupported=!(env$1.NO_COLOR||argv.includes(`--no-color`))&&(!!env$1.FORCE_COLOR||argv.includes(`--color`)||p$1.platform===`win32`||(p$1.stdout||{}).isTTY&&env$1.TERM!==`dumb`||!!env$1.CI),formatter=(open$3,close,replace$1=open$3)=>input=>{let string$7=``+input,index=string$7.indexOf(close,open$3.length);return~index?open$3+replaceClose(string$7,close,replace$1,index)+close:open$3+string$7+close},replaceClose=(string$7,close,replace$1,index)=>{let result=``,cursor$1=0;do result+=string$7.substring(cursor$1,index)+replace$1,cursor$1=index+close.length,index=string$7.indexOf(close,cursor$1);while(~index);return result+string$7.substring(cursor$1)},createColors=(enabled=isColorSupported)=>{let f=enabled?formatter:()=>String;return{isColorSupported:enabled,reset:f(`\x1B[0m`,`\x1B[0m`),bold:f(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:f(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:f(`\x1B[3m`,`\x1B[23m`),underline:f(`\x1B[4m`,`\x1B[24m`),inverse:f(`\x1B[7m`,`\x1B[27m`),hidden:f(`\x1B[8m`,`\x1B[28m`),strikethrough:f(`\x1B[9m`,`\x1B[29m`),black:f(`\x1B[30m`,`\x1B[39m`),red:f(`\x1B[31m`,`\x1B[39m`),green:f(`\x1B[32m`,`\x1B[39m`),yellow:f(`\x1B[33m`,`\x1B[39m`),blue:f(`\x1B[34m`,`\x1B[39m`),magenta:f(`\x1B[35m`,`\x1B[39m`),cyan:f(`\x1B[36m`,`\x1B[39m`),white:f(`\x1B[37m`,`\x1B[39m`),gray:f(`\x1B[90m`,`\x1B[39m`),bgBlack:f(`\x1B[40m`,`\x1B[49m`),bgRed:f(`\x1B[41m`,`\x1B[49m`),bgGreen:f(`\x1B[42m`,`\x1B[49m`),bgYellow:f(`\x1B[43m`,`\x1B[49m`),bgBlue:f(`\x1B[44m`,`\x1B[49m`),bgMagenta:f(`\x1B[45m`,`\x1B[49m`),bgCyan:f(`\x1B[46m`,`\x1B[49m`),bgWhite:f(`\x1B[47m`,`\x1B[49m`),blackBright:f(`\x1B[90m`,`\x1B[39m`),redBright:f(`\x1B[91m`,`\x1B[39m`),greenBright:f(`\x1B[92m`,`\x1B[39m`),yellowBright:f(`\x1B[93m`,`\x1B[39m`),blueBright:f(`\x1B[94m`,`\x1B[39m`),magentaBright:f(`\x1B[95m`,`\x1B[39m`),cyanBright:f(`\x1B[96m`,`\x1B[39m`),whiteBright:f(`\x1B[97m`,`\x1B[39m`),bgBlackBright:f(`\x1B[100m`,`\x1B[49m`),bgRedBright:f(`\x1B[101m`,`\x1B[49m`),bgGreenBright:f(`\x1B[102m`,`\x1B[49m`),bgYellowBright:f(`\x1B[103m`,`\x1B[49m`),bgBlueBright:f(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:f(`\x1B[105m`,`\x1B[49m`),bgCyanBright:f(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:f(`\x1B[107m`,`\x1B[49m`)}};module.exports=createColors(),module.exports.createColors=createColors})),import_src$1=__toESM$1(require_src(),1),import_picocolors$1=__toESM$1(require_picocolors(),1);function DD({onlyFirst:e$3=!1}={}){let t$1=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);return new RegExp(t$1,e$3?void 0:`g`)}const uD=DD();function P$1(e$3){if(typeof e$3!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e$3}\``);return e$3.replace(uD,``)}function L$1(e$3){return e$3&&e$3.__esModule&&Object.prototype.hasOwnProperty.call(e$3,`default`)?e$3.default:e$3}var W$1={exports:{}};(function(e$3){var u$18={};e$3.exports=u$18,u$18.eastAsianWidth=function(F$3){var s$3=F$3.charCodeAt(0),i$7=F$3.length==2?F$3.charCodeAt(1):0,D$2=s$3;return 55296<=s$3&&s$3<=56319&&56320<=i$7&&i$7<=57343&&(s$3&=1023,i$7&=1023,D$2=s$3<<10|i$7,D$2+=65536),D$2==12288||65281<=D$2&&D$2<=65376||65504<=D$2&&D$2<=65510?`F`:D$2==8361||65377<=D$2&&D$2<=65470||65474<=D$2&&D$2<=65479||65482<=D$2&&D$2<=65487||65490<=D$2&&D$2<=65495||65498<=D$2&&D$2<=65500||65512<=D$2&&D$2<=65518?`H`:4352<=D$2&&D$2<=4447||4515<=D$2&&D$2<=4519||4602<=D$2&&D$2<=4607||9001<=D$2&&D$2<=9002||11904<=D$2&&D$2<=11929||11931<=D$2&&D$2<=12019||12032<=D$2&&D$2<=12245||12272<=D$2&&D$2<=12283||12289<=D$2&&D$2<=12350||12353<=D$2&&D$2<=12438||12441<=D$2&&D$2<=12543||12549<=D$2&&D$2<=12589||12593<=D$2&&D$2<=12686||12688<=D$2&&D$2<=12730||12736<=D$2&&D$2<=12771||12784<=D$2&&D$2<=12830||12832<=D$2&&D$2<=12871||12880<=D$2&&D$2<=13054||13056<=D$2&&D$2<=19903||19968<=D$2&&D$2<=42124||42128<=D$2&&D$2<=42182||43360<=D$2&&D$2<=43388||44032<=D$2&&D$2<=55203||55216<=D$2&&D$2<=55238||55243<=D$2&&D$2<=55291||63744<=D$2&&D$2<=64255||65040<=D$2&&D$2<=65049||65072<=D$2&&D$2<=65106||65108<=D$2&&D$2<=65126||65128<=D$2&&D$2<=65131||110592<=D$2&&D$2<=110593||127488<=D$2&&D$2<=127490||127504<=D$2&&D$2<=127546||127552<=D$2&&D$2<=127560||127568<=D$2&&D$2<=127569||131072<=D$2&&D$2<=194367||177984<=D$2&&D$2<=196605||196608<=D$2&&D$2<=262141?`W`:32<=D$2&&D$2<=126||162<=D$2&&D$2<=163||165<=D$2&&D$2<=166||D$2==172||D$2==175||10214<=D$2&&D$2<=10221||10629<=D$2&&D$2<=10630?`Na`:D$2==161||D$2==164||167<=D$2&&D$2<=168||D$2==170||173<=D$2&&D$2<=174||176<=D$2&&D$2<=180||182<=D$2&&D$2<=186||188<=D$2&&D$2<=191||D$2==198||D$2==208||215<=D$2&&D$2<=216||222<=D$2&&D$2<=225||D$2==230||232<=D$2&&D$2<=234||236<=D$2&&D$2<=237||D$2==240||242<=D$2&&D$2<=243||247<=D$2&&D$2<=250||D$2==252||D$2==254||D$2==257||D$2==273||D$2==275||D$2==283||294<=D$2&&D$2<=295||D$2==299||305<=D$2&&D$2<=307||D$2==312||319<=D$2&&D$2<=322||D$2==324||328<=D$2&&D$2<=331||D$2==333||338<=D$2&&D$2<=339||358<=D$2&&D$2<=359||D$2==363||D$2==462||D$2==464||D$2==466||D$2==468||D$2==470||D$2==472||D$2==474||D$2==476||D$2==593||D$2==609||D$2==708||D$2==711||713<=D$2&&D$2<=715||D$2==717||D$2==720||728<=D$2&&D$2<=731||D$2==733||D$2==735||768<=D$2&&D$2<=879||913<=D$2&&D$2<=929||931<=D$2&&D$2<=937||945<=D$2&&D$2<=961||963<=D$2&&D$2<=969||D$2==1025||1040<=D$2&&D$2<=1103||D$2==1105||D$2==8208||8211<=D$2&&D$2<=8214||8216<=D$2&&D$2<=8217||8220<=D$2&&D$2<=8221||8224<=D$2&&D$2<=8226||8228<=D$2&&D$2<=8231||D$2==8240||8242<=D$2&&D$2<=8243||D$2==8245||D$2==8251||D$2==8254||D$2==8308||D$2==8319||8321<=D$2&&D$2<=8324||D$2==8364||D$2==8451||D$2==8453||D$2==8457||D$2==8467||D$2==8470||8481<=D$2&&D$2<=8482||D$2==8486||D$2==8491||8531<=D$2&&D$2<=8532||8539<=D$2&&D$2<=8542||8544<=D$2&&D$2<=8555||8560<=D$2&&D$2<=8569||D$2==8585||8592<=D$2&&D$2<=8601||8632<=D$2&&D$2<=8633||D$2==8658||D$2==8660||D$2==8679||D$2==8704||8706<=D$2&&D$2<=8707||8711<=D$2&&D$2<=8712||D$2==8715||D$2==8719||D$2==8721||D$2==8725||D$2==8730||8733<=D$2&&D$2<=8736||D$2==8739||D$2==8741||8743<=D$2&&D$2<=8748||D$2==8750||8756<=D$2&&D$2<=8759||8764<=D$2&&D$2<=8765||D$2==8776||D$2==8780||D$2==8786||8800<=D$2&&D$2<=8801||8804<=D$2&&D$2<=8807||8810<=D$2&&D$2<=8811||8814<=D$2&&D$2<=8815||8834<=D$2&&D$2<=8835||8838<=D$2&&D$2<=8839||D$2==8853||D$2==8857||D$2==8869||D$2==8895||D$2==8978||9312<=D$2&&D$2<=9449||9451<=D$2&&D$2<=9547||9552<=D$2&&D$2<=9587||9600<=D$2&&D$2<=9615||9618<=D$2&&D$2<=9621||9632<=D$2&&D$2<=9633||9635<=D$2&&D$2<=9641||9650<=D$2&&D$2<=9651||9654<=D$2&&D$2<=9655||9660<=D$2&&D$2<=9661||9664<=D$2&&D$2<=9665||9670<=D$2&&D$2<=9672||D$2==9675||9678<=D$2&&D$2<=9681||9698<=D$2&&D$2<=9701||D$2==9711||9733<=D$2&&D$2<=9734||D$2==9737||9742<=D$2&&D$2<=9743||9748<=D$2&&D$2<=9749||D$2==9756||D$2==9758||D$2==9792||D$2==9794||9824<=D$2&&D$2<=9825||9827<=D$2&&D$2<=9829||9831<=D$2&&D$2<=9834||9836<=D$2&&D$2<=9837||D$2==9839||9886<=D$2&&D$2<=9887||9918<=D$2&&D$2<=9919||9924<=D$2&&D$2<=9933||9935<=D$2&&D$2<=9953||D$2==9955||9960<=D$2&&D$2<=9983||D$2==10045||D$2==10071||10102<=D$2&&D$2<=10111||11093<=D$2&&D$2<=11097||12872<=D$2&&D$2<=12879||57344<=D$2&&D$2<=63743||65024<=D$2&&D$2<=65039||D$2==65533||127232<=D$2&&D$2<=127242||127248<=D$2&&D$2<=127277||127280<=D$2&&D$2<=127337||127344<=D$2&&D$2<=127386||917760<=D$2&&D$2<=917999||983040<=D$2&&D$2<=1048573||1048576<=D$2&&D$2<=1114109?`A`:`N`},u$18.characterLength=function(F$3){var s$3=this.eastAsianWidth(F$3);return s$3==`F`||s$3==`W`||s$3==`A`?2:1};function t$1(F$3){return F$3.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u$18.length=function(F$3){for(var s$3=t$1(F$3),i$7=0,D$2=0;D$2<s$3.length;D$2++)i$7+=this.characterLength(s$3[D$2]);return i$7},u$18.slice=function(F$3,s$3,i$7){textLen=u$18.length(F$3),s$3||=0,i$7||=1,s$3<0&&(s$3=textLen+s$3),i$7<0&&(i$7=textLen+i$7);for(var D$2=``,C$3=0,n$2=t$1(F$3),E$2=0;E$2<n$2.length;E$2++){var a$4=n$2[E$2],o$3=u$18.length(a$4);if(C$3>=s$3-(o$3==2?1:0))if(C$3+o$3<=i$7)D$2+=a$4;else break;C$3+=o$3}return D$2}})(W$1);var tD=W$1.exports;const eD=L$1(tD);var FD=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};const sD=L$1(FD);function p(e$3,u$18={}){if(typeof e$3!=`string`||e$3.length===0||(u$18={ambiguousIsNarrow:!0,...u$18},e$3=P$1(e$3),e$3.length===0))return 0;e$3=e$3.replace(sD(),` `);let t$1=u$18.ambiguousIsNarrow?1:2,F$3=0;for(let s$3 of e$3){let i$7=s$3.codePointAt(0);if(i$7<=31||i$7>=127&&i$7<=159||i$7>=768&&i$7<=879)continue;switch(eD.eastAsianWidth(s$3)){case`F`:case`W`:F$3+=2;break;case`A`:F$3+=t$1;break;default:F$3+=1}}return F$3}const w=10,N=(e$3=0)=>u$18=>`\x1B[${u$18+e$3}m`,I=(e$3=0)=>u$18=>`\x1B[${38+e$3};5;${u$18}m`,R=(e$3=0)=>(u$18,t$1,F$3)=>`\x1B[${38+e$3};2;${u$18};${t$1};${F$3}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const iD=Object.keys(r.color),CD=Object.keys(r.bgColor);[...iD,...CD];function rD(){let e$3=new Map;for(let[u$18,t$1]of Object.entries(r)){for(let[F$3,s$3]of Object.entries(t$1))r[F$3]={open:`\x1B[${s$3[0]}m`,close:`\x1B[${s$3[1]}m`},t$1[F$3]=r[F$3],e$3.set(s$3[0],s$3[1]);Object.defineProperty(r,u$18,{value:t$1,enumerable:!1})}return Object.defineProperty(r,`codes`,{value:e$3,enumerable:!1}),r.color.close=`\x1B[39m`,r.bgColor.close=`\x1B[49m`,r.color.ansi=N(),r.color.ansi256=I(),r.color.ansi16m=R(),r.bgColor.ansi=N(10),r.bgColor.ansi256=I(10),r.bgColor.ansi16m=R(10),Object.defineProperties(r,{rgbToAnsi256:{value:(u$18,t$1,F$3)=>u$18===t$1&&t$1===F$3?u$18<8?16:u$18>248?231:Math.round((u$18-8)/247*24)+232:16+36*Math.round(u$18/255*5)+6*Math.round(t$1/255*5)+Math.round(F$3/255*5),enumerable:!1},hexToRgb:{value:u$18=>{let t$1=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u$18.toString(16));if(!t$1)return[0,0,0];let[F$3]=t$1;F$3.length===3&&(F$3=[...F$3].map(i$7=>i$7+i$7).join(``));let s$3=Number.parseInt(F$3,16);return[s$3>>16&255,s$3>>8&255,s$3&255]},enumerable:!1},hexToAnsi256:{value:u$18=>r.rgbToAnsi256(...r.hexToRgb(u$18)),enumerable:!1},ansi256ToAnsi:{value:u$18=>{if(u$18<8)return 30+u$18;if(u$18<16)return 90+(u$18-8);let t$1,F$3,s$3;if(u$18>=232)t$1=((u$18-232)*10+8)/255,F$3=t$1,s$3=t$1;else{u$18-=16;let C$3=u$18%36;t$1=Math.floor(u$18/36)/5,F$3=Math.floor(C$3/6)/5,s$3=C$3%6/5}let i$7=Math.max(t$1,F$3,s$3)*2;if(i$7===0)return 30;let D$2=30+(Math.round(s$3)<<2|Math.round(F$3)<<1|Math.round(t$1));return i$7===2&&(D$2+=60),D$2},enumerable:!1},rgbToAnsi:{value:(u$18,t$1,F$3)=>r.ansi256ToAnsi(r.rgbToAnsi256(u$18,t$1,F$3)),enumerable:!1},hexToAnsi:{value:u$18=>r.ansi256ToAnsi(r.hexToAnsi256(u$18)),enumerable:!1}}),r}const ED=rD(),d$1=new Set([`\x1B`,`Β`]),oD=39,y=`\x07`,V$1=`[`,nD=`]`,G$1=`m`,_$2=`]8;;`,z$2=e$3=>`${d$1.values().next().value}[${e$3}m`,K$1=e$3=>`${d$1.values().next().value}${_$2}${e$3}`,aD=e$3=>e$3.split(` `).map(u$18=>p(u$18)),k$1=(e$3,u$18,t$1)=>{let F$3=[...u$18],s$3=!1,i$7=!1,D$2=p(P$1(e$3[e$3.length-1]));for(let[C$3,n$2]of F$3.entries()){let E$2=p(n$2);if(D$2+E$2<=t$1?e$3[e$3.length-1]+=n$2:(e$3.push(n$2),D$2=0),d$1.has(n$2)&&(s$3=!0,i$7=F$3.slice(C$3+1).join(``).startsWith(_$2)),s$3){i$7?n$2===`\x07`&&(s$3=!1,i$7=!1):n$2===`m`&&(s$3=!1);continue}D$2+=E$2,D$2===t$1&&C$3<F$3.length-1&&(e$3.push(``),D$2=0)}!D$2&&e$3[e$3.length-1].length>0&&e$3.length>1&&(e$3[e$3.length-2]+=e$3.pop())},hD=e$3=>{let u$18=e$3.split(` `),t$1=u$18.length;for(;t$1>0&&!(p(u$18[t$1-1])>0);)t$1--;return t$1===u$18.length?e$3:u$18.slice(0,t$1).join(` `)+u$18.slice(t$1).join(``)},lD=(e$3,u$18,t$1={})=>{if(t$1.trim!==!1&&e$3.trim()===``)return``;let F$3=``,s$3,i$7,D$2=aD(e$3),C$3=[``];for(let[E$2,a$4]of e$3.split(` `).entries()){t$1.trim!==!1&&(C$3[C$3.length-1]=C$3[C$3.length-1].trimStart());let o$3=p(C$3[C$3.length-1]);if(E$2!==0&&(o$3>=u$18&&(t$1.wordWrap===!1||t$1.trim===!1)&&(C$3.push(``),o$3=0),(o$3>0||t$1.trim===!1)&&(C$3[C$3.length-1]+=` `,o$3++)),t$1.hard&&D$2[E$2]>u$18){let c$3=u$18-o$3,f=1+Math.floor((D$2[E$2]-c$3-1)/u$18);Math.floor((D$2[E$2]-1)/u$18)<f&&C$3.push(``),k$1(C$3,a$4,u$18);continue}if(o$3+D$2[E$2]>u$18&&o$3>0&&D$2[E$2]>0){if(t$1.wordWrap===!1&&o$3<u$18){k$1(C$3,a$4,u$18);continue}C$3.push(``)}if(o$3+D$2[E$2]>u$18&&t$1.wordWrap===!1){k$1(C$3,a$4,u$18);continue}C$3[C$3.length-1]+=a$4}t$1.trim!==!1&&(C$3=C$3.map(E$2=>hD(E$2)));let n$2=[...C$3.join(`
|
|
2024
2024
|
`)];for(let[E$2,a$4]of n$2.entries()){if(F$3+=a$4,d$1.has(a$4)){let{groups:c$3}=RegExp(`(?:\\[(?<code>\\d+)m|\\${_$2}(?<uri>.*))`).exec(n$2.slice(E$2).join(``))||{groups:{}};if(c$3.code!==void 0){let f=Number.parseFloat(c$3.code);s$3=f===39?void 0:f}else c$3.uri!==void 0&&(i$7=c$3.uri.length===0?void 0:c$3.uri)}let o$3=ED.codes.get(Number(s$3));n$2[E$2+1]===`
|
|
2025
2025
|
`?(i$7&&(F$3+=K$1(``)),s$3&&o$3&&(F$3+=z$2(o$3))):a$4===`
|
|
2026
2026
|
`&&(s$3&&o$3&&(F$3+=z$2(s$3)),i$7&&(F$3+=K$1(i$7)))}return F$3};function Y$1(e$3,u$18,t$1){return String(e$3).normalize().replace(/\r\n/g,`
|
|
@@ -2174,4 +2174,4 @@ node_modules
|
|
|
2174
2174
|
`};await Promise.all(Object.entries(files).map(async([path$38,content])=>{await writeFile(join$1(directory,path$38),content)})),console.log(``);let child=spawn$1(packageManager,[`install`,`--save-dev`,`zod`,`ai`,`blink`,`esbuild`],{stdio:`inherit`,cwd:directory});await new Promise((resolve$10,reject)=>{child.on(`close`,code$1=>{code$1===0&&resolve$10(void 0)}),child.on(`error`,error$66=>{reject(error$66)})}),console.log(``),M.success(`To get started, run:
|
|
2175
2175
|
|
|
2176
2176
|
${packageManager} blink dev`),Se(`Edit agent.ts to hot-reload your agent.`)}var require_XDGAppPaths=__commonJSMin((exports=>{exports.__esModule=!0,exports.Adapt=void 0;function isBoolean(t$1){return typeOf(t$1)===`boolean`}function isObject(t$1){return typeOf(t$1)===`object`}function isString(t$1){return typeOf(t$1)===`string`}function typeOf(t$1){return typeof t$1}function Adapt$2(adapter_){var meta=adapter_.meta,path$38=adapter_.path,xdg=adapter_.xdg,XDGAppPaths_=function(){function XDGAppPaths_$1(options_){options_===void 0&&(options_={});var _a$16,_b$5,_c$2;function XDGAppPaths(options$2){return options$2===void 0&&(options$2={}),new XDGAppPaths_$1(options$2)}var options$1=isObject(options_)?options_:{name:options_},suffix=(_a$16=options$1.suffix)??``,isolated_=(_b$5=options$1.isolated)??!0,namePriorityList=[options$1.name,meta.pkgMainFilename(),meta.mainFilename()],nameFallback=`$eval`,name$6=path$38.parse(((_c$2=namePriorityList.find(function(e$3){return isString(e$3)}))??nameFallback)+suffix).name;XDGAppPaths.$name=function(){return name$6},XDGAppPaths.$isolated=function(){return isolated_};function isIsolated(dirOptions){var _a$17;dirOptions??={isolated:isolated_};var isolated=isBoolean(dirOptions)?dirOptions:(_a$17=dirOptions.isolated)??isolated_;return isolated}function finalPathSegment(dirOptions){return isIsolated(dirOptions)?name$6:``}return XDGAppPaths.cache=function(dirOptions){return path$38.join(xdg.cache(),finalPathSegment(dirOptions))},XDGAppPaths.config=function(dirOptions){return path$38.join(xdg.config(),finalPathSegment(dirOptions))},XDGAppPaths.data=function(dirOptions){return path$38.join(xdg.data(),finalPathSegment(dirOptions))},XDGAppPaths.runtime=function(dirOptions){return xdg.runtime()?path$38.join(xdg.runtime(),finalPathSegment(dirOptions)):void 0},XDGAppPaths.state=function(dirOptions){return path$38.join(xdg.state(),finalPathSegment(dirOptions))},XDGAppPaths.configDirs=function(dirOptions){return xdg.configDirs().map(function(s$3){return path$38.join(s$3,finalPathSegment(dirOptions))})},XDGAppPaths.dataDirs=function(dirOptions){return xdg.dataDirs().map(function(s$3){return path$38.join(s$3,finalPathSegment(dirOptions))})},XDGAppPaths}return XDGAppPaths_$1}();return{XDGAppPaths:new XDGAppPaths_}}exports.Adapt=Adapt$2})),require_XDG=__commonJSMin((exports=>{var __spreadArray$1=exports&&exports.__spreadArray||function(to,from$1){for(var i$7=0,il=from$1.length,j$2=to.length;i$7<il;i$7++,j$2++)to[j$2]=from$1[i$7];return to};exports.__esModule=!0,exports.Adapt=void 0;function Adapt$1(adapter_){var env$8=adapter_.env,osPaths=adapter_.osPaths,path$38=adapter_.path,isMacOS=/^darwin$/i.test(adapter_.process.platform),isWinOS=/^win/i.test(adapter_.process.platform);function baseDir(){return osPaths.home()||osPaths.temp()}function valOrPath(val,pathSegments){return val||path$38.join.apply(path$38,pathSegments)}var linux=function(){var cache$4=function(){return valOrPath(env$8.get(`XDG_CACHE_HOME`),[baseDir(),`.cache`])},config$4=function(){return valOrPath(env$8.get(`XDG_CONFIG_HOME`),[baseDir(),`.config`])},data$2=function(){return valOrPath(env$8.get(`XDG_DATA_HOME`),[baseDir(),`.local`,`share`])},runtime=function(){return env$8.get(`XDG_RUNTIME_DIR`)||void 0},state=function(){return valOrPath(env$8.get(`XDG_STATE_HOME`),[baseDir(),`.local`,`state`])};return{cache:cache$4,config:config$4,data:data$2,runtime,state}},macos=function(){var cache$4=function(){return valOrPath(env$8.get(`XDG_CACHE_HOME`),[baseDir(),`Library`,`Caches`])},config$4=function(){return valOrPath(env$8.get(`XDG_CONFIG_HOME`),[baseDir(),`Library`,`Preferences`])},data$2=function(){return valOrPath(env$8.get(`XDG_DATA_HOME`),[baseDir(),`Library`,`Application Support`])},runtime=function(){return env$8.get(`XDG_RUNTIME_DIR`)||void 0},state=function(){return valOrPath(env$8.get(`XDG_STATE_HOME`),[baseDir(),`Library`,`State`])};return{cache:cache$4,config:config$4,data:data$2,runtime,state}},windows=function(){function appData(){return valOrPath(env$8.get(`APPDATA`),[baseDir(),`AppData`,`Roaming`])}function localAppData(){return valOrPath(env$8.get(`LOCALAPPDATA`),[baseDir(),`AppData`,`Local`])}var cache$4=function(){return valOrPath(env$8.get(`XDG_CACHE_HOME`),[localAppData(),`xdg.cache`])},config$4=function(){return valOrPath(env$8.get(`XDG_CONFIG_HOME`),[appData(),`xdg.config`])},data$2=function(){return valOrPath(env$8.get(`XDG_DATA_HOME`),[appData(),`xdg.data`])},runtime=function(){return env$8.get(`XDG_RUNTIME_DIR`)||void 0},state=function(){return valOrPath(env$8.get(`XDG_STATE_HOME`),[localAppData(),`xdg.state`])};return{cache:cache$4,config:config$4,data:data$2,runtime,state}},XDG_=function(){function XDG_$1(){function XDG(){return new XDG_$1}var extension$1=isMacOS?macos():isWinOS?windows():linux();return XDG.cache=extension$1.cache,XDG.config=extension$1.config,XDG.data=extension$1.data,XDG.runtime=extension$1.runtime,XDG.state=extension$1.state,XDG.configDirs=function(){var pathList=env$8.get(`XDG_CONFIG_DIRS`);return __spreadArray$1([extension$1.config()],pathList?pathList.split(path$38.delimiter):[])},XDG.dataDirs=function(){var pathList=env$8.get(`XDG_DATA_DIRS`);return __spreadArray$1([extension$1.data()],pathList?pathList.split(path$38.delimiter):[])},XDG}return XDG_$1}();return{XDG:new XDG_}}exports.Adapt=Adapt$1})),require_OSPaths=__commonJSMin((exports=>{var __spreadArray=exports&&exports.__spreadArray||function(to,from$1){for(var i$7=0,il=from$1.length,j$2=to.length;i$7<il;i$7++,j$2++)to[j$2]=from$1[i$7];return to};exports.__esModule=!0,exports.Adapt=void 0;function isEmpty(s$3){return!s$3}function Adapt(adapter_){var env$8=adapter_.env,os$14=adapter_.os,path$38=adapter_.path,isWinOS=/^win/i.test(adapter_.process.platform);function normalizePath$1(path_){return path_?adapter_.path.normalize(adapter_.path.join(path_,`.`)):void 0}function home(){var posix$2=function(){return normalizePath$1((typeof os$14.homedir==`function`?os$14.homedir():void 0)||env$8.get(`HOME`))},windows=function(){var priorityList=[typeof os$14.homedir==`function`?os$14.homedir():void 0,env$8.get(`USERPROFILE`),env$8.get(`HOME`),env$8.get(`HOMEDRIVE`)||env$8.get(`HOMEPATH`)?path$38.join(env$8.get(`HOMEDRIVE`)||``,env$8.get(`HOMEPATH`)||``):void 0];return normalizePath$1(priorityList.find(function(v$2){return!isEmpty(v$2)}))};return isWinOS?windows():posix$2()}function temp(){function joinPathToBase(base,segments){return base?path$38.join.apply(path$38,__spreadArray([base],segments)):void 0}function posix$2(){var fallback=`/tmp`,priorityList=[typeof os$14.tmpdir==`function`?os$14.tmpdir():void 0,env$8.get(`TMPDIR`),env$8.get(`TEMP`),env$8.get(`TMP`)];return normalizePath$1(priorityList.find(function(v$2){return!isEmpty(v$2)}))||fallback}function windows(){var fallback=`C:\\Temp`,priorityListLazy=[typeof os$14.tmpdir==`function`?os$14.tmpdir:function(){},function(){return env$8.get(`TEMP`)},function(){return env$8.get(`TMP`)},function(){return joinPathToBase(env$8.get(`LOCALAPPDATA`),[`Temp`])},function(){return joinPathToBase(home(),[`AppData`,`Local`,`Temp`])},function(){return joinPathToBase(env$8.get(`ALLUSERSPROFILE`),[`Temp`])},function(){return joinPathToBase(env$8.get(`SystemRoot`),[`Temp`])},function(){return joinPathToBase(env$8.get(`windir`),[`Temp`])},function(){return joinPathToBase(env$8.get(`SystemDrive`),[`\\`,`Temp`])}],v$2=priorityListLazy.find(function(v$3){return v$3&&!isEmpty(v$3())});return v$2&&normalizePath$1(v$2())||fallback}return isWinOS?windows():posix$2()}var OSPaths_=function(){function OSPaths_$1(){function OSPaths(){return new OSPaths_$1}return OSPaths.home=home,OSPaths.temp=temp,OSPaths}return OSPaths_$1}();return{OSPaths:new OSPaths_}}exports.Adapt=Adapt})),require_node$2=__commonJSMin((exports=>{var __createBinding$2=exports&&exports.__createBinding||(Object.create?(function(o$3,m$3,k$2,k2){k2===void 0&&(k2=k$2),Object.defineProperty(o$3,k2,{enumerable:!0,get:function(){return m$3[k$2]}})}):(function(o$3,m$3,k$2,k2){k2===void 0&&(k2=k$2),o$3[k2]=m$3[k$2]})),__setModuleDefault$2=exports&&exports.__setModuleDefault||(Object.create?(function(o$3,v$2){Object.defineProperty(o$3,`default`,{enumerable:!0,value:v$2})}):function(o$3,v$2){o$3.default=v$2}),__importStar$2=exports&&exports.__importStar||function(mod$1){if(mod$1&&mod$1.__esModule)return mod$1;var result={};if(mod$1!=null)for(var k$2 in mod$1)k$2!==`default`&&Object.prototype.hasOwnProperty.call(mod$1,k$2)&&__createBinding$2(result,mod$1,k$2);return __setModuleDefault$2(result,mod$1),result};exports.__esModule=!0,exports.adapter=void 0;var os$2=__importStar$2(__require$2(`os`)),path$4=__importStar$2(__require$2(`path`));exports.adapter={atImportPermissions:{env:!0},env:{get:function(s$3){return process.env[s$3]}},os:os$2,path:path$4,process}})),require_mod_cjs$2=__commonJSMin(((exports,module)=>{var OSPaths_js_1=require_OSPaths(),node_js_1$2=require_node$2();module.exports=OSPaths_js_1.Adapt(node_js_1$2.adapter).OSPaths})),require_node$1=__commonJSMin((exports=>{var __createBinding$1=exports&&exports.__createBinding||(Object.create?(function(o$3,m$3,k$2,k2){k2===void 0&&(k2=k$2),Object.defineProperty(o$3,k2,{enumerable:!0,get:function(){return m$3[k$2]}})}):(function(o$3,m$3,k$2,k2){k2===void 0&&(k2=k$2),o$3[k2]=m$3[k$2]})),__setModuleDefault$1=exports&&exports.__setModuleDefault||(Object.create?(function(o$3,v$2){Object.defineProperty(o$3,`default`,{enumerable:!0,value:v$2})}):function(o$3,v$2){o$3.default=v$2}),__importStar$1=exports&&exports.__importStar||function(mod$1){if(mod$1&&mod$1.__esModule)return mod$1;var result={};if(mod$1!=null)for(var k$2 in mod$1)k$2!==`default`&&Object.prototype.hasOwnProperty.call(mod$1,k$2)&&__createBinding$1(result,mod$1,k$2);return __setModuleDefault$1(result,mod$1),result},__importDefault$1=exports&&exports.__importDefault||function(mod$1){return mod$1&&mod$1.__esModule?mod$1:{default:mod$1}};exports.__esModule=!0,exports.adapter=void 0;var path$3=__importStar$1(__require$2(`path`)),os_paths_1=__importDefault$1(require_mod_cjs$2());exports.adapter={atImportPermissions:{env:!0},env:{get:function(s$3){return process.env[s$3]}},osPaths:os_paths_1.default,path:path$3,process}})),require_mod_cjs$1=__commonJSMin(((exports,module)=>{var XDG_js_1=require_XDG(),node_js_1$1=require_node$1();module.exports=XDG_js_1.Adapt(node_js_1$1.adapter).XDG})),require_node=__commonJSMin((exports=>{var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o$3,m$3,k$2,k2){k2===void 0&&(k2=k$2),Object.defineProperty(o$3,k2,{enumerable:!0,get:function(){return m$3[k$2]}})}):(function(o$3,m$3,k$2,k2){k2===void 0&&(k2=k$2),o$3[k2]=m$3[k$2]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o$3,v$2){Object.defineProperty(o$3,`default`,{enumerable:!0,value:v$2})}):function(o$3,v$2){o$3.default=v$2}),__importStar=exports&&exports.__importStar||function(mod$1){if(mod$1&&mod$1.__esModule)return mod$1;var result={};if(mod$1!=null)for(var k$2 in mod$1)k$2!==`default`&&Object.prototype.hasOwnProperty.call(mod$1,k$2)&&__createBinding(result,mod$1,k$2);return __setModuleDefault(result,mod$1),result},__importDefault=exports&&exports.__importDefault||function(mod$1){return mod$1&&mod$1.__esModule?mod$1:{default:mod$1}};exports.__esModule=!0,exports.adapter=void 0;var path$2=__importStar(__require$2(`path`)),xdg_portable_1=__importDefault(require_mod_cjs$1());exports.adapter={atImportPermissions:{env:!0,read:!0},meta:{mainFilename:function(){var requireMain=__require$2!=null&&__require$2.main?__require$2.main:{filename:void 0},requireMainFilename=requireMain.filename,filename=(requireMainFilename===process.execArgv[0]?void 0:requireMainFilename)||(process._eval===void 0?process.argv[1]:void 0);return filename},pkgMainFilename:function(){return process.pkg?process.execPath:void 0}},path:path$2,process,xdg:xdg_portable_1.default}})),require_mod_cjs=__commonJSMin(((exports,module)=>{var XDGAppPaths_js_1=require_XDGAppPaths(),node_js_1=require_node();module.exports=XDGAppPaths_js_1.Adapt(node_js_1.adapter).XDGAppPaths})),mod_esm_exports={};__export$5(mod_esm_exports,{default:()=>mod_esm_default});var import_mod_cjs=__toESM$1(require_mod_cjs(),1);__reExport(mod_esm_exports,__toESM$1(require_mod_cjs(),1));var mod_esm_default=import_mod_cjs.default;function getAuthToken(){let path$38=getAuthTokenConfigPath();if(existsSync$1(path$38)){let data$2=readFileSync$1(path$38,`utf8`);return JSON.parse(data$2).token}}function setAuthToken(token$1){let path$38=getAuthTokenConfigPath();existsSync$1(dirname$1(path$38))||mkdirSync(dirname$1(path$38),{recursive:!0}),writeFileSync$1(path$38,JSON.stringify({_:`This is your Blink credentials file. DO NOT SHARE THIS FILE WITH ANYONE!`,token:token$1}))}function getAuthTokenConfigPath(){let dirs=mod_esm_default(`blink`).dataDirs();if(dirs.length===0)throw Error(`No suitable data directory for Blink storage found!`);return join$1(dirs[0],`auth.json`)}async function loginIfNeeded(){let client=new Client,token$1=getAuthToken();if(token$1){client.authToken=token$1;try{await client.users.me()}catch{token$1=await login$1()}}else token$1=await login$1();return token$1}async function login$1(){let client=new Client,authUrl,tokenPromise,handleAuthCallback=(url$4,id)=>{authUrl=url$4,console.log(`Visit`,source_default.bold(url$4),`to authenticate with Blink.`),console.log(source_default.dim(`Press [ENTER] to open the browser`))};tokenPromise=client.auth.token(handleAuthCallback),await new Promise(resolve$10=>{process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.on(`data`,key=>{(key.toString()===`\r`||key.toString()===`
|
|
2177
|
-
`)&&(process.stdin.setRawMode(!1),process.stdin.pause(),resolve$10())})}),await open_default(authUrl);let s$3=Y();s$3.start(`Waiting for authentication...`);try{let receivedToken=await tokenPromise;client.authToken=receivedToken;let user=await client.users.me();return s$3.stop(`Congratulations, you are now signed in as ${user.email}!`),setAuthToken(receivedToken),receivedToken}catch(error$66){s$3.stop(`Authentication failed: `+error$66),process.exit(1)}}var import_main=__toESM$1(require_main(),1);async function deploy(directory){directory||=process.cwd();let token$1=await loginIfNeeded(),client=new Client({authToken:token$1}),packageJSON=await findNearestEntry(directory,`package.json`);if(!packageJSON)throw Error(`package.json not found`);let packageJSONContent=await readFile$1(packageJSON,`utf-8`),packageJSONData=JSON.parse(packageJSONContent),deployDirectory=dirname(packageJSON),deployConfigPath=join(deployDirectory,`.blink`,`config.json`),deployConfig={};if(existsSync(deployConfigPath)){let deployConfigContent=await readFile$1(deployConfigPath,`utf-8`);deployConfig=JSON.parse(deployConfigContent)}let organizationName;if(deployConfig?.organizationId)try{let org=await client.organizations.get(deployConfig.organizationId);organizationName=org.name}catch{deployConfig.organizationId=void 0}if(!deployConfig?.organizationId){let organizations=await client.organizations.list();if(organizations.length===1){let organization=organizations[0];deployConfig.organizationId=organization.id,organizationName=organization.name}else{let organization=await ve({message:`Which organization should contain this agent?`,options:organizations.map(organization$1=>({value:organization$1.id,label:organization$1.name}))});if(pD(organization))return;deployConfig.organizationId=organization,organizationName=organizations.find(org=>org.id===organization).name}}if(!deployConfig.organizationId)throw Error(`Developer error: No organization ID found.`);let agentName;if(deployConfig?.agentId)try{let agent=await client.agents.get(deployConfig.agentId);agentName=agent.name}catch{deployConfig.agentId=void 0}if(!deployConfig?.agentId)try{let agent=await client.organizations.agents.get({organization_id:deployConfig.organizationId,agent_name:packageJSONData.name});deployConfig.agentId=agent.id,agentName=agent.name}catch{let agent=await client.agents.create({name:packageJSONData.name,organization_id:deployConfig.organizationId});deployConfig.agentId=agent.id,agentName=agent.name}if(!deployConfig.agentId)throw Error(`Developer error: No agent ID found.`);await mkdir(dirname(deployConfigPath),{recursive:!0}),await writeFile(deployConfigPath,JSON.stringify({_:`This file can be source controlled. It contains no secrets.`,...deployConfig},null,2),`utf-8`);let entrypoint=await resolveEntrypoint(directory),{outfile}=await build$1(entrypoint),filesToUpload=await readdir(dirname(outfile)),uploadedFiles=[];for(let file$1 of filesToUpload){let fileContent=await readFile$1(join(dirname(outfile),file$1)),uploadedFile=await client.files.upload(new File([fileContent],file$1));uploadedFiles.push({path:file$1,id:uploadedFile.id})}let localEnvFile=join(directory,`.env.local`),localEnvVarsSet=[];if(await exists(localEnvFile)){let localEnv=(0,import_main.parse)(await readFile$1(localEnvFile,`utf-8`));localEnvVarsSet=Object.keys(localEnv)}let cloudEnvVarsSet=[],cloudEnvVars=await client.agents.env.list({agent_id:deployConfig.agentId});cloudEnvVarsSet=cloudEnvVars.map(env$8=>env$8.key);let prodEnvFile=join(directory,`.env.production`);if(await exists(prodEnvFile)){console.log(`Updating production environment variables with .env.production...`);let prodEnv=(0,import_main.parse)(await readFile$1(prodEnvFile,`utf-8`));for(let[key,value]of Object.entries(prodEnv)){let created=await client.agents.env.create({agent_id:deployConfig.agentId,key,value,target:[`production`,`preview`],secret:!0,upsert:!0});cloudEnvVarsSet.push(created.key)}}let missingEnvVars=localEnvVarsSet.filter(v$2=>!cloudEnvVarsSet.includes(v$2));if(missingEnvVars.length>0){console.log(`Warning: The following environment variables are set in .env.local but not in .env.production:`);for(let v$2 of missingEnvVars)console.log(`- ${v$2}`);let confirmed=await ye({message:`Do you want to deploy anyway?`});if(confirmed===!1||pD(confirmed))return}let deployment=await client.agents.deployments.create({agent_id:deployConfig.agentId,target:`production`,entrypoint:basename(outfile),files:uploadedFiles});console.log(`Inspect the deployment:`,`https://blink.so/${organizationName}/${agentName}/deployments/${deployment.number}`)}const exists=async path$38=>{try{return await stat$1(path$38),!0}catch{return!1}};async function login(){await login$1()}var version=`0.1.
|
|
2177
|
+
`)&&(process.stdin.setRawMode(!1),process.stdin.pause(),resolve$10())})}),await open_default(authUrl);let s$3=Y();s$3.start(`Waiting for authentication...`);try{let receivedToken=await tokenPromise;client.authToken=receivedToken;let user=await client.users.me();return s$3.stop(`Congratulations, you are now signed in as ${user.email}!`),setAuthToken(receivedToken),receivedToken}catch(error$66){s$3.stop(`Authentication failed: `+error$66),process.exit(1)}}var import_main=__toESM$1(require_main(),1);async function deploy(directory){directory||=process.cwd();let token$1=await loginIfNeeded(),client=new Client({authToken:token$1}),packageJSON=await findNearestEntry(directory,`package.json`);if(!packageJSON)throw Error(`package.json not found`);let packageJSONContent=await readFile$1(packageJSON,`utf-8`),packageJSONData=JSON.parse(packageJSONContent),deployDirectory=dirname(packageJSON),deployConfigPath=join(deployDirectory,`.blink`,`config.json`),deployConfig={};if(existsSync(deployConfigPath)){let deployConfigContent=await readFile$1(deployConfigPath,`utf-8`);deployConfig=JSON.parse(deployConfigContent)}let organizationName;if(deployConfig?.organizationId)try{let org=await client.organizations.get(deployConfig.organizationId);organizationName=org.name}catch{deployConfig.organizationId=void 0}if(!deployConfig?.organizationId){let organizations=await client.organizations.list();if(organizations.length===1){let organization=organizations[0];deployConfig.organizationId=organization.id,organizationName=organization.name}else{let organization=await ve({message:`Which organization should contain this agent?`,options:organizations.map(organization$1=>({value:organization$1.id,label:organization$1.name}))});if(pD(organization))return;deployConfig.organizationId=organization,organizationName=organizations.find(org=>org.id===organization).name}}if(!deployConfig.organizationId)throw Error(`Developer error: No organization ID found.`);let agentName;if(deployConfig?.agentId)try{let agent=await client.agents.get(deployConfig.agentId);agentName=agent.name}catch{deployConfig.agentId=void 0}if(!deployConfig?.agentId)try{let agent=await client.organizations.agents.get({organization_id:deployConfig.organizationId,agent_name:packageJSONData.name});deployConfig.agentId=agent.id,agentName=agent.name}catch{let agent=await client.agents.create({name:packageJSONData.name,organization_id:deployConfig.organizationId});deployConfig.agentId=agent.id,agentName=agent.name}if(!deployConfig.agentId)throw Error(`Developer error: No agent ID found.`);await mkdir(dirname(deployConfigPath),{recursive:!0}),await writeFile(deployConfigPath,JSON.stringify({_:`This file can be source controlled. It contains no secrets.`,...deployConfig},null,2),`utf-8`);let entrypoint=await resolveEntrypoint(directory),{outfile}=await build$1(entrypoint),filesToUpload=await readdir(dirname(outfile)),uploadedFiles=[];for(let file$1 of filesToUpload){let fileContent=await readFile$1(join(dirname(outfile),file$1)),uploadedFile=await client.files.upload(new File([fileContent],file$1));uploadedFiles.push({path:file$1,id:uploadedFile.id})}let localEnvFile=join(directory,`.env.local`),localEnvVarsSet=[];if(await exists(localEnvFile)){let localEnv=(0,import_main.parse)(await readFile$1(localEnvFile,`utf-8`));localEnvVarsSet=Object.keys(localEnv)}let cloudEnvVarsSet=[],cloudEnvVars=await client.agents.env.list({agent_id:deployConfig.agentId});cloudEnvVarsSet=cloudEnvVars.map(env$8=>env$8.key);let prodEnvFile=join(directory,`.env.production`);if(await exists(prodEnvFile)){console.log(`Updating production environment variables with .env.production...`);let prodEnv=(0,import_main.parse)(await readFile$1(prodEnvFile,`utf-8`));for(let[key,value]of Object.entries(prodEnv)){let created=await client.agents.env.create({agent_id:deployConfig.agentId,key,value,target:[`production`,`preview`],secret:!0,upsert:!0});cloudEnvVarsSet.push(created.key)}}let missingEnvVars=localEnvVarsSet.filter(v$2=>!cloudEnvVarsSet.includes(v$2));if(missingEnvVars.length>0){console.log(`Warning: The following environment variables are set in .env.local but not in .env.production:`);for(let v$2 of missingEnvVars)console.log(`- ${v$2}`);let confirmed=await ye({message:`Do you want to deploy anyway?`});if(confirmed===!1||pD(confirmed))return}let deployment=await client.agents.deployments.create({agent_id:deployConfig.agentId,target:`production`,entrypoint:basename(outfile),files:uploadedFiles});console.log(`Inspect the deployment:`,`https://blink.so/${organizationName}/${agentName}/deployments/${deployment.number}`)}const exists=async path$38=>{try{return await stat$1(path$38),!0}catch{return!1}};async function login(){await login$1()}var version=`0.1.30`;await init_wrapper(),globalThis.WebSocket||(globalThis.WebSocket=import_websocket$1.default),globalThis.crypto||(globalThis.crypto={}),globalThis.crypto.randomUUID||(globalThis.crypto.randomUUID=()=>randomUUID()),program.name(`blink`).description(`Blink is a runtime for building and deploying AI agents.`).version(version).action(()=>{program.outputHelp()}),program.command(`init [directory]`).description(`Initialize a new Blink agent.`).action(init),program.command(`dev [directory] [options]`).description(`Start a development server for your agent.`).action(dev),program.command(`deploy [directory] [options]`).description(`Deploy your agent to the Blink Cloud.`).action(deploy),program.command(`build [directory]`).description(`Build your agent for production.`).action(build),program.command(`telemetry [boolean]`).description(`Enable or disable telemetry.`),program.command(`start [directory]`).description("Starts the Blink runtime in production mode. The agent must be compiled with `blink build` first."),program.command(`serve [entrypoint]`).description(`Serve the Blink agent as an HTTP server.`).action(serve),program.command(`connect`,{hidden:!0}).description(`Connect compute to the Blink Cloud.`).action(connect),program.command(`chat`,{hidden:!0}).description(`Start a Blink chat connected to your machine.`).action(chat),program.command(`login`,{hidden:!0}).description(`Log in to the Blink Cloud.`).action(login),program.parse(process.argv);export{};
|
package/dist/test.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./cookie-B3SvZDri.cjs`);let t=require(`fs/promises`);t=e.__toESM(t);let n=require(`path`);n=e.__toESM(n);async function r(e,{outdir:t}={}){t||=await a(e);let r=(0,n.join)(t,`agent.js`),i=c(),o=await i.build({...s,entryPoints:[e],outfile:r});if(o.errors.length>0)throw Error(`Failed to build agent!`);return{outfile:r}}async function i(e){let r=await o(e,`package.json`);if(!r)throw Error(`No package.json found in ${e}`);let i=JSON.parse(await(0,t.readFile)(r,`utf-8`)),a=i.main;if(!a)throw Error(`"main" is not set in ${(0,n.relative)(process.cwd(),r)}. It should be set to the entrypoint of your agent.`);let s=(0,n.join)((0,n.dirname)(r),a),c=await(0,t.stat)(s);if(!c.isFile())throw Error(`${s} is not a file.`);return s}async function a(e){let r=await o(e,`node_modules`);if(!r){let r=await(0,t.stat)(e);return r.isDirectory()?(0,n.join)(e,`.blink`):(0,n.join)((0,n.dirname)(e),`.blink`)}let i=(0,n.join)(r,`.blink`);return await(0,t.mkdir)(i,{recursive:!0}),i}async function o(e,r){let i=e;for(;i!==(0,n.dirname)(i);){let e=(0,n.join)(i,r);try{return await(0,t.stat)(e),e}catch{}i=(0,n.dirname)(i)}}const s={bundle:!0,format:`cjs`,platform:`node`,target:`node18`,sourcemap:`inline`},c=()=>{try{return require(`esbuild`)}catch{throw Error("esbuild is not installed. Please install it with `bun add esbuild`.")}};function l(e){let t=require(e);if(typeof t!=`object`)throw Error(`The module at ${e} must export an object.`);let n=t.default;if(typeof n!=`object`)throw Error(`The module at ${e} must export an object.`);if(!n.version)throw Error(`The module at ${e} must export a "version" property.`);if(typeof n.fetch!=`function`)throw Error(`The module at ${e} must export a "fetch" function.`);return n}function u(e){return new d(`http://agent.local`,{fetch:async(t,n)=>e.fetch(new Request(t,n))})}var d=class{baseUrl;fetch;constructor(e,t){this.baseUrl=e,this.fetch=t?.fetch??fetch}async sendMessages(e,t){return this.fetch(`${this.baseUrl}/sendMessages`,{method:`POST`,body:JSON.stringify(e),signal:t?.signal})}async sendWebhook(e){let t=new URL(e.url),n=new Headers(e.headers);return this.fetch(`${this.baseUrl}/webhook?${t.searchParams.toString()}`,{method:e.method,headers:n,body:e.body})}},f=(e,t,n)=>(r,i)=>{let a=-1;return o(0);async function o(s){if(s<=a)throw Error(`next() called multiple times`);a=s;let c,l=!1,u;if(e[s]?(u=e[s][0][0],r.req.routeIndex=s):u=s===e.length&&i||void 0,u)try{c=await u(r,()=>o(s+1))}catch(e){if(e instanceof Error&&t)r.error=e,c=await t(e,r),l=!0;else throw e}else r.finalized===!1&&n&&(c=await n(r));return c&&(r.finalized===!1||l)&&(r.res=c),r}},p=Symbol(),m=async(e,t=Object.create(null))=>{let{all:n=!1,dot:r=!1}=t,i=e instanceof y?e.raw.headers:e.headers,a=i.get(`Content-Type`);return a?.startsWith(`multipart/form-data`)||a?.startsWith(`application/x-www-form-urlencoded`)?h(e,{all:n,dot:r}):{}};async function h(e,t){let n=await e.formData();return n?g(n,t):{}}function g(e,t){let n=Object.create(null);return e.forEach((e,r)=>{let i=t.all||r.endsWith(`[]`);i?ee(n,r,e):n[r]=e}),t.dot&&Object.entries(n).forEach(([e,t])=>{let r=e.includes(`.`);r&&(_(n,e,t),delete n[e])}),n}var ee=(e,t,n)=>{e[t]===void 0?t.endsWith(`[]`)?e[t]=[n]:e[t]=n:Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]},_=(e,t,n)=>{let r=e,i=t.split(`.`);i.forEach((e,t)=>{t===i.length-1?r[e]=n:((!r[e]||typeof r[e]!=`object`||Array.isArray(r[e])||r[e]instanceof File)&&(r[e]=Object.create(null)),r=r[e])})},v=t=>e.tryDecode(t,e.decodeURIComponent_),y=class{raw;#validatedData;#matchResult;routeIndex=0;path;bodyCache={};constructor(e,t=`/`,n=[[]]){this.raw=e,this.path=t,this.#matchResult=n,this.#validatedData={}}param(e){return e?this.#getDecodedParam(e):this.#getAllDecodedParams()}#getDecodedParam(e){let t=this.#matchResult[0][this.routeIndex][1][e],n=this.#getParamValue(t);return n&&/\%/.test(n)?v(n):n}#getAllDecodedParams(){let e={},t=Object.keys(this.#matchResult[0][this.routeIndex][1]);for(let n of t){let t=this.#getParamValue(this.#matchResult[0][this.routeIndex][1][n]);t!==void 0&&(e[n]=/\%/.test(t)?v(t):t)}return e}#getParamValue(e){return this.#matchResult[1]?this.#matchResult[1][e]:e}query(t){return e.getQueryParam(this.url,t)}queries(t){return e.getQueryParams(this.url,t)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t={};return this.raw.headers.forEach((e,n)=>{t[n]=e}),t}async parseBody(e){return this.bodyCache.parsedBody??=await m(this,e)}#cachedBody=e=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;let i=Object.keys(t)[0];return i?t[i].then(t=>(i===`json`&&(t=JSON.stringify(t)),new Response(t)[e]())):t[e]=n[e]()};json(){return this.#cachedBody(`text`).then(e=>JSON.parse(e))}text(){return this.#cachedBody(`text`)}arrayBuffer(){return this.#cachedBody(`arrayBuffer`)}blob(){return this.#cachedBody(`blob`)}formData(){return this.#cachedBody(`formData`)}addValidatedData(e,t){this.#validatedData[e]=t}valid(e){return this.#validatedData[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[p](){return this.#matchResult}get matchedRoutes(){return this.#matchResult[0].map(([[,e]])=>e)}get routePath(){return this.#matchResult[0].map(([[,e]])=>e)[this.routeIndex].path}},te={Stringify:1,BeforeStream:2,Stream:3},ne=(e,t)=>{let n=new String(e);return n.isEscaped=!0,n.callbacks=t,n},b=async(e,t,n,r,i)=>{typeof e==`object`&&!(e instanceof String)&&(e instanceof Promise||(e=e.toString()),e instanceof Promise&&(e=await e));let a=e.callbacks;if(!a?.length)return Promise.resolve(e);i?i[0]+=e:i=[e];let o=Promise.all(a.map(e=>e({phase:t,buffer:i,context:r}))).then(e=>Promise.all(e.filter(Boolean).map(e=>b(e,t,!1,r,i))).then(()=>i[0]));return n?ne(await o,a):o},x=`text/plain; charset=UTF-8`,S=(e,t)=>({"Content-Type":e,...t}),re=class{#rawRequest;#req;env={};#var;finalized=!1;error;#status;#executionCtx;#res;#layout;#renderer;#notFoundHandler;#preparedHeaders;#matchResult;#path;constructor(e,t){this.#rawRequest=e,t&&(this.#executionCtx=t.executionCtx,this.env=t.env,this.#notFoundHandler=t.notFoundHandler,this.#path=t.path,this.#matchResult=t.matchResult)}get req(){return this.#req??=new y(this.#rawRequest,this.#path,this.#matchResult),this.#req}get event(){if(this.#executionCtx&&`respondWith`in this.#executionCtx)return this.#executionCtx;throw Error(`This context has no FetchEvent`)}get executionCtx(){if(this.#executionCtx)return this.#executionCtx;throw Error(`This context has no ExecutionContext`)}get res(){return this.#res||=new Response(null,{headers:this.#preparedHeaders??=new Headers})}set res(e){if(this.#res&&e){e=new Response(e.body,e);for(let[t,n]of this.#res.headers.entries()){if(t===`content-type`)continue;if(t===`set-cookie`){let t=this.#res.headers.getSetCookie();e.headers.delete(`set-cookie`);for(let n of t)e.headers.append(`set-cookie`,n)}else e.headers.set(t,n)}}this.#res=e,this.finalized=!0}render=(...e)=>(this.#renderer??=e=>this.html(e),this.#renderer(...e));setLayout=e=>this.#layout=e;getLayout=()=>this.#layout;setRenderer=e=>{this.#renderer=e};header=(e,t,n)=>{this.finalized&&(this.#res=new Response(this.#res.body,this.#res));let r=this.#res?this.#res.headers:this.#preparedHeaders??=new Headers;t===void 0?r.delete(e):n?.append?r.append(e,t):r.set(e,t)};status=e=>{this.#status=e};set=(e,t)=>{this.#var??=new Map,this.#var.set(e,t)};get=e=>this.#var?this.#var.get(e):void 0;get var(){return this.#var?Object.fromEntries(this.#var):{}}#newResponse(e,t,n){let r=this.#res?new Headers(this.#res.headers):this.#preparedHeaders??new Headers;if(typeof t==`object`&&`headers`in t){let e=t.headers instanceof Headers?t.headers:new Headers(t.headers);for(let[t,n]of e)t.toLowerCase()===`set-cookie`?r.append(t,n):r.set(t,n)}if(n)for(let[e,t]of Object.entries(n))if(typeof t==`string`)r.set(e,t);else{r.delete(e);for(let n of t)r.append(e,n)}let i=typeof t==`number`?t:t?.status??this.#status;return new Response(e,{status:i,headers:r})}newResponse=(...e)=>this.#newResponse(...e);body=(e,t,n)=>this.#newResponse(e,t,n);text=(e,t,n)=>!this.#preparedHeaders&&!this.#status&&!t&&!n&&!this.finalized?new Response(e):this.#newResponse(e,t,S(x,n));json=(e,t,n)=>this.#newResponse(JSON.stringify(e),t,S(`application/json`,n));html=(e,t,n)=>{let r=e=>this.#newResponse(e,t,S(`text/html; charset=UTF-8`,n));return typeof e==`object`?b(e,te.Stringify,!1,{}).then(r):r(e)};redirect=(e,t)=>{let n=String(e);return this.header(`Location`,/[^\x00-\xFF]/.test(n)?encodeURI(n):n),this.newResponse(null,t??302)};notFound=()=>(this.#notFoundHandler??=()=>new Response,this.#notFoundHandler(this))},C=`ALL`,ie=`all`,ae=[`get`,`post`,`put`,`delete`,`options`,`patch`],w=`Can not add a route since the matcher is already built.`,T=class extends Error{},E=`__COMPOSED_HANDLER`,D=e=>e.text(`404 Not Found`,404),O=(e,t)=>{if(`getResponse`in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text(`Internal Server Error`,500)},k=class{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath=`/`;#path=`/`;routes=[];constructor(t={}){let n=[...ae,ie];n.forEach(e=>{this[e]=(t,...n)=>(typeof t==`string`?this.#path=t:this.#addRoute(e,this.#path,t),n.forEach(t=>{this.#addRoute(e,this.#path,t)}),this)}),this.on=(e,t,...n)=>{for(let r of[t].flat()){this.#path=r;for(let t of[e].flat())n.map(e=>{this.#addRoute(t.toUpperCase(),this.#path,e)})}return this},this.use=(e,...t)=>(typeof e==`string`?this.#path=e:(this.#path=`*`,t.unshift(e)),t.forEach(e=>{this.#addRoute(C,this.#path,e)}),this);let{strict:r,...i}=t;Object.assign(this,i),this.getPath=r??!0?t.getPath??e.getPath:e.getPathNoStrict}#clone(){let e=new k({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#notFoundHandler=this.#notFoundHandler,e.routes=this.routes,e}#notFoundHandler=D;errorHandler=O;route(e,t){let n=this.basePath(e);return t.routes.map(e=>{let r;t.errorHandler===O?r=e.handler:(r=async(n,r)=>(await f([],t.errorHandler)(n,()=>e.handler(n,r))).res,r[E]=e.handler),n.#addRoute(e.method,e.path,r)}),this}basePath(t){let n=this.#clone();return n._basePath=e.mergePath(this._basePath,t),n}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#notFoundHandler=e,this);mount(t,n,r){let i,a;r&&(typeof r==`function`?a=r:(a=r.optionHandler,i=r.replaceRequest===!1?e=>e:r.replaceRequest));let o=a?e=>{let t=a(e);return Array.isArray(t)?t:[t]}:e=>{let t;try{t=e.executionCtx}catch{}return[e.env,t]};i||=(()=>{let n=e.mergePath(this._basePath,t),r=n===`/`?0:n.length;return e=>{let t=new URL(e.url);return t.pathname=t.pathname.slice(r)||`/`,new Request(t,e)}})();let s=async(e,t)=>{let r=await n(i(e.req.raw),...o(e));if(r)return r;await t()};return this.#addRoute(C,e.mergePath(t,`*`),s),this}#addRoute(t,n,r){t=t.toUpperCase(),n=e.mergePath(this._basePath,n);let i={basePath:this._basePath,path:n,method:t,handler:r};this.router.add(t,n,[r,i]),this.routes.push(i)}#handleError(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#dispatch(e,t,n,r){if(r===`HEAD`)return(async()=>new Response(null,await this.#dispatch(e,t,n,`GET`)))();let i=this.getPath(e,{env:n}),a=this.router.match(r,i),o=new re(e,{path:i,matchResult:a,env:n,executionCtx:t,notFoundHandler:this.#notFoundHandler});if(a[0].length===1){let e;try{e=a[0][0][0][0](o,async()=>{o.res=await this.#notFoundHandler(o)})}catch(e){return this.#handleError(e,o)}return e instanceof Promise?e.then(e=>e||(o.finalized?o.res:this.#notFoundHandler(o))).catch(e=>this.#handleError(e,o)):e??this.#notFoundHandler(o)}let s=f(a[0],this.errorHandler,this.#notFoundHandler);return(async()=>{try{let e=await s(o);if(!e.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return e.res}catch(e){return this.#handleError(e,o)}})()}fetch=(e,...t)=>this.#dispatch(e,t[1],t[0],e.method);request=(t,n,r,i)=>t instanceof Request?this.fetch(n?new Request(t,n):t,r,i):(t=t.toString(),this.fetch(new Request(/^https?:\/\//.test(t)?t:`http://localhost${e.mergePath(`/`,t)}`,n),r,i));fire=()=>{addEventListener(`fetch`,e=>{e.respondWith(this.#dispatch(e.request,e,void 0,e.request.method))})}},A=`[^/]+`,j=`.*`,M=`(?:|/.*)`,N=Symbol(),oe=new Set(`.\\+*[^]$()`);function se(e,t){return e.length===1?t.length===1?e<t?-1:1:-1:t.length===1||e===j||e===M?1:t===j||t===M?-1:e===A?1:t===A?-1:e.length===t.length?e<t?-1:1:t.length-e.length}var P=class{#index;#varIndex;#children=Object.create(null);insert(e,t,n,r,i){if(e.length===0){if(this.#index!==void 0)throw N;if(i)return;this.#index=t;return}let[a,...o]=e,s=a===`*`?o.length===0?[``,``,j]:[``,``,A]:a===`/*`?[``,``,M]:a.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),c;if(s){let e=s[1],t=s[2]||A;if(e&&s[2]&&(t===`.*`||(t=t.replace(/^\((?!\?:)(?=[^)]+\)$)/,`(?:`),/\((?!\?:)/.test(t))))throw N;if(c=this.#children[t],!c){if(Object.keys(this.#children).some(e=>e!==j&&e!==M))throw N;if(i)return;c=this.#children[t]=new P,e!==``&&(c.#varIndex=r.varIndex++)}!i&&e!==``&&n.push([e,c.#varIndex])}else if(c=this.#children[a],!c){if(Object.keys(this.#children).some(e=>e.length>1&&e!==j&&e!==M))throw N;if(i)return;c=this.#children[a]=new P}c.insert(o,t,n,r,i)}buildRegExpStr(){let e=Object.keys(this.#children).sort(se),t=e.map(e=>{let t=this.#children[e];return(typeof t.#varIndex==`number`?`(${e})@${t.#varIndex}`:oe.has(e)?`\\${e}`:e)+t.buildRegExpStr()});return typeof this.#index==`number`&&t.unshift(`#${this.#index}`),t.length===0?``:t.length===1?t[0]:`(?:`+t.join(`|`)+`)`}},ce=class{#context={varIndex:0};#root=new P;insert(e,t,n){let r=[],i=[];for(let t=0;;){let n=!1;if(e=e.replace(/\{[^}]+\}/g,e=>{let r=`@\\${t}`;return i[t]=[r,e],t++,n=!0,r}),!n)break}let a=e.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let e=i.length-1;e>=0;e--){let[t]=i[e];for(let n=a.length-1;n>=0;n--)if(a[n].indexOf(t)!==-1){a[n]=a[n].replace(t,i[e][1]);break}}return this.#root.insert(a,t,r,this.#context,n),r}buildRegExp(){let e=this.#root.buildRegExpStr();if(e===``)return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(e,i,a)=>i===void 0?(a===void 0||(r[Number(a)]=++t),``):(n[++t]=Number(i),`$()`)),[RegExp(`^${e}`),n,r]}},F=[],I=[/^$/,[],Object.create(null)],L=Object.create(null);function R(e){return L[e]??=RegExp(e===`*`?``:`^${e.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:`(?:|/.*)`)}$`)}function z(){L=Object.create(null)}function B(e){let t=new ce,n=[];if(e.length===0)return I;let r=e.map(e=>[!/\*|\/:/.test(e[0]),...e]).sort(([e,t],[n,r])=>e?1:n?-1:t.length-r.length),i=Object.create(null);for(let e=0,a=-1,o=r.length;e<o;e++){let[o,s,c]=r[e];o?i[s]=[c.map(([e])=>[e,Object.create(null)]),F]:a++;let l;try{l=t.insert(s,a,o)}catch(e){throw e===N?new T(s):e}o||(n[a]=c.map(([e,t])=>{let n=Object.create(null);for(--t;t>=0;t--){let[e,r]=l[t];n[e]=r}return[e,n]}))}let[a,o,s]=t.buildRegExp();for(let e=0,t=n.length;e<t;e++)for(let t=0,r=n[e].length;t<r;t++){let r=n[e][t]?.[1];if(!r)continue;let i=Object.keys(r);for(let e=0,t=i.length;e<t;e++)r[i[e]]=s[r[i[e]]]}let c=[];for(let e in o)c[e]=n[o[e]];return[a,c,i]}function V(e,t){if(e){for(let n of Object.keys(e).sort((e,t)=>t.length-e.length))if(R(n).test(t))return[...e[n]]}}var H=class{name=`RegExpRouter`;#middleware;#routes;constructor(){this.#middleware={[C]:Object.create(null)},this.#routes={[C]:Object.create(null)}}add(t,n,r){let i=this.#middleware,a=this.#routes;if(!i||!a)throw Error(w);i[t]||[i,a].forEach(e=>{e[t]=Object.create(null),Object.keys(e[C]).forEach(n=>{e[t][n]=[...e[C][n]]})}),n===`/*`&&(n=`*`);let o=(n.match(/\/:/g)||[]).length;if(/\*$/.test(n)){let e=R(n);t===C?Object.keys(i).forEach(e=>{i[e][n]||=V(i[e],n)||V(i[C],n)||[]}):i[t][n]||=V(i[t],n)||V(i[C],n)||[],Object.keys(i).forEach(n=>{(t===C||t===n)&&Object.keys(i[n]).forEach(t=>{e.test(t)&&i[n][t].push([r,o])})}),Object.keys(a).forEach(n=>{(t===C||t===n)&&Object.keys(a[n]).forEach(t=>e.test(t)&&a[n][t].push([r,o]))});return}let s=e.checkOptionalParameter(n)||[n];for(let e=0,n=s.length;e<n;e++){let c=s[e];Object.keys(a).forEach(s=>{(t===C||t===s)&&(a[s][c]||=[...V(i[s],c)||V(i[C],c)||[]],a[s][c].push([r,o-n+e+1]))})}}match(e,t){z();let n=this.#buildAllMatchers();return this.match=(e,t)=>{let r=n[e]||n[C],i=r[2][t];if(i)return i;let a=t.match(r[0]);if(!a)return[[],F];let o=a.indexOf(``,1);return[r[1][o],a]},this.match(e,t)}#buildAllMatchers(){let e=Object.create(null);return Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach(t=>{e[t]||=this.#buildMatcher(t)}),this.#middleware=this.#routes=void 0,e}#buildMatcher(e){let t=[],n=e===C;return[this.#middleware,this.#routes].forEach(r=>{let i=r[e]?Object.keys(r[e]).map(t=>[t,r[e][t]]):[];i.length===0?e!==C&&t.push(...Object.keys(r[C]).map(e=>[e,r[C][e]])):(n||=!0,t.push(...i))}),n?B(t):null}},U=class{name=`SmartRouter`;#routers=[];#routes=[];constructor(e){this.#routers=e.routers}add(e,t,n){if(!this.#routes)throw Error(w);this.#routes.push([e,t,n])}match(e,t){if(!this.#routes)throw Error(`Fatal error`);let n=this.#routers,r=this.#routes,i=n.length,a=0,o;for(;a<i;a++){let i=n[a];try{for(let e=0,t=r.length;e<t;e++)i.add(...r[e]);o=i.match(e,t)}catch(e){if(e instanceof T)continue;throw e}this.match=i.match.bind(i),this.#routers=[i],this.#routes=void 0;break}if(a===i)throw Error(`Fatal error`);return this.name=`SmartRouter + ${this.activeRouter.name}`,o}get activeRouter(){if(this.#routes||this.#routers.length!==1)throw Error(`No active router has been determined yet.`);return this.#routers[0]}},W=Object.create(null),G=class{#methods;#children;#patterns;#order=0;#params=W;constructor(e,t,n){if(this.#children=n||Object.create(null),this.#methods=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#methods=[n]}this.#patterns=[]}insert(t,n,r){this.#order=++this.#order;let i=this,a=e.splitRoutingPath(n),o=[];for(let t=0,n=a.length;t<n;t++){let n=a[t],r=a[t+1],s=e.getPattern(n,r),c=Array.isArray(s)?s[0]:n;if(c in i.#children){i=i.#children[c],s&&o.push(s[1]);continue}i.#children[c]=new G,s&&(i.#patterns.push(s),o.push(s[1])),i=i.#children[c]}return i.#methods.push({[t]:{handler:r,possibleKeys:o.filter((e,t,n)=>n.indexOf(e)===t),score:this.#order}}),i}#getHandlerSets(e,t,n,r){let i=[];for(let a=0,o=e.#methods.length;a<o;a++){let o=e.#methods[a],s=o[t]||o[C],c={};if(s!==void 0&&(s.params=Object.create(null),i.push(s),n!==W||r&&r!==W))for(let e=0,t=s.possibleKeys.length;e<t;e++){let t=s.possibleKeys[e],i=c[s.score];s.params[t]=r?.[t]&&!i?r[t]:n[t]??r?.[t],c[s.score]=!0}}return i}search(t,n){let r=[];this.#params=W;let i=this,a=[i],o=e.splitPath(n),s=[];for(let e=0,n=o.length;e<n;e++){let i=o[e],c=e===n-1,l=[];for(let n=0,u=a.length;n<u;n++){let u=a[n],d=u.#children[i];d&&(d.#params=u.#params,c?(d.#children[`*`]&&r.push(...this.#getHandlerSets(d.#children[`*`],t,u.#params)),r.push(...this.#getHandlerSets(d,t,u.#params))):l.push(d));for(let n=0,a=u.#patterns.length;n<a;n++){let a=u.#patterns[n],d=u.#params===W?{}:{...u.#params};if(a===`*`){let e=u.#children[`*`];e&&(r.push(...this.#getHandlerSets(e,t,u.#params)),e.#params=d,l.push(e));continue}let[f,p,m]=a;if(!i&&!(m instanceof RegExp))continue;let h=u.#children[f],g=o.slice(e).join(`/`);if(m instanceof RegExp){let e=m.exec(g);if(e){if(d[p]=e[0],r.push(...this.#getHandlerSets(h,t,u.#params,d)),Object.keys(h.#children).length){h.#params=d;let t=e[0].match(/\//)?.length??0,n=s[t]||=[];n.push(h)}continue}}(m===!0||m.test(i))&&(d[p]=i,c?(r.push(...this.#getHandlerSets(h,t,d,u.#params)),h.#children[`*`]&&r.push(...this.#getHandlerSets(h.#children[`*`],t,d,u.#params))):(h.#params=d,l.push(h)))}}a=l.concat(s.shift()??[])}return r.length>1&&r.sort((e,t)=>e.score-t.score),[r.map(({handler:e,params:t})=>[e,t])]}},le=class{name=`TrieRouter`;#node;constructor(){this.#node=new G}add(t,n,r){let i=e.checkOptionalParameter(n);if(i){for(let e=0,n=i.length;e<n;e++)this.#node.insert(t,i[e],r);return}this.#node.insert(t,n,r)}match(e,t){return this.#node.search(e,t)}},K=class extends k{constructor(e={}){super(e),this.router=e.router??new U({routers:[new H,new le]})}},ue=(t,n,r)=>{let i=t.req.raw.headers.get(`Cookie`);if(typeof n==`string`){if(!i)return;let t=n;r===`secure`?t=`__Secure-`+n:r===`host`&&(t=`__Host-`+n);let a=e.parse(i,t);return a[t]}if(!i)return{};let a=e.parse(i);return a},q=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){if(this.res){let e=new Response(this.res.body,{status:this.status,headers:this.res.headers});return e}return new Response(this.message,{status:this.status})}},de=(e,t)=>{let n=new Response(e,{headers:{"Content-Type":t}});return n.formData()},fe=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,pe=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,me=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,J=(e,t)=>async(n,r)=>{let i={},a=n.req.header(`Content-Type`);switch(e){case`json`:if(!a||!fe.test(a))break;try{i=await n.req.json()}catch{throw new q(400,{message:`Malformed JSON in request body`})}break;case`form`:{if(!a||!(pe.test(a)||me.test(a)))break;let e;if(n.req.bodyCache.formData)e=await n.req.bodyCache.formData;else try{let t=await n.req.arrayBuffer();e=await de(t,a),n.req.bodyCache.formData=e}catch(e){let t=`Malformed FormData request.`;throw t+=e instanceof Error?` ${e.message}`:` ${String(e)}`,new q(400,{message:t})}let t={};e.forEach((e,n)=>{n.endsWith(`[]`)?(t[n]??=[]).push(e):Array.isArray(t[n])?t[n].push(e):n in t?t[n]=[t[n],e]:t[n]=e}),i=t;break}case`query`:i=Object.fromEntries(Object.entries(n.req.queries()).map(([e,t])=>t.length===1?[e,t[0]]:[e,t]));break;case`param`:i=n.req.param();break;case`header`:i=n.req.header();break;case`cookie`:i=ue(n);break}let o=await t(i,n);if(o instanceof Response)return o;n.req.addValidatedData(e,o),await r()};const Y=()=>new K,X=(e,t)=>e.json({error:t},400),Z=e=>{let t=e.req.param(`key`);return!t||t===``?{key:t,err:`Key is required`}:t.length>128?{key:t,err:`Key is too long. Max length is 128 characters.`}:{key:t}},Q=Y().basePath(`/:key`).get(`/`,async e=>{let{key:t,err:n}=Z(e);if(n)return X(e,n);let r=await e.env.storage.get(t);return e.json({value:r},200)}).post(`/`,J(`json`,(e,t)=>{let n=e.value;return n?typeof n==`string`?n.length>1024?X(t,`Value is too long. Max length is 1024 characters.`):{value:n}:X(t,`Value must be a string`):X(t,`Value is required`)}),async e=>{let{key:t,err:n}=Z(e);if(n)return X(e,n);let{value:r}=e.req.valid(`json`);return await e.env.storage.set(t,r),e.body(null,204)}),$=e=>{let t=e.req.param(`id`);return t?t.length>128?{id:t,err:`ID is too long. Max length is 128 characters.`}:{id:t}:{id:t,err:`ID is required`}},he=Y().basePath(`/:id`).post(`/`,async e=>{let{id:t,err:n}=$(e);if(n)return X(e,n);let r=await e.env.chat.upsert(t);return e.json({id:r.id},200)}).post(`/sendMessages`,J(`json`,(e,t)=>{let n=e.messages;if(!n)return X(t,`Messages are required`);if(!Array.isArray(n))return X(t,`Messages must be an array`);if(n.length===0)return X(t,`Messages must not be empty`);let r=e.behavior;return r!==`enqueue`&&r!==`interrupt`?X(t,`Invalid behavior`):{messages:n,behavior:r}}),async e=>{let{id:t,err:n}=$(e);if(n)return X(e,n);let{messages:r,behavior:i}=e.req.valid(`json`);return await e.env.chat.sendMessages(t,{messages:r,behavior:i}),e.body(null,204)}),ge=new K().route(`/storage`,Q).route(`/chat`,he);async function _e(e){let t=e?.entrypoint??await i(e?.cwd??process.cwd());if(!t)throw Error(`Unable to locate the entrypoint of the agent. Please specify it manually.`);let n;if(typeof Bun<`u`)n=l(t);else{let{outfile:e}=await r(t);n=l(e)}return u(n)}exports.create=_e;
|
|
1
|
+
const e=require(`./cookie-B3SvZDri.cjs`);let t=require(`fs/promises`);t=e.__toESM(t);let n=require(`path`);n=e.__toESM(n);async function r(e,{outdir:t}={}){t||=await a(e);let r=(0,n.join)(t,`agent.js`),i=c(),o=await i.build({...s,entryPoints:[e],outfile:r});if(o.errors.length>0)throw Error(`Failed to build agent!`);return{outfile:r}}async function i(e){let r=await o(e,`package.json`);if(!r)throw Error(`No package.json found in ${e}`);let i=JSON.parse(await(0,t.readFile)(r,`utf-8`)),a=i.main;if(!a)throw Error(`"main" is not set in ${(0,n.relative)(process.cwd(),r)}. It should be set to the entrypoint of your agent.`);let s=(0,n.join)((0,n.dirname)(r),a),c=await(0,t.stat)(s);if(!c.isFile())throw Error(`${s} is not a file.`);return s}async function a(e){let r=await o(e,`node_modules`);if(!r){let r=await(0,t.stat)(e);return r.isDirectory()?(0,n.join)(e,`.blink`):(0,n.join)((0,n.dirname)(e),`.blink`)}let i=(0,n.join)(r,`.blink`);return await(0,t.mkdir)(i,{recursive:!0}),i}async function o(e,r){let i=e;for(;i!==(0,n.dirname)(i);){let e=(0,n.join)(i,r);try{return await(0,t.stat)(e),e}catch{}i=(0,n.dirname)(i)}}const s={bundle:!0,format:`cjs`,platform:`node`,target:`node18`,sourcemap:`inline`},c=()=>{try{return require(`esbuild`)}catch{throw Error("esbuild is not installed. Please install it with `bun add esbuild`.")}};function l(e){let t=require(e);if(typeof t!=`object`)throw Error(`The module at ${e} must export an object.`);let n=t.default;if(typeof n!=`object`)throw Error(`The module at ${e} must export an object.`);if(!n.version)throw Error(`The module at ${e} must export a "version" property.`);if(typeof n.fetch!=`function`)throw Error(`The module at ${e} must export a "fetch" function.`);return n}function u(e){return new d(`http://agent.local`,{fetch:async(t,n)=>e.fetch(new Request(t,{...n,duplex:`half`}))})}var d=class{baseUrl;fetch;constructor(e,t){this.baseUrl=e,this.fetch=t?.fetch??fetch}async sendMessages(e,t){return this.fetch(`${this.baseUrl}/sendMessages`,{method:`POST`,body:JSON.stringify(e),signal:t?.signal})}async sendWebhook(e){let t=new URL(e.url),n=new Headers(e.headers);return this.fetch(`${this.baseUrl}/webhook?${t.searchParams.toString()}`,{method:e.method,headers:n,body:e.body})}},f=(e,t,n)=>(r,i)=>{let a=-1;return o(0);async function o(s){if(s<=a)throw Error(`next() called multiple times`);a=s;let c,l=!1,u;if(e[s]?(u=e[s][0][0],r.req.routeIndex=s):u=s===e.length&&i||void 0,u)try{c=await u(r,()=>o(s+1))}catch(e){if(e instanceof Error&&t)r.error=e,c=await t(e,r),l=!0;else throw e}else r.finalized===!1&&n&&(c=await n(r));return c&&(r.finalized===!1||l)&&(r.res=c),r}},p=Symbol(),m=async(e,t=Object.create(null))=>{let{all:n=!1,dot:r=!1}=t,i=e instanceof y?e.raw.headers:e.headers,a=i.get(`Content-Type`);return a?.startsWith(`multipart/form-data`)||a?.startsWith(`application/x-www-form-urlencoded`)?h(e,{all:n,dot:r}):{}};async function h(e,t){let n=await e.formData();return n?g(n,t):{}}function g(e,t){let n=Object.create(null);return e.forEach((e,r)=>{let i=t.all||r.endsWith(`[]`);i?ee(n,r,e):n[r]=e}),t.dot&&Object.entries(n).forEach(([e,t])=>{let r=e.includes(`.`);r&&(_(n,e,t),delete n[e])}),n}var ee=(e,t,n)=>{e[t]===void 0?t.endsWith(`[]`)?e[t]=[n]:e[t]=n:Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]},_=(e,t,n)=>{let r=e,i=t.split(`.`);i.forEach((e,t)=>{t===i.length-1?r[e]=n:((!r[e]||typeof r[e]!=`object`||Array.isArray(r[e])||r[e]instanceof File)&&(r[e]=Object.create(null)),r=r[e])})},v=t=>e.tryDecode(t,e.decodeURIComponent_),y=class{raw;#validatedData;#matchResult;routeIndex=0;path;bodyCache={};constructor(e,t=`/`,n=[[]]){this.raw=e,this.path=t,this.#matchResult=n,this.#validatedData={}}param(e){return e?this.#getDecodedParam(e):this.#getAllDecodedParams()}#getDecodedParam(e){let t=this.#matchResult[0][this.routeIndex][1][e],n=this.#getParamValue(t);return n&&/\%/.test(n)?v(n):n}#getAllDecodedParams(){let e={},t=Object.keys(this.#matchResult[0][this.routeIndex][1]);for(let n of t){let t=this.#getParamValue(this.#matchResult[0][this.routeIndex][1][n]);t!==void 0&&(e[n]=/\%/.test(t)?v(t):t)}return e}#getParamValue(e){return this.#matchResult[1]?this.#matchResult[1][e]:e}query(t){return e.getQueryParam(this.url,t)}queries(t){return e.getQueryParams(this.url,t)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t={};return this.raw.headers.forEach((e,n)=>{t[n]=e}),t}async parseBody(e){return this.bodyCache.parsedBody??=await m(this,e)}#cachedBody=e=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;let i=Object.keys(t)[0];return i?t[i].then(t=>(i===`json`&&(t=JSON.stringify(t)),new Response(t)[e]())):t[e]=n[e]()};json(){return this.#cachedBody(`text`).then(e=>JSON.parse(e))}text(){return this.#cachedBody(`text`)}arrayBuffer(){return this.#cachedBody(`arrayBuffer`)}blob(){return this.#cachedBody(`blob`)}formData(){return this.#cachedBody(`formData`)}addValidatedData(e,t){this.#validatedData[e]=t}valid(e){return this.#validatedData[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[p](){return this.#matchResult}get matchedRoutes(){return this.#matchResult[0].map(([[,e]])=>e)}get routePath(){return this.#matchResult[0].map(([[,e]])=>e)[this.routeIndex].path}},te={Stringify:1,BeforeStream:2,Stream:3},ne=(e,t)=>{let n=new String(e);return n.isEscaped=!0,n.callbacks=t,n},b=async(e,t,n,r,i)=>{typeof e==`object`&&!(e instanceof String)&&(e instanceof Promise||(e=e.toString()),e instanceof Promise&&(e=await e));let a=e.callbacks;if(!a?.length)return Promise.resolve(e);i?i[0]+=e:i=[e];let o=Promise.all(a.map(e=>e({phase:t,buffer:i,context:r}))).then(e=>Promise.all(e.filter(Boolean).map(e=>b(e,t,!1,r,i))).then(()=>i[0]));return n?ne(await o,a):o},x=`text/plain; charset=UTF-8`,S=(e,t)=>({"Content-Type":e,...t}),re=class{#rawRequest;#req;env={};#var;finalized=!1;error;#status;#executionCtx;#res;#layout;#renderer;#notFoundHandler;#preparedHeaders;#matchResult;#path;constructor(e,t){this.#rawRequest=e,t&&(this.#executionCtx=t.executionCtx,this.env=t.env,this.#notFoundHandler=t.notFoundHandler,this.#path=t.path,this.#matchResult=t.matchResult)}get req(){return this.#req??=new y(this.#rawRequest,this.#path,this.#matchResult),this.#req}get event(){if(this.#executionCtx&&`respondWith`in this.#executionCtx)return this.#executionCtx;throw Error(`This context has no FetchEvent`)}get executionCtx(){if(this.#executionCtx)return this.#executionCtx;throw Error(`This context has no ExecutionContext`)}get res(){return this.#res||=new Response(null,{headers:this.#preparedHeaders??=new Headers})}set res(e){if(this.#res&&e){e=new Response(e.body,e);for(let[t,n]of this.#res.headers.entries()){if(t===`content-type`)continue;if(t===`set-cookie`){let t=this.#res.headers.getSetCookie();e.headers.delete(`set-cookie`);for(let n of t)e.headers.append(`set-cookie`,n)}else e.headers.set(t,n)}}this.#res=e,this.finalized=!0}render=(...e)=>(this.#renderer??=e=>this.html(e),this.#renderer(...e));setLayout=e=>this.#layout=e;getLayout=()=>this.#layout;setRenderer=e=>{this.#renderer=e};header=(e,t,n)=>{this.finalized&&(this.#res=new Response(this.#res.body,this.#res));let r=this.#res?this.#res.headers:this.#preparedHeaders??=new Headers;t===void 0?r.delete(e):n?.append?r.append(e,t):r.set(e,t)};status=e=>{this.#status=e};set=(e,t)=>{this.#var??=new Map,this.#var.set(e,t)};get=e=>this.#var?this.#var.get(e):void 0;get var(){return this.#var?Object.fromEntries(this.#var):{}}#newResponse(e,t,n){let r=this.#res?new Headers(this.#res.headers):this.#preparedHeaders??new Headers;if(typeof t==`object`&&`headers`in t){let e=t.headers instanceof Headers?t.headers:new Headers(t.headers);for(let[t,n]of e)t.toLowerCase()===`set-cookie`?r.append(t,n):r.set(t,n)}if(n)for(let[e,t]of Object.entries(n))if(typeof t==`string`)r.set(e,t);else{r.delete(e);for(let n of t)r.append(e,n)}let i=typeof t==`number`?t:t?.status??this.#status;return new Response(e,{status:i,headers:r})}newResponse=(...e)=>this.#newResponse(...e);body=(e,t,n)=>this.#newResponse(e,t,n);text=(e,t,n)=>!this.#preparedHeaders&&!this.#status&&!t&&!n&&!this.finalized?new Response(e):this.#newResponse(e,t,S(x,n));json=(e,t,n)=>this.#newResponse(JSON.stringify(e),t,S(`application/json`,n));html=(e,t,n)=>{let r=e=>this.#newResponse(e,t,S(`text/html; charset=UTF-8`,n));return typeof e==`object`?b(e,te.Stringify,!1,{}).then(r):r(e)};redirect=(e,t)=>{let n=String(e);return this.header(`Location`,/[^\x00-\xFF]/.test(n)?encodeURI(n):n),this.newResponse(null,t??302)};notFound=()=>(this.#notFoundHandler??=()=>new Response,this.#notFoundHandler(this))},C=`ALL`,ie=`all`,ae=[`get`,`post`,`put`,`delete`,`options`,`patch`],w=`Can not add a route since the matcher is already built.`,T=class extends Error{},E=`__COMPOSED_HANDLER`,D=e=>e.text(`404 Not Found`,404),O=(e,t)=>{if(`getResponse`in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text(`Internal Server Error`,500)},k=class{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath=`/`;#path=`/`;routes=[];constructor(t={}){let n=[...ae,ie];n.forEach(e=>{this[e]=(t,...n)=>(typeof t==`string`?this.#path=t:this.#addRoute(e,this.#path,t),n.forEach(t=>{this.#addRoute(e,this.#path,t)}),this)}),this.on=(e,t,...n)=>{for(let r of[t].flat()){this.#path=r;for(let t of[e].flat())n.map(e=>{this.#addRoute(t.toUpperCase(),this.#path,e)})}return this},this.use=(e,...t)=>(typeof e==`string`?this.#path=e:(this.#path=`*`,t.unshift(e)),t.forEach(e=>{this.#addRoute(C,this.#path,e)}),this);let{strict:r,...i}=t;Object.assign(this,i),this.getPath=r??!0?t.getPath??e.getPath:e.getPathNoStrict}#clone(){let e=new k({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#notFoundHandler=this.#notFoundHandler,e.routes=this.routes,e}#notFoundHandler=D;errorHandler=O;route(e,t){let n=this.basePath(e);return t.routes.map(e=>{let r;t.errorHandler===O?r=e.handler:(r=async(n,r)=>(await f([],t.errorHandler)(n,()=>e.handler(n,r))).res,r[E]=e.handler),n.#addRoute(e.method,e.path,r)}),this}basePath(t){let n=this.#clone();return n._basePath=e.mergePath(this._basePath,t),n}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#notFoundHandler=e,this);mount(t,n,r){let i,a;r&&(typeof r==`function`?a=r:(a=r.optionHandler,i=r.replaceRequest===!1?e=>e:r.replaceRequest));let o=a?e=>{let t=a(e);return Array.isArray(t)?t:[t]}:e=>{let t;try{t=e.executionCtx}catch{}return[e.env,t]};i||=(()=>{let n=e.mergePath(this._basePath,t),r=n===`/`?0:n.length;return e=>{let t=new URL(e.url);return t.pathname=t.pathname.slice(r)||`/`,new Request(t,e)}})();let s=async(e,t)=>{let r=await n(i(e.req.raw),...o(e));if(r)return r;await t()};return this.#addRoute(C,e.mergePath(t,`*`),s),this}#addRoute(t,n,r){t=t.toUpperCase(),n=e.mergePath(this._basePath,n);let i={basePath:this._basePath,path:n,method:t,handler:r};this.router.add(t,n,[r,i]),this.routes.push(i)}#handleError(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#dispatch(e,t,n,r){if(r===`HEAD`)return(async()=>new Response(null,await this.#dispatch(e,t,n,`GET`)))();let i=this.getPath(e,{env:n}),a=this.router.match(r,i),o=new re(e,{path:i,matchResult:a,env:n,executionCtx:t,notFoundHandler:this.#notFoundHandler});if(a[0].length===1){let e;try{e=a[0][0][0][0](o,async()=>{o.res=await this.#notFoundHandler(o)})}catch(e){return this.#handleError(e,o)}return e instanceof Promise?e.then(e=>e||(o.finalized?o.res:this.#notFoundHandler(o))).catch(e=>this.#handleError(e,o)):e??this.#notFoundHandler(o)}let s=f(a[0],this.errorHandler,this.#notFoundHandler);return(async()=>{try{let e=await s(o);if(!e.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return e.res}catch(e){return this.#handleError(e,o)}})()}fetch=(e,...t)=>this.#dispatch(e,t[1],t[0],e.method);request=(t,n,r,i)=>t instanceof Request?this.fetch(n?new Request(t,n):t,r,i):(t=t.toString(),this.fetch(new Request(/^https?:\/\//.test(t)?t:`http://localhost${e.mergePath(`/`,t)}`,n),r,i));fire=()=>{addEventListener(`fetch`,e=>{e.respondWith(this.#dispatch(e.request,e,void 0,e.request.method))})}},A=`[^/]+`,j=`.*`,M=`(?:|/.*)`,N=Symbol(),oe=new Set(`.\\+*[^]$()`);function se(e,t){return e.length===1?t.length===1?e<t?-1:1:-1:t.length===1||e===j||e===M?1:t===j||t===M?-1:e===A?1:t===A?-1:e.length===t.length?e<t?-1:1:t.length-e.length}var P=class{#index;#varIndex;#children=Object.create(null);insert(e,t,n,r,i){if(e.length===0){if(this.#index!==void 0)throw N;if(i)return;this.#index=t;return}let[a,...o]=e,s=a===`*`?o.length===0?[``,``,j]:[``,``,A]:a===`/*`?[``,``,M]:a.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),c;if(s){let e=s[1],t=s[2]||A;if(e&&s[2]&&(t===`.*`||(t=t.replace(/^\((?!\?:)(?=[^)]+\)$)/,`(?:`),/\((?!\?:)/.test(t))))throw N;if(c=this.#children[t],!c){if(Object.keys(this.#children).some(e=>e!==j&&e!==M))throw N;if(i)return;c=this.#children[t]=new P,e!==``&&(c.#varIndex=r.varIndex++)}!i&&e!==``&&n.push([e,c.#varIndex])}else if(c=this.#children[a],!c){if(Object.keys(this.#children).some(e=>e.length>1&&e!==j&&e!==M))throw N;if(i)return;c=this.#children[a]=new P}c.insert(o,t,n,r,i)}buildRegExpStr(){let e=Object.keys(this.#children).sort(se),t=e.map(e=>{let t=this.#children[e];return(typeof t.#varIndex==`number`?`(${e})@${t.#varIndex}`:oe.has(e)?`\\${e}`:e)+t.buildRegExpStr()});return typeof this.#index==`number`&&t.unshift(`#${this.#index}`),t.length===0?``:t.length===1?t[0]:`(?:`+t.join(`|`)+`)`}},ce=class{#context={varIndex:0};#root=new P;insert(e,t,n){let r=[],i=[];for(let t=0;;){let n=!1;if(e=e.replace(/\{[^}]+\}/g,e=>{let r=`@\\${t}`;return i[t]=[r,e],t++,n=!0,r}),!n)break}let a=e.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let e=i.length-1;e>=0;e--){let[t]=i[e];for(let n=a.length-1;n>=0;n--)if(a[n].indexOf(t)!==-1){a[n]=a[n].replace(t,i[e][1]);break}}return this.#root.insert(a,t,r,this.#context,n),r}buildRegExp(){let e=this.#root.buildRegExpStr();if(e===``)return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(e,i,a)=>i===void 0?(a===void 0||(r[Number(a)]=++t),``):(n[++t]=Number(i),`$()`)),[RegExp(`^${e}`),n,r]}},F=[],I=[/^$/,[],Object.create(null)],L=Object.create(null);function R(e){return L[e]??=RegExp(e===`*`?``:`^${e.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:`(?:|/.*)`)}$`)}function z(){L=Object.create(null)}function B(e){let t=new ce,n=[];if(e.length===0)return I;let r=e.map(e=>[!/\*|\/:/.test(e[0]),...e]).sort(([e,t],[n,r])=>e?1:n?-1:t.length-r.length),i=Object.create(null);for(let e=0,a=-1,o=r.length;e<o;e++){let[o,s,c]=r[e];o?i[s]=[c.map(([e])=>[e,Object.create(null)]),F]:a++;let l;try{l=t.insert(s,a,o)}catch(e){throw e===N?new T(s):e}o||(n[a]=c.map(([e,t])=>{let n=Object.create(null);for(--t;t>=0;t--){let[e,r]=l[t];n[e]=r}return[e,n]}))}let[a,o,s]=t.buildRegExp();for(let e=0,t=n.length;e<t;e++)for(let t=0,r=n[e].length;t<r;t++){let r=n[e][t]?.[1];if(!r)continue;let i=Object.keys(r);for(let e=0,t=i.length;e<t;e++)r[i[e]]=s[r[i[e]]]}let c=[];for(let e in o)c[e]=n[o[e]];return[a,c,i]}function V(e,t){if(e){for(let n of Object.keys(e).sort((e,t)=>t.length-e.length))if(R(n).test(t))return[...e[n]]}}var H=class{name=`RegExpRouter`;#middleware;#routes;constructor(){this.#middleware={[C]:Object.create(null)},this.#routes={[C]:Object.create(null)}}add(t,n,r){let i=this.#middleware,a=this.#routes;if(!i||!a)throw Error(w);i[t]||[i,a].forEach(e=>{e[t]=Object.create(null),Object.keys(e[C]).forEach(n=>{e[t][n]=[...e[C][n]]})}),n===`/*`&&(n=`*`);let o=(n.match(/\/:/g)||[]).length;if(/\*$/.test(n)){let e=R(n);t===C?Object.keys(i).forEach(e=>{i[e][n]||=V(i[e],n)||V(i[C],n)||[]}):i[t][n]||=V(i[t],n)||V(i[C],n)||[],Object.keys(i).forEach(n=>{(t===C||t===n)&&Object.keys(i[n]).forEach(t=>{e.test(t)&&i[n][t].push([r,o])})}),Object.keys(a).forEach(n=>{(t===C||t===n)&&Object.keys(a[n]).forEach(t=>e.test(t)&&a[n][t].push([r,o]))});return}let s=e.checkOptionalParameter(n)||[n];for(let e=0,n=s.length;e<n;e++){let c=s[e];Object.keys(a).forEach(s=>{(t===C||t===s)&&(a[s][c]||=[...V(i[s],c)||V(i[C],c)||[]],a[s][c].push([r,o-n+e+1]))})}}match(e,t){z();let n=this.#buildAllMatchers();return this.match=(e,t)=>{let r=n[e]||n[C],i=r[2][t];if(i)return i;let a=t.match(r[0]);if(!a)return[[],F];let o=a.indexOf(``,1);return[r[1][o],a]},this.match(e,t)}#buildAllMatchers(){let e=Object.create(null);return Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach(t=>{e[t]||=this.#buildMatcher(t)}),this.#middleware=this.#routes=void 0,e}#buildMatcher(e){let t=[],n=e===C;return[this.#middleware,this.#routes].forEach(r=>{let i=r[e]?Object.keys(r[e]).map(t=>[t,r[e][t]]):[];i.length===0?e!==C&&t.push(...Object.keys(r[C]).map(e=>[e,r[C][e]])):(n||=!0,t.push(...i))}),n?B(t):null}},U=class{name=`SmartRouter`;#routers=[];#routes=[];constructor(e){this.#routers=e.routers}add(e,t,n){if(!this.#routes)throw Error(w);this.#routes.push([e,t,n])}match(e,t){if(!this.#routes)throw Error(`Fatal error`);let n=this.#routers,r=this.#routes,i=n.length,a=0,o;for(;a<i;a++){let i=n[a];try{for(let e=0,t=r.length;e<t;e++)i.add(...r[e]);o=i.match(e,t)}catch(e){if(e instanceof T)continue;throw e}this.match=i.match.bind(i),this.#routers=[i],this.#routes=void 0;break}if(a===i)throw Error(`Fatal error`);return this.name=`SmartRouter + ${this.activeRouter.name}`,o}get activeRouter(){if(this.#routes||this.#routers.length!==1)throw Error(`No active router has been determined yet.`);return this.#routers[0]}},W=Object.create(null),G=class{#methods;#children;#patterns;#order=0;#params=W;constructor(e,t,n){if(this.#children=n||Object.create(null),this.#methods=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#methods=[n]}this.#patterns=[]}insert(t,n,r){this.#order=++this.#order;let i=this,a=e.splitRoutingPath(n),o=[];for(let t=0,n=a.length;t<n;t++){let n=a[t],r=a[t+1],s=e.getPattern(n,r),c=Array.isArray(s)?s[0]:n;if(c in i.#children){i=i.#children[c],s&&o.push(s[1]);continue}i.#children[c]=new G,s&&(i.#patterns.push(s),o.push(s[1])),i=i.#children[c]}return i.#methods.push({[t]:{handler:r,possibleKeys:o.filter((e,t,n)=>n.indexOf(e)===t),score:this.#order}}),i}#getHandlerSets(e,t,n,r){let i=[];for(let a=0,o=e.#methods.length;a<o;a++){let o=e.#methods[a],s=o[t]||o[C],c={};if(s!==void 0&&(s.params=Object.create(null),i.push(s),n!==W||r&&r!==W))for(let e=0,t=s.possibleKeys.length;e<t;e++){let t=s.possibleKeys[e],i=c[s.score];s.params[t]=r?.[t]&&!i?r[t]:n[t]??r?.[t],c[s.score]=!0}}return i}search(t,n){let r=[];this.#params=W;let i=this,a=[i],o=e.splitPath(n),s=[];for(let e=0,n=o.length;e<n;e++){let i=o[e],c=e===n-1,l=[];for(let n=0,u=a.length;n<u;n++){let u=a[n],d=u.#children[i];d&&(d.#params=u.#params,c?(d.#children[`*`]&&r.push(...this.#getHandlerSets(d.#children[`*`],t,u.#params)),r.push(...this.#getHandlerSets(d,t,u.#params))):l.push(d));for(let n=0,a=u.#patterns.length;n<a;n++){let a=u.#patterns[n],d=u.#params===W?{}:{...u.#params};if(a===`*`){let e=u.#children[`*`];e&&(r.push(...this.#getHandlerSets(e,t,u.#params)),e.#params=d,l.push(e));continue}let[f,p,m]=a;if(!i&&!(m instanceof RegExp))continue;let h=u.#children[f],g=o.slice(e).join(`/`);if(m instanceof RegExp){let e=m.exec(g);if(e){if(d[p]=e[0],r.push(...this.#getHandlerSets(h,t,u.#params,d)),Object.keys(h.#children).length){h.#params=d;let t=e[0].match(/\//)?.length??0,n=s[t]||=[];n.push(h)}continue}}(m===!0||m.test(i))&&(d[p]=i,c?(r.push(...this.#getHandlerSets(h,t,d,u.#params)),h.#children[`*`]&&r.push(...this.#getHandlerSets(h.#children[`*`],t,d,u.#params))):(h.#params=d,l.push(h)))}}a=l.concat(s.shift()??[])}return r.length>1&&r.sort((e,t)=>e.score-t.score),[r.map(({handler:e,params:t})=>[e,t])]}},le=class{name=`TrieRouter`;#node;constructor(){this.#node=new G}add(t,n,r){let i=e.checkOptionalParameter(n);if(i){for(let e=0,n=i.length;e<n;e++)this.#node.insert(t,i[e],r);return}this.#node.insert(t,n,r)}match(e,t){return this.#node.search(e,t)}},K=class extends k{constructor(e={}){super(e),this.router=e.router??new U({routers:[new H,new le]})}},ue=(t,n,r)=>{let i=t.req.raw.headers.get(`Cookie`);if(typeof n==`string`){if(!i)return;let t=n;r===`secure`?t=`__Secure-`+n:r===`host`&&(t=`__Host-`+n);let a=e.parse(i,t);return a[t]}if(!i)return{};let a=e.parse(i);return a},q=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){if(this.res){let e=new Response(this.res.body,{status:this.status,headers:this.res.headers});return e}return new Response(this.message,{status:this.status})}},de=(e,t)=>{let n=new Response(e,{headers:{"Content-Type":t}});return n.formData()},fe=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,pe=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,me=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,J=(e,t)=>async(n,r)=>{let i={},a=n.req.header(`Content-Type`);switch(e){case`json`:if(!a||!fe.test(a))break;try{i=await n.req.json()}catch{throw new q(400,{message:`Malformed JSON in request body`})}break;case`form`:{if(!a||!(pe.test(a)||me.test(a)))break;let e;if(n.req.bodyCache.formData)e=await n.req.bodyCache.formData;else try{let t=await n.req.arrayBuffer();e=await de(t,a),n.req.bodyCache.formData=e}catch(e){let t=`Malformed FormData request.`;throw t+=e instanceof Error?` ${e.message}`:` ${String(e)}`,new q(400,{message:t})}let t={};e.forEach((e,n)=>{n.endsWith(`[]`)?(t[n]??=[]).push(e):Array.isArray(t[n])?t[n].push(e):n in t?t[n]=[t[n],e]:t[n]=e}),i=t;break}case`query`:i=Object.fromEntries(Object.entries(n.req.queries()).map(([e,t])=>t.length===1?[e,t[0]]:[e,t]));break;case`param`:i=n.req.param();break;case`header`:i=n.req.header();break;case`cookie`:i=ue(n);break}let o=await t(i,n);if(o instanceof Response)return o;n.req.addValidatedData(e,o),await r()};const Y=()=>new K,X=(e,t)=>e.json({error:t},400),Z=e=>{let t=e.req.param(`key`);return!t||t===``?{key:t,err:`Key is required`}:t.length>128?{key:t,err:`Key is too long. Max length is 128 characters.`}:{key:t}},Q=Y().basePath(`/:key`).get(`/`,async e=>{let{key:t,err:n}=Z(e);if(n)return X(e,n);let r=await e.env.storage.get(t);return e.json({value:r},200)}).post(`/`,J(`json`,(e,t)=>{let n=e.value;return n?typeof n==`string`?n.length>1024?X(t,`Value is too long. Max length is 1024 characters.`):{value:n}:X(t,`Value must be a string`):X(t,`Value is required`)}),async e=>{let{key:t,err:n}=Z(e);if(n)return X(e,n);let{value:r}=e.req.valid(`json`);return await e.env.storage.set(t,r),e.body(null,204)}),$=e=>{let t=e.req.param(`id`);return t?t.length>128?{id:t,err:`ID is too long. Max length is 128 characters.`}:{id:t}:{id:t,err:`ID is required`}},he=Y().basePath(`/:id`).post(`/`,async e=>{let{id:t,err:n}=$(e);if(n)return X(e,n);let r=await e.env.chat.upsert(t);return e.json({id:r.id},200)}).post(`/sendMessages`,J(`json`,(e,t)=>{let n=e.messages;if(!n)return X(t,`Messages are required`);if(!Array.isArray(n))return X(t,`Messages must be an array`);if(n.length===0)return X(t,`Messages must not be empty`);let r=e.behavior;return r!==`enqueue`&&r!==`interrupt`?X(t,`Invalid behavior`):{messages:n,behavior:r}}),async e=>{let{id:t,err:n}=$(e);if(n)return X(e,n);let{messages:r,behavior:i}=e.req.valid(`json`);return await e.env.chat.sendMessages(t,{messages:r,behavior:i}),e.body(null,204)}),ge=new K().route(`/storage`,Q).route(`/chat`,he);async function _e(e){let t=e?.entrypoint??await i(e?.cwd??process.cwd());if(!t)throw Error(`Unable to locate the entrypoint of the agent. Please specify it manually.`);let n;if(typeof Bun<`u`)n=l(t);else{let{outfile:e}=await r(t);n=l(e)}return u(n)}exports.create=_e;
|
package/dist/test.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{checkOptionalParameter as e,decodeURIComponent_ as t,getPath as n,getPathNoStrict as r,getPattern as i,getQueryParam as a,getQueryParams as o,mergePath as s,parse as c,splitPath as l,splitRoutingPath as u,tryDecode as d}from"./cookie-BiKY7-P1.js";import{createRequire as f}from"node:module";import{mkdir as p,readFile as m,stat as h}from"fs/promises";import{dirname as g,join as _,relative as ee}from"path";var v=f(import.meta.url);async function y(e,{outdir:t}={}){t||=await te(e);let n=_(t,`agent.js`),r=re(),i=await r.build({...ne,entryPoints:[e],outfile:n});if(i.errors.length>0)throw Error(`Failed to build agent!`);return{outfile:n}}async function b(e){let t=await x(e,`package.json`);if(!t)throw Error(`No package.json found in ${e}`);let n=JSON.parse(await m(t,`utf-8`)),r=n.main;if(!r)throw Error(`"main" is not set in ${ee(process.cwd(),t)}. It should be set to the entrypoint of your agent.`);let i=_(g(t),r),a=await h(i);if(!a.isFile())throw Error(`${i} is not a file.`);return i}async function te(e){let t=await x(e,`node_modules`);if(!t){let t=await h(e);return t.isDirectory()?_(e,`.blink`):_(g(e),`.blink`)}let n=_(t,`.blink`);return await p(n,{recursive:!0}),n}async function x(e,t){let n=e;for(;n!==g(n);){let e=_(n,t);try{return await h(e),e}catch{}n=g(n)}}const ne={bundle:!0,format:`cjs`,platform:`node`,target:`node18`,sourcemap:`inline`},re=()=>{try{return v(`esbuild`)}catch{throw Error("esbuild is not installed. Please install it with `bun add esbuild`.")}};function S(e){let t=v(e);if(typeof t!=`object`)throw Error(`The module at ${e} must export an object.`);let n=t.default;if(typeof n!=`object`)throw Error(`The module at ${e} must export an object.`);if(!n.version)throw Error(`The module at ${e} must export a "version" property.`);if(typeof n.fetch!=`function`)throw Error(`The module at ${e} must export a "fetch" function.`);return n}function ie(e){return new ae(`http://agent.local`,{fetch:async(t,n)=>e.fetch(new Request(t,n))})}var ae=class{baseUrl;fetch;constructor(e,t){this.baseUrl=e,this.fetch=t?.fetch??fetch}async sendMessages(e,t){return this.fetch(`${this.baseUrl}/sendMessages`,{method:`POST`,body:JSON.stringify(e),signal:t?.signal})}async sendWebhook(e){let t=new URL(e.url),n=new Headers(e.headers);return this.fetch(`${this.baseUrl}/webhook?${t.searchParams.toString()}`,{method:e.method,headers:n,body:e.body})}},C=(e,t,n)=>(r,i)=>{let a=-1;return o(0);async function o(s){if(s<=a)throw Error(`next() called multiple times`);a=s;let c,l=!1,u;if(e[s]?(u=e[s][0][0],r.req.routeIndex=s):u=s===e.length&&i||void 0,u)try{c=await u(r,()=>o(s+1))}catch(e){if(e instanceof Error&&t)r.error=e,c=await t(e,r),l=!0;else throw e}else r.finalized===!1&&n&&(c=await n(r));return c&&(r.finalized===!1||l)&&(r.res=c),r}},w=Symbol(),T=async(e,t=Object.create(null))=>{let{all:n=!1,dot:r=!1}=t,i=e instanceof D?e.raw.headers:e.headers,a=i.get(`Content-Type`);return a?.startsWith(`multipart/form-data`)||a?.startsWith(`application/x-www-form-urlencoded`)?oe(e,{all:n,dot:r}):{}};async function oe(e,t){let n=await e.formData();return n?se(n,t):{}}function se(e,t){let n=Object.create(null);return e.forEach((e,r)=>{let i=t.all||r.endsWith(`[]`);i?ce(n,r,e):n[r]=e}),t.dot&&Object.entries(n).forEach(([e,t])=>{let r=e.includes(`.`);r&&(le(n,e,t),delete n[e])}),n}var ce=(e,t,n)=>{e[t]===void 0?t.endsWith(`[]`)?e[t]=[n]:e[t]=n:Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]},le=(e,t,n)=>{let r=e,i=t.split(`.`);i.forEach((e,t)=>{t===i.length-1?r[e]=n:((!r[e]||typeof r[e]!=`object`||Array.isArray(r[e])||r[e]instanceof File)&&(r[e]=Object.create(null)),r=r[e])})},E=e=>d(e,t),D=class{raw;#validatedData;#matchResult;routeIndex=0;path;bodyCache={};constructor(e,t=`/`,n=[[]]){this.raw=e,this.path=t,this.#matchResult=n,this.#validatedData={}}param(e){return e?this.#getDecodedParam(e):this.#getAllDecodedParams()}#getDecodedParam(e){let t=this.#matchResult[0][this.routeIndex][1][e],n=this.#getParamValue(t);return n&&/\%/.test(n)?E(n):n}#getAllDecodedParams(){let e={},t=Object.keys(this.#matchResult[0][this.routeIndex][1]);for(let n of t){let t=this.#getParamValue(this.#matchResult[0][this.routeIndex][1][n]);t!==void 0&&(e[n]=/\%/.test(t)?E(t):t)}return e}#getParamValue(e){return this.#matchResult[1]?this.#matchResult[1][e]:e}query(e){return a(this.url,e)}queries(e){return o(this.url,e)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t={};return this.raw.headers.forEach((e,n)=>{t[n]=e}),t}async parseBody(e){return this.bodyCache.parsedBody??=await T(this,e)}#cachedBody=e=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;let i=Object.keys(t)[0];return i?t[i].then(t=>(i===`json`&&(t=JSON.stringify(t)),new Response(t)[e]())):t[e]=n[e]()};json(){return this.#cachedBody(`text`).then(e=>JSON.parse(e))}text(){return this.#cachedBody(`text`)}arrayBuffer(){return this.#cachedBody(`arrayBuffer`)}blob(){return this.#cachedBody(`blob`)}formData(){return this.#cachedBody(`formData`)}addValidatedData(e,t){this.#validatedData[e]=t}valid(e){return this.#validatedData[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[w](){return this.#matchResult}get matchedRoutes(){return this.#matchResult[0].map(([[,e]])=>e)}get routePath(){return this.#matchResult[0].map(([[,e]])=>e)[this.routeIndex].path}},ue={Stringify:1,BeforeStream:2,Stream:3},de=(e,t)=>{let n=new String(e);return n.isEscaped=!0,n.callbacks=t,n},O=async(e,t,n,r,i)=>{typeof e==`object`&&!(e instanceof String)&&(e instanceof Promise||(e=e.toString()),e instanceof Promise&&(e=await e));let a=e.callbacks;if(!a?.length)return Promise.resolve(e);i?i[0]+=e:i=[e];let o=Promise.all(a.map(e=>e({phase:t,buffer:i,context:r}))).then(e=>Promise.all(e.filter(Boolean).map(e=>O(e,t,!1,r,i))).then(()=>i[0]));return n?de(await o,a):o},fe=`text/plain; charset=UTF-8`,k=(e,t)=>({"Content-Type":e,...t}),pe=class{#rawRequest;#req;env={};#var;finalized=!1;error;#status;#executionCtx;#res;#layout;#renderer;#notFoundHandler;#preparedHeaders;#matchResult;#path;constructor(e,t){this.#rawRequest=e,t&&(this.#executionCtx=t.executionCtx,this.env=t.env,this.#notFoundHandler=t.notFoundHandler,this.#path=t.path,this.#matchResult=t.matchResult)}get req(){return this.#req??=new D(this.#rawRequest,this.#path,this.#matchResult),this.#req}get event(){if(this.#executionCtx&&`respondWith`in this.#executionCtx)return this.#executionCtx;throw Error(`This context has no FetchEvent`)}get executionCtx(){if(this.#executionCtx)return this.#executionCtx;throw Error(`This context has no ExecutionContext`)}get res(){return this.#res||=new Response(null,{headers:this.#preparedHeaders??=new Headers})}set res(e){if(this.#res&&e){e=new Response(e.body,e);for(let[t,n]of this.#res.headers.entries()){if(t===`content-type`)continue;if(t===`set-cookie`){let t=this.#res.headers.getSetCookie();e.headers.delete(`set-cookie`);for(let n of t)e.headers.append(`set-cookie`,n)}else e.headers.set(t,n)}}this.#res=e,this.finalized=!0}render=(...e)=>(this.#renderer??=e=>this.html(e),this.#renderer(...e));setLayout=e=>this.#layout=e;getLayout=()=>this.#layout;setRenderer=e=>{this.#renderer=e};header=(e,t,n)=>{this.finalized&&(this.#res=new Response(this.#res.body,this.#res));let r=this.#res?this.#res.headers:this.#preparedHeaders??=new Headers;t===void 0?r.delete(e):n?.append?r.append(e,t):r.set(e,t)};status=e=>{this.#status=e};set=(e,t)=>{this.#var??=new Map,this.#var.set(e,t)};get=e=>this.#var?this.#var.get(e):void 0;get var(){return this.#var?Object.fromEntries(this.#var):{}}#newResponse(e,t,n){let r=this.#res?new Headers(this.#res.headers):this.#preparedHeaders??new Headers;if(typeof t==`object`&&`headers`in t){let e=t.headers instanceof Headers?t.headers:new Headers(t.headers);for(let[t,n]of e)t.toLowerCase()===`set-cookie`?r.append(t,n):r.set(t,n)}if(n)for(let[e,t]of Object.entries(n))if(typeof t==`string`)r.set(e,t);else{r.delete(e);for(let n of t)r.append(e,n)}let i=typeof t==`number`?t:t?.status??this.#status;return new Response(e,{status:i,headers:r})}newResponse=(...e)=>this.#newResponse(...e);body=(e,t,n)=>this.#newResponse(e,t,n);text=(e,t,n)=>!this.#preparedHeaders&&!this.#status&&!t&&!n&&!this.finalized?new Response(e):this.#newResponse(e,t,k(fe,n));json=(e,t,n)=>this.#newResponse(JSON.stringify(e),t,k(`application/json`,n));html=(e,t,n)=>{let r=e=>this.#newResponse(e,t,k(`text/html; charset=UTF-8`,n));return typeof e==`object`?O(e,ue.Stringify,!1,{}).then(r):r(e)};redirect=(e,t)=>{let n=String(e);return this.header(`Location`,/[^\x00-\xFF]/.test(n)?encodeURI(n):n),this.newResponse(null,t??302)};notFound=()=>(this.#notFoundHandler??=()=>new Response,this.#notFoundHandler(this))},A=`ALL`,me=`all`,he=[`get`,`post`,`put`,`delete`,`options`,`patch`],j=`Can not add a route since the matcher is already built.`,M=class extends Error{},ge=`__COMPOSED_HANDLER`,_e=e=>e.text(`404 Not Found`,404),N=(e,t)=>{if(`getResponse`in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text(`Internal Server Error`,500)},P=class{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath=`/`;#path=`/`;routes=[];constructor(e={}){let t=[...he,me];t.forEach(e=>{this[e]=(t,...n)=>(typeof t==`string`?this.#path=t:this.#addRoute(e,this.#path,t),n.forEach(t=>{this.#addRoute(e,this.#path,t)}),this)}),this.on=(e,t,...n)=>{for(let r of[t].flat()){this.#path=r;for(let t of[e].flat())n.map(e=>{this.#addRoute(t.toUpperCase(),this.#path,e)})}return this},this.use=(e,...t)=>(typeof e==`string`?this.#path=e:(this.#path=`*`,t.unshift(e)),t.forEach(e=>{this.#addRoute(A,this.#path,e)}),this);let{strict:i,...a}=e;Object.assign(this,a),this.getPath=i??!0?e.getPath??n:r}#clone(){let e=new P({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#notFoundHandler=this.#notFoundHandler,e.routes=this.routes,e}#notFoundHandler=_e;errorHandler=N;route(e,t){let n=this.basePath(e);return t.routes.map(e=>{let r;t.errorHandler===N?r=e.handler:(r=async(n,r)=>(await C([],t.errorHandler)(n,()=>e.handler(n,r))).res,r[ge]=e.handler),n.#addRoute(e.method,e.path,r)}),this}basePath(e){let t=this.#clone();return t._basePath=s(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#notFoundHandler=e,this);mount(e,t,n){let r,i;n&&(typeof n==`function`?i=n:(i=n.optionHandler,r=n.replaceRequest===!1?e=>e:n.replaceRequest));let a=i?e=>{let t=i(e);return Array.isArray(t)?t:[t]}:e=>{let t;try{t=e.executionCtx}catch{}return[e.env,t]};r||=(()=>{let t=s(this._basePath,e),n=t===`/`?0:t.length;return e=>{let t=new URL(e.url);return t.pathname=t.pathname.slice(n)||`/`,new Request(t,e)}})();let o=async(e,n)=>{let i=await t(r(e.req.raw),...a(e));if(i)return i;await n()};return this.#addRoute(A,s(e,`*`),o),this}#addRoute(e,t,n){e=e.toUpperCase(),t=s(this._basePath,t);let r={basePath:this._basePath,path:t,method:e,handler:n};this.router.add(e,t,[n,r]),this.routes.push(r)}#handleError(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#dispatch(e,t,n,r){if(r===`HEAD`)return(async()=>new Response(null,await this.#dispatch(e,t,n,`GET`)))();let i=this.getPath(e,{env:n}),a=this.router.match(r,i),o=new pe(e,{path:i,matchResult:a,env:n,executionCtx:t,notFoundHandler:this.#notFoundHandler});if(a[0].length===1){let e;try{e=a[0][0][0][0](o,async()=>{o.res=await this.#notFoundHandler(o)})}catch(e){return this.#handleError(e,o)}return e instanceof Promise?e.then(e=>e||(o.finalized?o.res:this.#notFoundHandler(o))).catch(e=>this.#handleError(e,o)):e??this.#notFoundHandler(o)}let s=C(a[0],this.errorHandler,this.#notFoundHandler);return(async()=>{try{let e=await s(o);if(!e.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return e.res}catch(e){return this.#handleError(e,o)}})()}fetch=(e,...t)=>this.#dispatch(e,t[1],t[0],e.method);request=(e,t,n,r)=>e instanceof Request?this.fetch(t?new Request(e,t):e,n,r):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${s(`/`,e)}`,t),n,r));fire=()=>{addEventListener(`fetch`,e=>{e.respondWith(this.#dispatch(e.request,e,void 0,e.request.method))})}},F=`[^/]+`,I=`.*`,L=`(?:|/.*)`,R=Symbol(),ve=new Set(`.\\+*[^]$()`);function ye(e,t){return e.length===1?t.length===1?e<t?-1:1:-1:t.length===1||e===I||e===L?1:t===I||t===L?-1:e===F?1:t===F?-1:e.length===t.length?e<t?-1:1:t.length-e.length}var z=class{#index;#varIndex;#children=Object.create(null);insert(e,t,n,r,i){if(e.length===0){if(this.#index!==void 0)throw R;if(i)return;this.#index=t;return}let[a,...o]=e,s=a===`*`?o.length===0?[``,``,I]:[``,``,F]:a===`/*`?[``,``,L]:a.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),c;if(s){let e=s[1],t=s[2]||F;if(e&&s[2]&&(t===`.*`||(t=t.replace(/^\((?!\?:)(?=[^)]+\)$)/,`(?:`),/\((?!\?:)/.test(t))))throw R;if(c=this.#children[t],!c){if(Object.keys(this.#children).some(e=>e!==I&&e!==L))throw R;if(i)return;c=this.#children[t]=new z,e!==``&&(c.#varIndex=r.varIndex++)}!i&&e!==``&&n.push([e,c.#varIndex])}else if(c=this.#children[a],!c){if(Object.keys(this.#children).some(e=>e.length>1&&e!==I&&e!==L))throw R;if(i)return;c=this.#children[a]=new z}c.insert(o,t,n,r,i)}buildRegExpStr(){let e=Object.keys(this.#children).sort(ye),t=e.map(e=>{let t=this.#children[e];return(typeof t.#varIndex==`number`?`(${e})@${t.#varIndex}`:ve.has(e)?`\\${e}`:e)+t.buildRegExpStr()});return typeof this.#index==`number`&&t.unshift(`#${this.#index}`),t.length===0?``:t.length===1?t[0]:`(?:`+t.join(`|`)+`)`}},be=class{#context={varIndex:0};#root=new z;insert(e,t,n){let r=[],i=[];for(let t=0;;){let n=!1;if(e=e.replace(/\{[^}]+\}/g,e=>{let r=`@\\${t}`;return i[t]=[r,e],t++,n=!0,r}),!n)break}let a=e.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let e=i.length-1;e>=0;e--){let[t]=i[e];for(let n=a.length-1;n>=0;n--)if(a[n].indexOf(t)!==-1){a[n]=a[n].replace(t,i[e][1]);break}}return this.#root.insert(a,t,r,this.#context,n),r}buildRegExp(){let e=this.#root.buildRegExpStr();if(e===``)return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(e,i,a)=>i===void 0?(a===void 0||(r[Number(a)]=++t),``):(n[++t]=Number(i),`$()`)),[RegExp(`^${e}`),n,r]}},B=[],xe=[/^$/,[],Object.create(null)],V=Object.create(null);function H(e){return V[e]??=RegExp(e===`*`?``:`^${e.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:`(?:|/.*)`)}$`)}function Se(){V=Object.create(null)}function Ce(e){let t=new be,n=[];if(e.length===0)return xe;let r=e.map(e=>[!/\*|\/:/.test(e[0]),...e]).sort(([e,t],[n,r])=>e?1:n?-1:t.length-r.length),i=Object.create(null);for(let e=0,a=-1,o=r.length;e<o;e++){let[o,s,c]=r[e];o?i[s]=[c.map(([e])=>[e,Object.create(null)]),B]:a++;let l;try{l=t.insert(s,a,o)}catch(e){throw e===R?new M(s):e}o||(n[a]=c.map(([e,t])=>{let n=Object.create(null);for(--t;t>=0;t--){let[e,r]=l[t];n[e]=r}return[e,n]}))}let[a,o,s]=t.buildRegExp();for(let e=0,t=n.length;e<t;e++)for(let t=0,r=n[e].length;t<r;t++){let r=n[e][t]?.[1];if(!r)continue;let i=Object.keys(r);for(let e=0,t=i.length;e<t;e++)r[i[e]]=s[r[i[e]]]}let c=[];for(let e in o)c[e]=n[o[e]];return[a,c,i]}function U(e,t){if(e){for(let n of Object.keys(e).sort((e,t)=>t.length-e.length))if(H(n).test(t))return[...e[n]]}}var we=class{name=`RegExpRouter`;#middleware;#routes;constructor(){this.#middleware={[A]:Object.create(null)},this.#routes={[A]:Object.create(null)}}add(t,n,r){let i=this.#middleware,a=this.#routes;if(!i||!a)throw Error(j);i[t]||[i,a].forEach(e=>{e[t]=Object.create(null),Object.keys(e[A]).forEach(n=>{e[t][n]=[...e[A][n]]})}),n===`/*`&&(n=`*`);let o=(n.match(/\/:/g)||[]).length;if(/\*$/.test(n)){let e=H(n);t===A?Object.keys(i).forEach(e=>{i[e][n]||=U(i[e],n)||U(i[A],n)||[]}):i[t][n]||=U(i[t],n)||U(i[A],n)||[],Object.keys(i).forEach(n=>{(t===A||t===n)&&Object.keys(i[n]).forEach(t=>{e.test(t)&&i[n][t].push([r,o])})}),Object.keys(a).forEach(n=>{(t===A||t===n)&&Object.keys(a[n]).forEach(t=>e.test(t)&&a[n][t].push([r,o]))});return}let s=e(n)||[n];for(let e=0,n=s.length;e<n;e++){let c=s[e];Object.keys(a).forEach(s=>{(t===A||t===s)&&(a[s][c]||=[...U(i[s],c)||U(i[A],c)||[]],a[s][c].push([r,o-n+e+1]))})}}match(e,t){Se();let n=this.#buildAllMatchers();return this.match=(e,t)=>{let r=n[e]||n[A],i=r[2][t];if(i)return i;let a=t.match(r[0]);if(!a)return[[],B];let o=a.indexOf(``,1);return[r[1][o],a]},this.match(e,t)}#buildAllMatchers(){let e=Object.create(null);return Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach(t=>{e[t]||=this.#buildMatcher(t)}),this.#middleware=this.#routes=void 0,e}#buildMatcher(e){let t=[],n=e===A;return[this.#middleware,this.#routes].forEach(r=>{let i=r[e]?Object.keys(r[e]).map(t=>[t,r[e][t]]):[];i.length===0?e!==A&&t.push(...Object.keys(r[A]).map(e=>[e,r[A][e]])):(n||=!0,t.push(...i))}),n?Ce(t):null}},Te=class{name=`SmartRouter`;#routers=[];#routes=[];constructor(e){this.#routers=e.routers}add(e,t,n){if(!this.#routes)throw Error(j);this.#routes.push([e,t,n])}match(e,t){if(!this.#routes)throw Error(`Fatal error`);let n=this.#routers,r=this.#routes,i=n.length,a=0,o;for(;a<i;a++){let i=n[a];try{for(let e=0,t=r.length;e<t;e++)i.add(...r[e]);o=i.match(e,t)}catch(e){if(e instanceof M)continue;throw e}this.match=i.match.bind(i),this.#routers=[i],this.#routes=void 0;break}if(a===i)throw Error(`Fatal error`);return this.name=`SmartRouter + ${this.activeRouter.name}`,o}get activeRouter(){if(this.#routes||this.#routers.length!==1)throw Error(`No active router has been determined yet.`);return this.#routers[0]}},W=Object.create(null),G=class{#methods;#children;#patterns;#order=0;#params=W;constructor(e,t,n){if(this.#children=n||Object.create(null),this.#methods=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#methods=[n]}this.#patterns=[]}insert(e,t,n){this.#order=++this.#order;let r=this,a=u(t),o=[];for(let e=0,t=a.length;e<t;e++){let t=a[e],n=a[e+1],s=i(t,n),c=Array.isArray(s)?s[0]:t;if(c in r.#children){r=r.#children[c],s&&o.push(s[1]);continue}r.#children[c]=new G,s&&(r.#patterns.push(s),o.push(s[1])),r=r.#children[c]}return r.#methods.push({[e]:{handler:n,possibleKeys:o.filter((e,t,n)=>n.indexOf(e)===t),score:this.#order}}),r}#getHandlerSets(e,t,n,r){let i=[];for(let a=0,o=e.#methods.length;a<o;a++){let o=e.#methods[a],s=o[t]||o[A],c={};if(s!==void 0&&(s.params=Object.create(null),i.push(s),n!==W||r&&r!==W))for(let e=0,t=s.possibleKeys.length;e<t;e++){let t=s.possibleKeys[e],i=c[s.score];s.params[t]=r?.[t]&&!i?r[t]:n[t]??r?.[t],c[s.score]=!0}}return i}search(e,t){let n=[];this.#params=W;let r=this,i=[r],a=l(t),o=[];for(let t=0,r=a.length;t<r;t++){let s=a[t],c=t===r-1,l=[];for(let r=0,u=i.length;r<u;r++){let u=i[r],d=u.#children[s];d&&(d.#params=u.#params,c?(d.#children[`*`]&&n.push(...this.#getHandlerSets(d.#children[`*`],e,u.#params)),n.push(...this.#getHandlerSets(d,e,u.#params))):l.push(d));for(let r=0,i=u.#patterns.length;r<i;r++){let i=u.#patterns[r],d=u.#params===W?{}:{...u.#params};if(i===`*`){let t=u.#children[`*`];t&&(n.push(...this.#getHandlerSets(t,e,u.#params)),t.#params=d,l.push(t));continue}let[f,p,m]=i;if(!s&&!(m instanceof RegExp))continue;let h=u.#children[f],g=a.slice(t).join(`/`);if(m instanceof RegExp){let t=m.exec(g);if(t){if(d[p]=t[0],n.push(...this.#getHandlerSets(h,e,u.#params,d)),Object.keys(h.#children).length){h.#params=d;let e=t[0].match(/\//)?.length??0,n=o[e]||=[];n.push(h)}continue}}(m===!0||m.test(s))&&(d[p]=s,c?(n.push(...this.#getHandlerSets(h,e,d,u.#params)),h.#children[`*`]&&n.push(...this.#getHandlerSets(h.#children[`*`],e,d,u.#params))):(h.#params=d,l.push(h)))}}i=l.concat(o.shift()??[])}return n.length>1&&n.sort((e,t)=>e.score-t.score),[n.map(({handler:e,params:t})=>[e,t])]}},Ee=class{name=`TrieRouter`;#node;constructor(){this.#node=new G}add(t,n,r){let i=e(n);if(i){for(let e=0,n=i.length;e<n;e++)this.#node.insert(t,i[e],r);return}this.#node.insert(t,n,r)}match(e,t){return this.#node.search(e,t)}},K=class extends P{constructor(e={}){super(e),this.router=e.router??new Te({routers:[new we,new Ee]})}},De=(e,t,n)=>{let r=e.req.raw.headers.get(`Cookie`);if(typeof t==`string`){if(!r)return;let e=t;n===`secure`?e=`__Secure-`+t:n===`host`&&(e=`__Host-`+t);let i=c(r,e);return i[e]}if(!r)return{};let i=c(r);return i},q=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){if(this.res){let e=new Response(this.res.body,{status:this.status,headers:this.res.headers});return e}return new Response(this.message,{status:this.status})}},Oe=(e,t)=>{let n=new Response(e,{headers:{"Content-Type":t}});return n.formData()},J=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,ke=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,Ae=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,Y=(e,t)=>async(n,r)=>{let i={},a=n.req.header(`Content-Type`);switch(e){case`json`:if(!a||!J.test(a))break;try{i=await n.req.json()}catch{throw new q(400,{message:`Malformed JSON in request body`})}break;case`form`:{if(!a||!(ke.test(a)||Ae.test(a)))break;let e;if(n.req.bodyCache.formData)e=await n.req.bodyCache.formData;else try{let t=await n.req.arrayBuffer();e=await Oe(t,a),n.req.bodyCache.formData=e}catch(e){let t=`Malformed FormData request.`;throw t+=e instanceof Error?` ${e.message}`:` ${String(e)}`,new q(400,{message:t})}let t={};e.forEach((e,n)=>{n.endsWith(`[]`)?(t[n]??=[]).push(e):Array.isArray(t[n])?t[n].push(e):n in t?t[n]=[t[n],e]:t[n]=e}),i=t;break}case`query`:i=Object.fromEntries(Object.entries(n.req.queries()).map(([e,t])=>t.length===1?[e,t[0]]:[e,t]));break;case`param`:i=n.req.param();break;case`header`:i=n.req.header();break;case`cookie`:i=De(n);break}let o=await t(i,n);if(o instanceof Response)return o;n.req.addValidatedData(e,o),await r()};const X=()=>new K,Z=(e,t)=>e.json({error:t},400),Q=e=>{let t=e.req.param(`key`);return!t||t===``?{key:t,err:`Key is required`}:t.length>128?{key:t,err:`Key is too long. Max length is 128 characters.`}:{key:t}},je=X().basePath(`/:key`).get(`/`,async e=>{let{key:t,err:n}=Q(e);if(n)return Z(e,n);let r=await e.env.storage.get(t);return e.json({value:r},200)}).post(`/`,Y(`json`,(e,t)=>{let n=e.value;return n?typeof n==`string`?n.length>1024?Z(t,`Value is too long. Max length is 1024 characters.`):{value:n}:Z(t,`Value must be a string`):Z(t,`Value is required`)}),async e=>{let{key:t,err:n}=Q(e);if(n)return Z(e,n);let{value:r}=e.req.valid(`json`);return await e.env.storage.set(t,r),e.body(null,204)}),$=e=>{let t=e.req.param(`id`);return t?t.length>128?{id:t,err:`ID is too long. Max length is 128 characters.`}:{id:t}:{id:t,err:`ID is required`}},Me=X().basePath(`/:id`).post(`/`,async e=>{let{id:t,err:n}=$(e);if(n)return Z(e,n);let r=await e.env.chat.upsert(t);return e.json({id:r.id},200)}).post(`/sendMessages`,Y(`json`,(e,t)=>{let n=e.messages;if(!n)return Z(t,`Messages are required`);if(!Array.isArray(n))return Z(t,`Messages must be an array`);if(n.length===0)return Z(t,`Messages must not be empty`);let r=e.behavior;return r!==`enqueue`&&r!==`interrupt`?Z(t,`Invalid behavior`):{messages:n,behavior:r}}),async e=>{let{id:t,err:n}=$(e);if(n)return Z(e,n);let{messages:r,behavior:i}=e.req.valid(`json`);return await e.env.chat.sendMessages(t,{messages:r,behavior:i}),e.body(null,204)});new K().route(`/storage`,je).route(`/chat`,Me);async function Ne(e){let t=e?.entrypoint??await b(e?.cwd??process.cwd());if(!t)throw Error(`Unable to locate the entrypoint of the agent. Please specify it manually.`);let n;if(typeof Bun<`u`)n=S(t);else{let{outfile:e}=await y(t);n=S(e)}return ie(n)}export{Ne as create};
|
|
1
|
+
import{checkOptionalParameter as e,decodeURIComponent_ as t,getPath as n,getPathNoStrict as r,getPattern as i,getQueryParam as a,getQueryParams as o,mergePath as s,parse as c,splitPath as l,splitRoutingPath as u,tryDecode as d}from"./cookie-BiKY7-P1.js";import{createRequire as f}from"node:module";import{mkdir as p,readFile as m,stat as h}from"fs/promises";import{dirname as g,join as _,relative as ee}from"path";var v=f(import.meta.url);async function y(e,{outdir:t}={}){t||=await te(e);let n=_(t,`agent.js`),r=re(),i=await r.build({...ne,entryPoints:[e],outfile:n});if(i.errors.length>0)throw Error(`Failed to build agent!`);return{outfile:n}}async function b(e){let t=await x(e,`package.json`);if(!t)throw Error(`No package.json found in ${e}`);let n=JSON.parse(await m(t,`utf-8`)),r=n.main;if(!r)throw Error(`"main" is not set in ${ee(process.cwd(),t)}. It should be set to the entrypoint of your agent.`);let i=_(g(t),r),a=await h(i);if(!a.isFile())throw Error(`${i} is not a file.`);return i}async function te(e){let t=await x(e,`node_modules`);if(!t){let t=await h(e);return t.isDirectory()?_(e,`.blink`):_(g(e),`.blink`)}let n=_(t,`.blink`);return await p(n,{recursive:!0}),n}async function x(e,t){let n=e;for(;n!==g(n);){let e=_(n,t);try{return await h(e),e}catch{}n=g(n)}}const ne={bundle:!0,format:`cjs`,platform:`node`,target:`node18`,sourcemap:`inline`},re=()=>{try{return v(`esbuild`)}catch{throw Error("esbuild is not installed. Please install it with `bun add esbuild`.")}};function S(e){let t=v(e);if(typeof t!=`object`)throw Error(`The module at ${e} must export an object.`);let n=t.default;if(typeof n!=`object`)throw Error(`The module at ${e} must export an object.`);if(!n.version)throw Error(`The module at ${e} must export a "version" property.`);if(typeof n.fetch!=`function`)throw Error(`The module at ${e} must export a "fetch" function.`);return n}function ie(e){return new ae(`http://agent.local`,{fetch:async(t,n)=>e.fetch(new Request(t,{...n,duplex:`half`}))})}var ae=class{baseUrl;fetch;constructor(e,t){this.baseUrl=e,this.fetch=t?.fetch??fetch}async sendMessages(e,t){return this.fetch(`${this.baseUrl}/sendMessages`,{method:`POST`,body:JSON.stringify(e),signal:t?.signal})}async sendWebhook(e){let t=new URL(e.url),n=new Headers(e.headers);return this.fetch(`${this.baseUrl}/webhook?${t.searchParams.toString()}`,{method:e.method,headers:n,body:e.body})}},C=(e,t,n)=>(r,i)=>{let a=-1;return o(0);async function o(s){if(s<=a)throw Error(`next() called multiple times`);a=s;let c,l=!1,u;if(e[s]?(u=e[s][0][0],r.req.routeIndex=s):u=s===e.length&&i||void 0,u)try{c=await u(r,()=>o(s+1))}catch(e){if(e instanceof Error&&t)r.error=e,c=await t(e,r),l=!0;else throw e}else r.finalized===!1&&n&&(c=await n(r));return c&&(r.finalized===!1||l)&&(r.res=c),r}},w=Symbol(),T=async(e,t=Object.create(null))=>{let{all:n=!1,dot:r=!1}=t,i=e instanceof D?e.raw.headers:e.headers,a=i.get(`Content-Type`);return a?.startsWith(`multipart/form-data`)||a?.startsWith(`application/x-www-form-urlencoded`)?oe(e,{all:n,dot:r}):{}};async function oe(e,t){let n=await e.formData();return n?se(n,t):{}}function se(e,t){let n=Object.create(null);return e.forEach((e,r)=>{let i=t.all||r.endsWith(`[]`);i?ce(n,r,e):n[r]=e}),t.dot&&Object.entries(n).forEach(([e,t])=>{let r=e.includes(`.`);r&&(le(n,e,t),delete n[e])}),n}var ce=(e,t,n)=>{e[t]===void 0?t.endsWith(`[]`)?e[t]=[n]:e[t]=n:Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]},le=(e,t,n)=>{let r=e,i=t.split(`.`);i.forEach((e,t)=>{t===i.length-1?r[e]=n:((!r[e]||typeof r[e]!=`object`||Array.isArray(r[e])||r[e]instanceof File)&&(r[e]=Object.create(null)),r=r[e])})},E=e=>d(e,t),D=class{raw;#validatedData;#matchResult;routeIndex=0;path;bodyCache={};constructor(e,t=`/`,n=[[]]){this.raw=e,this.path=t,this.#matchResult=n,this.#validatedData={}}param(e){return e?this.#getDecodedParam(e):this.#getAllDecodedParams()}#getDecodedParam(e){let t=this.#matchResult[0][this.routeIndex][1][e],n=this.#getParamValue(t);return n&&/\%/.test(n)?E(n):n}#getAllDecodedParams(){let e={},t=Object.keys(this.#matchResult[0][this.routeIndex][1]);for(let n of t){let t=this.#getParamValue(this.#matchResult[0][this.routeIndex][1][n]);t!==void 0&&(e[n]=/\%/.test(t)?E(t):t)}return e}#getParamValue(e){return this.#matchResult[1]?this.#matchResult[1][e]:e}query(e){return a(this.url,e)}queries(e){return o(this.url,e)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t={};return this.raw.headers.forEach((e,n)=>{t[n]=e}),t}async parseBody(e){return this.bodyCache.parsedBody??=await T(this,e)}#cachedBody=e=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;let i=Object.keys(t)[0];return i?t[i].then(t=>(i===`json`&&(t=JSON.stringify(t)),new Response(t)[e]())):t[e]=n[e]()};json(){return this.#cachedBody(`text`).then(e=>JSON.parse(e))}text(){return this.#cachedBody(`text`)}arrayBuffer(){return this.#cachedBody(`arrayBuffer`)}blob(){return this.#cachedBody(`blob`)}formData(){return this.#cachedBody(`formData`)}addValidatedData(e,t){this.#validatedData[e]=t}valid(e){return this.#validatedData[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[w](){return this.#matchResult}get matchedRoutes(){return this.#matchResult[0].map(([[,e]])=>e)}get routePath(){return this.#matchResult[0].map(([[,e]])=>e)[this.routeIndex].path}},ue={Stringify:1,BeforeStream:2,Stream:3},de=(e,t)=>{let n=new String(e);return n.isEscaped=!0,n.callbacks=t,n},O=async(e,t,n,r,i)=>{typeof e==`object`&&!(e instanceof String)&&(e instanceof Promise||(e=e.toString()),e instanceof Promise&&(e=await e));let a=e.callbacks;if(!a?.length)return Promise.resolve(e);i?i[0]+=e:i=[e];let o=Promise.all(a.map(e=>e({phase:t,buffer:i,context:r}))).then(e=>Promise.all(e.filter(Boolean).map(e=>O(e,t,!1,r,i))).then(()=>i[0]));return n?de(await o,a):o},fe=`text/plain; charset=UTF-8`,k=(e,t)=>({"Content-Type":e,...t}),pe=class{#rawRequest;#req;env={};#var;finalized=!1;error;#status;#executionCtx;#res;#layout;#renderer;#notFoundHandler;#preparedHeaders;#matchResult;#path;constructor(e,t){this.#rawRequest=e,t&&(this.#executionCtx=t.executionCtx,this.env=t.env,this.#notFoundHandler=t.notFoundHandler,this.#path=t.path,this.#matchResult=t.matchResult)}get req(){return this.#req??=new D(this.#rawRequest,this.#path,this.#matchResult),this.#req}get event(){if(this.#executionCtx&&`respondWith`in this.#executionCtx)return this.#executionCtx;throw Error(`This context has no FetchEvent`)}get executionCtx(){if(this.#executionCtx)return this.#executionCtx;throw Error(`This context has no ExecutionContext`)}get res(){return this.#res||=new Response(null,{headers:this.#preparedHeaders??=new Headers})}set res(e){if(this.#res&&e){e=new Response(e.body,e);for(let[t,n]of this.#res.headers.entries()){if(t===`content-type`)continue;if(t===`set-cookie`){let t=this.#res.headers.getSetCookie();e.headers.delete(`set-cookie`);for(let n of t)e.headers.append(`set-cookie`,n)}else e.headers.set(t,n)}}this.#res=e,this.finalized=!0}render=(...e)=>(this.#renderer??=e=>this.html(e),this.#renderer(...e));setLayout=e=>this.#layout=e;getLayout=()=>this.#layout;setRenderer=e=>{this.#renderer=e};header=(e,t,n)=>{this.finalized&&(this.#res=new Response(this.#res.body,this.#res));let r=this.#res?this.#res.headers:this.#preparedHeaders??=new Headers;t===void 0?r.delete(e):n?.append?r.append(e,t):r.set(e,t)};status=e=>{this.#status=e};set=(e,t)=>{this.#var??=new Map,this.#var.set(e,t)};get=e=>this.#var?this.#var.get(e):void 0;get var(){return this.#var?Object.fromEntries(this.#var):{}}#newResponse(e,t,n){let r=this.#res?new Headers(this.#res.headers):this.#preparedHeaders??new Headers;if(typeof t==`object`&&`headers`in t){let e=t.headers instanceof Headers?t.headers:new Headers(t.headers);for(let[t,n]of e)t.toLowerCase()===`set-cookie`?r.append(t,n):r.set(t,n)}if(n)for(let[e,t]of Object.entries(n))if(typeof t==`string`)r.set(e,t);else{r.delete(e);for(let n of t)r.append(e,n)}let i=typeof t==`number`?t:t?.status??this.#status;return new Response(e,{status:i,headers:r})}newResponse=(...e)=>this.#newResponse(...e);body=(e,t,n)=>this.#newResponse(e,t,n);text=(e,t,n)=>!this.#preparedHeaders&&!this.#status&&!t&&!n&&!this.finalized?new Response(e):this.#newResponse(e,t,k(fe,n));json=(e,t,n)=>this.#newResponse(JSON.stringify(e),t,k(`application/json`,n));html=(e,t,n)=>{let r=e=>this.#newResponse(e,t,k(`text/html; charset=UTF-8`,n));return typeof e==`object`?O(e,ue.Stringify,!1,{}).then(r):r(e)};redirect=(e,t)=>{let n=String(e);return this.header(`Location`,/[^\x00-\xFF]/.test(n)?encodeURI(n):n),this.newResponse(null,t??302)};notFound=()=>(this.#notFoundHandler??=()=>new Response,this.#notFoundHandler(this))},A=`ALL`,me=`all`,he=[`get`,`post`,`put`,`delete`,`options`,`patch`],j=`Can not add a route since the matcher is already built.`,M=class extends Error{},ge=`__COMPOSED_HANDLER`,_e=e=>e.text(`404 Not Found`,404),N=(e,t)=>{if(`getResponse`in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text(`Internal Server Error`,500)},P=class{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath=`/`;#path=`/`;routes=[];constructor(e={}){let t=[...he,me];t.forEach(e=>{this[e]=(t,...n)=>(typeof t==`string`?this.#path=t:this.#addRoute(e,this.#path,t),n.forEach(t=>{this.#addRoute(e,this.#path,t)}),this)}),this.on=(e,t,...n)=>{for(let r of[t].flat()){this.#path=r;for(let t of[e].flat())n.map(e=>{this.#addRoute(t.toUpperCase(),this.#path,e)})}return this},this.use=(e,...t)=>(typeof e==`string`?this.#path=e:(this.#path=`*`,t.unshift(e)),t.forEach(e=>{this.#addRoute(A,this.#path,e)}),this);let{strict:i,...a}=e;Object.assign(this,a),this.getPath=i??!0?e.getPath??n:r}#clone(){let e=new P({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#notFoundHandler=this.#notFoundHandler,e.routes=this.routes,e}#notFoundHandler=_e;errorHandler=N;route(e,t){let n=this.basePath(e);return t.routes.map(e=>{let r;t.errorHandler===N?r=e.handler:(r=async(n,r)=>(await C([],t.errorHandler)(n,()=>e.handler(n,r))).res,r[ge]=e.handler),n.#addRoute(e.method,e.path,r)}),this}basePath(e){let t=this.#clone();return t._basePath=s(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#notFoundHandler=e,this);mount(e,t,n){let r,i;n&&(typeof n==`function`?i=n:(i=n.optionHandler,r=n.replaceRequest===!1?e=>e:n.replaceRequest));let a=i?e=>{let t=i(e);return Array.isArray(t)?t:[t]}:e=>{let t;try{t=e.executionCtx}catch{}return[e.env,t]};r||=(()=>{let t=s(this._basePath,e),n=t===`/`?0:t.length;return e=>{let t=new URL(e.url);return t.pathname=t.pathname.slice(n)||`/`,new Request(t,e)}})();let o=async(e,n)=>{let i=await t(r(e.req.raw),...a(e));if(i)return i;await n()};return this.#addRoute(A,s(e,`*`),o),this}#addRoute(e,t,n){e=e.toUpperCase(),t=s(this._basePath,t);let r={basePath:this._basePath,path:t,method:e,handler:n};this.router.add(e,t,[n,r]),this.routes.push(r)}#handleError(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#dispatch(e,t,n,r){if(r===`HEAD`)return(async()=>new Response(null,await this.#dispatch(e,t,n,`GET`)))();let i=this.getPath(e,{env:n}),a=this.router.match(r,i),o=new pe(e,{path:i,matchResult:a,env:n,executionCtx:t,notFoundHandler:this.#notFoundHandler});if(a[0].length===1){let e;try{e=a[0][0][0][0](o,async()=>{o.res=await this.#notFoundHandler(o)})}catch(e){return this.#handleError(e,o)}return e instanceof Promise?e.then(e=>e||(o.finalized?o.res:this.#notFoundHandler(o))).catch(e=>this.#handleError(e,o)):e??this.#notFoundHandler(o)}let s=C(a[0],this.errorHandler,this.#notFoundHandler);return(async()=>{try{let e=await s(o);if(!e.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return e.res}catch(e){return this.#handleError(e,o)}})()}fetch=(e,...t)=>this.#dispatch(e,t[1],t[0],e.method);request=(e,t,n,r)=>e instanceof Request?this.fetch(t?new Request(e,t):e,n,r):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${s(`/`,e)}`,t),n,r));fire=()=>{addEventListener(`fetch`,e=>{e.respondWith(this.#dispatch(e.request,e,void 0,e.request.method))})}},F=`[^/]+`,I=`.*`,L=`(?:|/.*)`,R=Symbol(),ve=new Set(`.\\+*[^]$()`);function ye(e,t){return e.length===1?t.length===1?e<t?-1:1:-1:t.length===1||e===I||e===L?1:t===I||t===L?-1:e===F?1:t===F?-1:e.length===t.length?e<t?-1:1:t.length-e.length}var z=class{#index;#varIndex;#children=Object.create(null);insert(e,t,n,r,i){if(e.length===0){if(this.#index!==void 0)throw R;if(i)return;this.#index=t;return}let[a,...o]=e,s=a===`*`?o.length===0?[``,``,I]:[``,``,F]:a===`/*`?[``,``,L]:a.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),c;if(s){let e=s[1],t=s[2]||F;if(e&&s[2]&&(t===`.*`||(t=t.replace(/^\((?!\?:)(?=[^)]+\)$)/,`(?:`),/\((?!\?:)/.test(t))))throw R;if(c=this.#children[t],!c){if(Object.keys(this.#children).some(e=>e!==I&&e!==L))throw R;if(i)return;c=this.#children[t]=new z,e!==``&&(c.#varIndex=r.varIndex++)}!i&&e!==``&&n.push([e,c.#varIndex])}else if(c=this.#children[a],!c){if(Object.keys(this.#children).some(e=>e.length>1&&e!==I&&e!==L))throw R;if(i)return;c=this.#children[a]=new z}c.insert(o,t,n,r,i)}buildRegExpStr(){let e=Object.keys(this.#children).sort(ye),t=e.map(e=>{let t=this.#children[e];return(typeof t.#varIndex==`number`?`(${e})@${t.#varIndex}`:ve.has(e)?`\\${e}`:e)+t.buildRegExpStr()});return typeof this.#index==`number`&&t.unshift(`#${this.#index}`),t.length===0?``:t.length===1?t[0]:`(?:`+t.join(`|`)+`)`}},be=class{#context={varIndex:0};#root=new z;insert(e,t,n){let r=[],i=[];for(let t=0;;){let n=!1;if(e=e.replace(/\{[^}]+\}/g,e=>{let r=`@\\${t}`;return i[t]=[r,e],t++,n=!0,r}),!n)break}let a=e.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let e=i.length-1;e>=0;e--){let[t]=i[e];for(let n=a.length-1;n>=0;n--)if(a[n].indexOf(t)!==-1){a[n]=a[n].replace(t,i[e][1]);break}}return this.#root.insert(a,t,r,this.#context,n),r}buildRegExp(){let e=this.#root.buildRegExpStr();if(e===``)return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(e,i,a)=>i===void 0?(a===void 0||(r[Number(a)]=++t),``):(n[++t]=Number(i),`$()`)),[RegExp(`^${e}`),n,r]}},B=[],xe=[/^$/,[],Object.create(null)],V=Object.create(null);function H(e){return V[e]??=RegExp(e===`*`?``:`^${e.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:`(?:|/.*)`)}$`)}function Se(){V=Object.create(null)}function Ce(e){let t=new be,n=[];if(e.length===0)return xe;let r=e.map(e=>[!/\*|\/:/.test(e[0]),...e]).sort(([e,t],[n,r])=>e?1:n?-1:t.length-r.length),i=Object.create(null);for(let e=0,a=-1,o=r.length;e<o;e++){let[o,s,c]=r[e];o?i[s]=[c.map(([e])=>[e,Object.create(null)]),B]:a++;let l;try{l=t.insert(s,a,o)}catch(e){throw e===R?new M(s):e}o||(n[a]=c.map(([e,t])=>{let n=Object.create(null);for(--t;t>=0;t--){let[e,r]=l[t];n[e]=r}return[e,n]}))}let[a,o,s]=t.buildRegExp();for(let e=0,t=n.length;e<t;e++)for(let t=0,r=n[e].length;t<r;t++){let r=n[e][t]?.[1];if(!r)continue;let i=Object.keys(r);for(let e=0,t=i.length;e<t;e++)r[i[e]]=s[r[i[e]]]}let c=[];for(let e in o)c[e]=n[o[e]];return[a,c,i]}function U(e,t){if(e){for(let n of Object.keys(e).sort((e,t)=>t.length-e.length))if(H(n).test(t))return[...e[n]]}}var we=class{name=`RegExpRouter`;#middleware;#routes;constructor(){this.#middleware={[A]:Object.create(null)},this.#routes={[A]:Object.create(null)}}add(t,n,r){let i=this.#middleware,a=this.#routes;if(!i||!a)throw Error(j);i[t]||[i,a].forEach(e=>{e[t]=Object.create(null),Object.keys(e[A]).forEach(n=>{e[t][n]=[...e[A][n]]})}),n===`/*`&&(n=`*`);let o=(n.match(/\/:/g)||[]).length;if(/\*$/.test(n)){let e=H(n);t===A?Object.keys(i).forEach(e=>{i[e][n]||=U(i[e],n)||U(i[A],n)||[]}):i[t][n]||=U(i[t],n)||U(i[A],n)||[],Object.keys(i).forEach(n=>{(t===A||t===n)&&Object.keys(i[n]).forEach(t=>{e.test(t)&&i[n][t].push([r,o])})}),Object.keys(a).forEach(n=>{(t===A||t===n)&&Object.keys(a[n]).forEach(t=>e.test(t)&&a[n][t].push([r,o]))});return}let s=e(n)||[n];for(let e=0,n=s.length;e<n;e++){let c=s[e];Object.keys(a).forEach(s=>{(t===A||t===s)&&(a[s][c]||=[...U(i[s],c)||U(i[A],c)||[]],a[s][c].push([r,o-n+e+1]))})}}match(e,t){Se();let n=this.#buildAllMatchers();return this.match=(e,t)=>{let r=n[e]||n[A],i=r[2][t];if(i)return i;let a=t.match(r[0]);if(!a)return[[],B];let o=a.indexOf(``,1);return[r[1][o],a]},this.match(e,t)}#buildAllMatchers(){let e=Object.create(null);return Object.keys(this.#routes).concat(Object.keys(this.#middleware)).forEach(t=>{e[t]||=this.#buildMatcher(t)}),this.#middleware=this.#routes=void 0,e}#buildMatcher(e){let t=[],n=e===A;return[this.#middleware,this.#routes].forEach(r=>{let i=r[e]?Object.keys(r[e]).map(t=>[t,r[e][t]]):[];i.length===0?e!==A&&t.push(...Object.keys(r[A]).map(e=>[e,r[A][e]])):(n||=!0,t.push(...i))}),n?Ce(t):null}},Te=class{name=`SmartRouter`;#routers=[];#routes=[];constructor(e){this.#routers=e.routers}add(e,t,n){if(!this.#routes)throw Error(j);this.#routes.push([e,t,n])}match(e,t){if(!this.#routes)throw Error(`Fatal error`);let n=this.#routers,r=this.#routes,i=n.length,a=0,o;for(;a<i;a++){let i=n[a];try{for(let e=0,t=r.length;e<t;e++)i.add(...r[e]);o=i.match(e,t)}catch(e){if(e instanceof M)continue;throw e}this.match=i.match.bind(i),this.#routers=[i],this.#routes=void 0;break}if(a===i)throw Error(`Fatal error`);return this.name=`SmartRouter + ${this.activeRouter.name}`,o}get activeRouter(){if(this.#routes||this.#routers.length!==1)throw Error(`No active router has been determined yet.`);return this.#routers[0]}},W=Object.create(null),G=class{#methods;#children;#patterns;#order=0;#params=W;constructor(e,t,n){if(this.#children=n||Object.create(null),this.#methods=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#methods=[n]}this.#patterns=[]}insert(e,t,n){this.#order=++this.#order;let r=this,a=u(t),o=[];for(let e=0,t=a.length;e<t;e++){let t=a[e],n=a[e+1],s=i(t,n),c=Array.isArray(s)?s[0]:t;if(c in r.#children){r=r.#children[c],s&&o.push(s[1]);continue}r.#children[c]=new G,s&&(r.#patterns.push(s),o.push(s[1])),r=r.#children[c]}return r.#methods.push({[e]:{handler:n,possibleKeys:o.filter((e,t,n)=>n.indexOf(e)===t),score:this.#order}}),r}#getHandlerSets(e,t,n,r){let i=[];for(let a=0,o=e.#methods.length;a<o;a++){let o=e.#methods[a],s=o[t]||o[A],c={};if(s!==void 0&&(s.params=Object.create(null),i.push(s),n!==W||r&&r!==W))for(let e=0,t=s.possibleKeys.length;e<t;e++){let t=s.possibleKeys[e],i=c[s.score];s.params[t]=r?.[t]&&!i?r[t]:n[t]??r?.[t],c[s.score]=!0}}return i}search(e,t){let n=[];this.#params=W;let r=this,i=[r],a=l(t),o=[];for(let t=0,r=a.length;t<r;t++){let s=a[t],c=t===r-1,l=[];for(let r=0,u=i.length;r<u;r++){let u=i[r],d=u.#children[s];d&&(d.#params=u.#params,c?(d.#children[`*`]&&n.push(...this.#getHandlerSets(d.#children[`*`],e,u.#params)),n.push(...this.#getHandlerSets(d,e,u.#params))):l.push(d));for(let r=0,i=u.#patterns.length;r<i;r++){let i=u.#patterns[r],d=u.#params===W?{}:{...u.#params};if(i===`*`){let t=u.#children[`*`];t&&(n.push(...this.#getHandlerSets(t,e,u.#params)),t.#params=d,l.push(t));continue}let[f,p,m]=i;if(!s&&!(m instanceof RegExp))continue;let h=u.#children[f],g=a.slice(t).join(`/`);if(m instanceof RegExp){let t=m.exec(g);if(t){if(d[p]=t[0],n.push(...this.#getHandlerSets(h,e,u.#params,d)),Object.keys(h.#children).length){h.#params=d;let e=t[0].match(/\//)?.length??0,n=o[e]||=[];n.push(h)}continue}}(m===!0||m.test(s))&&(d[p]=s,c?(n.push(...this.#getHandlerSets(h,e,d,u.#params)),h.#children[`*`]&&n.push(...this.#getHandlerSets(h.#children[`*`],e,d,u.#params))):(h.#params=d,l.push(h)))}}i=l.concat(o.shift()??[])}return n.length>1&&n.sort((e,t)=>e.score-t.score),[n.map(({handler:e,params:t})=>[e,t])]}},Ee=class{name=`TrieRouter`;#node;constructor(){this.#node=new G}add(t,n,r){let i=e(n);if(i){for(let e=0,n=i.length;e<n;e++)this.#node.insert(t,i[e],r);return}this.#node.insert(t,n,r)}match(e,t){return this.#node.search(e,t)}},K=class extends P{constructor(e={}){super(e),this.router=e.router??new Te({routers:[new we,new Ee]})}},De=(e,t,n)=>{let r=e.req.raw.headers.get(`Cookie`);if(typeof t==`string`){if(!r)return;let e=t;n===`secure`?e=`__Secure-`+t:n===`host`&&(e=`__Host-`+t);let i=c(r,e);return i[e]}if(!r)return{};let i=c(r);return i},q=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){if(this.res){let e=new Response(this.res.body,{status:this.status,headers:this.res.headers});return e}return new Response(this.message,{status:this.status})}},Oe=(e,t)=>{let n=new Response(e,{headers:{"Content-Type":t}});return n.formData()},J=/^application\/([a-z-\.]+\+)?json(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,ke=/^multipart\/form-data(;\s?boundary=[a-zA-Z0-9'"()+_,\-./:=?]+)?$/,Ae=/^application\/x-www-form-urlencoded(;\s*[a-zA-Z0-9\-]+\=([^;]+))*$/,Y=(e,t)=>async(n,r)=>{let i={},a=n.req.header(`Content-Type`);switch(e){case`json`:if(!a||!J.test(a))break;try{i=await n.req.json()}catch{throw new q(400,{message:`Malformed JSON in request body`})}break;case`form`:{if(!a||!(ke.test(a)||Ae.test(a)))break;let e;if(n.req.bodyCache.formData)e=await n.req.bodyCache.formData;else try{let t=await n.req.arrayBuffer();e=await Oe(t,a),n.req.bodyCache.formData=e}catch(e){let t=`Malformed FormData request.`;throw t+=e instanceof Error?` ${e.message}`:` ${String(e)}`,new q(400,{message:t})}let t={};e.forEach((e,n)=>{n.endsWith(`[]`)?(t[n]??=[]).push(e):Array.isArray(t[n])?t[n].push(e):n in t?t[n]=[t[n],e]:t[n]=e}),i=t;break}case`query`:i=Object.fromEntries(Object.entries(n.req.queries()).map(([e,t])=>t.length===1?[e,t[0]]:[e,t]));break;case`param`:i=n.req.param();break;case`header`:i=n.req.header();break;case`cookie`:i=De(n);break}let o=await t(i,n);if(o instanceof Response)return o;n.req.addValidatedData(e,o),await r()};const X=()=>new K,Z=(e,t)=>e.json({error:t},400),Q=e=>{let t=e.req.param(`key`);return!t||t===``?{key:t,err:`Key is required`}:t.length>128?{key:t,err:`Key is too long. Max length is 128 characters.`}:{key:t}},je=X().basePath(`/:key`).get(`/`,async e=>{let{key:t,err:n}=Q(e);if(n)return Z(e,n);let r=await e.env.storage.get(t);return e.json({value:r},200)}).post(`/`,Y(`json`,(e,t)=>{let n=e.value;return n?typeof n==`string`?n.length>1024?Z(t,`Value is too long. Max length is 1024 characters.`):{value:n}:Z(t,`Value must be a string`):Z(t,`Value is required`)}),async e=>{let{key:t,err:n}=Q(e);if(n)return Z(e,n);let{value:r}=e.req.valid(`json`);return await e.env.storage.set(t,r),e.body(null,204)}),$=e=>{let t=e.req.param(`id`);return t?t.length>128?{id:t,err:`ID is too long. Max length is 128 characters.`}:{id:t}:{id:t,err:`ID is required`}},Me=X().basePath(`/:id`).post(`/`,async e=>{let{id:t,err:n}=$(e);if(n)return Z(e,n);let r=await e.env.chat.upsert(t);return e.json({id:r.id},200)}).post(`/sendMessages`,Y(`json`,(e,t)=>{let n=e.messages;if(!n)return Z(t,`Messages are required`);if(!Array.isArray(n))return Z(t,`Messages must be an array`);if(n.length===0)return Z(t,`Messages must not be empty`);let r=e.behavior;return r!==`enqueue`&&r!==`interrupt`?Z(t,`Invalid behavior`):{messages:n,behavior:r}}),async e=>{let{id:t,err:n}=$(e);if(n)return Z(e,n);let{messages:r,behavior:i}=e.req.valid(`json`);return await e.env.chat.sendMessages(t,{messages:r,behavior:i}),e.body(null,204)});new K().route(`/storage`,je).route(`/chat`,Me);async function Ne(e){let t=e?.entrypoint??await b(e?.cwd??process.cwd());if(!t)throw Error(`Unable to locate the entrypoint of the agent. Please specify it manually.`);let n;if(typeof Bun<`u`)n=S(t);else{let{outfile:e}=await y(t);n=S(e)}return ie(n)}export{Ne as create};
|