blink 0.1.100 → 0.1.101

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.
Files changed (45) hide show
  1. package/dist/cli/{dev-BoWdP_B4.js → dev-DSRhxL7E.js} +9 -3
  2. package/dist/cli/index.js +2 -2
  3. package/dist/node/agent/index.node.cjs +1 -1
  4. package/dist/node/agent/index.node.js +1 -1
  5. package/dist/node/build/index.cjs +1 -1
  6. package/dist/node/build/index.js +1 -1
  7. package/dist/node/{build-lx6plR19.cjs → build-BzoNpizh.cjs} +4 -4
  8. package/dist/node/{build-M5Q2ZTGh.js → build-D_L0gFGa.js} +5 -5
  9. package/dist/node/{getMachineId-bsd-CUUgtcEk.cjs → getMachineId-bsd-B84ixt26.cjs} +1 -1
  10. package/dist/node/{getMachineId-bsd-YA-Qh955.cjs → getMachineId-bsd-BudRe7J9.cjs} +1 -1
  11. package/dist/node/{getMachineId-bsd-CpiyZ31n.js → getMachineId-bsd-BxqlJcyA.js} +1 -1
  12. package/dist/node/{getMachineId-bsd-DKc3Wh2z.js → getMachineId-bsd-C10eVJgT.js} +1 -1
  13. package/dist/node/{getMachineId-darwin-BBDIi9K5.js → getMachineId-darwin-Bf4P0U5b.js} +1 -1
  14. package/dist/node/{getMachineId-darwin-CcM48gLI.cjs → getMachineId-darwin-Cyng5kFG.cjs} +1 -1
  15. package/dist/node/{getMachineId-darwin-CQ9-5u-a.js → getMachineId-darwin-JB29MQsG.js} +1 -1
  16. package/dist/node/{getMachineId-darwin-IcDjLpqm.cjs → getMachineId-darwin-ZVi3EKE3.cjs} +1 -1
  17. package/dist/node/{getMachineId-linux-BzwdWZoB.cjs → getMachineId-linux-B-CtXK0L.cjs} +1 -1
  18. package/dist/node/{getMachineId-linux-Cc8c4coA.js → getMachineId-linux-BPnkHJah.js} +1 -1
  19. package/dist/node/{getMachineId-linux-DMvLmvRp.cjs → getMachineId-linux-CJXPQ8U5.cjs} +1 -1
  20. package/dist/node/{getMachineId-linux-TNXyQsBB.js → getMachineId-linux-CmMSYp7C.js} +1 -1
  21. package/dist/node/{getMachineId-unsupported-ApoW5rxx.cjs → getMachineId-unsupported--0R36RP6.cjs} +1 -1
  22. package/dist/node/{getMachineId-unsupported-CRrpolgF.js → getMachineId-unsupported-C_4fnT4Z.js} +1 -1
  23. package/dist/node/{getMachineId-unsupported-DYGwqELh.cjs → getMachineId-unsupported-DM7fz1pP.cjs} +1 -1
  24. package/dist/node/{getMachineId-unsupported-DGhOj3l0.js → getMachineId-unsupported-Dtt3HTNZ.js} +1 -1
  25. package/dist/node/{getMachineId-win-Dfq5UG8G.js → getMachineId-win-C4G-fkEF.js} +1 -1
  26. package/dist/node/{getMachineId-win-B-bRjIv0.cjs → getMachineId-win-CjJkZMZe.cjs} +1 -1
  27. package/dist/node/{getMachineId-win-CSKzOPIT.js → getMachineId-win-D1szVnqR.js} +1 -1
  28. package/dist/node/{getMachineId-win-CoAu5xDr.cjs → getMachineId-win-DDz2FyEp.cjs} +1 -1
  29. package/dist/node/{index.node-CA3ktAWn.cjs → index.node-DlfrLUZ3.cjs} +4 -4
  30. package/dist/node/{index.node-DsWXAj6H.js → index.node-hG-farUz.js} +4 -4
  31. package/dist/node/react/index.node.cjs +128 -128
  32. package/dist/node/react/index.node.js +23 -23
  33. package/dist/node/{token-C10csUbV.cjs → token-BBGr-czK.cjs} +1 -1
  34. package/dist/node/{token-B0ivJQut.js → token-DOfE6QlD.js} +1 -1
  35. package/dist/node/{token-util-BwRq8n40.cjs → token-util-BOoyY0PX.cjs} +1 -1
  36. package/dist/node/token-util-C_uzN2q9.js +1 -0
  37. package/dist/node/token-util-D9kCwzE6.cjs +1 -0
  38. package/dist/node/{token-util-1r_uDcp7.js → token-util-_pz5CtFI.js} +1 -1
  39. package/package.json +1 -1
  40. package/dist/node/token-util-CSWJ2yfA.js +0 -1
  41. package/dist/node/token-util-beB2LRJ9.cjs +0 -1
  42. /package/dist/node/{esm-C-vSI1Ww.cjs → esm-0UNjvroT.cjs} +0 -0
  43. /package/dist/node/{esm-D1GEQyaY.js → esm-CbZfjZBn.js} +0 -0
  44. /package/dist/node/{token-error-wsvzy87W.js → token-error-488npYdU.js} +0 -0
  45. /package/dist/node/{token-error-l6zIbPbZ.cjs → token-error-BoNG8ooW.cjs} +0 -0
@@ -864,7 +864,7 @@ Instead:
864
864
 
865
865
  The agent process can restart at any time, so all important state must be externalized.
866
866
  </technical_knowledge>
867
- `;function useEditAgent(options$1){let[client,setClient]=useState(void 0),[error$3,setError$1]=useState(void 0),editAgentRef=useRef(void 0);return useEffect(()=>{let controller=new AbortController;return(async()=>{editAgentRef.current=createEditAgent({directory:options$1.directory});let port$1=await getRandomPort(),server=editAgentRef.current.agent.serve({port:port$1,host:`127.0.0.1`,apiUrl:options$1.apiServerUrl});controller.signal.addEventListener(`abort`,()=>{try{server.close()}catch{}});let editClient=new Client$1({baseUrl:`http://127.0.0.1:${port$1}`});for(;!controller.signal.aborted;){try{await editClient.health();break}catch{}await new Promise(resolve$10=>setTimeout(resolve$10,100))}if(controller.signal.aborted)throw controller.signal.reason;setClient(editClient)})().catch(err=>{setError$1(err instanceof Error?err:Error(String(err)))}),()=>controller.abort()},[options$1.directory,options$1.apiServerUrl]),useMemo(()=>({client,error:error$3,setUserAgentUrl:url$5=>{editAgentRef.current?.setUserAgentUrl(url$5)}}),[client,error$3])}async function getRandomPort(){let server=createServer();return new Promise((resolve$10,reject)=>{server.listen(0,()=>{let port$1=server.address().port;resolve$10(port$1)}).on(`error`,err=>{reject(err)})}).finally(()=>{server.close()})}function useDevMode(options$1){let{directory}=options$1,[mode,setModeState]=useState(`run`),modeRef=useRef(`run`);useEffect(()=>{modeRef.current=mode},[mode]);let setMode=useCallback(newMode=>{setModeState(newMode),options$1.onModeChange?.(newMode)},[options$1.onModeChange]),toggleMode=useCallback(()=>{setMode(mode===`run`?`edit`:`run`)},[mode,setMode]),{error:buildError,status:buildStatus,result:buildResult,entry:entrypoint}=useBundler({directory,onBuildStart:options$1.onBuildStart,onBuildSuccess:options$1.onBuildSuccess,onBuildError:options$1.onBuildError}),dotenv=useDotenv(directory),env$7=useMemo(()=>{let blinkToken=getAuthToken();return blinkToken?{...dotenv,BLINK_TOKEN:blinkToken}:dotenv},[dotenv]),lastReportedKeys=useRef(void 0);useEffect(()=>{let keys=Object.keys(env$7);if(keys.length===lastReportedKeys.current||lastReportedKeys.current===void 0){lastReportedKeys.current=keys.length;return}lastReportedKeys.current=keys.length,options$1.onEnvLoaded?.(keys)},[env$7,options$1.onEnvLoaded]);let currentAgentRef=useRef(void 0),server=useMemo(()=>createLocalServer({port:0,dataDirectory:join$1(directory,`data`),getAgent:()=>currentAgentRef.current}),[directory]),{agent:agent$1,logs:logs$1,error:agentError,capabilities}=useAgent({buildResult,env:env$7,apiServerUrl:server.url}),{client:editAgent,error:editAgentError,setUserAgentUrl}=useEditAgent({directory,apiServerUrl:server.url}),[chatId,setChatId]=useState(`default`);useEffect(()=>{agent$1&&setUserAgentUrl(agent$1.baseUrl),mode===`run`?agent$1?currentAgentRef.current=agent$1:(currentAgentRef.current=void 0,server.stopChat(chatId)):mode===`edit`&&(editAgent?currentAgentRef.current=editAgent:(currentAgentRef.current=void 0,server.stopChat(chatId)))},[agent$1,editAgent,mode,chatId,server]);let chat$1=useChat({chatId,agent:mode===`run`?agent$1:editAgent,chatsDirectory:server.chatsDirectory,serializeMessage:msg=>({id:msg.id??crypto.randomUUID(),created_at:new Date().toISOString(),role:msg.role,parts:msg.parts,mode:modeRef.current,metadata:msg.metadata}),filterMessages:msg=>modeRef.current===`edit`?!0:!(isStoredMessageMetadata(msg.metadata)||msg.mode===`edit`)}),lastLogsLength=useRef(0);useEffect(()=>{if(logs$1.length===lastLogsLength.current)return;let currentLength=lastLogsLength.current;for(let log$5 of logs$1.slice(currentLength))options$1.onAgentLog?.(log$5);lastLogsLength.current=logs$1.length},[logs$1,options$1.onAgentLog,chat$1.upsertMessage]);let[chatIds,setChatIds]=useState([]);useEffect(()=>{server.listChats().then(entries$1=>{setChatIds(entries$1.map(e$1=>e$1.key))})},[server]),useEffect(()=>{chatId&&!chatIds.includes(chatId)&&setChatIds(prev=>[...prev,chatId])},[chatId,chatIds]);let devhookID=useMemo(()=>getDevhookID(directory),[directory]),devhook=useDevhook({id:devhookID,disabled:!capabilities?.request,onRequest:async request$2=>{if(!agent$1)throw Error(`No agent`);let requestURL=new URL(request$2.url),agentURL=new URL(agent$1.baseUrl);agentURL.pathname=requestURL.pathname,agentURL.search=requestURL.search;let response=await fetch(agentURL.toString(),{...request$2,redirect:`manual`});return options$1.onDevhookRequest?.({method:request$2.method,path:requestURL.pathname,status:response.status}),response}});useEffect(()=>{devhook.status===`connected`&&options$1.onDevhookConnected?.(`https://${devhook.id}.dev.blink.host`)},[devhook.status,devhook.id]);let{schema:optionsSchema,options:selectedOptions,error:optionsError,setOption:setOption$1}=useOptions({agent:mode===`run`?agent$1:editAgent,capabilities,messages:chat$1.messages}),errors=useMemo(()=>{let errorList=[];return agentError&&mode===`run`&&errorList.push(agentError.message),editAgentError&&mode===`edit`&&errorList.push(`Edit agent error: ${editAgentError.message}`),chat$1.error&&errorList.push(`Chat error: ${chat$1.error}`),optionsError&&errorList.push(`Options error: ${optionsError.message}`),errorList},[agentError,editAgentError,chat$1.error,optionsError,mode]);useEffect(()=>{for(let error$3 of errors)options$1.onError?.(error$3)},[errors]),useEffect(()=>{chat$1.upsertMessage({id:crypto.randomUUID(),created_at:new Date().toISOString(),role:`user`,parts:[{type:`text`,text:mode===`run`?`<run_mode />`:`<edit_mode />`}],mode:modeRef.current,metadata:{__blink_internal:!0}}).catch(err=>{console.error(`Error inserting mode delimiter:`,err)})},[mode,chat$1.upsertMessage]);let[approvalHandled,setApprovalHandled]=useState(),needsApproval=useMemo(()=>{let lastMessage=[...chat$1.messages].reverse().find(message=>!(message.role!==`assistant`||message.metadata&&message.metadata.ephemeral));if(!lastMessage||approvalHandled===lastMessage.id)return;let parts=lastMessage.parts.filter(isToolOrDynamicToolUIPart);if(parts.length!==0&&parts.some(part=>isToolApprovalOutput(part.output)&&part.output.outcome===`pending`))return lastMessage},[chat$1.messages,approvalHandled]),handleApproval=useCallback(async approved=>{if(!needsApproval)return;setApprovalHandled(needsApproval.id);let locked=await server.lockChat(chatId);try{let stored=await locked.get();if(stored.messages.length>0){let lastMsg=stored.messages[stored.messages.length-1];if(lastMsg&&lastMsg.role===`assistant`&&Array.isArray(lastMsg.parts)){let updatedParts=lastMsg.parts.map(part=>isToolOrDynamicToolUIPart(part)&&part.output&&isToolApprovalOutput(part.output)&&part.output.outcome===`pending`?{...part,output:{...part.output,outcome:approved?`approved`:`rejected`}}:part),updatedMessages=[...stored.messages];updatedMessages[updatedMessages.length-1]={...lastMsg,parts:updatedParts,mode:modeRef.current},await locked.update({messages:updatedMessages})}}}finally{await locked.release()}await server.startChat(chatId)},[needsApproval,server,chatId]),newChat=useCallback(()=>{let id=crypto.randomUUID();setChatId(id),setChatIds(prev=>[...prev,id])},[]),approval=useMemo(()=>{if(needsApproval)return{message:needsApproval,approve:()=>handleApproval(!0),reject:()=>handleApproval(!1)}},[needsApproval,handleApproval]),tokenUsage=useMemo(()=>{let messages$1=chat$1.messages;if(messages$1.length!==0)for(let i$4=messages$1.length-1;i$4>=0;i$4--){let msg=messages$1[i$4];if(!msg||msg.role!==`assistant`||!msg.metadata||typeof msg.metadata!=`object`||!(`totalUsage`in msg.metadata))continue;let totalUsage=msg.metadata.totalUsage;if(!(!totalUsage||typeof totalUsage!=`object`)&&!(!(`inputTokens`in totalUsage)||!(`outputTokens`in totalUsage)||!(`totalTokens`in totalUsage)))return{inputTokens:totalUsage.inputTokens,outputTokens:totalUsage.outputTokens,totalTokens:totalUsage.totalTokens,cachedInputTokens:totalUsage.cachedInputTokens}}},[chat$1.messages]),showWaitingPlaceholder=useMemo(()=>{if(chat$1.status!==`streaming`)return!1;if(!chat$1.streamingMessage)return!0;let toolParts=chat$1.streamingMessage.parts.filter(isToolOrDynamicToolUIPart);return toolParts.length>0&&toolParts.every(part=>part.state.startsWith(`output-`))},[chat$1.status,chat$1.streamingMessage]);return{mode,setMode,toggleMode,chat:chat$1,chats:chatIds,switchChat:setChatId,newChat,build:{status:buildStatus,error:buildError,entrypoint},devhook:{connected:devhook.status===`connected`,url:devhook.status===`connected`?`https://${devhook.id}.dev.blink.host`:void 0},capabilities,options:{schema:optionsSchema,selected:selectedOptions,error:optionsError,setOption:setOption$1},approval,tokenUsage,server,showWaitingPlaceholder}}function L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var O$1=L();function G(l$1){O$1=l$1}var E$1={exec:()=>null};function h$1(l$1,e$1=``){let t$1=typeof l$1==`string`?l$1:l$1.source,n$2={replace:(r$2,i$4)=>{let s$3=typeof i$4==`string`?i$4:i$4.source;return s$3=s$3.replace(m.caret,`$1`),t$1=t$1.replace(r$2,s$3),n$2},getRegex:()=>new RegExp(t$1,e$1)};return n$2}var m={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:l$1=>RegExp(`^( {0,3}${l$1})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}#`),htmlBeginRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}<(?:[a-z].*>|!--)`,`i`)},xe=/^(?:[ \t]*(?:\n|$))+/,be=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,C=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,j=/(?:[*+-]|\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ie=h$1(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),Te=h$1(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),F=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,we=/^[^\n]+/,Q=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,ye=h$1(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Q).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Pe=h$1(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,j).getRegex(),v=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,U=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Se=h$1(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,U).replace(`tag`,v).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),oe=h$1(F).replace(`hr`,C).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,v).getRegex(),K={blockquote:h$1(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,oe).getRegex(),code:be,def:ye,fences:Re,heading:Oe,hr:C,html:Se,lheading:ie,list:Pe,newline:xe,paragraph:oe,table:E$1,text:we},re=h$1(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,C).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,v).getRegex(),_e={...K,lheading:Te,table:re,paragraph:h$1(F).replace(`hr`,C).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,re).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,v).getRegex()},Le={...K,html:h$1(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,U).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:E$1,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:h$1(F).replace(`hr`,C).replace(`heading`,` *#{1,6} *[^
867
+ `;function useEditAgent(options$1){let[client,setClient]=useState(void 0),[error$3,setError$1]=useState(void 0),editAgentRef=useRef(void 0);return useEffect(()=>{let controller=new AbortController;return(async()=>{editAgentRef.current=createEditAgent({directory:options$1.directory});let port$1=await getRandomPort(),server=editAgentRef.current.agent.serve({port:port$1,host:`127.0.0.1`,apiUrl:options$1.apiServerUrl});controller.signal.addEventListener(`abort`,()=>{try{server.close()}catch{}});let editClient=new Client$1({baseUrl:`http://127.0.0.1:${port$1}`});for(;!controller.signal.aborted;){try{await editClient.health();break}catch{}await new Promise(resolve$10=>setTimeout(resolve$10,100))}if(controller.signal.aborted)throw controller.signal.reason;setClient(editClient)})().catch(err=>{setError$1(err instanceof Error?err:Error(String(err)))}),()=>controller.abort()},[options$1.directory,options$1.apiServerUrl]),useMemo(()=>({client,error:error$3,setUserAgentUrl:url$5=>{editAgentRef.current?.setUserAgentUrl(url$5)}}),[client,error$3])}async function getRandomPort(){let server=createServer();return new Promise((resolve$10,reject)=>{server.listen(0,()=>{let port$1=server.address().port;resolve$10(port$1)}).on(`error`,err=>{reject(err)})}).finally(()=>{server.close()})}function useDevMode(options$1){let{directory}=options$1,[mode,setModeState]=useState(`run`),modeRef=useRef(`run`);useEffect(()=>{modeRef.current=mode},[mode]);let setMode=useCallback(newMode=>{setModeState(newMode),options$1.onModeChange?.(newMode)},[options$1.onModeChange]),toggleMode=useCallback(()=>{setMode(mode===`run`?`edit`:`run`)},[mode,setMode]),{error:buildError,status:buildStatus,result:buildResult,entry:entrypoint}=useBundler({directory,onBuildStart:options$1.onBuildStart,onBuildSuccess:options$1.onBuildSuccess,onBuildError:options$1.onBuildError}),dotenv=useDotenv(directory),env$7=useMemo(()=>{let blinkToken=getAuthToken();return blinkToken?{...dotenv,BLINK_TOKEN:blinkToken}:dotenv},[dotenv]),lastReportedKeys=useRef(void 0);useEffect(()=>{let keys=Object.keys(env$7);if(keys.length===lastReportedKeys.current||lastReportedKeys.current===void 0){lastReportedKeys.current=keys.length;return}lastReportedKeys.current=keys.length,options$1.onEnvLoaded?.(keys)},[env$7,options$1.onEnvLoaded]);let currentAgentRef=useRef(void 0),server=useMemo(()=>createLocalServer({port:0,dataDirectory:join$1(directory,`data`),getAgent:()=>currentAgentRef.current}),[directory]),{agent:agent$1,logs:logs$1,error:agentError,capabilities}=useAgent({buildResult,env:env$7,apiServerUrl:server.url}),{client:editAgent,error:editAgentError,setUserAgentUrl}=useEditAgent({directory,apiServerUrl:server.url}),[chatId,setChatId]=useState(`default`);useEffect(()=>{agent$1&&setUserAgentUrl(agent$1.baseUrl),mode===`run`?agent$1?currentAgentRef.current=agent$1:(currentAgentRef.current=void 0,server.stopChat(chatId)):mode===`edit`&&(editAgent?currentAgentRef.current=editAgent:(currentAgentRef.current=void 0,server.stopChat(chatId)))},[agent$1,editAgent,mode,chatId,server]);let selectedOptionsRef=useRef(void 0),chat$1=useChat({chatId,agent:mode===`run`?agent$1:editAgent,chatsDirectory:server.chatsDirectory,serializeMessage:msg=>{let metadata$5=msg.role===`user`&&selectedOptionsRef.current?{...typeof msg.metadata==`object`&&msg.metadata!==null?msg.metadata:{},options:selectedOptionsRef.current}:msg.metadata;return{id:msg.id??crypto.randomUUID(),created_at:new Date().toISOString(),role:msg.role,parts:msg.parts,mode:modeRef.current,metadata:metadata$5}},filterMessages:msg=>modeRef.current===`edit`?!0:!(isStoredMessageMetadata(msg.metadata)||msg.mode===`edit`)}),lastLogsLength=useRef(0);useEffect(()=>{if(logs$1.length===lastLogsLength.current)return;let currentLength=lastLogsLength.current;for(let log$5 of logs$1.slice(currentLength))options$1.onAgentLog?.(log$5);lastLogsLength.current=logs$1.length},[logs$1,options$1.onAgentLog,chat$1.upsertMessage]);let[chatIds,setChatIds]=useState([]);useEffect(()=>{server.listChats().then(entries$1=>{setChatIds(entries$1.map(e$1=>e$1.key))})},[server]),useEffect(()=>{chatId&&!chatIds.includes(chatId)&&setChatIds(prev=>[...prev,chatId])},[chatId,chatIds]);let devhookID=useMemo(()=>getDevhookID(directory),[directory]),devhook=useDevhook({id:devhookID,disabled:!capabilities?.request,onRequest:async request$2=>{if(!agent$1)throw Error(`No agent`);let requestURL=new URL(request$2.url),agentURL=new URL(agent$1.baseUrl);agentURL.pathname=requestURL.pathname,agentURL.search=requestURL.search;let response=await fetch(agentURL.toString(),{...request$2,redirect:`manual`});return options$1.onDevhookRequest?.({method:request$2.method,path:requestURL.pathname,status:response.status}),response}});useEffect(()=>{devhook.status===`connected`&&options$1.onDevhookConnected?.(`https://${devhook.id}.dev.blink.host`)},[devhook.status,devhook.id]);let{schema:optionsSchema,options:selectedOptions,error:optionsError,setOption:setOption$1}=useOptions({agent:mode===`run`?agent$1:editAgent,capabilities,messages:chat$1.messages});useEffect(()=>{selectedOptionsRef.current=selectedOptions},[selectedOptions]);let errors=useMemo(()=>{let errorList=[];return agentError&&mode===`run`&&errorList.push(agentError.message),editAgentError&&mode===`edit`&&errorList.push(`Edit agent error: ${editAgentError.message}`),chat$1.error&&errorList.push(`Chat error: ${chat$1.error}`),optionsError&&errorList.push(`Options error: ${optionsError.message}`),errorList},[agentError,editAgentError,chat$1.error,optionsError,mode]);useEffect(()=>{for(let error$3 of errors)options$1.onError?.(error$3)},[errors]),useEffect(()=>{chat$1.upsertMessage({id:crypto.randomUUID(),created_at:new Date().toISOString(),role:`user`,parts:[{type:`text`,text:mode===`run`?`<run_mode />`:`<edit_mode />`}],mode:modeRef.current,metadata:{__blink_internal:!0}}).catch(err=>{console.error(`Error inserting mode delimiter:`,err)})},[mode,chat$1.upsertMessage]);let[approvalHandled,setApprovalHandled]=useState(),needsApproval=useMemo(()=>{let lastMessage=[...chat$1.messages].reverse().find(message=>!(message.role!==`assistant`||message.metadata&&message.metadata.ephemeral));if(!lastMessage||approvalHandled===lastMessage.id)return;let parts=lastMessage.parts.filter(isToolOrDynamicToolUIPart);if(parts.length!==0&&parts.some(part=>isToolApprovalOutput(part.output)&&part.output.outcome===`pending`))return lastMessage},[chat$1.messages,approvalHandled]),handleApproval=useCallback(async approved=>{if(!needsApproval)return;setApprovalHandled(needsApproval.id);let locked=await server.lockChat(chatId);try{let stored=await locked.get();if(stored.messages.length>0){let lastMsg=stored.messages[stored.messages.length-1];if(lastMsg&&lastMsg.role===`assistant`&&Array.isArray(lastMsg.parts)){let updatedParts=lastMsg.parts.map(part=>isToolOrDynamicToolUIPart(part)&&part.output&&isToolApprovalOutput(part.output)&&part.output.outcome===`pending`?{...part,output:{...part.output,outcome:approved?`approved`:`rejected`}}:part),updatedMessages=[...stored.messages];updatedMessages[updatedMessages.length-1]={...lastMsg,parts:updatedParts,mode:modeRef.current},await locked.update({messages:updatedMessages})}}}finally{await locked.release()}await server.startChat(chatId)},[needsApproval,server,chatId]),newChat=useCallback(()=>{let id=crypto.randomUUID();setChatId(id),setChatIds(prev=>[...prev,id])},[]),approval=useMemo(()=>{if(needsApproval)return{message:needsApproval,approve:()=>handleApproval(!0),reject:()=>handleApproval(!1)}},[needsApproval,handleApproval]),tokenUsage=useMemo(()=>{let messages$1=chat$1.messages;if(messages$1.length!==0)for(let i$4=messages$1.length-1;i$4>=0;i$4--){let msg=messages$1[i$4];if(!msg||msg.role!==`assistant`||!msg.metadata||typeof msg.metadata!=`object`||!(`totalUsage`in msg.metadata))continue;let totalUsage=msg.metadata.totalUsage;if(!(!totalUsage||typeof totalUsage!=`object`)&&!(!(`inputTokens`in totalUsage)||!(`outputTokens`in totalUsage)||!(`totalTokens`in totalUsage)))return{inputTokens:totalUsage.inputTokens,outputTokens:totalUsage.outputTokens,totalTokens:totalUsage.totalTokens,cachedInputTokens:totalUsage.cachedInputTokens}}},[chat$1.messages]),showWaitingPlaceholder=useMemo(()=>{if(chat$1.status!==`streaming`)return!1;if(!chat$1.streamingMessage)return!0;let toolParts=chat$1.streamingMessage.parts.filter(isToolOrDynamicToolUIPart);return toolParts.length>0&&toolParts.every(part=>part.state.startsWith(`output-`))},[chat$1.status,chat$1.streamingMessage]);return{mode,setMode,toggleMode,chat:chat$1,chats:chatIds,switchChat:setChatId,newChat,build:{status:buildStatus,error:buildError,entrypoint},devhook:{connected:devhook.status===`connected`,url:devhook.status===`connected`?`https://${devhook.id}.dev.blink.host`:void 0},capabilities,options:{schema:optionsSchema,selected:selectedOptions,error:optionsError,setOption:setOption$1},approval,tokenUsage,server,showWaitingPlaceholder}}function L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var O$1=L();function G(l$1){O$1=l$1}var E$1={exec:()=>null};function h$1(l$1,e$1=``){let t$1=typeof l$1==`string`?l$1:l$1.source,n$2={replace:(r$2,i$4)=>{let s$3=typeof i$4==`string`?i$4:i$4.source;return s$3=s$3.replace(m.caret,`$1`),t$1=t$1.replace(r$2,s$3),n$2},getRegex:()=>new RegExp(t$1,e$1)};return n$2}var m={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:l$1=>RegExp(`^( {0,3}${l$1})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}#`),htmlBeginRegex:l$1=>RegExp(`^ {0,${Math.min(3,l$1-1)}}<(?:[a-z].*>|!--)`,`i`)},xe=/^(?:[ \t]*(?:\n|$))+/,be=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,C=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,j=/(?:[*+-]|\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ie=h$1(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),Te=h$1(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),F=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,we=/^[^\n]+/,Q=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,ye=h$1(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Q).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Pe=h$1(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,j).getRegex(),v=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,U=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Se=h$1(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,U).replace(`tag`,v).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),oe=h$1(F).replace(`hr`,C).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,v).getRegex(),K={blockquote:h$1(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,oe).getRegex(),code:be,def:ye,fences:Re,heading:Oe,hr:C,html:Se,lheading:ie,list:Pe,newline:xe,paragraph:oe,table:E$1,text:we},re=h$1(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,C).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,v).getRegex(),_e={...K,lheading:Te,table:re,paragraph:h$1(F).replace(`hr`,C).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,re).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)]) `).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,v).getRegex()},Le={...K,html:h$1(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,U).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:E$1,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:h$1(F).replace(`hr`,C).replace(`heading`,` *#{1,6} *[^
868
868
  ]`).replace(`lheading`,ie).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},Me=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ae=/^( {2,}|\\)\n(?!\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,D=/[\p{P}\p{S}]/u,W=/[\s\p{P}\p{S}]/u,le=/[^\s\p{P}\p{S}]/u,Ee=h$1(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,W).getRegex(),ue=/(?!~)[\p{P}\p{S}]/u,Ce=/(?!~)[\s\p{P}\p{S}]/u,Ie=/(?:[^\s\p{P}\p{S}]|~)/u,Be=/\[[^\[\]]*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)|`[^`]*?`|<(?! )[^<>]*?>/g,pe=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,qe=h$1(pe,`u`).replace(/punct/g,D).getRegex(),ve=h$1(pe,`u`).replace(/punct/g,ue).getRegex(),ce=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,De=h$1(ce,`gu`).replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),He=h$1(ce,`gu`).replace(/notPunctSpace/g,Ie).replace(/punctSpace/g,Ce).replace(/punct/g,ue).getRegex(),Ze=h$1(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ge=h$1(/\\(punct)/,`gu`).replace(/punct/g,D).getRegex(),Ne=h$1(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),je=h$1(U).replace(`(?:-->|$)`,`-->`).getRegex(),Fe=h$1(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,je).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),q$1=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,Qe=h$1(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace(`label`,q$1).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),he=h$1(/^!?\[(label)\]\[(ref)\]/).replace(`label`,q$1).replace(`ref`,Q).getRegex(),de=h$1(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,Q).getRegex(),Ue=h$1(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,he).replace(`nolink`,de).getRegex(),X={_backpedal:E$1,anyPunctuation:Ge,autolink:Ne,blockSkip:Be,br:ae,code:ze,del:E$1,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ze,escape:Me,link:Qe,nolink:de,punctuation:Ee,reflink:he,reflinkSearch:Ue,tag:Fe,text:Ae,url:E$1},Ke={...X,link:h$1(/^!?\[(label)\]\((.*?)\)/).replace(`label`,q$1).getRegex(),reflink:h$1(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,q$1).getRegex()},N={...X,emStrongRDelimAst:He,emStrongLDelim:ve,url:h$1(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,`i`).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/},We={...N,br:h$1(ae).replace(`{2,}`,`*`).getRegex(),text:h$1(N.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},I$1={normal:K,gfm:_e,pedantic:Le},M={normal:X,gfm:N,breaks:We,pedantic:Ke},Xe={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},ke=l$1=>Xe[l$1];function w(l$1,e$1){if(e$1){if(m.escapeTest.test(l$1))return l$1.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(l$1))return l$1.replace(m.escapeReplaceNoEncode,ke);return l$1}function J(l$1){try{l$1=encodeURI(l$1).replace(m.percentDecode,`%`)}catch{return null}return l$1}function V$1(l$1,e$1){let n$2=l$1.replace(m.findPipe,(i$4,s$3,o$2)=>{let a$2=!1,u$17=s$3;for(;--u$17>=0&&o$2[u$17]===`\\`;)a$2=!a$2;return a$2?`|`:` |`}).split(m.splitPipe),r$2=0;if(n$2[0].trim()||n$2.shift(),n$2.length>0&&!n$2.at(-1)?.trim()&&n$2.pop(),e$1)if(n$2.length>e$1)n$2.splice(e$1);else for(;n$2.length<e$1;)n$2.push(``);for(;r$2<n$2.length;r$2++)n$2[r$2]=n$2[r$2].trim().replace(m.slashPipe,`|`);return n$2}function z$3(l$1,e$1,t$1){let n$2=l$1.length;if(n$2===0)return``;let r$2=0;for(;r$2<n$2;){let i$4=l$1.charAt(n$2-r$2-1);if(i$4===e$1&&!t$1)r$2++;else if(i$4!==e$1&&t$1)r$2++;else break}return l$1.slice(0,n$2-r$2)}function ge(l$1,e$1){if(l$1.indexOf(e$1[1])===-1)return-1;let t$1=0;for(let n$2=0;n$2<l$1.length;n$2++)if(l$1[n$2]===`\\`)n$2++;else if(l$1[n$2]===e$1[0])t$1++;else if(l$1[n$2]===e$1[1]&&(t$1--,t$1<0))return n$2;return t$1>0?-2:-1}function fe(l$1,e$1,t$1,n$2,r$2){let i$4=e$1.href,s$3=e$1.title||null,o$2=l$1[1].replace(r$2.other.outputLinkReplace,`$1`);n$2.state.inLink=!0;let a$2={type:l$1[0].charAt(0)===`!`?`image`:`link`,raw:t$1,href:i$4,title:s$3,text:o$2,tokens:n$2.inlineTokens(o$2)};return n$2.state.inLink=!1,a$2}function Je(l$1,e$1,t$1){let n$2=l$1.match(t$1.other.indentCodeCompensation);if(n$2===null)return e$1;let r$2=n$2[1];return e$1.split(`
869
869
  `).map(i$4=>{let s$3=i$4.match(t$1.other.beginningSpace);if(s$3===null)return i$4;let[o$2]=s$3;return o$2.length>=r$2.length?i$4.slice(r$2.length):i$4}).join(`
870
870
  `)}var y$1=class{options;rules;lexer;constructor(e$1){this.options=e$1||O$1}space(e$1){let t$1=this.rules.block.newline.exec(e$1);if(t$1&&t$1[0].length>0)return{type:`space`,raw:t$1[0]}}code(e$1){let t$1=this.rules.block.code.exec(e$1);if(t$1){let n$2=t$1[0].replace(this.rules.other.codeRemoveIndent,``);return{type:`code`,raw:t$1[0],codeBlockStyle:`indented`,text:this.options.pedantic?n$2:z$3(n$2,`
@@ -2021,7 +2021,13 @@ The structure MUST be as follows:
2021
2021
  **Decision Rules (apply in order):**
2022
2022
  1. **Model Continues:** If your last response explicitly states an immediate next action *you* intend to take (e.g., "Next, I will...", "Now I'll process...", "Moving on to analyze...", indicates an intended tool call that didn't execute), OR if the response seems clearly incomplete (cut off mid-thought without a natural conclusion), then the **'model'** should speak next.
2023
2023
  2. **Question to User:** If your last response ends with a direct question specifically addressed *to the user*, then the **'user'** should speak next.
2024
- 3. **Waiting for User:** If your last response completed a thought, statement, or task *and* does not meet the criteria for Rule 1 (Model Continues) or Rule 2 (Question to User), it implies a pause expecting user input or reaction. In this case, the **'user'** should speak next.`}]}];try{let parsedResponse=await geminiClient.generateJson(contents,RESPONSE_SCHEMA,abortSignal,DEFAULT_GEMINI_FLASH_MODEL);return parsedResponse&&parsedResponse.next_speaker&&[`user`,`model`].includes(parsedResponse.next_speaker)?parsedResponse:null}catch(error$3){return console.warn(`Failed to talk to Gemini endpoint when seeing if conversation should continue.`,error$3),null}}var import_levenshtein=__toESM$1(__commonJSMin(((exports,module)=>{(function(){var collator;try{collator=typeof Intl<`u`&&Intl.Collator!==void 0?Intl.Collator(`generic`,{sensitivity:`base`}):null}catch{console.log(`Collator could not be initialized and wouldn't be used`)}var prevRow=[],str2Char=[],Levenshtein={get:function(str1,str2,options$1){var useCollator=options$1&&collator&&options$1.useCollator,str1Len=str1.length,str2Len=str2.length;if(str1Len===0)return str2Len;if(str2Len===0)return str1Len;var curCol,nextCol,i$4,j$2,tmp;for(i$4=0;i$4<str2Len;++i$4)prevRow[i$4]=i$4,str2Char[i$4]=str2.charCodeAt(i$4);prevRow[str2Len]=str2Len;var strCmp;if(useCollator)for(i$4=0;i$4<str1Len;++i$4){for(nextCol=i$4+1,j$2=0;j$2<str2Len;++j$2)curCol=nextCol,strCmp=collator.compare(str1.charAt(i$4),String.fromCharCode(str2Char[j$2]))===0,nextCol=prevRow[j$2]+(strCmp?0:1),tmp=curCol+1,nextCol>tmp&&(nextCol=tmp),tmp=prevRow[j$2+1]+1,nextCol>tmp&&(nextCol=tmp),prevRow[j$2]=curCol;prevRow[j$2]=nextCol}else for(i$4=0;i$4<str1Len;++i$4){for(nextCol=i$4+1,j$2=0;j$2<str2Len;++j$2)curCol=nextCol,strCmp=str1.charCodeAt(i$4)===str2Char[j$2],nextCol=prevRow[j$2]+(strCmp?0:1),tmp=curCol+1,nextCol>tmp&&(nextCol=tmp),tmp=prevRow[j$2+1]+1,nextCol>tmp&&(nextCol=tmp),prevRow[j$2]=curCol;prevRow[j$2]=nextCol}return nextCol}};typeof define<`u`&&define!==null&&define.amd?define(function(){return Levenshtein}):module!=null&&exports!==void 0&&module.exports===exports?module.exports=Levenshtein:typeof self<`u`&&typeof self.postMessage==`function`&&typeof self.importScripts==`function`?self.Levenshtein=Levenshtein:typeof window<`u`&&window!==null&&(window.Levenshtein=Levenshtein)})()}))(),1),ChatRecordingService=class{conversationFile=null;cachedLastConvData=null;sessionId;projectHash;queuedThoughts=[];queuedTokens=null;config;constructor(config){this.config=config,this.sessionId=config.getSessionId(),this.projectHash=getProjectHash(config.getProjectRoot())}initialize(resumedSessionData){try{if(resumedSessionData)this.conversationFile=resumedSessionData.filePath,this.sessionId=resumedSessionData.conversation.sessionId,this.updateConversation(conversation=>{conversation.sessionId=this.sessionId}),this.cachedLastConvData=null;else{let chatsDir=path.join(this.config.storage.getProjectTempDir(),`chats`);fs.mkdirSync(chatsDir,{recursive:!0});let filename=`session-${new Date().toISOString().slice(0,16).replace(/:/g,`-`)}-${this.sessionId.slice(0,8)}.json`;this.conversationFile=path.join(chatsDir,filename),this.writeConversation({sessionId:this.sessionId,projectHash:this.projectHash,startTime:new Date().toISOString(),lastUpdated:new Date().toISOString(),messages:[]})}this.queuedThoughts=[],this.queuedTokens=null}catch(error$3){throw console.error(`Error initializing chat recording service:`,error$3),error$3}}getLastMessage(conversation){return conversation.messages.at(-1)}newMessage(type,content){return{id:randomUUID$1(),timestamp:new Date().toISOString(),type,content}}recordMessage(message){if(this.conversationFile)try{this.updateConversation(conversation=>{let msg=this.newMessage(message.type,message.content);msg.type===`gemini`?(conversation.messages.push({...msg,thoughts:this.queuedThoughts,tokens:this.queuedTokens,model:this.config.getModel()}),this.queuedThoughts=[],this.queuedTokens=null):conversation.messages.push(msg)})}catch(error$3){throw console.error(`Error saving message:`,error$3),error$3}}recordThought(thought){if(this.conversationFile)try{this.queuedThoughts.push({...thought,timestamp:new Date().toISOString()})}catch(error$3){throw console.error(`Error saving thought:`,error$3),error$3}}recordMessageTokens(respUsageMetadata){if(this.conversationFile)try{let tokens={input:respUsageMetadata.promptTokenCount??0,output:respUsageMetadata.candidatesTokenCount??0,cached:respUsageMetadata.cachedContentTokenCount??0,thoughts:respUsageMetadata.thoughtsTokenCount??0,tool:respUsageMetadata.toolUsePromptTokenCount??0,total:respUsageMetadata.totalTokenCount??0};this.updateConversation(conversation=>{let lastMsg=this.getLastMessage(conversation);lastMsg&&lastMsg.type===`gemini`&&!lastMsg.tokens?(lastMsg.tokens=tokens,this.queuedTokens=null):this.queuedTokens=tokens})}catch(error$3){throw console.error(`Error updating message tokens:`,error$3),error$3}}recordToolCalls(toolCalls){if(!this.conversationFile)return;let toolRegistry=this.config.getToolRegistry(),enrichedToolCalls=toolCalls.map(toolCall=>{let toolInstance=toolRegistry.getTool(toolCall.name);return{...toolCall,displayName:toolInstance?.displayName||toolCall.name,description:toolInstance?.description||``,renderOutputAsMarkdown:toolInstance?.isOutputMarkdown||!1}});try{this.updateConversation(conversation=>{let lastMsg=this.getLastMessage(conversation);if(!lastMsg||lastMsg.type!==`gemini`||this.queuedThoughts.length>0){let newMsg={...this.newMessage(`gemini`,``),type:`gemini`,toolCalls:enrichedToolCalls,thoughts:this.queuedThoughts,model:this.config.getModel()};this.queuedThoughts.length>0&&(newMsg.thoughts=this.queuedThoughts,this.queuedThoughts=[]),this.queuedTokens&&=(newMsg.tokens=this.queuedTokens,null),conversation.messages.push(newMsg)}else{lastMsg.toolCalls||=[],lastMsg.toolCalls=lastMsg.toolCalls.map(toolCall=>{let incomingToolCall=toolCalls.find(tc=>tc.id===toolCall.id);return incomingToolCall?{...toolCall,...incomingToolCall}:toolCall});for(let toolCall of enrichedToolCalls)lastMsg.toolCalls.find(tc=>tc.id===toolCall.id)||lastMsg.toolCalls.push(toolCall)}})}catch(error$3){throw console.error(`Error adding tool call to message:`,error$3),error$3}}readConversation(){try{return this.cachedLastConvData=fs.readFileSync(this.conversationFile,`utf8`),JSON.parse(this.cachedLastConvData)}catch(error$3){if(error$3.code!==`ENOENT`)throw console.error(`Error reading conversation file:`,error$3),error$3;return{sessionId:this.sessionId,projectHash:this.projectHash,startTime:new Date().toISOString(),lastUpdated:new Date().toISOString(),messages:[]}}}writeConversation(conversation){try{if(!this.conversationFile||conversation.messages.length===0)return;if(this.cachedLastConvData!==JSON.stringify(conversation,null,2)){conversation.lastUpdated=new Date().toISOString();let newContent=JSON.stringify(conversation,null,2);this.cachedLastConvData=newContent,fs.writeFileSync(this.conversationFile,newContent)}}catch(error$3){throw console.error(`Error writing conversation file:`,error$3),error$3}}updateConversation(updateFn){let conversation=this.readConversation();updateFn(conversation),this.writeConversation(conversation)}deleteSession(sessionId$1){try{let chatsDir=path.join(this.config.storage.getProjectTempDir(),`chats`),sessionPath=path.join(chatsDir,`${sessionId$1}.json`);fs.unlinkSync(sessionPath)}catch(error$3){throw console.error(`Error deleting session:`,error$3),error$3}}},TelemetryTarget;(function(TelemetryTarget$1){TelemetryTarget$1.GCP=`gcp`,TelemetryTarget$1.LOCAL=`local`})(TelemetryTarget||={});const DEFAULT_TELEMETRY_TARGET=TelemetryTarget.LOCAL,DEFAULT_OTLP_ENDPOINT=`http://localhost:4317`;async function handleFallback(config,failedModel,authType,error$3){if(authType!==AuthType.LOGIN_WITH_GOOGLE)return null;let fallbackModel=DEFAULT_GEMINI_FLASH_MODEL;if(failedModel===fallbackModel)return null;let fallbackModelHandler=config.fallbackModelHandler;if(typeof fallbackModelHandler!=`function`)return null;try{let intent=await fallbackModelHandler(failedModel,fallbackModel,error$3);switch(intent){case`retry`:return activateFallbackMode(config,authType),!0;case`stop`:return activateFallbackMode(config,authType),!1;case`auth`:return!1;default:throw Error(`Unexpected fallback intent received from fallbackModelHandler: "${intent}"`)}}catch(handlerError){return console.error(`Fallback UI handler failed:`,handlerError),null}}function activateFallbackMode(config,authType){config.isInFallbackMode()||(config.setFallbackMode(!0),authType&&logFlashFallback(config,new FlashFallbackEvent(authType)))}function partListUnionToString(value){return partToString(value,{verbose:!0})}var StreamEventType;(function(StreamEventType$1){StreamEventType$1.CHUNK=`chunk`,StreamEventType$1.RETRY=`retry`})(StreamEventType||={});const INVALID_CONTENT_RETRY_OPTIONS={maxAttempts:3,initialDelayMs:500};function isValidResponse(response){if(response.candidates===void 0||response.candidates.length===0)return!1;let content=response.candidates[0]?.content;return content===void 0?!1:isValidContent(content)}function isValidContent(content){if(content.parts===void 0||content.parts.length===0)return!1;for(let part of content.parts)if(part===void 0||Object.keys(part).length===0||!part.thought&&part.text!==void 0&&part.text===``)return!1;return!0}function validateHistory(history){for(let content of history)if(content.role!==`user`&&content.role!==`model`)throw Error(`Role must be user or model, but got ${content.role}.`)}function extractCuratedHistory(comprehensiveHistory){if(comprehensiveHistory===void 0||comprehensiveHistory.length===0)return[];let curatedHistory=[],length=comprehensiveHistory.length,i$4=0;for(;i$4<length;)if(comprehensiveHistory[i$4].role===`user`)curatedHistory.push(comprehensiveHistory[i$4]),i$4++;else{let modelOutput=[],isValid=!0;for(;i$4<length&&comprehensiveHistory[i$4].role===`model`;)modelOutput.push(comprehensiveHistory[i$4]),isValid&&!isValidContent(comprehensiveHistory[i$4])&&(isValid=!1),i$4++;isValid&&curatedHistory.push(...modelOutput)}return curatedHistory}var EmptyStreamError=class extends Error{constructor(message){super(message),this.name=`EmptyStreamError`}},GeminiChat=class{config;generationConfig;history;sendPromise=Promise.resolve();chatRecordingService;constructor(config,generationConfig={},history=[]){this.config=config,this.generationConfig=generationConfig,this.history=history,validateHistory(history),this.chatRecordingService=new ChatRecordingService(config),this.chatRecordingService.initialize()}setSystemInstruction(sysInstr){this.generationConfig.systemInstruction=sysInstr}async sendMessageStream(params,prompt_id){await this.sendPromise;let streamDoneResolver;this.sendPromise=new Promise(resolve$10=>{streamDoneResolver=resolve$10});let userContent=createUserContent(params.message);if(!isFunctionResponse(userContent)){let userMessage=Array.isArray(params.message)?params.message:[params.message],userMessageContent=partListUnionToString(toParts(userMessage));this.chatRecordingService.recordMessage({type:`user`,content:userMessageContent})}this.history.push(userContent);let requestContents=this.getHistory(!0),self$1=this;return(async function*(){try{let lastError=Error(`Request failed after all retries.`);for(let attempt=0;attempt<INVALID_CONTENT_RETRY_OPTIONS.maxAttempts;attempt++)try{attempt>0&&(yield{type:StreamEventType.RETRY});let stream$8=await self$1.makeApiCallAndProcessStream(requestContents,params,prompt_id,userContent);for await(let chunk$1 of stream$8)yield{type:StreamEventType.CHUNK,value:chunk$1};lastError=null;break}catch(error$3){if(lastError=error$3,error$3 instanceof EmptyStreamError&&attempt<INVALID_CONTENT_RETRY_OPTIONS.maxAttempts-1){logContentRetry(self$1.config,new ContentRetryEvent(attempt,`EmptyStreamError`,INVALID_CONTENT_RETRY_OPTIONS.initialDelayMs)),await new Promise(res=>setTimeout(res,INVALID_CONTENT_RETRY_OPTIONS.initialDelayMs*(attempt+1)));continue}break}if(lastError)throw lastError instanceof EmptyStreamError&&logContentRetryFailure(self$1.config,new ContentRetryFailureEvent(INVALID_CONTENT_RETRY_OPTIONS.maxAttempts,`EmptyStreamError`)),self$1.history[self$1.history.length-1]===userContent&&self$1.history.pop(),lastError}finally{streamDoneResolver()}})()}async makeApiCallAndProcessStream(requestContents,params,prompt_id,userContent){let currentAttemptModel,streamResponse=await retryWithBackoff(()=>{let modelToUse=this.config.isInFallbackMode()?DEFAULT_GEMINI_FLASH_MODEL:this.config.getModel();if(currentAttemptModel=modelToUse,this.config.getQuotaErrorOccurred()&&modelToUse===DEFAULT_GEMINI_FLASH_MODEL)throw Error(`Please submit a new query to continue with the Flash model.`);return this.config.getContentGenerator().generateContentStream({model:modelToUse,contents:requestContents,config:{...this.generationConfig,...params.config}},prompt_id)},{shouldRetry:error$3=>{if(error$3 instanceof Error&&error$3.message){if(isSchemaDepthError(error$3.message))return!1;if(error$3.message.includes(`429`)||error$3.message.match(/5\d{2}/))return!0}return!1},onPersistent429:async(authType,error$3)=>currentAttemptModel?await handleFallback(this.config,currentAttemptModel,authType,error$3):null,authType:this.config.getContentGeneratorConfig()?.authType});return this.processStreamResponse(streamResponse,userContent)}getHistory(curated=!1){let history=curated?extractCuratedHistory(this.history):this.history;return structuredClone(history)}clearHistory(){this.history=[]}addHistory(content){this.history.push(content)}setHistory(history){this.history=history}stripThoughtsFromHistory(){this.history=this.history.map(content=>{let newContent={...content};return newContent.parts&&=newContent.parts.map(part=>{if(part&&typeof part==`object`&&`thoughtSignature`in part){let newPart={...part};return delete newPart.thoughtSignature,newPart}return part}),newContent})}setTools(tools$3){this.generationConfig.tools=tools$3}async maybeIncludeSchemaDepthContext(error$3){if(isSchemaDepthError(error$3.message)||isInvalidArgumentError(error$3.message)){let tools$3=this.config.getToolRegistry().getAllTools(),cyclicSchemaTools=[];for(let tool$2 of tools$3)(tool$2.schema.parametersJsonSchema&&hasCycleInSchema(tool$2.schema.parametersJsonSchema)||tool$2.schema.parameters&&hasCycleInSchema(tool$2.schema.parameters))&&cyclicSchemaTools.push(tool$2.displayName);if(cyclicSchemaTools.length>0){let extraDetails=`
2024
+ 3. **Waiting for User:** If your last response completed a thought, statement, or task *and* does not meet the criteria for Rule 1 (Model Continues) or Rule 2 (Question to User), it implies a pause expecting user input or reaction. In this case, the **'user'** should speak next.`}]}];try{let parsedResponse=await geminiClient.generateJson(contents,RESPONSE_SCHEMA,abortSignal,DEFAULT_GEMINI_FLASH_MODEL);return parsedResponse&&parsedResponse.next_speaker&&[`user`,`model`].includes(parsedResponse.next_speaker)?parsedResponse:null}catch(error$3){return console.warn(`Failed to talk to Gemini endpoint when seeing if conversation should continue.`,error$3),null}}var import_levenshtein=__toESM$1(__commonJSMin(((exports,module)=>{(function(){var collator;try{collator=typeof Intl<`u`&&Intl.Collator!==void 0?Intl.Collator(`generic`,{sensitivity:`base`}):null}catch{console.log(`Collator could not be initialized and wouldn't be used`)}var prevRow=[],str2Char=[],Levenshtein={get:function(str1,str2,options$1){var useCollator=options$1&&collator&&options$1.useCollator,str1Len=str1.length,str2Len=str2.length;if(str1Len===0)return str2Len;if(str2Len===0)return str1Len;var curCol,nextCol,i$4,j$2,tmp;for(i$4=0;i$4<str2Len;++i$4)prevRow[i$4]=i$4,str2Char[i$4]=str2.charCodeAt(i$4);prevRow[str2Len]=str2Len;var strCmp;if(useCollator)for(i$4=0;i$4<str1Len;++i$4){for(nextCol=i$4+1,j$2=0;j$2<str2Len;++j$2)curCol=nextCol,strCmp=collator.compare(str1.charAt(i$4),String.fromCharCode(str2Char[j$2]))===0,nextCol=prevRow[j$2]+(strCmp?0:1),tmp=curCol+1,nextCol>tmp&&(nextCol=tmp),tmp=prevRow[j$2+1]+1,nextCol>tmp&&(nextCol=tmp),prevRow[j$2]=curCol;prevRow[j$2]=nextCol}else for(i$4=0;i$4<str1Len;++i$4){for(nextCol=i$4+1,j$2=0;j$2<str2Len;++j$2)curCol=nextCol,strCmp=str1.charCodeAt(i$4)===str2Char[j$2],nextCol=prevRow[j$2]+(strCmp?0:1),tmp=curCol+1,nextCol>tmp&&(nextCol=tmp),tmp=prevRow[j$2+1]+1,nextCol>tmp&&(nextCol=tmp),prevRow[j$2]=curCol;prevRow[j$2]=nextCol}return nextCol}};typeof define<`u`&&define!==null&&define.amd?define(function(){return Levenshtein}):module!=null&&exports!==void 0&&module.exports===exports?module.exports=Levenshtein:typeof self<`u`&&typeof self.postMessage==`function`&&typeof self.importScripts==`function`?self.Levenshtein=Levenshtein:typeof window<`u`&&window!==null&&(window.Levenshtein=Levenshtein)})()}))(),1),ChatRecordingService=class{conversationFile=null;cachedLastConvData=null;sessionId;projectHash;queuedThoughts=[];queuedTokens=null;config;constructor(config){this.config=config,this.sessionId=config.getSessionId(),this.projectHash=getProjectHash(config.getProjectRoot())}initialize(resumedSessionData){try{if(resumedSessionData)this.conversationFile=resumedSessionData.filePath,this.sessionId=resumedSessionData.conversation.sessionId,this.updateConversation(conversation=>{conversation.sessionId=this.sessionId}),this.cachedLastConvData=null;else{let chatsDir=path.join(this.config.storage.getProjectTempDir(),`chats`);fs.mkdirSync(chatsDir,{recursive:!0});let filename=`session-${new Date().toISOString().slice(0,16).replace(/:/g,`-`)}-${this.sessionId.slice(0,8)}.json`;this.conversationFile=path.join(chatsDir,filename),this.writeConversation({sessionId:this.sessionId,projectHash:this.projectHash,startTime:new Date().toISOString(),lastUpdated:new Date().toISOString(),messages:[]})}this.queuedThoughts=[],this.queuedTokens=null}catch(error$3){throw console.error(`Error initializing chat recording service:`,error$3),error$3}}getLastMessage(conversation){return conversation.messages.at(-1)}newMessage(type,content){return{id:randomUUID$1(),timestamp:new Date().toISOString(),type,content}}recordMessage(message){if(this.conversationFile)try{this.updateConversation(conversation=>{let msg=this.newMessage(message.type,message.content);msg.type===`gemini`?(conversation.messages.push({...msg,thoughts:this.queuedThoughts,tokens:this.queuedTokens,model:this.config.getModel()}),this.queuedThoughts=[],this.queuedTokens=null):conversation.messages.push(msg)})}catch(error$3){throw console.error(`Error saving message:`,error$3),error$3}}recordThought(thought){if(this.conversationFile)try{this.queuedThoughts.push({...thought,timestamp:new Date().toISOString()})}catch(error$3){throw console.error(`Error saving thought:`,error$3),error$3}}recordMessageTokens(respUsageMetadata){if(this.conversationFile)try{let tokens={input:respUsageMetadata.promptTokenCount??0,output:respUsageMetadata.candidatesTokenCount??0,cached:respUsageMetadata.cachedContentTokenCount??0,thoughts:respUsageMetadata.thoughtsTokenCount??0,tool:respUsageMetadata.toolUsePromptTokenCount??0,total:respUsageMetadata.totalTokenCount??0};this.updateConversation(conversation=>{let lastMsg=this.getLastMessage(conversation);lastMsg&&lastMsg.type===`gemini`&&!lastMsg.tokens?(lastMsg.tokens=tokens,this.queuedTokens=null):this.queuedTokens=tokens})}catch(error$3){throw console.error(`Error updating message tokens:`,error$3),error$3}}recordToolCalls(toolCalls){if(!this.conversationFile)return;let toolRegistry=this.config.getToolRegistry(),enrichedToolCalls=toolCalls.map(toolCall=>{let toolInstance=toolRegistry.getTool(toolCall.name);return{...toolCall,displayName:toolInstance?.displayName||toolCall.name,description:toolInstance?.description||``,renderOutputAsMarkdown:toolInstance?.isOutputMarkdown||!1}});try{this.updateConversation(conversation=>{let lastMsg=this.getLastMessage(conversation);if(!lastMsg||lastMsg.type!==`gemini`||this.queuedThoughts.length>0){let newMsg={...this.newMessage(`gemini`,``),type:`gemini`,toolCalls:enrichedToolCalls,thoughts:this.queuedThoughts,model:this.config.getModel()};this.queuedThoughts.length>0&&(newMsg.thoughts=this.queuedThoughts,this.queuedThoughts=[]),this.queuedTokens&&=(newMsg.tokens=this.queuedTokens,null),conversation.messages.push(newMsg)}else{lastMsg.toolCalls||=[],lastMsg.toolCalls=lastMsg.toolCalls.map(toolCall=>{let incomingToolCall=toolCalls.find(tc=>tc.id===toolCall.id);return incomingToolCall?{...toolCall,...incomingToolCall}:toolCall});for(let toolCall of enrichedToolCalls)lastMsg.toolCalls.find(tc=>tc.id===toolCall.id)||lastMsg.toolCalls.push(toolCall)}})}catch(error$3){throw console.error(`Error adding tool call to message:`,error$3),error$3}}readConversation(){try{return this.cachedLastConvData=fs.readFileSync(this.conversationFile,`utf8`),JSON.parse(this.cachedLastConvData)}catch(error$3){if(error$3.code!==`ENOENT`)throw console.error(`Error reading conversation file:`,error$3),error$3;return{sessionId:this.sessionId,projectHash:this.projectHash,startTime:new Date().toISOString(),lastUpdated:new Date().toISOString(),messages:[]}}}writeConversation(conversation){try{if(!this.conversationFile||conversation.messages.length===0)return;if(this.cachedLastConvData!==JSON.stringify(conversation,null,2)){conversation.lastUpdated=new Date().toISOString();let newContent=JSON.stringify(conversation,null,2);this.cachedLastConvData=newContent,fs.writeFileSync(this.conversationFile,newContent)}}catch(error$3){throw console.error(`Error writing conversation file:`,error$3),error$3}}updateConversation(updateFn){let conversation=this.readConversation();updateFn(conversation),this.writeConversation(conversation)}deleteSession(sessionId$1){try{let chatsDir=path.join(this.config.storage.getProjectTempDir(),`chats`),sessionPath=path.join(chatsDir,`${sessionId$1}.json`);fs.unlinkSync(sessionPath)}catch(error$3){throw console.error(`Error deleting session:`,error$3),error$3}}};init_esm$10();
2025
+ /**
2026
+ * @license
2027
+ * Copyright 2025 Google LLC
2028
+ * SPDX-License-Identifier: Apache-2.0
2029
+ */
2030
+ var TelemetryTarget;(function(TelemetryTarget$1){TelemetryTarget$1.GCP=`gcp`,TelemetryTarget$1.LOCAL=`local`})(TelemetryTarget||={});const DEFAULT_TELEMETRY_TARGET=TelemetryTarget.LOCAL,DEFAULT_OTLP_ENDPOINT=`http://localhost:4317`;async function handleFallback(config,failedModel,authType,error$3){if(authType!==AuthType.LOGIN_WITH_GOOGLE)return null;let fallbackModel=DEFAULT_GEMINI_FLASH_MODEL;if(failedModel===fallbackModel)return null;let fallbackModelHandler=config.fallbackModelHandler;if(typeof fallbackModelHandler!=`function`)return null;try{let intent=await fallbackModelHandler(failedModel,fallbackModel,error$3);switch(intent){case`retry`:return activateFallbackMode(config,authType),!0;case`stop`:return activateFallbackMode(config,authType),!1;case`auth`:return!1;default:throw Error(`Unexpected fallback intent received from fallbackModelHandler: "${intent}"`)}}catch(handlerError){return console.error(`Fallback UI handler failed:`,handlerError),null}}function activateFallbackMode(config,authType){config.isInFallbackMode()||(config.setFallbackMode(!0),authType&&logFlashFallback(config,new FlashFallbackEvent(authType)))}function partListUnionToString(value){return partToString(value,{verbose:!0})}var StreamEventType;(function(StreamEventType$1){StreamEventType$1.CHUNK=`chunk`,StreamEventType$1.RETRY=`retry`})(StreamEventType||={});const INVALID_CONTENT_RETRY_OPTIONS={maxAttempts:3,initialDelayMs:500};function isValidResponse(response){if(response.candidates===void 0||response.candidates.length===0)return!1;let content=response.candidates[0]?.content;return content===void 0?!1:isValidContent(content)}function isValidContent(content){if(content.parts===void 0||content.parts.length===0)return!1;for(let part of content.parts)if(part===void 0||Object.keys(part).length===0||!part.thought&&part.text!==void 0&&part.text===``)return!1;return!0}function validateHistory(history){for(let content of history)if(content.role!==`user`&&content.role!==`model`)throw Error(`Role must be user or model, but got ${content.role}.`)}function extractCuratedHistory(comprehensiveHistory){if(comprehensiveHistory===void 0||comprehensiveHistory.length===0)return[];let curatedHistory=[],length=comprehensiveHistory.length,i$4=0;for(;i$4<length;)if(comprehensiveHistory[i$4].role===`user`)curatedHistory.push(comprehensiveHistory[i$4]),i$4++;else{let modelOutput=[],isValid=!0;for(;i$4<length&&comprehensiveHistory[i$4].role===`model`;)modelOutput.push(comprehensiveHistory[i$4]),isValid&&!isValidContent(comprehensiveHistory[i$4])&&(isValid=!1),i$4++;isValid&&curatedHistory.push(...modelOutput)}return curatedHistory}var EmptyStreamError=class extends Error{constructor(message){super(message),this.name=`EmptyStreamError`}},GeminiChat=class{config;generationConfig;history;sendPromise=Promise.resolve();chatRecordingService;constructor(config,generationConfig={},history=[]){this.config=config,this.generationConfig=generationConfig,this.history=history,validateHistory(history),this.chatRecordingService=new ChatRecordingService(config),this.chatRecordingService.initialize()}setSystemInstruction(sysInstr){this.generationConfig.systemInstruction=sysInstr}async sendMessageStream(params,prompt_id){await this.sendPromise;let streamDoneResolver;this.sendPromise=new Promise(resolve$10=>{streamDoneResolver=resolve$10});let userContent=createUserContent(params.message);if(!isFunctionResponse(userContent)){let userMessage=Array.isArray(params.message)?params.message:[params.message],userMessageContent=partListUnionToString(toParts(userMessage));this.chatRecordingService.recordMessage({type:`user`,content:userMessageContent})}this.history.push(userContent);let requestContents=this.getHistory(!0),self$1=this;return(async function*(){try{let lastError=Error(`Request failed after all retries.`);for(let attempt=0;attempt<INVALID_CONTENT_RETRY_OPTIONS.maxAttempts;attempt++)try{attempt>0&&(yield{type:StreamEventType.RETRY});let stream$8=await self$1.makeApiCallAndProcessStream(requestContents,params,prompt_id,userContent);for await(let chunk$1 of stream$8)yield{type:StreamEventType.CHUNK,value:chunk$1};lastError=null;break}catch(error$3){if(lastError=error$3,error$3 instanceof EmptyStreamError&&attempt<INVALID_CONTENT_RETRY_OPTIONS.maxAttempts-1){logContentRetry(self$1.config,new ContentRetryEvent(attempt,`EmptyStreamError`,INVALID_CONTENT_RETRY_OPTIONS.initialDelayMs)),await new Promise(res=>setTimeout(res,INVALID_CONTENT_RETRY_OPTIONS.initialDelayMs*(attempt+1)));continue}break}if(lastError)throw lastError instanceof EmptyStreamError&&logContentRetryFailure(self$1.config,new ContentRetryFailureEvent(INVALID_CONTENT_RETRY_OPTIONS.maxAttempts,`EmptyStreamError`)),self$1.history[self$1.history.length-1]===userContent&&self$1.history.pop(),lastError}finally{streamDoneResolver()}})()}async makeApiCallAndProcessStream(requestContents,params,prompt_id,userContent){let currentAttemptModel,streamResponse=await retryWithBackoff(()=>{let modelToUse=this.config.isInFallbackMode()?DEFAULT_GEMINI_FLASH_MODEL:this.config.getModel();if(currentAttemptModel=modelToUse,this.config.getQuotaErrorOccurred()&&modelToUse===DEFAULT_GEMINI_FLASH_MODEL)throw Error(`Please submit a new query to continue with the Flash model.`);return this.config.getContentGenerator().generateContentStream({model:modelToUse,contents:requestContents,config:{...this.generationConfig,...params.config}},prompt_id)},{shouldRetry:error$3=>{if(error$3 instanceof Error&&error$3.message){if(isSchemaDepthError(error$3.message))return!1;if(error$3.message.includes(`429`)||error$3.message.match(/5\d{2}/))return!0}return!1},onPersistent429:async(authType,error$3)=>currentAttemptModel?await handleFallback(this.config,currentAttemptModel,authType,error$3):null,authType:this.config.getContentGeneratorConfig()?.authType});return this.processStreamResponse(streamResponse,userContent)}getHistory(curated=!1){let history=curated?extractCuratedHistory(this.history):this.history;return structuredClone(history)}clearHistory(){this.history=[]}addHistory(content){this.history.push(content)}setHistory(history){this.history=history}stripThoughtsFromHistory(){this.history=this.history.map(content=>{let newContent={...content};return newContent.parts&&=newContent.parts.map(part=>{if(part&&typeof part==`object`&&`thoughtSignature`in part){let newPart={...part};return delete newPart.thoughtSignature,newPart}return part}),newContent})}setTools(tools$3){this.generationConfig.tools=tools$3}async maybeIncludeSchemaDepthContext(error$3){if(isSchemaDepthError(error$3.message)||isInvalidArgumentError(error$3.message)){let tools$3=this.config.getToolRegistry().getAllTools(),cyclicSchemaTools=[];for(let tool$2 of tools$3)(tool$2.schema.parametersJsonSchema&&hasCycleInSchema(tool$2.schema.parametersJsonSchema)||tool$2.schema.parameters&&hasCycleInSchema(tool$2.schema.parameters))&&cyclicSchemaTools.push(tool$2.displayName);if(cyclicSchemaTools.length>0){let extraDetails=`
2025
2031
 
2026
2032
  This error was probably caused by cyclic schema references in one of the following tools, try disabling them with excludeTools:
2027
2033
 
@@ -2194,4 +2200,4 @@ const SCREEN_READER_USER_PREFIX=`User: `,InputPrompt=({buffer:buffer$1,onSubmit,
2194
2200
  `),additionalLines$1=[];if(remainingGhostText){let textLines=remainingGhostText.split(`
2195
2201
  `);for(let textLine of textLines){let words$1=textLine.split(` `),currentLine=``;for(let word of words$1){let prospectiveLine=currentLine?`${currentLine} ${word}`:word;if(stringWidth(prospectiveLine)>inputWidth){currentLine&&additionalLines$1.push(currentLine);let wordToProcess=word;for(;stringWidth(wordToProcess)>inputWidth;){let part=``,wordCP=toCodePoints(wordToProcess),partWidth=0,splitIndex=0;for(let i$4=0;i$4<wordCP.length;i$4++){let char=wordCP[i$4],charWidth=stringWidth(char);if(partWidth+charWidth>inputWidth)break;part+=char,partWidth+=charWidth,splitIndex=i$4+1}additionalLines$1.push(part),wordToProcess=cpSlice(wordToProcess,splitIndex)}currentLine=wordToProcess}else currentLine=prospectiveLine}currentLine&&additionalLines$1.push(currentLine)}}return{inlineGhost:inlineGhost$1,additionalLines:additionalLines$1}},[completion.promptCompletion.text,buffer$1.text,buffer$1.lines,buffer$1.cursor,inputWidth])();return jsxs(Fragment,{children:[jsxs(Box_default,{borderStyle:`round`,borderColor:borderColor??(shellModeActive?theme.status.warning:focus?theme.border.focused:theme.border.default),paddingX:1,children:[jsx(Text,{color:shellModeActive?theme.status.warning:theme.text.accent,children:shellModeActive?reverseSearchActive?jsxs(Text,{color:theme.text.link,"aria-label":`User: `,children:[`(r:)`,` `]}):`! `:`> `}),jsx(Box_default,{flexGrow:1,flexDirection:`column`,children:buffer$1.text.length===0&&placeholder?focus?jsxs(Text,{children:[import_source$1.default.inverse(placeholder.slice(0,1)),jsx(Text,{color:theme.text.secondary,children:placeholder.slice(1)})]}):jsx(Text,{color:theme.text.secondary,children:placeholder}):linesToRender.map((lineText,visualIdxInRenderedSet)=>{let tokens=parseInputForHighlighting(lineText,visualIdxInRenderedSet),cursorVisualRow=cursorVisualRowAbsolute-scrollVisualRow,isOnCursorLine=focus&&visualIdxInRenderedSet===cursorVisualRow,renderedLine=[],charCount=0;tokens.forEach((token$1,tokenIdx)=>{let display=token$1.text;if(isOnCursorLine){let relativeVisualColForHighlight=cursorVisualColAbsolute,tokenStart=charCount,tokenEnd=tokenStart+cpLen(token$1.text);if(relativeVisualColForHighlight>=tokenStart&&relativeVisualColForHighlight<tokenEnd){let charToHighlight=cpSlice(token$1.text,relativeVisualColForHighlight-tokenStart,relativeVisualColForHighlight-tokenStart+1),highlighted=import_source$1.default.inverse(charToHighlight);display=cpSlice(token$1.text,0,relativeVisualColForHighlight-tokenStart)+highlighted+cpSlice(token$1.text,relativeVisualColForHighlight-tokenStart+1)}charCount=tokenEnd}let color=token$1.type===`command`||token$1.type===`file`?theme.text.accent:theme.text.primary;renderedLine.push(jsx(Text,{color,children:display},`token-${tokenIdx}`))});let currentLineGhost=isOnCursorLine?inlineGhost:``;isOnCursorLine&&cursorVisualColAbsolute===cpLen(lineText)&&(currentLineGhost||renderedLine.push(jsx(Text,{children:import_source$1.default.inverse(` `)},`cursor-end-${cursorVisualColAbsolute}`)));let showCursorBeforeGhost=focus&&isOnCursorLine&&cursorVisualColAbsolute===cpLen(lineText)&&currentLineGhost;return jsx(Box_default,{height:1,children:jsxs(Text,{children:[renderedLine,showCursorBeforeGhost&&import_source$1.default.inverse(` `),currentLineGhost&&jsx(Text,{color:theme.text.secondary,children:currentLineGhost})]})},`line-${visualIdxInRenderedSet}`)}).concat(additionalLines.map((ghostLine,index)=>{let padding=Math.max(0,inputWidth-stringWidth(ghostLine));return jsxs(Text,{color:theme.text.secondary,children:[ghostLine,` `.repeat(padding)]},`ghost-line-${index}`)}))})]}),completion.showSuggestions&&jsx(Box_default,{paddingRight:2,children:jsx(SuggestionsDisplay,{suggestions:completion.suggestions,activeIndex:completion.activeSuggestionIndex,isLoading:completion.isLoadingSuggestions,width:suggestionsWidth,scrollOffset:completion.visibleStartIndex,userInput:buffer$1.text})}),reverseSearchActive&&jsx(Box_default,{paddingRight:2,children:jsx(SuggestionsDisplay,{suggestions:reverseSearchCompletion.suggestions,activeIndex:reverseSearchCompletion.activeSuggestionIndex,isLoading:reverseSearchCompletion.isLoadingSuggestions,width:suggestionsWidth,scrollOffset:reverseSearchCompletion.visibleStartIndex,userInput:buffer$1.text})})]})};function createMinimalConfig(){return new Config({sessionId:`blink`,targetDir:process.cwd(),cwd:process.cwd(),debugMode:!1,model:`gemini-1.5-flash`,telemetry:{enabled:!1}})}const convertToCommands=slashCommands=>slashCommands.map(cmd=>({name:cmd.name,altNames:cmd.altNames,description:cmd.description,kind:`built-in`,completion:async(context,partialArg)=>cmd.completion?.(partialArg)??[],subCommands:cmd.subcommands?convertToCommands(cmd.subcommands):void 0}));function TextInput({onSubmit,placeholder,slashCommands,onLayoutChange,borderColor}){let config=useMemo(()=>createMinimalConfig(),[]),[userMessages,setUserMessages]=useState([]),{stdout:stdout$1}=use_stdout_default(),[isSlashOpen,setIsSlashOpen]=useState(!1),inputWidth=stdout$1.columns,buffer$1=useTextBuffer({viewport:{width:inputWidth-6,height:stdout$1.rows-15},isValidPath:filePath=>fs$1.existsSync(filePath),onChange:value=>{value.startsWith(`/`)?setIsSlashOpen(!0):setIsSlashOpen(prev=>(prev&&onLayoutChange?.(),!1))}}),commands=useMemo(()=>convertToCommands(slashCommands??[]),[slashCommands]);return jsx(Box_default,{marginBottom:isSlashOpen?1:0,flexDirection:`column`,children:jsx(InputPrompt,{borderColor,buffer:buffer$1,onSubmit:value=>{let args=value.trim().split(` `),first$1=args[0];if(first$1&&first$1.startsWith(`/`)){let commandName=first$1.slice(1),commandIndex=slashCommands?.findIndex(c$3=>c$3.name===commandName||(c$3.altNames?c$3.altNames.includes(commandName):!1))??-1;if(commandIndex!==-1&&slashCommands){let root$31=slashCommands[commandIndex],rest=args.slice(1),execute=(cmd,remaining)=>{if(remaining.length>0&&cmd.subcommands&&cmd.subcommands.length>0){let subName=remaining[0],next=cmd.subcommands.find(sc=>sc.name===subName||(sc.altNames?sc.altNames.includes(subName):!1));if(next)return execute(next,remaining.slice(1))}cmd.action(remaining.join(` `))};execute(root$31,rest);return}}setUserMessages(prev=>[value,...prev]),onSubmit(value)},placeholder,userMessages,onClearScreen:()=>{},config,slashCommands:commands,commandContext:{services:{config,settings:{},git:void 0,logger:console},ui:{addItem:()=>{},clear:()=>{},setDebugMessage:()=>{},pendingItem:null,setPendingItem:()=>{},loadHistory:()=>{},toggleCorgiMode:()=>{},toggleVimEnabled:async()=>!1,setGeminiMdFileCount:()=>{},reloadCommands:()=>{}},session:{stats:{},sessionShellAllowlist:new Set}},inputWidth:inputWidth-2,suggestionsWidth:inputWidth-2,shellModeActive:!1,setShellModeActive:()=>{}})})}function KeypressProvider({children}){let config=useMemo(()=>createMinimalConfig(),[]);return jsx(KeypressProvider$1,{kittyProtocolEnabled:!0,config,children})}var text_input_default=TextInput;function useTerminalSize(){let{stdout:stdout$1}=use_stdout_default(),[size,setSize]=useState({columns:process.stdout.columns,rows:process.stdout.rows});return 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}}var import_source=__toESM$1(require_source$3());const colors={run:`#1f86ed`,edit:`#e8900e`};async function startDev({directory}){await render_default(jsx(KeypressProvider,{children:jsx(Root,{directory})}),{exitOnCtrlC:!1}).waitUntilExit()}const Root=({directory})=>{let size=useTerminalSize(),dev$1=useDevMode({directory,onBuildStart:()=>{console.log(import_source.default.gray(`⚙ Compiling...`))},onBuildSuccess:result=>{console.log(import_source.default.green(`⚙ Compiled in ${Math.round(result.duration)}ms`))},onBuildError:error$3=>{console.log(import_source.default.red(`⚙ ${error$3.message}${error$3.file?` (${error$3.file})`:``}`))},onEnvLoaded:keys=>{let keysText=keys.map(key=>import_source.default.dim(key)).join(`, `);keysText.length===0&&(keysText=import_source.default.dim(`(none)`)),console.log(import_source.default.gray(`⚙ Loaded .env.local:`),keysText)},onDevhookConnected:url$5=>{console.log(import_source.default.gray(`⚙ Send webhooks from anywhere: ${url$5}`))},onAgentLog:log$5=>{let logColor=log$5.level===`error`?`red`:`white`;console.log(import_source.default[logColor](`@ ${log$5.message}`))},onDevhookRequest:request$2=>{console.log(import_source.default.blue(`↩ `)+import_source.default.gray(`method=${request$2.method} path=${request$2.path} status=${request$2.status}`))},onError:error$3=>{console.log(import_source.default.red(`⚙ ${error$3}`))},onModeChange:mode=>{switch(mode){case`edit`:console.log(import_source.default.hex(colors.edit).bold(`✎ entering edit mode`)+`
2196
2202
  `);break;case`run`:console.log(import_source.default.hex(colors.run).bold(`⟳ entering run mode`)+`
2197
- `);break}}}),{exit}=use_app_default(),[exitArmed,setExitArmed]=useState(!1),exitTimerRef=useRef(void 0);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)}});let keymaps=useMemo(()=>({"⏎":`send`,"Ctrl+E":`toggle mode`,"Ctrl+N":`new chat`,"Ctrl+C":`quit`}),[]),keybindSuggestion=useMemo(()=>{if(exitArmed)return`Ctrl+C again to quit`;if(dev$1.chat.queuedMessages.length>0)return`${dev$1.chat.queuedMessages.length} message(s) queued - Press [Escape] to stop and process queue`;if(dev$1.chat.status===`streaming`)return`Press [Escape] to stop the agent!`},[exitArmed,dev$1.chat.status,dev$1.chat.queuedMessages.length]),{write:write$1}=use_stdout_default(),[epoch,setEpoch]=useState(0),resetTerminal=useCallback(()=>{write$1(`\x1Bc`),write$1(`\x1B[?25l`),setEpoch(prev=>prev+1)},[write$1]),initialSizeRef=useRef(size);useEffect(()=>{(initialSizeRef.current.columns!==size.columns||initialSizeRef.current.rows!==size.rows)&&(resetTerminal(),initialSizeRef.current=size)},[size.columns,size.rows,resetTerminal]),useEffect(()=>{resetTerminal()},[dev$1.chat.id,resetTerminal]);let optionCommand=useMemo(()=>{if(dev$1.options.schema)return{name:`option`,description:`Adjust your agent's options.`,action:()=>{},completion:async()=>Object.keys(dev$1.options.schema),subcommands:Object.entries(dev$1.options.schema).map(([key,value])=>({name:key,description:value.label??``,action:args=>{dev$1.options.setOption(key,args)},completion:async partialArg=>value.values.map(v$1=>v$1.id)}))}},[dev$1.options]);return dev$1.chat.loading?null:jsxs(Fragment,{children:[jsx(Keybinds,{resetChat:async()=>{await dev$1.chat.resetChat(),resetTerminal()},stopStreaming:()=>{dev$1.chat.stopStreaming()},toggleMode:()=>{dev$1.chat.stopStreaming(),dev$1.toggleMode()},newChat:dev$1.newChat,isActive:!dev$1.approval}),dev$1.chat.error?jsx(Box_default,{marginTop:1,children:jsx(Text,{color:`red`,children:dev$1.chat.error})}):null,jsxs(Box_default,{flexDirection:`column`,children:[jsx(Static,{items:[{},...dev$1.chat.messages],children:(message,index)=>index===0?jsxs(Box_default,{flexDirection:`column`,marginBottom:1,children:[jsxs(Box_default,{children:[jsx(Text,{bold:!0,children:`blink■`}),jsx(Text,{color:`gray`,children:` agent development`})]}),jsxs(Box_default,{marginTop:1,flexDirection:`column`,children:[jsxs(Text,{color:`gray`,children:[`Edit `,dev$1.build.entrypoint,` to hot-reload your agent.`]}),jsxs(Text,{color:`gray`,children:[`Run `,jsx(Text,{color:`blue`,children:`blink deploy`}),` to use your agent in the cloud.`]})]})]},`banner`):jsx(Message,{message,previousMessage:index>1?dev$1.chat.messages.at(index-2):void 0,nextMessage:index<dev$1.chat.messages.length-2?dev$1.chat.messages.at(index+2):void 0,maxWidth:size.columns-2},message.id)},`messages-${dev$1.chat.id}-${epoch}`),dev$1.chat.streamingMessage?jsx(Message,{message:dev$1.chat.streamingMessage,nextMessage:void 0,previousMessage:dev$1.chat.messages.length>0?dev$1.chat.messages.at(dev$1.chat.messages.length-1):void 0,streaming:!0,maxWidth:size.columns-2},dev$1.chat.streamingMessage.id):null,dev$1.showWaitingPlaceholder?jsx(AssistantWaitingPlaceholder,{maxWidth:size.columns-2}):null]}),jsx(Box_default,{flexDirection:`column`,marginTop:1,children:dev$1.approval?jsx(ApprovalInput,{onConfirm:dev$1.approval.approve,onCancel:()=>{}}):jsx(text_input_default,{borderColor:colors[dev$1.mode],slashCommands:[{name:`help`,description:`Show help information`,action:()=>{getHelpText(dev$1.build.entrypoint).forEach(line$1=>console.log(line$1))}},{name:`reset`,altNames:[`clear`],description:`Reset the chat`,action:async()=>{await dev$1.chat.resetChat(),resetTerminal()}},{name:`switch`,description:`Switch to a different chat`,action:args=>{dev$1.switchChat(args)},completion:async partialArg=>dev$1.chats.filter(id=>id.startsWith(partialArg))},{name:`new`,description:`Create a new chat`,action:args=>{dev$1.switchChat(args)}},{name:`edit`,description:`Switch to Edit mode (AI helps build your agent)`,action:()=>{dev$1.chat.stopStreaming(),dev$1.setMode(`edit`)}},{name:`run`,description:`Switch to Run mode (use your agent)`,action:()=>{dev$1.chat.stopStreaming(),dev$1.setMode(`run`)}},...optionCommand?[optionCommand]:[]],onSubmit:value=>(dev$1.chat.sendMessage({id:crypto.randomUUID(),role:`user`,parts:[{type:`text`,text:value}],created_at:new Date().toISOString(),metadata:void 0,mode:dev$1.mode}),!0),onLayoutChange:()=>{}})}),jsxs(Box_default,{children:[jsxs(Box_default,{marginLeft:2,gap:3,children:[jsxs(Text,{color:`gray`,children:[`mode: `,jsx(Text,{color:colors[dev$1.mode],children:dev$1.mode})]}),jsxs(Text,{color:`gray`,children:[`chat: `,jsx(Text,{children:dev$1.chat.id})]})]}),jsx(Spacer,{}),keybindSuggestion?jsx(Text,{color:`yellow`,children:keybindSuggestion+` `}):jsx(Box_default,{gap:3,marginRight:2,children:Object.entries(keymaps).map(([key,value])=>jsx(Text,{children:import_source.default.gray.dim(key+` `+value)},key))})]}),dev$1.tokenUsage?jsxs(Box_default,{marginLeft:2,gap:1,children:[jsx(Text,{color:`gray`,children:`tokens:`}),jsx(Text,{color:`cyan`,children:formatTokenCount(dev$1.tokenUsage.inputTokens)}),jsx(Text,{color:`gray`,children:`→`}),jsx(Text,{color:`green`,children:formatTokenCount(dev$1.tokenUsage.outputTokens)}),dev$1.tokenUsage.cachedInputTokens!==void 0&&dev$1.tokenUsage.cachedInputTokens>0?jsxs(Text,{children:[jsx(Text,{color:`gray`,children:`(`}),jsx(Text,{color:`blue`,children:formatTokenCount(dev$1.tokenUsage.cachedInputTokens)}),jsx(Text,{color:`gray`,children:` cached)`})]}):null]}):null,dev$1.options.schema&&dev$1.options.selected&&!keybindSuggestion?jsxs(Box_default,{marginLeft:2,justifyContent:`space-between`,flexDirection:`row`,children:[jsxs(Box_default,{flexDirection:`row`,gap:1,children:[jsx(Text,{color:`gray`,wrap:`truncate-end`,children:`options:`}),jsx(Box_default,{flexDirection:`row`,gap:1,children:Object.entries(dev$1.options.selected).map(([key,value])=>dev$1.options.schema[key]?jsxs(Box_default,{flexDirection:`row`,flexWrap:`wrap`,children:[jsxs(Text,{color:`gray`,wrap:`truncate-end`,children:[key,`=`]}),jsx(Text,{color:`gray`,wrap:`truncate-end`,children:value})]},key):null)})]}),jsx(Box_default,{marginRight:2,children:jsxs(Text,{color:`gray`,children:[`Set with `,jsx(Text,{color:`blue`,children:`/option`})]})})]}):null]})},ApprovalInput=({onConfirm,onCancel})=>{let[selected,setSelected]=useState(`yes`),[processing$2,setProcessing]=useState(!1),processingRef=useRef(!1),handleConfirm=React.useCallback(async approved=>{if(!processingRef.current){processingRef.current=!0,setProcessing(!0);try{await onConfirm(approved)}catch(err){console.error(`Error processing approval:`,err)}finally{processingRef.current=!1,setProcessing(!1)}}},[onConfirm]),handleCancel=React.useCallback(()=>{processingRef.current||onCancel()},[onCancel]);return use_input_default((input,key)=>{let lower=input.toLowerCase();if(key.escape){handleCancel();return}if(lower===`y`){handleConfirm(!0);return}if(lower===`n`){handleConfirm(!1);return}if(key.leftArrow||key.rightArrow||key.tab){setSelected(prev=>prev===`yes`?`no`:`yes`);return}key.return&&handleConfirm(selected===`yes`)}),jsxs(Box_default,{gap:2,flexDirection:`row`,children:[jsx(Text,{children:processing$2?`Processing...`:`Approve?`}),!processing$2&&jsxs(Fragment,{children:[jsx(Box_default,{children:jsxs(Text,{children:[`[`,jsx(Text,{color:selected===`yes`?`green`:`gray`,bold:selected===`yes`,children:`Yes`}),`/`,jsx(Text,{color:selected===`no`?`red`:`gray`,bold:selected===`no`,children:`No`}),`]`]})}),jsx(Text,{color:`gray`,children:`(y/n, ←/→ then ⏎)`})]})]})},Keybinds=({resetChat,stopStreaming,toggleMode,newChat,isActive})=>(use_input_default((input,key)=>{key.ctrl&&input===`r`&&resetChat(),key.ctrl&&input===`e`&&toggleMode(),key.ctrl&&input===`n`&&newChat(),key.escape&&stopStreaming()},{isActive}),null),Message=React.memo(({message,previousMessage,maxWidth,streaming})=>{let prefix,contentColor,marginTop=previousMessage?1:0;switch(message.role){case`system`:prefix=jsx(Text,{children:`t `}),contentColor=`gray`;break;case`user`:prefix=jsx(Text,{color:`magenta`,bold:!0,children:`▎`}),contentColor=`gray`;break;case`assistant`:let isEditMode=message.mode===`edit`;prefix=jsx(Text,{color:isEditMode?colors.edit:colors.run,children:`> `}),contentColor=`white`;break}let content=jsx(Box_default,{gap:1,flexDirection:`column`,width:maxWidth,children:message.parts.map((part,index)=>{if(part.type===`text`)return jsx(markdown_default,{id:message.id,maxWidth,streaming,children:part.text},index);if(part.type===`reasoning`)return jsxs(Text,{color:`gray`,children:[`Reasoning: `,part.text]},index);if(isToolOrDynamicToolUIPart(part))return jsx(ToolCall,{part,maxWidth,streaming},index)}).filter(Boolean)});return jsxs(Box_default,{marginTop,flexDirection:`row`,children:[jsx(Box_default,{children:jsx(Text,{color:contentColor,children:prefix})}),content]})},(prev,next)=>prev.maxWidth===next.maxWidth?!!(prev.nextMessage&&next.nextMessage&&prev.nextMessage.id===next.nextMessage.id):!1),AssistantWaitingPlaceholder=({maxWidth})=>jsxs(Box_default,{marginTop:1,flexDirection:`row`,children:[jsx(Box_default,{children:jsx(Text,{color:`white`,children:null})}),jsx(Box_default,{width:maxWidth,children:jsxs(Text,{color:`gray`,children:[jsx(build_default,{}),` Waiting for response...`]})})]}),ToolCall=({part,maxWidth,streaming})=>{let name$2=getToolOrDynamicToolName(part),input=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]),state=useMemo(()=>{switch(part.state){case`input-available`:case`input-streaming`:return streaming?`streaming`:`error`;case`output-available`:return isToolApprovalOutput(part.output)&&part.output.outcome===`pending`?`pending-approval`:`done`;case`output-error`:return`error`}},[part,streaming]),output=useMemo(()=>{if(isToolApprovalOutput(part.output))return{state:part.output.outcome};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]),error$3=useMemo(()=>{if(part.state===`output-error`)return part.errorText},[part]),icon=useMemo(()=>{switch(state){case`done`:case`error`:return`⚒`;case`pending-approval`:return`⧗`}return jsx(build_default,{type:`dots`})},[state]);return jsxs(Box_default,{flexDirection:`column`,children:[jsxs(Box_default,{gap:1,children:[jsx(Text,{color:state===`error`?`red`:`gray`,bold:!0,children:icon}),jsx(Text,{children:name$2})]}),jsxs(Box_default,{marginLeft:2,flexDirection:`column`,overflowX:`hidden`,width:maxWidth?maxWidth-4:void 0,gap:0,children:[jsx(Text,{color:`gray`,bold:!0,children:`Input:`}),Object.entries(input).map(([key,value])=>jsxs(Box_default,{marginLeft:2,children:[jsx(Text,{color:`gray`,children:key}),jsx(Text,{color:`blackBright`,children:`=`}),jsx(Box_default,{width:maxWidth?maxWidth-6-1-2-key.length:void 0,children:jsx(Text,{wrap:`truncate-middle`,children:value})})]},key)),output&&jsxs(Fragment,{children:[jsx(Text,{color:`gray`,bold:!0,children:`Output:`}),typeof output==`string`?jsx(Box_default,{marginLeft:2,children:jsx(Text,{children:output})}):jsx(Box_default,{flexDirection:`column`,children:Object.entries(output).map(([key,value])=>jsxs(Box_default,{marginLeft:2,children:[jsx(Text,{color:`gray`,children:key}),jsx(Text,{color:`blackBright`,children:`=`}),jsx(Box_default,{width:maxWidth?maxWidth-6-1-key.length:void 0,children:jsx(Text,{wrap:`truncate-middle`,children:value})})]},key))})]}),error$3&&jsxs(Fragment,{children:[jsx(Text,{color:`gray`,bold:!0,children:`Error:`}),jsx(Text,{color:`red`,children:error$3})]})]})]})};function getHelpText(entrypoint){return[``,import_source.default.bold(`How to Build Your Agent`),``,`Blink has two modes that work together to help you build and test agents:`,``,import_source.default.hex(colors.edit).bold(` Edit Mode`)+` - AI helps you build your agent`,` • Describe the agent you want to build`,` • The AI will modify your agent code based on your instructions`,` • Changes are written to ${relative$1(process.cwd(),entrypoint)} and auto-reload`,``,import_source.default.blue.bold(` Run Mode`)+` - Use your agent`,` • Chat with your agent to see how it behaves`,` • Discover what works and what needs improvement`,``,import_source.default.bold(`The Development Loop:`),` 1. Start in `+import_source.default.hex(colors.edit)(`Edit mode`)+` (Ctrl+E or /edit) and describe what your agent should do`,` Example: "Add a tool that can search the web"`,``,` 2. Switch to `+import_source.default.blue(`Run mode`)+` (Ctrl+E or /run) to use your agent`,` Try it out and see if it does what you expect`,``,` 3. Toggle back to `+import_source.default.hex(colors.edit)(`Edit mode`)+` to refine based on what you learned`,` The edit AI can see the entire chat history, including your conversations!`,` Example: "The search tool failed when I asked about X"`,``,` 4. Repeat until your agent works perfectly`,``,` 5. Deploy with `+import_source.default.bold(`blink deploy`)+` when ready`,``,import_source.default.dim(`Tip: Use /reset to start fresh, /new to create separate test chats`)]}function formatTokenCount(count$1){return count$1>=1e6?`${(count$1/1e6).toFixed(1)}M`:count$1>=1e3?`${(count$1/1e3).toFixed(1)}K`:count$1.toString()}async function dev(directory){if(!directory){let dotBlinkPath=await findNearestEntry(process.cwd(),`.blink`);dotBlinkPath&&existsSync$1(join$1(dotBlinkPath,`build`))&&(dotBlinkPath=void 0),directory=dotBlinkPath||process.cwd()}await migrateBlinkToData(directory);let exitWithDump=error$3=>{writeFileSync$1(`error.dump`,inspect$1(error$3,{depth:null})),process.exit(1)};process.addListener(`uncaughtException`,error$3=>{exitWithDump(error$3)}),process.addListener(`unhandledRejection`,error$3=>{exitWithDump(error$3)});let token$1=await getAuthToken();token$1&&(process.env.BLINK_TOKEN=token$1);try{await startDev({directory})}catch(err){console.error(err),process.exit(1)}finally{process.exit(0)}}export{dev as default};
2203
+ `);break}}}),{exit}=use_app_default(),[exitArmed,setExitArmed]=useState(!1),exitTimerRef=useRef(void 0);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)}});let keymaps=useMemo(()=>({"⏎":`send`,"Ctrl+E":`toggle mode`,"Ctrl+N":`new chat`,"Ctrl+C":`quit`}),[]),keybindSuggestion=useMemo(()=>{if(exitArmed)return`Ctrl+C again to quit`;if(dev$1.chat.queuedMessages.length>0)return`${dev$1.chat.queuedMessages.length} message(s) queued - Press [Escape] to stop and process queue`;if(dev$1.chat.status===`streaming`)return`Press [Escape] to stop the agent!`},[exitArmed,dev$1.chat.status,dev$1.chat.queuedMessages.length]),{write:write$1}=use_stdout_default(),[epoch,setEpoch]=useState(0),resetTerminal=useCallback(()=>{write$1(`\x1Bc`),write$1(`\x1B[?25l`),setEpoch(prev=>prev+1)},[write$1]),initialSizeRef=useRef(size);useEffect(()=>{(initialSizeRef.current.columns!==size.columns||initialSizeRef.current.rows!==size.rows)&&(resetTerminal(),initialSizeRef.current=size)},[size.columns,size.rows,resetTerminal]),useEffect(()=>{resetTerminal()},[dev$1.chat.id,resetTerminal]);let optionCommand=useMemo(()=>{if(dev$1.options.schema)return{name:`option`,description:`Adjust your agent's options.`,action:()=>{},completion:async()=>Object.keys(dev$1.options.schema),subcommands:Object.entries(dev$1.options.schema).map(([key,value])=>({name:key,description:value.label??``,action:args=>{dev$1.options.setOption(key,args)},completion:async partialArg=>value.values.map(v$1=>v$1.id)}))}},[dev$1.options]);return dev$1.chat.loading?null:jsxs(Fragment,{children:[jsx(Keybinds,{resetChat:async()=>{await dev$1.chat.resetChat(),resetTerminal()},stopStreaming:()=>{dev$1.chat.stopStreaming()},toggleMode:()=>{dev$1.chat.stopStreaming(),dev$1.toggleMode()},newChat:dev$1.newChat,isActive:!dev$1.approval}),dev$1.chat.error?jsx(Box_default,{marginTop:1,children:jsx(Text,{color:`red`,children:dev$1.chat.error})}):null,jsxs(Box_default,{flexDirection:`column`,children:[jsx(Static,{items:[{},...dev$1.chat.messages],children:(message,index)=>index===0?jsxs(Box_default,{flexDirection:`column`,marginBottom:1,children:[jsxs(Box_default,{children:[jsx(Text,{bold:!0,children:`blink■`}),jsx(Text,{color:`gray`,children:` agent development`})]}),jsxs(Box_default,{marginTop:1,flexDirection:`column`,children:[jsxs(Text,{color:`gray`,children:[`Edit `,dev$1.build.entrypoint,` to hot-reload your agent.`]}),jsxs(Text,{color:`gray`,children:[`Run `,jsx(Text,{color:`blue`,children:`blink deploy`}),` to use your agent in the cloud.`]})]})]},`banner`):jsx(Message,{message,previousMessage:index>1?dev$1.chat.messages.at(index-2):void 0,nextMessage:index<dev$1.chat.messages.length-2?dev$1.chat.messages.at(index+2):void 0,maxWidth:size.columns-2},message.id)},`messages-${dev$1.chat.id}-${epoch}`),dev$1.chat.streamingMessage?jsx(Message,{message:dev$1.chat.streamingMessage,nextMessage:void 0,previousMessage:dev$1.chat.messages.length>0?dev$1.chat.messages.at(dev$1.chat.messages.length-1):void 0,streaming:!0,maxWidth:size.columns-2},dev$1.chat.streamingMessage.id):null,dev$1.showWaitingPlaceholder?jsx(AssistantWaitingPlaceholder,{maxWidth:size.columns-2}):null]}),jsx(Box_default,{flexDirection:`column`,marginTop:1,children:dev$1.approval?jsx(ApprovalInput,{onConfirm:dev$1.approval.approve,onCancel:()=>{}}):jsx(text_input_default,{borderColor:colors[dev$1.mode],slashCommands:[{name:`help`,description:`Show help information`,action:()=>{getHelpText(dev$1.build.entrypoint).forEach(line$1=>console.log(line$1))}},{name:`reset`,altNames:[`clear`],description:`Reset the chat`,action:async()=>{await dev$1.chat.resetChat(),resetTerminal()}},{name:`switch`,description:`Switch to a different chat`,action:args=>{dev$1.switchChat(args)},completion:async partialArg=>dev$1.chats.filter(id=>id.startsWith(partialArg))},{name:`new`,description:`Create a new chat`,action:args=>{dev$1.switchChat(args)}},{name:`edit`,description:`Switch to Edit mode (AI helps build your agent)`,action:()=>{dev$1.chat.stopStreaming(),dev$1.setMode(`edit`)}},{name:`run`,description:`Switch to Run mode (use your agent)`,action:()=>{dev$1.chat.stopStreaming(),dev$1.setMode(`run`)}},...optionCommand?[optionCommand]:[]],onSubmit:value=>(dev$1.chat.sendMessage({id:crypto.randomUUID(),role:`user`,parts:[{type:`text`,text:value}],created_at:new Date().toISOString(),metadata:void 0,mode:dev$1.mode}),!0),onLayoutChange:()=>{}})}),jsxs(Box_default,{children:[jsxs(Box_default,{marginLeft:2,gap:3,children:[jsxs(Text,{color:`gray`,children:[`mode: `,jsx(Text,{color:colors[dev$1.mode],children:dev$1.mode})]}),jsxs(Text,{color:`gray`,children:[`chat: `,jsx(Text,{children:dev$1.chat.id})]})]}),jsx(Spacer,{}),keybindSuggestion?jsx(Text,{color:`yellow`,children:keybindSuggestion+` `}):jsx(Box_default,{gap:3,marginRight:2,children:Object.entries(keymaps).map(([key,value])=>jsx(Text,{children:import_source.default.gray.dim(key+` `+value)},key))})]}),dev$1.tokenUsage||dev$1.options.schema&&dev$1.options.selected?jsxs(Box_default,{marginLeft:2,gap:3,children:[dev$1.tokenUsage?jsxs(Box_default,{gap:1,children:[jsx(Text,{color:`gray`,children:`tokens:`}),jsx(Text,{color:`cyan`,children:formatTokenCount(dev$1.tokenUsage.inputTokens)}),jsx(Text,{color:`gray`,children:`→`}),jsx(Text,{color:`green`,children:formatTokenCount(dev$1.tokenUsage.outputTokens)}),dev$1.tokenUsage.cachedInputTokens!==void 0&&dev$1.tokenUsage.cachedInputTokens>0?jsxs(Text,{children:[jsx(Text,{color:`gray`,children:`(`}),jsx(Text,{color:`blue`,children:formatTokenCount(dev$1.tokenUsage.cachedInputTokens)}),jsx(Text,{color:`gray`,children:` cached)`})]}):null]}):null,dev$1.options.schema&&dev$1.options.selected?jsxs(Box_default,{gap:1,children:[jsx(Text,{color:`gray`,children:`options:`}),Object.entries(dev$1.options.selected).map(([key,value])=>dev$1.options.schema[key]?jsxs(Box_default,{gap:0,children:[jsxs(Text,{color:`gray`,children:[key,`=`]}),jsx(Text,{color:`gray`,children:value})]},key):null)]}):null]}):null]})},ApprovalInput=({onConfirm,onCancel})=>{let[selected,setSelected]=useState(`yes`),[processing$2,setProcessing]=useState(!1),processingRef=useRef(!1),handleConfirm=React.useCallback(async approved=>{if(!processingRef.current){processingRef.current=!0,setProcessing(!0);try{await onConfirm(approved)}catch(err){console.error(`Error processing approval:`,err)}finally{processingRef.current=!1,setProcessing(!1)}}},[onConfirm]),handleCancel=React.useCallback(()=>{processingRef.current||onCancel()},[onCancel]);return use_input_default((input,key)=>{let lower=input.toLowerCase();if(key.escape){handleCancel();return}if(lower===`y`){handleConfirm(!0);return}if(lower===`n`){handleConfirm(!1);return}if(key.leftArrow||key.rightArrow||key.tab){setSelected(prev=>prev===`yes`?`no`:`yes`);return}key.return&&handleConfirm(selected===`yes`)}),jsxs(Box_default,{gap:2,flexDirection:`row`,children:[jsx(Text,{children:processing$2?`Processing...`:`Approve?`}),!processing$2&&jsxs(Fragment,{children:[jsx(Box_default,{children:jsxs(Text,{children:[`[`,jsx(Text,{color:selected===`yes`?`green`:`gray`,bold:selected===`yes`,children:`Yes`}),`/`,jsx(Text,{color:selected===`no`?`red`:`gray`,bold:selected===`no`,children:`No`}),`]`]})}),jsx(Text,{color:`gray`,children:`(y/n, ←/→ then ⏎)`})]})]})},Keybinds=({resetChat,stopStreaming,toggleMode,newChat,isActive})=>(use_input_default((input,key)=>{key.ctrl&&input===`r`&&resetChat(),key.ctrl&&input===`e`&&toggleMode(),key.ctrl&&input===`n`&&newChat(),key.escape&&stopStreaming()},{isActive}),null),Message=React.memo(({message,previousMessage,maxWidth,streaming})=>{let prefix,contentColor,marginTop=previousMessage?1:0;switch(message.role){case`system`:prefix=jsx(Text,{children:`t `}),contentColor=`gray`;break;case`user`:prefix=jsx(Text,{color:`magenta`,bold:!0,children:`▎`}),contentColor=`gray`;break;case`assistant`:let isEditMode=message.mode===`edit`;prefix=jsx(Text,{color:isEditMode?colors.edit:colors.run,children:`> `}),contentColor=`white`;break}let content=jsx(Box_default,{gap:1,flexDirection:`column`,width:maxWidth,children:message.parts.map((part,index)=>{if(part.type===`text`)return jsx(markdown_default,{id:message.id,maxWidth,streaming,children:part.text},index);if(part.type===`reasoning`)return jsxs(Text,{color:`gray`,children:[`Reasoning: `,part.text]},index);if(isToolOrDynamicToolUIPart(part))return jsx(ToolCall,{part,maxWidth,streaming},index)}).filter(Boolean)});return jsxs(Box_default,{marginTop,flexDirection:`row`,children:[jsx(Box_default,{children:jsx(Text,{color:contentColor,children:prefix})}),content]})},(prev,next)=>prev.maxWidth===next.maxWidth?!!(prev.nextMessage&&next.nextMessage&&prev.nextMessage.id===next.nextMessage.id):!1),AssistantWaitingPlaceholder=({maxWidth})=>jsxs(Box_default,{marginTop:1,flexDirection:`row`,children:[jsx(Box_default,{children:jsx(Text,{color:`white`,children:null})}),jsx(Box_default,{width:maxWidth,children:jsxs(Text,{color:`gray`,children:[jsx(build_default,{}),` Waiting for response...`]})})]}),ToolCall=({part,maxWidth,streaming})=>{let name$2=getToolOrDynamicToolName(part),input=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]),state=useMemo(()=>{switch(part.state){case`input-available`:case`input-streaming`:return streaming?`streaming`:`error`;case`output-available`:return isToolApprovalOutput(part.output)&&part.output.outcome===`pending`?`pending-approval`:`done`;case`output-error`:return`error`}},[part,streaming]),output=useMemo(()=>{if(isToolApprovalOutput(part.output))return{state:part.output.outcome};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]),error$3=useMemo(()=>{if(part.state===`output-error`)return part.errorText},[part]),icon=useMemo(()=>{switch(state){case`done`:case`error`:return`⚒`;case`pending-approval`:return`⧗`}return jsx(build_default,{type:`dots`})},[state]);return jsxs(Box_default,{flexDirection:`column`,children:[jsxs(Box_default,{gap:1,children:[jsx(Text,{color:state===`error`?`red`:`gray`,bold:!0,children:icon}),jsx(Text,{children:name$2})]}),jsxs(Box_default,{marginLeft:2,flexDirection:`column`,overflowX:`hidden`,width:maxWidth?maxWidth-4:void 0,gap:0,children:[jsx(Text,{color:`gray`,bold:!0,children:`Input:`}),Object.entries(input).map(([key,value])=>jsxs(Box_default,{marginLeft:2,children:[jsx(Text,{color:`gray`,children:key}),jsx(Text,{color:`blackBright`,children:`=`}),jsx(Box_default,{width:maxWidth?maxWidth-6-1-2-key.length:void 0,children:jsx(Text,{wrap:`truncate-middle`,children:value})})]},key)),output&&jsxs(Fragment,{children:[jsx(Text,{color:`gray`,bold:!0,children:`Output:`}),typeof output==`string`?jsx(Box_default,{marginLeft:2,children:jsx(Text,{children:output})}):jsx(Box_default,{flexDirection:`column`,children:Object.entries(output).map(([key,value])=>jsxs(Box_default,{marginLeft:2,children:[jsx(Text,{color:`gray`,children:key}),jsx(Text,{color:`blackBright`,children:`=`}),jsx(Box_default,{width:maxWidth?maxWidth-6-1-key.length:void 0,children:jsx(Text,{wrap:`truncate-middle`,children:value})})]},key))})]}),error$3&&jsxs(Fragment,{children:[jsx(Text,{color:`gray`,bold:!0,children:`Error:`}),jsx(Text,{color:`red`,children:error$3})]})]})]})};function getHelpText(entrypoint){return[``,import_source.default.bold(`How to Build Your Agent`),``,`Blink has two modes that work together to help you build and test agents:`,``,import_source.default.hex(colors.edit).bold(` Edit Mode`)+` - AI helps you build your agent`,` • Describe the agent you want to build`,` • The AI will modify your agent code based on your instructions`,` • Changes are written to ${relative$1(process.cwd(),entrypoint)} and auto-reload`,``,import_source.default.blue.bold(` Run Mode`)+` - Use your agent`,` • Chat with your agent to see how it behaves`,` • Discover what works and what needs improvement`,``,import_source.default.bold(`The Development Loop:`),` 1. Start in `+import_source.default.hex(colors.edit)(`Edit mode`)+` (Ctrl+E or /edit) and describe what your agent should do`,` Example: "Add a tool that can search the web"`,``,` 2. Switch to `+import_source.default.blue(`Run mode`)+` (Ctrl+E or /run) to use your agent`,` Try it out and see if it does what you expect`,``,` 3. Toggle back to `+import_source.default.hex(colors.edit)(`Edit mode`)+` to refine based on what you learned`,` The edit AI can see the entire chat history, including your conversations!`,` Example: "The search tool failed when I asked about X"`,``,` 4. Repeat until your agent works perfectly`,``,` 5. Deploy with `+import_source.default.bold(`blink deploy`)+` when ready`,``,import_source.default.dim(`Tip: Use /reset to start fresh, /new to create separate test chats`)]}function formatTokenCount(count$1){return count$1>=1e6?`${(count$1/1e6).toFixed(1)}M`:count$1>=1e3?`${(count$1/1e3).toFixed(1)}K`:count$1.toString()}async function dev(directory){if(!directory){let dotBlinkPath=await findNearestEntry(process.cwd(),`.blink`);dotBlinkPath&&existsSync$1(join$1(dotBlinkPath,`build`))&&(dotBlinkPath=void 0),directory=dotBlinkPath||process.cwd()}await migrateBlinkToData(directory);let exitWithDump=error$3=>{writeFileSync$1(`error.dump`,inspect$1(error$3,{depth:null})),process.exit(1)};process.addListener(`uncaughtException`,error$3=>{exitWithDump(error$3)}),process.addListener(`unhandledRejection`,error$3=>{exitWithDump(error$3)});let token$1=await getAuthToken();token$1&&(process.env.BLINK_TOKEN=token$1);try{await startDev({directory})}catch(err){console.error(err),process.exit(1)}finally{process.exit(0)}}export{dev as default};
package/dist/cli/index.js CHANGED
@@ -17,6 +17,6 @@ Expecting one of '${n.join(`', '`)}'`);return this._lifeCycleHooks[e]?this._life
17
17
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
18
18
  - ${r}`;throw Error(i)}_executeSubCommand(e,t){t=t.slice();let n=!1,s=[`.js`,`.ts`,`.tsx`,`.mjs`,`.cjs`];function c(e,t){let n=i.resolve(e,t);if(a.existsSync(n))return n;if(s.includes(i.extname(t)))return;let r=s.find(e=>a.existsSync(`${n}${e}`));if(r)return`${n}${r}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let u=e._executableFile||`${this._name}-${e._name}`,d=this._executableDir||``;if(this._scriptPath){let e;try{e=a.realpathSync(this._scriptPath)}catch{e=this._scriptPath}d=i.resolve(i.dirname(e),d)}if(d){let t=c(d,u);if(!t&&!e._executableFile&&this._scriptPath){let n=i.basename(this._scriptPath,i.extname(this._scriptPath));n!==this._name&&(t=c(d,`${n}-${e._name}`))}u=t||u}n=s.includes(i.extname(u));let f;o.platform===`win32`?(this._checkForMissingExecutable(u,d,e._name),t.unshift(u),t=g(o.execArgv).concat(t),f=r.spawn(o.execPath,t,{stdio:`inherit`})):n?(t.unshift(u),t=g(o.execArgv).concat(t),f=r.spawn(o.argv[0],t,{stdio:`inherit`})):f=r.spawn(u,t,{stdio:`inherit`}),f.killed||[`SIGUSR1`,`SIGUSR2`,`SIGTERM`,`SIGINT`,`SIGHUP`].forEach(e=>{o.on(e,()=>{f.killed===!1&&f.exitCode===null&&f.kill(e)})});let p=this._exitCallback;f.on(`close`,e=>{e??=1,p?p(new l(e,`commander.executeSubCommandAsync`,`(close)`)):o.exit(e)}),f.on(`error`,t=>{if(t.code===`ENOENT`)this._checkForMissingExecutable(u,d,e._name);else if(t.code===`EACCES`)throw Error(`'${u}' not executable`);if(!p)o.exit(1);else{let e=new l(1,`commander.executeSubCommandAsync`,`(error)`);e.nestedError=t,p(e)}}),this.runningCommand=f}_dispatchSubcommand(e,t,n){let r=this._findCommand(e);r||this.help({error:!0}),r._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,r,`preSubcommand`),i=this._chainOrCall(i,()=>{if(r._executableHandler)this._executeSubCommand(r,t.concat(n));else return r._parseCommand(t,n)}),i}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??`--help`])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(e,t,n)=>{let r=t;if(t!==null&&e.parseArg){let i=`error: command-argument value '${t}' is invalid for argument '${e.name()}'.`;r=this._callParseArg(e,t,n,i)}return r};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((n,r)=>{let i=n.defaultValue;n.variadic?r<this.args.length?(i=this.args.slice(r),n.parseArg&&(i=i.reduce((t,r)=>e(n,r,t),n.defaultValue))):i===void 0&&(i=[]):r<this.args.length&&(i=this.args[r],n.parseArg&&(i=e(n,i,n.defaultValue))),t[r]=i}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then==`function`?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let n=e,r=[];return this._getCommandAndAncestors().reverse().filter(e=>e._lifeCycleHooks[t]!==void 0).forEach(e=>{e._lifeCycleHooks[t].forEach(t=>{r.push({hookedCommand:e,callback:t})})}),t===`postAction`&&r.reverse(),r.forEach(e=>{n=this._chainOrCall(n,()=>e.callback(e.hookedCommand,this))}),n}_chainOrCallSubCommandHook(e,t,n){let r=e;return this._lifeCycleHooks[n]!==void 0&&this._lifeCycleHooks[n].forEach(e=>{r=this._chainOrCall(r,()=>e(this,t))}),r}_parseCommand(e,t){let n=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(n.operands),t=n.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(n.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=()=>{n.unknown.length>0&&this.unknownOption(n.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){r(),this._processArguments();let n;return n=this._chainOrCallHooks(n,`preAction`),n=this._chainOrCall(n,()=>this._actionHandler(this.processedArgs)),this.parent&&(n=this._chainOrCall(n,()=>{this.parent.emit(i,e,t)})),n=this._chainOrCallHooks(n,`postAction`),n}if(this.parent?.listenerCount(i))r(),this._processArguments(),this.parent.emit(i,e,t);else if(e.length){if(this._findCommand(`*`))return this._dispatchSubcommand(`*`,e,t);this.listenerCount(`command:*`)?this.emit(`command:*`,e,t):this.commands.length?this.unknownCommand():(r(),this._processArguments())}else this.commands.length?(r(),this.help({error:!0})):(r(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(e=>{let t=e.attributeName();return this.getOptionValue(t)===void 0?!1:this.getOptionValueSource(t)!==`default`});e.filter(e=>e.conflictsWith.length>0).forEach(t=>{let n=e.find(e=>t.conflictsWith.includes(e.attributeName()));n&&this._conflictingOption(t,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],n=[],r=t;function i(e){return e.length>1&&e[0]===`-`}let a=e=>/^-\d*\.?\d+(e[+-]?\d+)?$/.test(e)?!this._getCommandAndAncestors().some(e=>e.options.map(e=>e.short).some(e=>/^-\d$/.test(e))):!1,o=null,s=null,c=0;for(;c<e.length||s;){let l=s??e[c++];if(s=null,l===`--`){r===n&&r.push(l),r.push(...e.slice(c));break}if(o&&(!i(l)||a(l))){this.emit(`option:${o.name()}`,l);continue}if(o=null,i(l)){let t=this._findOption(l);if(t){if(t.required){let n=e[c++];n===void 0&&this.optionMissingArgument(t),this.emit(`option:${t.name()}`,n)}else if(t.optional){let n=null;c<e.length&&(!i(e[c])||a(e[c]))&&(n=e[c++]),this.emit(`option:${t.name()}`,n)}else this.emit(`option:${t.name()}`);o=t.variadic?t:null;continue}}if(l.length>2&&l[0]===`-`&&l[1]!==`-`){let e=this._findOption(`-${l[1]}`);if(e){e.required||e.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${e.name()}`,l.slice(2)):(this.emit(`option:${e.name()}`),s=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let e=l.indexOf(`=`),t=this._findOption(l.slice(0,e));if(t&&(t.required||t.optional)){this.emit(`option:${t.name()}`,l.slice(e+1));continue}}if(r===t&&i(l)&&!(this.commands.length===0&&a(l))&&(r=n),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&n.length===0){if(this._findCommand(l)){t.push(l),n.push(...e.slice(c));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(c));break}else if(this._defaultCommandName){n.push(l,...e.slice(c));break}}if(this._passThroughOptions){r.push(l,...e.slice(c));break}r.push(l)}return{operands:t,unknown:n}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let n=0;n<t;n++){let t=this.options[n].attributeName();e[t]=t===this._versionOptionName?this._version:this[t]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}\n`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==`string`?this._outputConfiguration.writeErr(`${this._showHelpAfterError}\n`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
19
19
  `),this.outputHelp({error:!0}));let n=t||{},r=n.exitCode||1,i=n.code||`commander.error`;this._exit(r,i,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in o.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||[`default`,`config`,`env`].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,o.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new p(this.options),t=e=>this.getOptionValue(e)!==void 0&&![`default`,`implied`].includes(this.getOptionValueSource(e));this.options.filter(n=>n.implied!==void 0&&t(n.attributeName())&&e.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach(e=>{Object.keys(e.implied).filter(e=>!t(e)).forEach(t=>{this.setOptionValueWithSource(t,e.implied[t],`implied`)})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:`commander.missingArgument`})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:`commander.optionMissingArgument`})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:`commander.missingMandatoryOptionValue`})}_conflictingOption(e,t){let n=e=>{let t=e.attributeName(),n=this.getOptionValue(t),r=this.options.find(e=>e.negate&&t===e.attributeName()),i=this.options.find(e=>!e.negate&&t===e.attributeName());return r&&(r.presetArg===void 0&&n===!1||r.presetArg!==void 0&&n===r.presetArg)?r:i||e},r=e=>{let t=n(e),r=t.attributeName();return this.getOptionValueSource(r)===`env`?`environment variable '${t.envVar}'`:`option '${t.flags}'`},i=`error: ${r(e)} cannot be used with ${r(t)}`;this.error(i,{code:`commander.conflictingOption`})}unknownOption(e){if(this._allowUnknownOption)return;let t=``;if(e.startsWith(`--`)&&this._showSuggestionAfterError){let n=[],r=this;do{let e=r.createHelp().visibleOptions(r).filter(e=>e.long).map(e=>e.long);n=n.concat(e),r=r.parent}while(r&&!r._enablePositionalOptions);t=m(e,n)}let n=`error: unknown option '${e}'${t}`;this.error(n,{code:`commander.unknownOption`})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,n=t===1?``:`s`,r=`error: too many arguments${this.parent?` for '${this.name()}'`:``}. Expected ${t} argument${n} but got ${e.length}.`;this.error(r,{code:`commander.excessArguments`})}unknownCommand(){let e=this.args[0],t=``;if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(e=>{n.push(e.name()),e.alias()&&n.push(e.alias())}),t=m(e,n)}let n=`error: unknown command '${e}'${t}`;this.error(n,{code:`commander.unknownCommand`})}version(e,t,n){if(e===void 0)return this._version;this._version=e,t||=`-V, --version`,n||=`output the version number`;let r=this.createOption(t,n);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on(`option:`+r.name(),()=>{this._outputConfiguration.writeOut(`${e}\n`),this._exit(0,`commander.version`,e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw Error(`Command alias can't be the same as its name`);let n=this.parent?._findCommand(e);if(n){let t=[n.name()].concat(n.aliases()).join(`|`);throw Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${t}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(e=>this.alias(e)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let e=this.registeredArguments.map(e=>c(e));return[].concat(this.options.length||this._helpOption!==null?`[options]`:[],this.commands.length?`[command]`:[],this.registeredArguments.length?e:[]).join(` `)}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??``:(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??``:(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??``:(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=i.basename(e,i.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),n=this._getOutputContext(e);t.prepareContext({error:n.error,helpWidth:n.helpWidth,outputHasColors:n.hasColors});let r=t.formatHelp(this,t);return n.hasColors?r:this._outputConfiguration.stripColor(r)}_getOutputContext(e){e||={};let t=!!e.error,n,r,i;return t?(n=e=>this._outputConfiguration.writeErr(e),r=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth()):(n=e=>this._outputConfiguration.writeOut(e),r=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth()),{error:t,write:e=>(r||(e=this._outputConfiguration.stripColor(e)),n(e)),hasColors:r,helpWidth:i}}outputHelp(e){let t;typeof e==`function`&&(t=e,e=void 0);let n=this._getOutputContext(e),r={error:n.error,write:n.write,command:this};this._getCommandAndAncestors().reverse().forEach(e=>e.emit(`beforeAllHelp`,r)),this.emit(`beforeHelp`,r);let i=this.helpInformation({error:n.error});if(t&&(i=t(i),typeof i!=`string`&&!Buffer.isBuffer(i)))throw Error(`outputHelp callback must return a string or a Buffer`);n.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit(`afterHelp`,r),this._getCommandAndAncestors().forEach(e=>e.emit(`afterAllHelp`,r))}helpOption(e,t){return typeof e==`boolean`?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??`-h, --help`,t??`display help for command`),(e||t)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(o.exitCode??0);t===0&&e&&typeof e!=`function`&&e.error&&(t=1),this._exit(t,`commander.help`,`(outputHelp)`)}addHelpText(e,t){let n=[`beforeAll`,`before`,`after`,`afterAll`];if(!n.includes(e))throw Error(`Unexpected value for position to addHelpText.
20
- Expecting one of '${n.join(`', '`)}'`);let r=`${e}Help`;return this.on(r,e=>{let n;n=typeof t==`function`?t({error:e.error,command:e.command}):t,n&&e.write(`${n}\n`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(e=>t.is(e))&&(this.outputHelp(),this._exit(0,`commander.helpDisplayed`,`(outputHelp)`))}};function g(e){return e.map(e=>{if(!e.startsWith(`--inspect`))return e;let t,n=`127.0.0.1`,r=`9229`,i;return(i=e.match(/^(--inspect(-brk)?)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],n=i[3],r=i[4]):(t=i[1],/^\d+$/.test(i[3])?r=i[3]:n=i[3]):t=i[1],t&&r!==`0`?`${t}=${n}:${parseInt(r)+1}`:e})}function _(){if(o.env.NO_COLOR||o.env.FORCE_COLOR===`0`||o.env.FORCE_COLOR===`false`)return!1;if(o.env.FORCE_COLOR||o.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=h,e.useColor=_}));const{program:k,createCommand:ie,createArgument:A,createOption:j,CommanderError:ae,InvalidArgumentError:M,InvalidOptionArgumentError:oe,Command:N,Argument:P,Option:se,Help:F}=n(e((e=>{let{Argument:t}=w(),{Command:n}=O(),{CommanderError:r,InvalidArgumentError:i}=C(),{Help:a}=T(),{Option:o}=E();e.program=new n,e.createCommand=e=>new n(e),e.createOption=(e,t)=>new o(e,t),e.createArgument=(e,n)=>new t(e,n),e.Command=n,e.Option=o,e.Argument=t,e.Help=a,e.CommanderError=r,e.InvalidArgumentError=i,e.InvalidOptionArgumentError=i}))(),1).default;var I=`0.1.100`;async function L(e){e||=process.cwd();let t=o(e);await t.build({cwd:e,entry:t.entry,outdir:t.outdir,watch:!1,onStart:()=>{console.log(`Building agent...`)},onResult:e=>{`error`in e&&(console.error(e.error),process.exit(1));for(let t of e.warnings)console.warn(t.message);console.log(`Built agent to ${e.entry}`)}})}var R=n(h(),1),z=n(l(),1),B=n(a(),1);async function V(e,t){e||=process.cwd(),await m(e);let n=await c(),r=new s({authToken:n,fetch:(e,t)=>{let n=new Headers(t?.headers);return n.set(`x-blink-cli-version`,I),fetch(e,{...t,headers:n})}}),a=await i(e,`package.json`);if(!a)throw Error(`package.json not found`);let l=await x(a,`utf-8`),h=JSON.parse(l),g=v(a),C=y(g,`data`,`config.json`),w={};if(te(C)){let e=await x(C,`utf-8`);w=JSON.parse(e)}let T;if(w?.organizationId)try{T=(await r.organizations.get(w.organizationId)).name}catch{w.organizationId=void 0}if(!w?.organizationId){let e=await r.organizations.list();if(e.length===1){let t=e[0];w.organizationId=t.id,T=t.name}else{let t=await f({message:`Which organization should contain this agent?`,options:e.map(e=>({value:e.id,label:e.name}))});if(d(t))return;w.organizationId=t,T=e.find(e=>e.id===t).name}}if(!w.organizationId)throw Error(`Developer error: No organization ID found.`);let E;if(w?.agentId)try{E=(await r.agents.get(w.agentId)).name}catch{w.agentId=void 0}if(!w?.agentId)try{let e=await r.organizations.agents.get({organization_id:w.organizationId,agent_name:h.name});w.agentId=e.id,E=e.name}catch{let e=await r.agents.create({name:h.name,organization_id:w.organizationId});w.agentId=e.id,E=e.name}if(!w.agentId)throw Error(`Developer error: No agent ID found.`);await ne(v(C),{recursive:!0}),await re(C,JSON.stringify({_:`This file can be source controlled. It contains no secrets.`,...w},null,2),`utf-8`);let D=o(g),O=await new Promise((e,t)=>{D.build({cwd:g,entry:D.entry,outdir:D.outdir,watch:!1,onStart:()=>{},onResult:t=>{e(t)}}).catch(t)});if(!O)throw Error(`Failed to build agent`);if(`error`in O)throw Error(O.error.message);let k={},ie=await b(O.outdir);for(let e of ie)k[y(O.outdir,e)]=e;let A=y(e,`README.md`);await H(A)&&(k[A]=`README.md`);let j={},ae=await le(g);for(let e of ae)j[e]=ee(g,e);let M=Object.entries(k),oe=Object.entries(j),N=[...M,...oe],P=N.length,se=0,F=0,L=0,B=Array(P);await ce(N,10,async([e,t],n)=>{let i=(await S(e)).size,a=++se;W(`${z.default.dim(`[${a}/${P}]`)} Uploading ${t} (${U(i)})...`);let o=await x(e),s=await r.files.upload(new File([Buffer.from(o)],t));B[n]={path:t,id:s.id},F+=1,L+=i}),W(`${z.default.dim(`[${F}/${P}]`)} Uploaded files (${U(L)}).`),process.stdout.write(`
20
+ Expecting one of '${n.join(`', '`)}'`);let r=`${e}Help`;return this.on(r,e=>{let n;n=typeof t==`function`?t({error:e.error,command:e.command}):t,n&&e.write(`${n}\n`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(e=>t.is(e))&&(this.outputHelp(),this._exit(0,`commander.helpDisplayed`,`(outputHelp)`))}};function g(e){return e.map(e=>{if(!e.startsWith(`--inspect`))return e;let t,n=`127.0.0.1`,r=`9229`,i;return(i=e.match(/^(--inspect(-brk)?)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))===null?(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],n=i[3],r=i[4]):(t=i[1],/^\d+$/.test(i[3])?r=i[3]:n=i[3]):t=i[1],t&&r!==`0`?`${t}=${n}:${parseInt(r)+1}`:e})}function _(){if(o.env.NO_COLOR||o.env.FORCE_COLOR===`0`||o.env.FORCE_COLOR===`false`)return!1;if(o.env.FORCE_COLOR||o.env.CLICOLOR_FORCE!==void 0)return!0}e.Command=h,e.useColor=_}));const{program:k,createCommand:ie,createArgument:A,createOption:j,CommanderError:ae,InvalidArgumentError:M,InvalidOptionArgumentError:oe,Command:N,Argument:P,Option:se,Help:F}=n(e((e=>{let{Argument:t}=w(),{Command:n}=O(),{CommanderError:r,InvalidArgumentError:i}=C(),{Help:a}=T(),{Option:o}=E();e.program=new n,e.createCommand=e=>new n(e),e.createOption=(e,t)=>new o(e,t),e.createArgument=(e,n)=>new t(e,n),e.Command=n,e.Option=o,e.Argument=t,e.Help=a,e.CommanderError=r,e.InvalidArgumentError=i,e.InvalidOptionArgumentError=i}))(),1).default;var I=`0.1.101`;async function L(e){e||=process.cwd();let t=o(e);await t.build({cwd:e,entry:t.entry,outdir:t.outdir,watch:!1,onStart:()=>{console.log(`Building agent...`)},onResult:e=>{`error`in e&&(console.error(e.error),process.exit(1));for(let t of e.warnings)console.warn(t.message);console.log(`Built agent to ${e.entry}`)}})}var R=n(h(),1),z=n(l(),1),B=n(a(),1);async function V(e,t){e||=process.cwd(),await m(e);let n=await c(),r=new s({authToken:n,fetch:(e,t)=>{let n=new Headers(t?.headers);return n.set(`x-blink-cli-version`,I),fetch(e,{...t,headers:n})}}),a=await i(e,`package.json`);if(!a)throw Error(`package.json not found`);let l=await x(a,`utf-8`),h=JSON.parse(l),g=v(a),C=y(g,`data`,`config.json`),w={};if(te(C)){let e=await x(C,`utf-8`);w=JSON.parse(e)}let T;if(w?.organizationId)try{T=(await r.organizations.get(w.organizationId)).name}catch{w.organizationId=void 0}if(!w?.organizationId){let e=await r.organizations.list();if(e.length===1){let t=e[0];w.organizationId=t.id,T=t.name}else{let t=await f({message:`Which organization should contain this agent?`,options:e.map(e=>({value:e.id,label:e.name}))});if(d(t))return;w.organizationId=t,T=e.find(e=>e.id===t).name}}if(!w.organizationId)throw Error(`Developer error: No organization ID found.`);let E;if(w?.agentId)try{E=(await r.agents.get(w.agentId)).name}catch{w.agentId=void 0}if(!w?.agentId)try{let e=await r.organizations.agents.get({organization_id:w.organizationId,agent_name:h.name});w.agentId=e.id,E=e.name}catch{let e=await r.agents.create({name:h.name,organization_id:w.organizationId});w.agentId=e.id,E=e.name}if(!w.agentId)throw Error(`Developer error: No agent ID found.`);await ne(v(C),{recursive:!0}),await re(C,JSON.stringify({_:`This file can be source controlled. It contains no secrets.`,...w},null,2),`utf-8`);let D=o(g),O=await new Promise((e,t)=>{D.build({cwd:g,entry:D.entry,outdir:D.outdir,watch:!1,onStart:()=>{},onResult:t=>{e(t)}}).catch(t)});if(!O)throw Error(`Failed to build agent`);if(`error`in O)throw Error(O.error.message);let k={},ie=await b(O.outdir);for(let e of ie)k[y(O.outdir,e)]=e;let A=y(e,`README.md`);await H(A)&&(k[A]=`README.md`);let j={},ae=await le(g);for(let e of ae)j[e]=ee(g,e);let M=Object.entries(k),oe=Object.entries(j),N=[...M,...oe],P=N.length,se=0,F=0,L=0,B=Array(P);await ce(N,10,async([e,t],n)=>{let i=(await S(e)).size,a=++se;W(`${z.default.dim(`[${a}/${P}]`)} Uploading ${t} (${U(i)})...`);let o=await x(e),s=await r.files.upload(new File([Buffer.from(o)],t));B[n]={path:t,id:s.id},F+=1,L+=i}),W(`${z.default.dim(`[${F}/${P}]`)} Uploaded files (${U(L)}).`),process.stdout.write(`
21
21
  `);let V=B.filter(Boolean),G=V.slice(0,M.length),ue=V.slice(M.length),K=y(e,`.env.local`),q=[];if(await H(K)){let e=(0,R.parse)(await x(K,`utf-8`));q=Object.keys(e)}let J=[];J=(await r.agents.env.list({agent_id:w.agentId})).map(e=>e.key);let Y=y(e,`.env.production`);if(await H(Y)){let e=(0,R.parse)(await x(Y,`utf-8`)),t=Object.entries(e),n=t.length,i=0;for(let[e,a]of t){let t=await r.agents.env.create({agent_id:w.agentId,key:e,value:a,target:[`production`,`preview`],secret:!0,upsert:!0});J.push(t.key),i+=1,W(`${z.default.dim(`[${i}/${n}]`)} Updating environment variable: ${e} ${z.default.dim(`(.env.production)`)}`)}W(`${z.default.dim(`[${i}/${n}]`)} Updated environment variables! ${z.default.dim(`(.env.production)`)}`),process.stdout.write(`
22
- `)}let X=q.filter(e=>!J.includes(e));if(X.length>0){console.log(`Warning: The following environment variables are set in .env.local but not in .env.production:`);for(let e of X)console.log(`- ${e}`);let e=await p({message:`Do you want to deploy anyway?`});if(e===!1||d(e))return}let Z=await r.agents.deployments.create({agent_id:w.agentId,target:`production`,entrypoint:_(O.entry),output_files:G,source_files:ue,message:t?.message}),Q=`https://blink.so/${T}/${E}/deployments/${Z.number}`;console.log(`Deployed:`,Q);let $=u();$.start(`Waiting for deployment to be live...`);try{for(;;){let e=await r.agents.deployments.get({agent_id:w.agentId,deployment_id:Z.id});if(e.status===`success`){let t=`Deployment successful.`;e.target===`production`&&(t+=` All chats will use this deployment!`),$.stop(t);let n=await r.agents.get(w.agentId);n.request_url&&console.log(`\nSend webhooks from anywhere: ${n.request_url}`);break}if(e.status===`failed`){let t=`Deployment failed.`;e.error_message&&(t+=` ${e.error_message}`),$.stop(t),console.log(`Read logs for details:`,Q);return}await new Promise(e=>setTimeout(e,500))}}catch{$.stop(`Failed to poll for deployment status.`),console.log(`Read logs for details:`,Q);return}}const H=async e=>{try{return await S(e),!0}catch{return!1}};async function ce(e,t,n){let r=Array(e.length),i=0,a=Array(Math.min(t,e.length)).fill(0).map(async()=>{for(;;){let t=i++;if(t>=e.length)break;r[t]=await n(e[t],t)}});return await Promise.all(a),r}function U(e){if(e===0)return`0B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`,`TB`],r=Math.floor(Math.log(e)/Math.log(t)),i=e/t**+r;return`${i.toFixed(i>=100?0:i>=10?1:2)}${n[r]}`}function W(e){if(process.stdout.isTTY)try{process.stdout.clearLine(0),process.stdout.cursorTo(0),process.stdout.write(e);return}catch{}console.log(e)}async function le(e){let t=[],n=(0,B.default)().add([`.git`,`node_modules`,`data`,`.env`,`.env.*`]),r=y(e,`.gitignore`);if(await H(r)){let e=await x(r,`utf-8`);n.add(e)}async function i(r,a=e){let o=await b(r,{withFileTypes:!0});for(let e of o){let o=y(r,e.name),s=ee(a,o);n.ignores(s)||(e.isDirectory()?await i(o,a):e.isFile()&&t.push(o))}}return await i(e),t}if(globalThis.WebSocket||(globalThis.WebSocket=r.default),globalThis.Bun!==void 0){let e=t(`perf_hooks`);e.monitorEventLoopDelay=()=>({enable:()=>{}})}globalThis.crypto||(globalThis.crypto={}),globalThis.crypto.randomUUID||(globalThis.crypto.randomUUID=()=>g()),k.name(`blink`).description(`Blink is a runtime for building and deploying AI agents.`).version(I).action(()=>{k.outputHelp()});const G=e=>async(...t)=>{let{default:n}=await e();return n(...t)};k.command(`init [directory]`).description(`Initialize a new Blink agent.`).action(G(()=>import(`./init-m-BdPD26.js`))),k.command(`dev [directory] [options]`).description(`Start a development server for your agent.`).action(G(()=>import(`./dev-BoWdP_B4.js`))),k.command(`deploy [directory]`).description(`Deploy your agent to the Blink Cloud.`).option(`-m, --message <message>`,`Message for this deployment`).action(V),k.command(`build [directory]`).description(`Build your agent for production.`).action(L),k.command(`telemetry [boolean]`).description(`Enable or disable telemetry.`),k.command(`start [directory]`).description("Starts the Blink runtime in production mode. The agent must be compiled with `blink build` first."),k.command(`run <message...>`).description(`Run your agent programmatically and get the response.`).option(`-d, --directory <directory>`,`Directory to run the agent from (default: current directory)`).option(`-c, --chat <chat>`,`Chat key to use (default: 'default')`).action(G(()=>import(`./run-Bw3vjC84.js`))),k.command(`connect`,{hidden:!0}).description(`Connect compute to the Blink Cloud.`).action(G(()=>import(`./connect-D8dpOtYY.js`))),k.command(`chat`,{hidden:!0}).description(`Start a Blink chat connected to your machine.`).action(G(()=>import(`./chat-CLFi7jlw.js`))),k.command(`login`,{hidden:!0}).description(`Log in to the Blink Cloud.`).action(G(()=>import(`./login-DC5VCVrz.js`))),k.parse(process.argv);export{};
22
+ `)}let X=q.filter(e=>!J.includes(e));if(X.length>0){console.log(`Warning: The following environment variables are set in .env.local but not in .env.production:`);for(let e of X)console.log(`- ${e}`);let e=await p({message:`Do you want to deploy anyway?`});if(e===!1||d(e))return}let Z=await r.agents.deployments.create({agent_id:w.agentId,target:`production`,entrypoint:_(O.entry),output_files:G,source_files:ue,message:t?.message}),Q=`https://blink.so/${T}/${E}/deployments/${Z.number}`;console.log(`Deployed:`,Q);let $=u();$.start(`Waiting for deployment to be live...`);try{for(;;){let e=await r.agents.deployments.get({agent_id:w.agentId,deployment_id:Z.id});if(e.status===`success`){let t=`Deployment successful.`;e.target===`production`&&(t+=` All chats will use this deployment!`),$.stop(t);let n=await r.agents.get(w.agentId);n.request_url&&console.log(`\nSend webhooks from anywhere: ${n.request_url}`);break}if(e.status===`failed`){let t=`Deployment failed.`;e.error_message&&(t+=` ${e.error_message}`),$.stop(t),console.log(`Read logs for details:`,Q);return}await new Promise(e=>setTimeout(e,500))}}catch{$.stop(`Failed to poll for deployment status.`),console.log(`Read logs for details:`,Q);return}}const H=async e=>{try{return await S(e),!0}catch{return!1}};async function ce(e,t,n){let r=Array(e.length),i=0,a=Array(Math.min(t,e.length)).fill(0).map(async()=>{for(;;){let t=i++;if(t>=e.length)break;r[t]=await n(e[t],t)}});return await Promise.all(a),r}function U(e){if(e===0)return`0B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`,`TB`],r=Math.floor(Math.log(e)/Math.log(t)),i=e/t**+r;return`${i.toFixed(i>=100?0:i>=10?1:2)}${n[r]}`}function W(e){if(process.stdout.isTTY)try{process.stdout.clearLine(0),process.stdout.cursorTo(0),process.stdout.write(e);return}catch{}console.log(e)}async function le(e){let t=[],n=(0,B.default)().add([`.git`,`node_modules`,`data`,`.env`,`.env.*`]),r=y(e,`.gitignore`);if(await H(r)){let e=await x(r,`utf-8`);n.add(e)}async function i(r,a=e){let o=await b(r,{withFileTypes:!0});for(let e of o){let o=y(r,e.name),s=ee(a,o);n.ignores(s)||(e.isDirectory()?await i(o,a):e.isFile()&&t.push(o))}}return await i(e),t}if(globalThis.WebSocket||(globalThis.WebSocket=r.default),globalThis.Bun!==void 0){let e=t(`perf_hooks`);e.monitorEventLoopDelay=()=>({enable:()=>{}})}globalThis.crypto||(globalThis.crypto={}),globalThis.crypto.randomUUID||(globalThis.crypto.randomUUID=()=>g()),k.name(`blink`).description(`Blink is a runtime for building and deploying AI agents.`).version(I).action(()=>{k.outputHelp()});const G=e=>async(...t)=>{let{default:n}=await e();return n(...t)};k.command(`init [directory]`).description(`Initialize a new Blink agent.`).action(G(()=>import(`./init-m-BdPD26.js`))),k.command(`dev [directory] [options]`).description(`Start a development server for your agent.`).action(G(()=>import(`./dev-DSRhxL7E.js`))),k.command(`deploy [directory]`).description(`Deploy your agent to the Blink Cloud.`).option(`-m, --message <message>`,`Message for this deployment`).action(V),k.command(`build [directory]`).description(`Build your agent for production.`).action(L),k.command(`telemetry [boolean]`).description(`Enable or disable telemetry.`),k.command(`start [directory]`).description("Starts the Blink runtime in production mode. The agent must be compiled with `blink build` first."),k.command(`run <message...>`).description(`Run your agent programmatically and get the response.`).option(`-d, --directory <directory>`,`Directory to run the agent from (default: current directory)`).option(`-c, --chat <chat>`,`Chat key to use (default: 'default')`).action(G(()=>import(`./run-Bw3vjC84.js`))),k.command(`connect`,{hidden:!0}).description(`Connect compute to the Blink Cloud.`).action(G(()=>import(`./connect-D8dpOtYY.js`))),k.command(`chat`,{hidden:!0}).description(`Start a Blink chat connected to your machine.`).action(G(()=>import(`./chat-CLFi7jlw.js`))),k.command(`login`,{hidden:!0}).description(`Log in to the Blink Cloud.`).action(G(()=>import(`./login-DC5VCVrz.js`))),k.parse(process.argv);export{};
@@ -1 +1 @@
1
- const e=require(`../chunk-iXuH7AlR.cjs`),t=require(`../index.node-CA3ktAWn.cjs`);require(`../token-error-l6zIbPbZ.cjs`),require(`../esm-C-vSI1Ww.cjs`),exports.StreamResponseFormatHeader=t.StreamResponseFormatHeader,exports.agent=t.agent,exports.api=t.api,exports.isToolApprovalOutput=t.isToolApprovalOutput,exports.lastUIOptions=t.lastUIOptions,exports.model=t.model,exports.toolWithApproval=t.toolWithApproval,exports.tools=t.tools,exports.withResponseFormat=t.withResponseFormat;
1
+ const e=require(`../chunk-iXuH7AlR.cjs`),t=require(`../index.node-DlfrLUZ3.cjs`);require(`../token-error-BoNG8ooW.cjs`),require(`../esm-0UNjvroT.cjs`),exports.StreamResponseFormatHeader=t.StreamResponseFormatHeader,exports.agent=t.agent,exports.api=t.api,exports.isToolApprovalOutput=t.isToolApprovalOutput,exports.lastUIOptions=t.lastUIOptions,exports.model=t.model,exports.toolWithApproval=t.toolWithApproval,exports.tools=t.tools,exports.withResponseFormat=t.withResponseFormat;
@@ -1 +1 @@
1
- import{StreamResponseFormatHeader as e,agent as t,api as n,isToolApprovalOutput as r,lastUIOptions as i,model as a,toolWithApproval as o,tools as s,withResponseFormat as c}from"../index.node-DsWXAj6H.js";import"../token-error-wsvzy87W.js";import"../esm-D1GEQyaY.js";export{e as StreamResponseFormatHeader,t as agent,n as api,r as isToolApprovalOutput,i as lastUIOptions,a as model,o as toolWithApproval,s as tools,c as withResponseFormat};
1
+ import{StreamResponseFormatHeader as e,agent as t,api as n,isToolApprovalOutput as r,lastUIOptions as i,model as a,toolWithApproval as o,tools as s,withResponseFormat as c}from"../index.node-hG-farUz.js";import"../token-error-488npYdU.js";import"../esm-CbZfjZBn.js";export{e as StreamResponseFormatHeader,t as agent,n as api,r as isToolApprovalOutput,i as lastUIOptions,a as model,o as toolWithApproval,s as tools,c as withResponseFormat};
@@ -1 +1 @@
1
- const e=require(`../chunk-iXuH7AlR.cjs`),t=require(`../build-lx6plR19.cjs`);exports.buildWithEsbuild=t.buildWithEsbuild,exports.defineConfig=t.defineConfig,exports.resolveConfig=t.resolveConfig,exports.setEsbuildInstance=t.setEsbuildInstance;
1
+ const e=require(`../chunk-iXuH7AlR.cjs`),t=require(`../build-BzoNpizh.cjs`);exports.buildWithEsbuild=t.buildWithEsbuild,exports.defineConfig=t.defineConfig,exports.resolveConfig=t.resolveConfig,exports.setEsbuildInstance=t.setEsbuildInstance;
@@ -1 +1 @@
1
- import{buildWithEsbuild as e,defineConfig as t,resolveConfig as n,setEsbuildInstance as r}from"../build-M5Q2ZTGh.js";export{e as buildWithEsbuild,t as defineConfig,n as resolveConfig,r as setEsbuildInstance};
1
+ import{buildWithEsbuild as e,defineConfig as t,resolveConfig as n,setEsbuildInstance as r}from"../build-D_L0gFGa.js";export{e as buildWithEsbuild,t as defineConfig,n as resolveConfig,r as setEsbuildInstance};
@@ -1,4 +1,4 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`);let t=require(`path`);t=e.__toESM(t);let n=require(`fs`);n=e.__toESM(n);let r=require(`module`);r=e.__toESM(r);let i=require(`fs/promises`);i=e.__toESM(i);const a=`ai-telemetry-wrapper`;function o(e={}){let{functions:t=[`streamText`,`generateText`,`generateObject`,`streamObject`,`embed`,`embedMany`],telemetryConfig:n={isEnabled:!0}}=e;return{name:`ai-telemetry`,setup(e){e.onResolve({filter:/^ai$/},e=>{if(e.namespace!==a)return{path:`ai`,namespace:a,pluginData:{resolveDir:e.resolveDir}}}),e.onLoad({filter:/^ai$/,namespace:a},e=>{let r=JSON.stringify(n),i=e.pluginData;return{contents:`
1
+ const e=require(`./chunk-iXuH7AlR.cjs`);let t=require(`path`);t=e.__toESM(t);let n=require(`module`);n=e.__toESM(n);let r=require(`fs`);r=e.__toESM(r);let i=require(`fs/promises`);i=e.__toESM(i);const a=`ai-telemetry-wrapper`;function o(e={}){let{functions:t=[`streamText`,`generateText`,`generateObject`,`streamObject`,`embed`,`embedMany`],telemetryConfig:n={isEnabled:!0}}=e;return{name:`ai-telemetry`,setup(e){e.onResolve({filter:/^ai$/},e=>{if(e.namespace!==a)return{path:`ai`,namespace:a,pluginData:{resolveDir:e.resolveDir}}}),e.onLoad({filter:/^ai$/,namespace:a},e=>{let r=JSON.stringify(n),i=e.pluginData;return{contents:`
2
2
  // Import everything from the original 'ai' package
3
3
  import * as aiOriginal from 'ai';
4
4
 
@@ -19,10 +19,10 @@ export function ${e}(options) {
19
19
  return aiOriginal.${e}(options);
20
20
  }
21
21
  `).join(``)}
22
- `,loader:`js`,resolveDir:i?.resolveDir}})}}}let s;function c(e){s=e}function l(e){return async n=>{let a=await(s??await import(`esbuild`)).context({entryPoints:[n.entry],outdir:n.outdir,bundle:!0,write:!1,logLevel:`silent`,format:`esm`,platform:`node`,target:`node22`,sourcemap:!1,mainFields:[`module`,`main`],conditions:[`import`,`module`],plugins:[{name:`blink-esm-require-to-import`,setup(e){e.onEnd(t=>{e.initialOptions.format!==`esm`||e.initialOptions.platform!==`node`||t.outputFiles?.forEach(e=>{if(e.path.endsWith(`.js`)||e.path.endsWith(`.mjs`)){let t=Buffer.from(e.contents).toString(`utf-8`),n=new Map,i=RegExp(`\\b__require\\("(node:)?(${r.builtinModules.join(`|`)})(/[^"]+)?"\\)`,`gm`);t=t.replace(i,(e,t,r,i=``)=>{let a=r+i,o=`__import_${a.toUpperCase().replace(/[/-]/g,`_`)}`,s=`node:${a}`;return n.set(o,s),o}),n.size>0&&(t=Array.from(n.entries()).map(([e,t])=>`import ${e} from "${t}";`).join(`
22
+ `,loader:`js`,resolveDir:i?.resolveDir}})}}}let s;function c(e){s=e}function l(e){return async r=>{let a=await(s??await import(`esbuild`)).context({entryPoints:[r.entry],outdir:r.outdir,bundle:!0,write:!1,logLevel:`silent`,format:`esm`,platform:`node`,target:`node22`,sourcemap:!1,mainFields:[`module`,`main`],conditions:[`import`,`module`],plugins:[{name:`blink-esm-require-to-import`,setup(e){e.onEnd(t=>{e.initialOptions.format!==`esm`||e.initialOptions.platform!==`node`||t.outputFiles?.forEach(e=>{if(e.path.endsWith(`.js`)||e.path.endsWith(`.mjs`)){let t=Buffer.from(e.contents).toString(`utf-8`),r=new Map,i=RegExp(`\\b__require\\("(node:)?(${n.builtinModules.join(`|`)})(/[^"]+)?"\\)`,`gm`);t=t.replace(i,(e,t,n,i=``)=>{let a=n+i,o=`__import_${a.toUpperCase().replace(/[/-]/g,`_`)}`,s=`node:${a}`;return r.set(o,s),o}),r.size>0&&(t=Array.from(r.entries()).map(([e,t])=>`import ${e} from "${t}";`).join(`
23
23
  `)+`
24
24
 
25
- `+t),e.contents=Buffer.from(t,`utf-8`)}})})}},{name:`blink-dev-server`,setup(e){let r;e.onStart(()=>{n.onStart(),r=performance.now()}),e.onEnd(async e=>{await(0,i.rm)(n.outdir,{recursive:!0,force:!0}),await(0,i.mkdir)(n.outdir,{recursive:!0});let o=e.outputFiles?.map(e=>({path:e.path,contents:e.contents}))??[];o.push({path:t.default.resolve(n.outdir,`package.json`),contents:Buffer.from(JSON.stringify({type:`module`},null,2),`utf-8`)});for(let e of o)await(0,i.writeFile)(e.path,e.contents);e.errors.length>0?n.onResult({error:{message:e.errors.map(e=>`${e.text} (${e.location?.file})`).join(`
26
- `)}}):n.onResult({entry:t.default.resolve(n.outdir,t.default.basename(n.entry).replace(`.ts`,`.js`)),duration:performance.now()-r,outdir:n.outdir,warnings:e.warnings.map(e=>({message:e.text,file:e.location?.file}))}),n.watch||(a.dispose(),a.cancel())})}},o()],...e});await a.watch()}}function u(e){return e??{}}function d(e){let r=[`blink.config.ts`],i;for(let a of r){let r=t.default.resolve(e,a);if((0,n.existsSync)(r)){let e=require(r);if(e.default){i={...e.default};break}}}if(i||={},!i.entry){for(let r of[`src/agent.ts`,`src/agent.js`,`agent.ts`,`agent.js`]){let a=t.default.resolve(e,r);if((0,n.existsSync)(a)){i.entry=a;break}}if(!i.entry)throw Error(`Agent entrypoint not found.
25
+ `+t),e.contents=Buffer.from(t,`utf-8`)}})})}},{name:`blink-dev-server`,setup(e){let n;e.onStart(()=>{r.onStart(),n=performance.now()}),e.onEnd(async e=>{await(0,i.rm)(r.outdir,{recursive:!0,force:!0}),await(0,i.mkdir)(r.outdir,{recursive:!0});let o=e.outputFiles?.map(e=>({path:e.path,contents:e.contents}))??[];o.push({path:t.default.resolve(r.outdir,`package.json`),contents:Buffer.from(JSON.stringify({type:`module`},null,2),`utf-8`)});for(let e of o)await(0,i.writeFile)(e.path,e.contents);e.errors.length>0?r.onResult({error:{message:e.errors.map(e=>`${e.text} (${e.location?.file})`).join(`
26
+ `)}}):r.onResult({entry:t.default.resolve(r.outdir,t.default.basename(r.entry).replace(`.ts`,`.js`)),duration:performance.now()-n,outdir:r.outdir,warnings:e.warnings.map(e=>({message:e.text,file:e.location?.file}))}),r.watch||(a.dispose(),a.cancel())})}},o()],...e});await a.watch()}}function u(e){return e??{}}function d(e){let n=[`blink.config.ts`],i;for(let a of n){let n=t.default.resolve(e,a);if((0,r.existsSync)(n)){let e=require(n);if(e.default){i={...e.default};break}}}if(i||={},!i.entry){for(let n of[`src/agent.ts`,`src/agent.js`,`agent.ts`,`agent.js`]){let a=t.default.resolve(e,n);if((0,r.existsSync)(a)){i.entry=a;break}}if(!i.entry)throw Error(`Agent entrypoint not found.
27
27
 
28
28
  Try creating "agent.ts" or specify "entry" in a blink.config.ts file.`)}return i.outdir||=t.default.resolve(e,`data/build`),i.build||=l(),i}Object.defineProperty(exports,`buildWithEsbuild`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`defineConfig`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`resolveConfig`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`setEsbuildInstance`,{enumerable:!0,get:function(){return c}});
@@ -1,4 +1,4 @@
1
- import{__require as e}from"./chunk-D9KrCrVq.js";import t from"path";import{existsSync as n}from"fs";import{builtinModules as r}from"module";import{mkdir as i,rm as a,writeFile as o}from"fs/promises";const s=`ai-telemetry-wrapper`;function c(e={}){let{functions:t=[`streamText`,`generateText`,`generateObject`,`streamObject`,`embed`,`embedMany`],telemetryConfig:n={isEnabled:!0}}=e;return{name:`ai-telemetry`,setup(e){e.onResolve({filter:/^ai$/},e=>{if(e.namespace!==s)return{path:`ai`,namespace:s,pluginData:{resolveDir:e.resolveDir}}}),e.onLoad({filter:/^ai$/,namespace:s},e=>{let r=JSON.stringify(n),i=e.pluginData;return{contents:`
1
+ import{__require as e}from"./chunk-D9KrCrVq.js";import t from"path";import{builtinModules as n}from"module";import{existsSync as r}from"fs";import{mkdir as i,rm as a,writeFile as o}from"fs/promises";const s=`ai-telemetry-wrapper`;function c(e={}){let{functions:t=[`streamText`,`generateText`,`generateObject`,`streamObject`,`embed`,`embedMany`],telemetryConfig:n={isEnabled:!0}}=e;return{name:`ai-telemetry`,setup(e){e.onResolve({filter:/^ai$/},e=>{if(e.namespace!==s)return{path:`ai`,namespace:s,pluginData:{resolveDir:e.resolveDir}}}),e.onLoad({filter:/^ai$/,namespace:s},e=>{let r=JSON.stringify(n),i=e.pluginData;return{contents:`
2
2
  // Import everything from the original 'ai' package
3
3
  import * as aiOriginal from 'ai';
4
4
 
@@ -19,10 +19,10 @@ export function ${e}(options) {
19
19
  return aiOriginal.${e}(options);
20
20
  }
21
21
  `).join(``)}
22
- `,loader:`js`,resolveDir:i?.resolveDir}})}}}let l;function u(e){l=e}function d(e){return async n=>{let s=await(l??await import(`esbuild`)).context({entryPoints:[n.entry],outdir:n.outdir,bundle:!0,write:!1,logLevel:`silent`,format:`esm`,platform:`node`,target:`node22`,sourcemap:!1,mainFields:[`module`,`main`],conditions:[`import`,`module`],plugins:[{name:`blink-esm-require-to-import`,setup(e){e.onEnd(t=>{e.initialOptions.format!==`esm`||e.initialOptions.platform!==`node`||t.outputFiles?.forEach(e=>{if(e.path.endsWith(`.js`)||e.path.endsWith(`.mjs`)){let t=Buffer.from(e.contents).toString(`utf-8`),n=new Map,i=RegExp(`\\b__require\\("(node:)?(${r.join(`|`)})(/[^"]+)?"\\)`,`gm`);t=t.replace(i,(e,t,r,i=``)=>{let a=r+i,o=`__import_${a.toUpperCase().replace(/[/-]/g,`_`)}`,s=`node:${a}`;return n.set(o,s),o}),n.size>0&&(t=Array.from(n.entries()).map(([e,t])=>`import ${e} from "${t}";`).join(`
22
+ `,loader:`js`,resolveDir:i?.resolveDir}})}}}let l;function u(e){l=e}function d(e){return async r=>{let s=await(l??await import(`esbuild`)).context({entryPoints:[r.entry],outdir:r.outdir,bundle:!0,write:!1,logLevel:`silent`,format:`esm`,platform:`node`,target:`node22`,sourcemap:!1,mainFields:[`module`,`main`],conditions:[`import`,`module`],plugins:[{name:`blink-esm-require-to-import`,setup(e){e.onEnd(t=>{e.initialOptions.format!==`esm`||e.initialOptions.platform!==`node`||t.outputFiles?.forEach(e=>{if(e.path.endsWith(`.js`)||e.path.endsWith(`.mjs`)){let t=Buffer.from(e.contents).toString(`utf-8`),r=new Map,i=RegExp(`\\b__require\\("(node:)?(${n.join(`|`)})(/[^"]+)?"\\)`,`gm`);t=t.replace(i,(e,t,n,i=``)=>{let a=n+i,o=`__import_${a.toUpperCase().replace(/[/-]/g,`_`)}`,s=`node:${a}`;return r.set(o,s),o}),r.size>0&&(t=Array.from(r.entries()).map(([e,t])=>`import ${e} from "${t}";`).join(`
23
23
  `)+`
24
24
 
25
- `+t),e.contents=Buffer.from(t,`utf-8`)}})})}},{name:`blink-dev-server`,setup(e){let r;e.onStart(()=>{n.onStart(),r=performance.now()}),e.onEnd(async e=>{await a(n.outdir,{recursive:!0,force:!0}),await i(n.outdir,{recursive:!0});let c=e.outputFiles?.map(e=>({path:e.path,contents:e.contents}))??[];c.push({path:t.resolve(n.outdir,`package.json`),contents:Buffer.from(JSON.stringify({type:`module`},null,2),`utf-8`)});for(let e of c)await o(e.path,e.contents);e.errors.length>0?n.onResult({error:{message:e.errors.map(e=>`${e.text} (${e.location?.file})`).join(`
26
- `)}}):n.onResult({entry:t.resolve(n.outdir,t.basename(n.entry).replace(`.ts`,`.js`)),duration:performance.now()-r,outdir:n.outdir,warnings:e.warnings.map(e=>({message:e.text,file:e.location?.file}))}),n.watch||(s.dispose(),s.cancel())})}},c()],...e});await s.watch()}}function f(e){return e??{}}function p(r){let i=[`blink.config.ts`],a;for(let o of i){let i=t.resolve(r,o);if(n(i)){let t=e(i);if(t.default){a={...t.default};break}}}if(a||={},!a.entry){for(let e of[`src/agent.ts`,`src/agent.js`,`agent.ts`,`agent.js`]){let i=t.resolve(r,e);if(n(i)){a.entry=i;break}}if(!a.entry)throw Error(`Agent entrypoint not found.
25
+ `+t),e.contents=Buffer.from(t,`utf-8`)}})})}},{name:`blink-dev-server`,setup(e){let n;e.onStart(()=>{r.onStart(),n=performance.now()}),e.onEnd(async e=>{await a(r.outdir,{recursive:!0,force:!0}),await i(r.outdir,{recursive:!0});let c=e.outputFiles?.map(e=>({path:e.path,contents:e.contents}))??[];c.push({path:t.resolve(r.outdir,`package.json`),contents:Buffer.from(JSON.stringify({type:`module`},null,2),`utf-8`)});for(let e of c)await o(e.path,e.contents);e.errors.length>0?r.onResult({error:{message:e.errors.map(e=>`${e.text} (${e.location?.file})`).join(`
26
+ `)}}):r.onResult({entry:t.resolve(r.outdir,t.basename(r.entry).replace(`.ts`,`.js`)),duration:performance.now()-n,outdir:r.outdir,warnings:e.warnings.map(e=>({message:e.text,file:e.location?.file}))}),r.watch||(s.dispose(),s.cancel())})}},c()],...e});await s.watch()}}function f(e){return e??{}}function p(n){let i=[`blink.config.ts`],a;for(let o of i){let i=t.resolve(n,o);if(r(i)){let t=e(i);if(t.default){a={...t.default};break}}}if(a||={},!a.entry){for(let e of[`src/agent.ts`,`src/agent.js`,`agent.ts`,`agent.js`]){let i=t.resolve(n,e);if(r(i)){a.entry=i;break}}if(!a.entry)throw Error(`Agent entrypoint not found.
27
27
 
28
- Try creating "agent.ts" or specify "entry" in a blink.config.ts file.`)}return a.outdir||=t.resolve(r,`data/build`),a.build||=d(),a}export{d as buildWithEsbuild,f as defineConfig,p as resolveConfig,u as setEsbuildInstance};
28
+ Try creating "agent.ts" or specify "entry" in a blink.config.ts file.`)}return a.outdir||=t.resolve(n,`data/build`),a.build||=d(),a}export{d as buildWithEsbuild,f as defineConfig,p as resolveConfig,u as setEsbuildInstance};
@@ -1 +1 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`),n=require(`./execAsync-C9Unrkco.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=require(`fs`),a=n.require_execAsync(),o=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function s(){try{return(await i.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,a.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=s}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`),n=require(`./execAsync-pJEPzmP4.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=require(`fs`),a=n.require_execAsync(),o=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function s(){try{return(await i.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,a.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=s}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
@@ -1 +1 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`),n=require(`./execAsync-pJEPzmP4.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=require(`fs`),a=n.require_execAsync(),o=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function s(){try{return(await i.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,a.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=s}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`),n=require(`./execAsync-C9Unrkco.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=require(`fs`),a=n.require_execAsync(),o=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function s(){try{return(await i.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,a.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=s}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
@@ -1 +1 @@
1
- import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-D1GEQyaY.js";import{require_execAsync as a}from"./execAsync-epR2wT1r.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`fs`),s=a(),c=(i(),n(r));async function l(){try{return(await o.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,s.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};
1
+ import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-CbZfjZBn.js";import{require_execAsync as a}from"./execAsync-epR2wT1r.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`fs`),s=a(),c=(i(),n(r));async function l(){try{return(await o.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,s.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};
@@ -1 +1 @@
1
- import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-D1GEQyaY.js";import{require_execAsync as a}from"./execAsync-DzxhVi7q.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`fs`),s=a(),c=(i(),n(r));async function l(){try{return(await o.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,s.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};
1
+ import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-CbZfjZBn.js";import{require_execAsync as a}from"./execAsync-DzxhVi7q.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`fs`),s=a(),c=(i(),n(r));async function l(){try{return(await o.promises.readFile(`/etc/hostid`,{encoding:`utf8`})).trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}try{return(await(0,s.execAsync)(`kenv -q smbios.system.uuid`)).stdout.trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};
@@ -1,2 +1,2 @@
1
- import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-D1GEQyaY.js";import{require_execAsync as i}from"./execAsync-epR2wT1r.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=i(),o=(r(),t(n));async function s(){try{let e=(await(0,a.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
1
+ import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-CbZfjZBn.js";import{require_execAsync as i}from"./execAsync-epR2wT1r.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=i(),o=(r(),t(n));async function s(){try{let e=(await(0,a.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
2
2
  `).find(e=>e.includes(`IOPlatformUUID`));if(!e)return;let t=e.split(`" = "`);if(t.length===2)return t[1].slice(0,-1)}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=s}));export default a();export{};
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`),n=require(`./execAsync-pJEPzmP4.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=n.require_execAsync(),a=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function o(){try{let e=(await(0,i.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`),n=require(`./execAsync-pJEPzmP4.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=n.require_execAsync(),a=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function o(){try{let e=(await(0,i.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
2
2
  `).find(e=>e.includes(`IOPlatformUUID`));if(!e)return;let t=e.split(`" = "`);if(t.length===2)return t[1].slice(0,-1)}catch(e){a.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=o}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
@@ -1,2 +1,2 @@
1
- import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-D1GEQyaY.js";import{require_execAsync as i}from"./execAsync-DzxhVi7q.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=i(),o=(r(),t(n));async function s(){try{let e=(await(0,a.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
1
+ import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-CbZfjZBn.js";import{require_execAsync as i}from"./execAsync-DzxhVi7q.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=i(),o=(r(),t(n));async function s(){try{let e=(await(0,a.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
2
2
  `).find(e=>e.includes(`IOPlatformUUID`));if(!e)return;let t=e.split(`" = "`);if(t.length===2)return t[1].slice(0,-1)}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=s}));export default a();export{};
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`),n=require(`./execAsync-C9Unrkco.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=n.require_execAsync(),a=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function o(){try{let e=(await(0,i.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`),n=require(`./execAsync-C9Unrkco.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=n.require_execAsync(),a=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function o(){try{let e=(await(0,i.execAsync)(`ioreg -rd1 -c "IOPlatformExpertDevice"`)).stdout.split(`
2
2
  `).find(e=>e.includes(`IOPlatformUUID`));if(!e)return;let t=e.split(`" = "`);if(t.length===2)return t[1].slice(0,-1)}catch(e){a.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=o}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
@@ -1 +1 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=require(`fs`),i=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function a(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await r.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){i.diag.debug(`error reading machine id: ${e}`)}}n.getMachineId=a}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=require(`fs`),i=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function a(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await r.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){i.diag.debug(`error reading machine id: ${e}`)}}n.getMachineId=a}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
@@ -1 +1 @@
1
- import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-D1GEQyaY.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=t(`fs`),o=(i(),n(r));async function s(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await a.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=s}));export default a();export{};
1
+ import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-CbZfjZBn.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=t(`fs`),o=(i(),n(r));async function s(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await a.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=s}));export default a();export{};
@@ -1 +1 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=require(`fs`),i=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function a(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await r.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){i.diag.debug(`error reading machine id: ${e}`)}}n.getMachineId=a}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=require(`fs`),i=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function a(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await r.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){i.diag.debug(`error reading machine id: ${e}`)}}n.getMachineId=a}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
@@ -1 +1 @@
1
- import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-D1GEQyaY.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=t(`fs`),o=(i(),n(r));async function s(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await a.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=s}));export default a();export{};
1
+ import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-CbZfjZBn.js";var a=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let a=t(`fs`),o=(i(),n(r));async function s(){for(let e of[`/etc/machine-id`,`/var/lib/dbus/machine-id`])try{return(await a.promises.readFile(e,{encoding:`utf8`})).trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=s}));export default a();export{};
@@ -1 +1 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function i(){r.diag.debug(`could not read machine-id: unsupported platform`)}n.getMachineId=i}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function i(){r.diag.debug(`could not read machine-id: unsupported platform`)}n.getMachineId=i}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
@@ -1 +1 @@
1
- import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-D1GEQyaY.js";var i=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let i=(r(),t(n));async function a(){i.diag.debug(`could not read machine-id: unsupported platform`)}e.getMachineId=a}));export default i();export{};
1
+ import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-CbZfjZBn.js";var i=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let i=(r(),t(n));async function a(){i.diag.debug(`could not read machine-id: unsupported platform`)}e.getMachineId=a}));export default i();export{};
@@ -1 +1 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function i(){r.diag.debug(`could not read machine-id: unsupported platform`)}n.getMachineId=i}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`);var n=e.__commonJSMin((n=>{Object.defineProperty(n,`__esModule`,{value:!0});let r=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function i(){r.diag.debug(`could not read machine-id: unsupported platform`)}n.getMachineId=i}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return n()}});
@@ -1 +1 @@
1
- import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-D1GEQyaY.js";var i=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let i=(r(),t(n));async function a(){i.diag.debug(`could not read machine-id: unsupported platform`)}e.getMachineId=a}));export default i();export{};
1
+ import{__commonJSMin as e,__toCommonJS as t}from"./chunk-D9KrCrVq.js";import{esm_exports as n,init_esm as r}from"./esm-CbZfjZBn.js";var i=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let i=(r(),t(n));async function a(){i.diag.debug(`could not read machine-id: unsupported platform`)}e.getMachineId=a}));export default i();export{};
@@ -1 +1 @@
1
- import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-D1GEQyaY.js";import{require_execAsync as a}from"./execAsync-epR2wT1r.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`process`),s=a(),c=(i(),n(r));async function l(){let e=`%windir%\\System32\\REG.exe`;o.arch===`ia32`&&`PROCESSOR_ARCHITEW6432`in o.env&&(e=`%windir%\\sysnative\\cmd.exe /c `+e);try{let t=(await(0,s.execAsync)(`${e} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split(`REG_SZ`);if(t.length===2)return t[1].trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};
1
+ import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-CbZfjZBn.js";import{require_execAsync as a}from"./execAsync-epR2wT1r.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`process`),s=a(),c=(i(),n(r));async function l(){let e=`%windir%\\System32\\REG.exe`;o.arch===`ia32`&&`PROCESSOR_ARCHITEW6432`in o.env&&(e=`%windir%\\sysnative\\cmd.exe /c `+e);try{let t=(await(0,s.execAsync)(`${e} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split(`REG_SZ`);if(t.length===2)return t[1].trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};
@@ -1 +1 @@
1
- const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-C-vSI1Ww.cjs`),n=require(`./execAsync-C9Unrkco.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=require(`process`),a=n.require_execAsync(),o=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function s(){let e=`%windir%\\System32\\REG.exe`;i.arch===`ia32`&&`PROCESSOR_ARCHITEW6432`in i.env&&(e=`%windir%\\sysnative\\cmd.exe /c `+e);try{let t=(await(0,a.execAsync)(`${e} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split(`REG_SZ`);if(t.length===2)return t[1].trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=s}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
1
+ const e=require(`./chunk-iXuH7AlR.cjs`),t=require(`./esm-0UNjvroT.cjs`),n=require(`./execAsync-C9Unrkco.cjs`);var r=e.__commonJSMin((r=>{Object.defineProperty(r,`__esModule`,{value:!0});let i=require(`process`),a=n.require_execAsync(),o=(t.init_esm(),e.__toCommonJS(t.esm_exports));async function s(){let e=`%windir%\\System32\\REG.exe`;i.arch===`ia32`&&`PROCESSOR_ARCHITEW6432`in i.env&&(e=`%windir%\\sysnative\\cmd.exe /c `+e);try{let t=(await(0,a.execAsync)(`${e} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split(`REG_SZ`);if(t.length===2)return t[1].trim()}catch(e){o.diag.debug(`error reading machine id: ${e}`)}}r.getMachineId=s}));Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return r()}});
@@ -1 +1 @@
1
- import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-D1GEQyaY.js";import{require_execAsync as a}from"./execAsync-DzxhVi7q.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`process`),s=a(),c=(i(),n(r));async function l(){let e=`%windir%\\System32\\REG.exe`;o.arch===`ia32`&&`PROCESSOR_ARCHITEW6432`in o.env&&(e=`%windir%\\sysnative\\cmd.exe /c `+e);try{let t=(await(0,s.execAsync)(`${e} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split(`REG_SZ`);if(t.length===2)return t[1].trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};
1
+ import{__commonJSMin as e,__require as t,__toCommonJS as n}from"./chunk-D9KrCrVq.js";import{esm_exports as r,init_esm as i}from"./esm-CbZfjZBn.js";import{require_execAsync as a}from"./execAsync-DzxhVi7q.js";var o=e((e=>{Object.defineProperty(e,`__esModule`,{value:!0});let o=t(`process`),s=a(),c=(i(),n(r));async function l(){let e=`%windir%\\System32\\REG.exe`;o.arch===`ia32`&&`PROCESSOR_ARCHITEW6432`in o.env&&(e=`%windir%\\sysnative\\cmd.exe /c `+e);try{let t=(await(0,s.execAsync)(`${e} QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`)).stdout.split(`REG_SZ`);if(t.length===2)return t[1].trim()}catch(e){c.diag.debug(`error reading machine id: ${e}`)}}e.getMachineId=l}));export default o();export{};