expect-cli 0.0.13 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +44 -44
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{n as e,r as t,t as n}from"./chunk-wdO_pP5q.js";import{a as r,i}from"./server-D776aGSk.js";import{createRequire as a}from"node:module";import{Array as o,Cause as s,Config as c,DateTime as l,
|
|
3
|
-
`),r=0;for(let e=0;e<n.length;e++){let i=n[e].length;if(t<=r+i)return{lineIndex:e,column:t-r,lines:n};r+=i+1}let i=n.length-1;return{lineIndex:i,column:n[i].length,lines:n}},
|
|
4
|
-
`?v+=
|
|
5
|
-
`:v+=n?
|
|
6
|
-
`+e.slice(p),r++;else{c&&c(e);return}else n.leftArrow?a&&r--:n.rightArrow?a&&r++:n.backspace||n.delete?p>0&&(i=e.slice(0,p-1)+e.slice(p,e.length),r--):(i=e.slice(0,p)+t+e.slice(p,e.length),r+=t.length,t.length>1&&(d=t.length));r<0&&(r=0),r>i.length&&(r=i.length),f({cursorOffset:r,cursorWidth:d}),i!==e&&s(i)},{isActive:n}),V(O,{children:t?_.length>0?v:y:v})},Wt=e=>{let t=ie(13);if(t[0]!==`ed5db14495474995e96712c30462d38da6b6aa36bffcbec475f62d8824e8125d`){for(let e=0;e<13;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`ed5db14495474995e96712c30462d38da6b6aa36bffcbec475f62d8824e8125d`}let{isSearching:n,query:r,onChange:i,onSubmit:a}=e,o=Pt();if(n){let e;t[1]===o.DIM?e=t[2]:(e=V(O,{color:o.DIM,children:`/`}),t[1]=o.DIM,t[2]=e);let n;t[3]!==i||t[4]!==a||t[5]!==r?(n=V(Ut,{focus:!0,value:r,onChange:i,onSubmit:a}),t[3]=i,t[4]=a,t[5]=r,t[6]=n):n=t[6];let s;return t[7]!==e||t[8]!==n?(s=H(E,{marginTop:1,children:[e,n]}),t[7]=e,t[8]=n,t[9]=s):s=t[9],s}if(r){let e;return t[10]!==o.DIM||t[11]!==r?(e=V(E,{marginTop:1,children:H(O,{color:o.DIM,children:[`/`,r]})}),t[10]=o.DIM,t[11]=r,t[12]=e):e=t[12],e}return null},Gt=S.Literals([`pending`,`in_progress`,`completed`,`failed`]),Kt=S.Literals([`read`,`edit`,`delete`,`move`,`search`,`execute`,`think`,`fetch`,`switch_mode`,`other`]);S.Literals([`end_turn`,`max_tokens`,`max_turn_requests`,`refusal`,`cancelled`]);const qt=S.Union([S.Struct({type:S.Literal(`text`),text:S.String}),S.Struct({type:S.Literal(`image`),data:S.String,mimeType:S.String}),S.Struct({type:S.Literal(`resource_link`),uri:S.String}),S.Struct({type:S.Literal(`resource`),uri:S.String})]),Jt=S.Union([S.Struct({type:S.Literal(`content`),content:qt}),S.Struct({type:S.Literal(`diff`),path:S.String,oldText:S.optional(S.NullOr(S.String)),newText:S.optional(S.NullOr(S.String))}),S.Struct({type:S.Literal(`terminal`),terminalId:S.String})]),Yt=S.Struct({path:S.String,lineNumber:S.optional(S.NullOr(S.Number))});var Xt=class extends S.Class(`AcpAgentMessageChunk`)({sessionUpdate:S.Literal(`agent_message_chunk`),content:qt,messageId:S.optional(S.NullOr(S.String))}){},Zt=class extends S.Class(`AcpAgentThoughtChunk`)({sessionUpdate:S.Literal(`agent_thought_chunk`),content:qt,messageId:S.optional(S.NullOr(S.String))}){},Qt=class extends S.Class(`AcpUserMessageChunk`)({sessionUpdate:S.Literal(`user_message_chunk`),content:qt,messageId:S.optional(S.NullOr(S.String))}){},$t=class extends S.Class(`AcpToolCall`)({sessionUpdate:S.Literal(`tool_call`),toolCallId:S.String,title:S.String,kind:S.optional(Kt),status:S.optional(Gt),content:S.optional(S.Array(Jt)),locations:S.optional(S.Array(Yt)),rawInput:S.optional(S.Unknown),rawOutput:S.optional(S.Unknown)}){},en=class extends S.Class(`AcpToolCallUpdate`)({sessionUpdate:S.Literal(`tool_call_update`),toolCallId:S.String,title:S.optional(S.NullOr(S.String)),kind:S.optional(S.NullOr(Kt)),status:S.optional(S.NullOr(Gt)),content:S.optional(S.NullOr(S.Array(Jt))),locations:S.optional(S.NullOr(S.Array(Yt))),rawInput:S.optional(S.Unknown),rawOutput:S.optional(S.Unknown)}){};const tn=S.Literals([`pending`,`in_progress`,`completed`]),nn=S.Literals([`high`,`medium`,`low`]);var rn=class extends S.Class(`AcpPlanUpdate`)({sessionUpdate:S.Literal(`plan`),entries:S.Array(S.Struct({content:S.String,priority:nn,status:tn}))}){},an=class extends S.Class(`AcpAvailableCommandsUpdate`)({sessionUpdate:S.Literal(`available_commands_update`)}){},on=class extends S.Class(`AcpCurrentModeUpdate`)({sessionUpdate:S.Literal(`current_mode_update`)}){},sn=class extends S.Class(`AcpConfigOptionUpdate`)({sessionUpdate:S.Literal(`config_option_update`)}){},cn=class extends S.Class(`AcpSessionInfoUpdate`)({sessionUpdate:S.Literal(`session_info_update`)}){},ln=class extends S.Class(`AcpUsageUpdate`)({sessionUpdate:S.Literal(`usage_update`)}){};const un=S.Union([Xt,Zt,Qt,$t,en,rn,an,on,sn,cn,ln]);S.Struct({inputTokens:S.Number,outputTokens:S.Number,cachedReadTokens:S.optional(S.NullOr(S.Number)),cachedWriteTokens:S.optional(S.NullOr(S.Number)),thoughtTokens:S.optional(S.NullOr(S.Number))});const dn=S.Literals([`claude`,`codex`,`cursor`]);var fn=class extends S.Class(`@ami/FileStat`)({relativePath:S.String,added:S.Number,removed:S.Number}){},pn=class extends S.Class(`@supervisor/GitState`)({isGitRepo:S.Boolean,currentBranch:S.String,mainBranch:S.UndefinedOr(S.String),isOnMain:S.Boolean,hasChangesFromMain:S.Boolean,hasUnstagedChanges:S.Boolean,hasBranchCommits:S.Boolean,branchCommitCount:S.Number,fileStats:S.Array(fn),workingTreeFileStats:S.Array(fn),fingerprint:S.UndefinedOr(S.String),savedFingerprint:S.UndefinedOr(S.String)}){get hasUntestedChanges(){return this.hasChangesFromMain||this.hasUnstagedChanges}get totalChangedLines(){return this.fileStats.reduce((e,t)=>e+t.added+t.removed,0)}get isCurrentStateTested(){return!this.fingerprint||!this.savedFingerprint?!1:this.fingerprint===this.savedFingerprint}};const mn=S.String.pipe(S.brand(`StepId`)),hn=S.String.pipe(S.brand(`PlanId`)),gn=S.TaggedUnion({WorkingTree:{},Branch:{mainBranch:S.String},Changes:{mainBranch:S.String},Commit:{hash:S.String}}),_n=e=>g.value(e).pipe(g.tagsExhaustive({WorkingTree:()=>`working tree`,Branch:()=>`branch`,Changes:()=>`changes`,Commit:({hash:e})=>e.slice(0,7)})),vn=S.Struct({number:S.Number,headRefName:S.String,author:S.Struct({login:S.String}),state:S.String,updatedAt:S.String}),yn=[`recent`,`all`,`open`,`draft`,`merged`,`no-pr`];var bn=class extends S.Class(`@supervisor/RemoteBranch`)({name:S.String,author:S.String,prNumber:S.NullOr(S.Number),prStatus:S.NullOr(S.Literals([`open`,`draft`,`merged`])),updatedAt:S.NullOr(S.String)}){static filterBranches(e,t,n){let r=e.filter(e=>t===`recent`||t===`all`?!0:t===`no-pr`?e.prStatus===null:e.prStatus===t);if(n){let e=n.toLowerCase();r=r.filter(t=>t.name.toLowerCase().includes(e))}return t===`recent`&&(r=[...r].filter(e=>e.updatedAt!==null).sort((e,t)=>{let n=new Date(e.updatedAt??0).getTime();return new Date(t.updatedAt??0).getTime()-n})),r}};const xn=S.Literals([`pending`,`active`,`passed`,`failed`,`skipped`]);var Sn=class e extends S.Class(`@supervisor/TestPlanStep`)({id:mn,title:S.String,instruction:S.String,expectedOutcome:S.String,routeHint:S.OptionFromNullOr(S.String),status:xn,summary:S.OptionFromNullOr(S.String),startedAt:S.OptionFromNullOr(S.DateTimeUtc),endedAt:S.OptionFromNullOr(S.DateTimeUtc)}){update(t){return new e({...this,...t})}},Cn=class extends S.Class(`@supervisor/TestCoverageEntry`)({path:S.String,testFiles:S.Array(S.String),covered:S.Boolean}){},wn=class extends S.Class(`@supervisor/TestCoverageReport`)({entries:S.Array(Cn),coveredCount:S.Number,totalCount:S.Number,percent:S.Number}){};const Tn=S.String.pipe(S.brand(`DraftId`));var En=class e extends S.Class(`@supervisor/TestPlanDraft`)({id:Tn,changesFor:gn,currentBranch:S.String,diffPreview:S.String,fileStats:S.Array(fn),instruction:S.String,baseUrl:S.Option(S.String),isHeadless:S.Boolean,requiresCookies:S.Boolean,testCoverage:S.Option(wn)}){update(t){return new e({...this,...t})}},Dn=class e extends En.extend(`@supervisor/TestPlan`)({id:hn,title:S.String,rationale:S.String,steps:S.Array(Sn)}){update(t){return new e({...this,...t})}updateStep(t,n){return new e({...this,steps:this.steps.map((e,r)=>r===t?n(e):e)})}get stepCount(){return this.steps.length}get resetForRerun(){return new e({...this,steps:this.steps.map(e=>new Sn({...e,status:`pending`,summary:_.none(),startedAt:_.none(),endedAt:_.none()}))})}},On=class extends S.TaggedClass()(`RunStarted`,{plan:Dn}){get id(){return`run-started-${this.plan.id}`}},kn=class extends S.TaggedClass()(`StepStarted`,{stepId:mn,title:S.String}){get id(){return`step-started-${this.stepId}`}},An=class extends S.TaggedClass()(`StepCompleted`,{stepId:mn,summary:S.String}){get id(){return`step-completed-${this.stepId}`}},jn=class extends S.TaggedClass()(`StepFailed`,{stepId:mn,message:S.String}){get id(){return`step-failed-${this.stepId}`}},Mn=class extends S.TaggedClass()(`StepSkipped`,{stepId:mn,reason:S.String}){get id(){return`step-skipped-${this.stepId}`}},Nn=class extends S.TaggedClass()(`ToolCall`,{toolName:S.String,input:S.Unknown}){get id(){return`tool-call-${this.toolName}-${JSON.stringify(this.input)}`}get displayText(){return v.isObject(this.input)&&`command`in this.input?String(this.input.command).slice(0,80):this.toolName}},Pn=class extends S.TaggedClass()(`ToolProgress`,{toolName:S.String,outputSize:S.Number}){get id(){return`tool-progress-${this.toolName}-${this.outputSize}`}},Fn=class extends S.TaggedClass()(`ToolResult`,{toolName:S.String,result:S.String,isError:S.Boolean}){get id(){return`tool-result-${this.toolName}-${this.result}`}},In=class extends S.TaggedClass()(`AgentThinking`,{text:S.String}){get id(){return`agent-thinking-${this.text}`}},Ln=class extends S.TaggedClass()(`AgentText`,{text:S.String}){get id(){return`agent-text-${this.text}`}},Rn=class extends S.TaggedClass()(`RunFinished`,{status:S.Literals([`passed`,`failed`]),summary:S.String}){get id(){return`run-finished-${this.status}`}};const zn=e=>{if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e==null)return String(e);try{return JSON.stringify(e)}catch{return String(e)}},Bn=e=>{let t=e.indexOf(`|`);if(t===-1)return;let n=e.slice(0,t),r=e.slice(t+1),i=r.indexOf(`|`),a=i===-1?r:r.slice(0,i),o=i===-1?``:r.slice(i+1);if(n===`STEP_START`)return new kn({stepId:mn.makeUnsafe(a),title:o});if(n===`STEP_DONE`)return new An({stepId:mn.makeUnsafe(a),summary:o});if(n===`ASSERTION_FAILED`)return new jn({stepId:mn.makeUnsafe(a),message:o});if(n===`STEP_SKIPPED`)return new Mn({stepId:mn.makeUnsafe(a),reason:o});if(n===`RUN_COMPLETED`)return new Rn({status:a===`failed`?`failed`:`passed`,summary:o})},Vn=S.Union([On,kn,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn]);var Hn=class extends S.TaggedClass()(`RunCompleted`,{report:S.suspend(()=>$n)}){};const Un=S.Union([On,kn,An,jn,Mn,Nn,Fn,In,Rn,Hn]);var Wn=class extends S.Class(`@supervisor/Update`)({content:Un,receivedAt:S.DateTimeUtc}){},Gn=class extends S.Class(`@supervisor/PullRequest`)({number:S.Number,url:S.String,title:S.String,headRefName:S.String}){};const Kn=S.TaggedUnion({WorkingTree:{},Branch:{branch:bn},PullRequest:{branch:bn},Commit:{hash:S.String,shortHash:S.String,subject:S.String}}),qn=e=>g.value(e).pipe(g.tagsExhaustive({WorkingTree:()=>`working-tree`,Branch:({branch:e})=>`branch-${e.name}`,PullRequest:({branch:e})=>`pr-${e.prNumber}`,Commit:({hash:e})=>`commit-${e}`})),Jn=e=>g.value(e).pipe(g.tagsExhaustive({WorkingTree:()=>`local changes`,Branch:({branch:e})=>e.name,PullRequest:({branch:e})=>`#${e.prNumber} ${e.name} ${e.author}`,Commit:({shortHash:e,subject:t})=>`${e} ${t}`})),Yn=e=>g.value(e).pipe(g.tagsExhaustive({WorkingTree:()=>`Local changes`,Branch:({branch:e})=>e.name,PullRequest:({branch:e})=>e.name,Commit:({shortHash:e})=>e})),Xn=e=>g.value(e).pipe(g.tagsExhaustive({WorkingTree:()=>`working tree`,Branch:({branch:e})=>e.author?`by ${e.author}`:``,PullRequest:({branch:e})=>`#${e.prNumber} ${e.prStatus??``}`.trim(),Commit:({subject:e})=>e})),Zn=e=>g.value(e).pipe(g.tagsExhaustive({WorkingTree:()=>`Local changes`,Branch:({branch:e})=>e.name,PullRequest:({branch:e})=>`#${e.prNumber}`,Commit:({shortHash:e})=>e}));S.TaggedUnion({Branch:{branchName:S.String}});var Qn=class e extends Dn.extend(`@supervisor/ExecutedTestPlan`)({events:S.Array(Vn)}){addEvent(t){if(t.sessionUpdate===`agent_thought_chunk`){if(t.content.type!==`text`||t.content.text===void 0)return this;let n=this.finalizeTextBlock(),r=n.events.at(-1);return r?._tag===`AgentThinking`?new e({...n,events:[...n.events.slice(0,-1),new In({text:r.text+t.content.text})]}):new e({...n,events:[...n.events,new In({text:t.content.text})]})}if(t.sessionUpdate===`agent_message_chunk`){if(t.content.type!==`text`||t.content.text===void 0)return this;let n=this.events.at(-1);return n?._tag===`AgentText`?new e({...this,events:[...this.events.slice(0,-1),new Ln({text:n.text+t.content.text})]}):new e({...this,events:[...this.events,new Ln({text:t.content.text})]})}if(t.sessionUpdate===`tool_call`){let n=this.finalizeTextBlock();return new e({...n,events:[...n.events,new Nn({toolName:t.title,input:JSON.stringify(t.rawInput??{})})]})}if(t.sessionUpdate===`tool_call_update`){let n;if(t.rawInput!==void 0){let r=[...this.events];for(let e=r.length-1;e>=0;e--){let n=r[e];if(n._tag===`ToolCall`&&n.toolName===(t.title??``)){r[e]=new Nn({toolName:n.toolName,input:JSON.stringify(t.rawInput)});break}}n=new e({...this,events:r})}let r=n??this;if(t.status===`completed`||t.status===`failed`)return new e({...r,events:[...r.events,new Fn({toolName:t.title??``,result:zn(t.rawOutput),isError:t.status===`failed`})]});if(t.rawOutput!==void 0){let n=zn(t.rawOutput).length;return new e({...r,events:[...r.events.filter(e=>!(e._tag===`ToolProgress`&&e.toolName===(t.title??``))),new Pn({toolName:t.title??``,outputSize:n})]})}return r}return this}finalizeTextBlock(){let t=this.events.at(-1);if(t?._tag!==`AgentText`)return this;let n=t.text.split(`
|
|
7
|
-
`).map(
|
|
8
|
-
`)}},er=class extends C.Service()(`@supervisor/Updates`,{make:u.gen(function*(){let e=yield*y.unbounded();return{publish:u.fn(`Updates.publish`)(function*(t){yield*y.publish(e,new Wn({content:t,receivedAt:l.nowUnsafe()}))}),stream:u.fn(`Updates.stream`)(function*(){return w.fromPubSub(e)})}})}){static layer=m.effect(this)(this.make)};const tr=S.Struct({name:S.String,value:S.String});var nr=class extends S.Class(`AgentStreamOptions`)({cwd:S.String,sessionId:S.Option(S.String),prompt:S.String,systemPrompt:S.Option(S.String),mcpEnv:S.optional(S.Array(tr))}){};const rr={authenticate:`authenticate`,initialize:`initialize`,session_cancel:`session/cancel`,session_close:`session/close`,session_fork:`session/fork`,session_list:`session/list`,session_load:`session/load`,session_new:`session/new`,session_prompt:`session/prompt`,session_resume:`session/resume`,session_set_config_option:`session/set_config_option`,session_set_mode:`session/set_mode`,session_set_model:`session/set_model`},ir={fs_read_text_file:`fs/read_text_file`,fs_write_text_file:`fs/write_text_file`,session_request_permission:`session/request_permission`,session_update:`session/update`,terminal_create:`terminal/create`,terminal_kill:`terminal/kill`,terminal_output:`terminal/output`,terminal_release:`terminal/release`,terminal_wait_for_exit:`terminal/wait_for_exit`},ar=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),terminal:K.boolean().optional().default(!1)}),or=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),label:K.string().nullish(),name:K.string(),optional:K.boolean().optional().default(!1),secret:K.boolean().optional().default(!0)}),sr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),description:K.string().nullish(),id:K.string(),name:K.string()}),cr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),description:K.string().nullish(),id:K.string(),link:K.string().nullish(),name:K.string(),vars:K.array(or)}),lr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),args:K.array(K.string()).optional(),description:K.string().nullish(),env:K.record(K.string(),K.string()).optional(),id:K.string(),name:K.string()}),ur=K.union([cr.and(K.object({type:K.literal(`env_var`)})),lr.and(K.object({type:K.literal(`terminal`)})),sr]),dr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),methodId:K.string()}),fr=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),pr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),blob:K.string(),mimeType:K.string().nullish(),uri:K.string()}),mr=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),hr=K.object({amount:K.number(),currency:K.string()}),gr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),terminalId:K.string()}),_r=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),newText:K.string(),oldText:K.string().nullish(),path:K.string()}),vr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),name:K.string(),value:K.string()}),yr=K.union([K.literal(-32700),K.literal(-32600),K.literal(-32601),K.literal(-32602),K.literal(-32603),K.literal(-32800),K.literal(-32e3),K.literal(-32002),K.number().int().min(-2147483648,{message:`Invalid value: Expected int32 to be >= -2147483648`}).max(2147483647,{message:`Invalid value: Expected int32 to be <= 2147483647`})]),br=K.object({code:yr,data:K.unknown().optional(),message:K.string()}),xr=K.unknown(),Sr=K.unknown(),Cr=K.unknown(),wr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),readTextFile:K.boolean().optional().default(!1),writeTextFile:K.boolean().optional().default(!1)}),Tr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),auth:ar.optional().default({terminal:!1}),fs:wr.optional().default({readTextFile:!1,writeTextFile:!1}),terminal:K.boolean().optional().default(!1)}),Er=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),name:K.string(),value:K.string()}),Dr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),name:K.string(),title:K.string().nullish(),version:K.string()}),Or=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),kr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),cursor:K.string().nullish(),cwd:K.string().nullish()}),Ar=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),http:K.boolean().optional().default(!1),sse:K.boolean().optional().default(!1)}),jr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),headers:K.array(Er),name:K.string(),url:K.string()}),Mr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),headers:K.array(Er),name:K.string(),url:K.string()}),Nr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),args:K.array(K.string()),command:K.string(),env:K.array(vr),name:K.string()}),Pr=K.union([jr.and(K.object({type:K.literal(`http`)})),Mr.and(K.object({type:K.literal(`sse`)})),Nr]),Fr=K.string(),Ir=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),description:K.string().nullish(),modelId:Fr,name:K.string()}),Lr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),cwd:K.string(),mcpServers:K.array(Pr)}),Rr=K.string(),zr=K.union([K.literal(`allow_once`),K.literal(`allow_always`),K.literal(`reject_once`),K.literal(`reject_always`)]),Br=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),kind:zr,name:K.string(),optionId:Rr}),Vr=K.union([K.literal(`high`),K.literal(`medium`),K.literal(`low`)]),Hr=K.union([K.literal(`pending`),K.literal(`in_progress`),K.literal(`completed`)]),Ur=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),content:K.string(),priority:Vr,status:Hr}),Wr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),entries:K.array(Ur)}),Gr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),audio:K.boolean().optional().default(!1),embeddedContext:K.boolean().optional().default(!1),image:K.boolean().optional().default(!1)}),Kr=K.number().int().gte(0).lte(65535),qr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),clientCapabilities:Tr.optional().default({auth:{terminal:!1},fs:{readTextFile:!1,writeTextFile:!1},terminal:!1}),clientInfo:Dr.nullish(),protocolVersion:Kr}),Jr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),content:K.string()}),Yr=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),Xr=K.union([K.number(),K.string()]).nullable();K.object({_meta:K.record(K.string(),K.unknown()).nullish(),requestId:Xr});const Zr=K.enum([`assistant`,`user`]),Qr=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),audience:K.array(Zr).nullish(),lastModified:K.string().nullish(),priority:K.number().nullish()}),$r=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),annotations:Qr.nullish(),data:K.string(),mimeType:K.string()}),ei=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),annotations:Qr.nullish(),data:K.string(),mimeType:K.string(),uri:K.string().nullish()}),ti=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),annotations:Qr.nullish(),description:K.string().nullish(),mimeType:K.string().nullish(),name:K.string(),size:K.number().nullish(),title:K.string().nullish(),uri:K.string()}),ni=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),optionId:Rr}),ri=K.union([K.object({outcome:K.literal(`cancelled`)}),ni.and(K.object({outcome:K.literal(`selected`)}))]),ii=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),outcome:ri}),ai=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),oi=K.object({currentValue:K.boolean()}),si=K.string(),ci=K.string(),li=K.union([K.literal(`mode`),K.literal(`model`),K.literal(`thought_level`),K.string()]),ui=K.string(),di=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),description:K.string().nullish(),name:K.string(),value:ui}),fi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),group:si,name:K.string(),options:K.array(di)}),pi=K.union([K.array(di),K.array(fi)]),mi=K.object({currentValue:ui,options:pi}),hi=K.intersection(K.union([mi.and(K.object({type:K.literal(`select`)})),oi.and(K.object({type:K.literal(`boolean`)}))]),K.object({_meta:K.record(K.string(),K.unknown()).nullish(),category:li.nullish(),description:K.string().nullish(),id:ci,name:K.string()})),gi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),configOptions:K.array(hi)}),_i=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),vi=K.string(),yi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),sessionId:vi});K.object({method:K.string(),params:K.union([yi,xr]).nullish()});const bi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),sessionId:vi}),xi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),args:K.array(K.string()).optional(),command:K.string(),cwd:K.string().nullish(),env:K.array(vr).optional(),outputByteLimit:K.number().nullish(),sessionId:vi}),Si=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),cwd:K.string(),mcpServers:K.array(Pr).optional(),sessionId:vi}),Ci=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),sessionId:vi,terminalId:K.string()}),wi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),cwd:K.string(),mcpServers:K.array(Pr),sessionId:vi}),Ti=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),limit:K.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),line:K.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:K.string(),sessionId:vi}),Ei=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),sessionId:vi,terminalId:K.string()}),Di=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),cwd:K.string(),mcpServers:K.array(Pr).optional(),sessionId:vi}),Oi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),cwd:K.string(),sessionId:vi,title:K.string().nullish(),updatedAt:K.string().nullish()}),ki=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),nextCursor:K.string().nullish(),sessions:K.array(Oi)}),Ai=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),title:K.string().nullish(),updatedAt:K.string().nullish()}),ji=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),Mi=K.string(),Ni=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),currentModeId:Mi}),Pi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),description:K.string().nullish(),id:Mi,name:K.string()}),Fi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),availableModes:K.array(Pi),currentModeId:Mi}),Ii=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),availableModels:K.array(Ir),currentModelId:Fr}),Li=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),configOptions:K.array(hi).nullish(),models:Ii.nullish(),modes:Fi.nullish(),sessionId:vi}),Ri=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),configOptions:K.array(hi).nullish(),models:Ii.nullish(),modes:Fi.nullish()}),zi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),configOptions:K.array(hi).nullish(),models:Ii.nullish(),modes:Fi.nullish(),sessionId:vi}),Bi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),configOptions:K.array(hi).nullish(),models:Ii.nullish(),modes:Fi.nullish()}),Vi=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),Hi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),close:ai.nullish(),fork:_i.nullish(),list:ji.nullish(),resume:Vi.nullish()}),Ui=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),loadSession:K.boolean().optional().default(!1),mcpCapabilities:Ar.optional().default({http:!1,sse:!1}),promptCapabilities:Gr.optional().default({audio:!1,embeddedContext:!1,image:!1}),sessionCapabilities:Hi.optional().default({})}),Wi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),agentCapabilities:Ui.optional().default({loadSession:!1,mcpCapabilities:{http:!1,sse:!1},promptCapabilities:{audio:!1,embeddedContext:!1,image:!1},sessionCapabilities:{}}),agentInfo:Dr.nullish(),authMethods:K.array(ur).optional().default([]),protocolVersion:Kr}),Gi=K.intersection(K.union([K.object({type:K.literal(`boolean`),value:K.boolean()}),K.object({value:ui})]),K.object({_meta:K.record(K.string(),K.unknown()).nullish(),configId:ci,sessionId:vi})),Ki=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),configOptions:K.array(hi)}),qi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),modeId:Mi,sessionId:vi}),Ji=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),Yi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),modelId:Fr,sessionId:vi}),Xi=K.object({_meta:K.record(K.string(),K.unknown()).nullish()}),Zi=K.union([K.literal(`end_turn`),K.literal(`max_tokens`),K.literal(`max_turn_requests`),K.literal(`refusal`),K.literal(`cancelled`)]),Qi=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),terminalId:K.string()}),$i=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),exitCode:K.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:K.string().nullish()}),ea=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),sessionId:vi,terminalId:K.string()}),ta=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),exitStatus:$i.nullish(),output:K.string(),truncated:K.boolean()}),na=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),annotations:Qr.nullish(),text:K.string()}),ra=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),mimeType:K.string().nullish(),text:K.string(),uri:K.string()}),ia=K.union([ra,pr]),aa=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),annotations:Qr.nullish(),resource:ia}),oa=K.union([na.and(K.object({type:K.literal(`text`)})),ei.and(K.object({type:K.literal(`image`)})),$r.and(K.object({type:K.literal(`audio`)})),ti.and(K.object({type:K.literal(`resource_link`)})),aa.and(K.object({type:K.literal(`resource`)}))]),sa=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),content:oa}),ca=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),content:oa,messageId:K.string().nullish()}),la=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),messageId:K.string().nullish(),prompt:K.array(oa),sessionId:vi});K.object({id:Xr,method:K.string(),params:K.union([qr,dr,Lr,wi,kr,Si,Di,bi,qi,Gi,la,Yi,Sr]).nullish()});const ua=K.union([sa.and(K.object({type:K.literal(`content`)})),_r.and(K.object({type:K.literal(`diff`)})),Qi.and(K.object({type:K.literal(`terminal`)}))]),da=K.string(),fa=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),line:K.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:K.string()}),pa=K.union([K.literal(`pending`),K.literal(`in_progress`),K.literal(`completed`),K.literal(`failed`)]),ma=K.union([K.literal(`read`),K.literal(`edit`),K.literal(`delete`),K.literal(`move`),K.literal(`search`),K.literal(`execute`),K.literal(`think`),K.literal(`fetch`),K.literal(`switch_mode`),K.literal(`other`)]),ha=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),content:K.array(ua).optional(),kind:ma.optional(),locations:K.array(fa).optional(),rawInput:K.unknown().optional(),rawOutput:K.unknown().optional(),status:pa.optional(),title:K.string(),toolCallId:da}),ga=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),content:K.array(ua).nullish(),kind:ma.nullish(),locations:K.array(fa).nullish(),rawInput:K.unknown().optional(),rawOutput:K.unknown().optional(),status:pa.nullish(),title:K.string().nullish(),toolCallId:da}),_a=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),options:K.array(Br),sessionId:vi,toolCall:ga}),va=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),hint:K.string()}),ya=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),description:K.string(),input:va.nullish(),name:K.string()}),ba=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),availableCommands:K.array(ya)}),xa=K.object({cachedReadTokens:K.number().nullish(),cachedWriteTokens:K.number().nullish(),inputTokens:K.number(),outputTokens:K.number(),thoughtTokens:K.number().nullish(),totalTokens:K.number()}),Sa=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),stopReason:Zi,usage:xa.nullish(),userMessageId:K.string().nullish()});K.union([K.object({id:Xr,result:K.union([Wi,fr,zi,Ri,ki,Li,Bi,mr,Ji,Ki,Sa,Xi,Cr])}),K.object({error:br,id:Xr})]);const Ca=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),cost:hr.nullish(),size:K.number(),used:K.number()}),wa=K.union([ca.and(K.object({sessionUpdate:K.literal(`user_message_chunk`)})),ca.and(K.object({sessionUpdate:K.literal(`agent_message_chunk`)})),ca.and(K.object({sessionUpdate:K.literal(`agent_thought_chunk`)})),ha.and(K.object({sessionUpdate:K.literal(`tool_call`)})),ga.and(K.object({sessionUpdate:K.literal(`tool_call_update`)})),Wr.and(K.object({sessionUpdate:K.literal(`plan`)})),ba.and(K.object({sessionUpdate:K.literal(`available_commands_update`)})),Ni.and(K.object({sessionUpdate:K.literal(`current_mode_update`)})),gi.and(K.object({sessionUpdate:K.literal(`config_option_update`)})),Ai.and(K.object({sessionUpdate:K.literal(`session_info_update`)})),Ca.and(K.object({sessionUpdate:K.literal(`usage_update`)}))]),Ta=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),sessionId:vi,update:wa});K.object({method:K.string(),params:K.union([Ta,xr]).nullish()});const Ea=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),sessionId:vi,terminalId:K.string()}),Da=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),exitCode:K.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:K.string().nullish()}),Oa=K.object({_meta:K.record(K.string(),K.unknown()).nullish(),content:K.string(),path:K.string(),sessionId:vi});K.object({id:Xr,method:K.string(),params:K.union([Oa,Ti,_a,xi,ea,Ei,Ea,Ci,Sr]).nullish()});const ka=K.object({_meta:K.record(K.string(),K.unknown()).nullish()});K.union([K.object({id:Xr,result:K.union([ka,Jr,ii,gr,ta,Yr,Da,Or,Cr])}),K.object({error:br,id:Xr})]);function Aa(e,t){let n=new TextEncoder,r=new TextDecoder;return{readable:new ReadableStream({async start(e){let n=``,i=t.getReader();try{for(;;){let{value:t,done:a}=await i.read();if(a)break;if(!t)continue;n+=r.decode(t,{stream:!0});let o=n.split(`
|
|
2
|
+
import{n as e,r as t,t as n}from"./chunk-wdO_pP5q.js";import{a as r,i}from"./server-D776aGSk.js";import{createRequire as a}from"node:module";import{Array as o,Cause as s,Config as c,DateTime as l,Duration as u,Effect as d,Exit as f,FiberMap as p,FileSystem as m,Layer as h,Logger as g,Match as _,Option as v,Predicate as y,PubSub as b,Queue as x,Ref as S,References as C,Schema as w,ServiceMap as T,Stream as E,String as D}from"effect";import{Command as O}from"commander";import{Box as k,Static as A,Text as j,render as ee,useApp as te,useInput as ne,useStdout as M}from"ink";import{QueryClient as N,QueryClientProvider as re,useMutation as ie,useQuery as P}from"@tanstack/react-query";import{c as ae}from"react/compiler-runtime";import{createContext as F,useCallback as oe,useContext as I,useEffect as se,useMemo as ce,useRef as L,useState as R}from"react";import*as le from"node:child_process";import{exec as ue,execFile as z,execSync as de,spawnSync as fe}from"node:child_process";import{Fragment as pe,jsx as B,jsxs as V}from"react/jsx-runtime";import H from"figures";import U from"picocolors";import*as W from"node:path";import me,{join as he,normalize as ge}from"node:path";import*as _e from"node:url";import{fileURLToPath as ve,pathToFileURL as ye}from"node:url";import{z as be}from"zod";import{z as G}from"zod/v4";import{ChildProcess as xe,ChildProcessSpawner as Se}from"effect/unstable/process";import*as K from"@effect/platform-node/NodeServices";import*as Ce from"effect/Array";import*as q from"effect/String";import*as we from"effect/Function";import*as Te from"node:crypto";import{createHash as Ee}from"node:crypto";import{Buffer as De}from"node:buffer";import{execSync as Oe,spawn as ke}from"child_process";import{EventEmitter as Ae}from"node:events";import{FileSystem as je}from"effect/FileSystem";import*as Me from"node:os";import{platform as Ne}from"node:os";import*as Pe from"@effect/platform-node/NodeHttpClient";import*as Fe from"@effect/platform-node/NodeSocket";import{ChildProcessSpawner as Ie}from"effect/unstable/process/ChildProcessSpawner";import{request as Le}from"node:http";import*as Re from"node:fs/promises";import ze from"ink-spinner";import Be from"cli-truncate";import Ve from"string-width";import{create as He}from"zustand";import*as Ue from"effect/Data";import*as We from"@effect/platform-node/NodeFileSystem";import{dirname as Ge,posix as Ke,sep as qe}from"path";import*as Je from"node:fs";import{appendFileSync as Ye,createReadStream as Xe}from"node:fs";import{createInterface as Ze}from"node:readline";import{AsyncLocalStorage as Qe}from"node:async_hooks";import{DevTools as $e}from"effect/unstable/devtools";import*as et from"effect/unstable/observability/Otlp";import{createJSONStorage as tt,persist as nt}from"zustand/middleware";import*as rt from"effect/unstable/reactivity/AsyncResult";import*as it from"effect/unstable/reactivity/Atom";import{RegistryProvider as at,useAtom as ot,useAtomSet as st,useAtomValue as ct}from"@effect/atom-react";import lt from"pretty-ms";import{detectTerminal as ut}from"detect-terminal";import dt from"supports-terminal-graphics";import ft from"ink-link";import{Hono as pt}from"hono";import{proxy as mt}from"hono/proxy";import{serve as ht}from"@hono/node-server";import"node-notifier";import gt from"prompts";import _t from"ora";const vt=`0.0.15`,yt=`\x1B[?1049l`,bt=process.env.SUPPORT_CLICK===`true`||process.env.SUPPORT_CLICK===`1`,xt=[`lint`,`check`,`format`,`typecheck`,`type-check`],St=`expect-cli`,Ct={"pnpm-lock.yaml":`pnpm`,"pnpm-workspace.yaml":`pnpm`,"yarn.lock":`yarn`,"package-lock.json":`npm`,"npm-shrinkwrap.json":`npm`,"bun.lock":`bun`,"bun.lockb":`bun`,"deno.lock":`deno`},wt=()=>{},Tt=F({subscribeClick:()=>wt}),Et=/\x1b\[<(\d+);(\d+);(\d+)([Mm])|\x1b\[[\d;?<>=]*[A-Za-z~]|\[<[\d;]+[Mm]|\[\d+;\d+R|\[\?[\d;]+[a-z]/g,Dt=({children:e})=>{if(!bt)return B(pe,{children:e});let t=L(new Set),n=L(!1);if(!n.current){n.current=!0,process.stdout.write(`\x1B[?1003l\x1B[?1002l\x1B[?1000h\x1B[?1006h`);let e=process.stdin.emit.bind(process.stdin);process.stdin.emit=function(n,...r){if(n===`data`){let i=(typeof r[0]==`string`?r[0]:String(r[0])).replace(Et,(e,n,r,i,a)=>{if(n===`0`)for(let e of t.current)e({x:Number(r),y:Number(i)},a===`M`?`press`:`release`);return``});return i.length===0?!0:e(n,i)}return e(n,...r)}}let r=oe(e=>(t.current.add(e),()=>{t.current.delete(e)}),[]);return B(Tt.Provider,{value:{subscribeClick:r},children:e})},Ot=()=>{let e=ae(1);if(e[0]!==`35703fbc37b9d963e330527161df9fe36b70875a77771f1d737994ab88cecbb3`){for(let t=0;t<1;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`35703fbc37b9d963e330527161df9fe36b70875a77771f1d737994ab88cecbb3`}return I(Tt)},kt=/\x1b\[[\d;?<>=]*[A-Za-z~]|\[<[\d;]+[Mm]|\[\?[\d;]+[a-z]|\[\d+;\d+R/g,At=e=>bt?e.replace(kt,``):e,jt=e=>e&&e>0?e:80,Mt=e=>e&&e>0?e:24,Nt=()=>{let{stdout:e}=M(),[t,n]=R([jt(e.columns),Mt(e.rows)]),r=L(!1);return r.current||(r.current=!0,e.on(`resize`,()=>n([jt(e.columns),Mt(e.rows)]))),t},Pt=`NO_COLOR`in process.env,J={primary:Pt?``:`whiteBright`,secondary:Pt?``:`gray`,accent:Pt?``:`white`,error:Pt?``:`red`,warning:Pt?``:`yellow`,success:Pt?``:`green`,info:Pt?``:`gray`,text:Pt?``:`white`,textMuted:Pt?``:`gray`,border:Pt?``:`gray`,borderActive:Pt?``:`white`,borderSubtle:Pt?``:`blackBright`,shimmerBase:Pt?``:`#555555`,shimmerHighlight:Pt?``:`#ffffff`,inputBg:Pt?``:`#1e1e1e`,bannerBg:Pt?``:`#332b00`,errorBg:Pt?``:`#330b0b`},Ft={TEXT:J.text,DIM:J.textMuted,GREEN:J.success,PRIMARY:J.primary,SELECTION:J.accent,RED:J.error,BORDER:J.border,DIVIDER:J.borderSubtle,YELLOW:J.warning,PURPLE:J.secondary,CYAN:J.info,INPUT_BG:J.inputBg,BANNER_BG:J.bannerBg,ERROR_BG:J.errorBg},It=()=>Ft,Lt=e=>{let t=ae(21);if(t[0]!==`c91257771a99332d5805ee6c49b36d74b00fa9357a1ef3353879ee4c78179ae7`){for(let e=0;e<21;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`c91257771a99332d5805ee6c49b36d74b00fa9357a1ef3353879ee4c78179ae7`}let{color:n,children:r,marginTop:i,marginBottom:a,paddingX:o,ref:s}=e,c=o===void 0?1:o,[l]=Nt(),u;t[1]===l?u=t[2]:(u=`─`.repeat(l),t[1]=l,t[2]=u);let d;t[3]!==n||t[4]!==u?(d=B(j,{color:n,wrap:`truncate`,children:u}),t[3]=n,t[4]=u,t[5]=d):d=t[5];let f;t[6]!==r||t[7]!==c?(f=B(k,{flexDirection:`column`,paddingX:c,children:r}),t[6]=r,t[7]=c,t[8]=f):f=t[8];let p;t[9]===l?p=t[10]:(p=`─`.repeat(l),t[9]=l,t[10]=p);let m;t[11]!==n||t[12]!==p?(m=B(j,{color:n,wrap:`truncate`,children:p}),t[11]=n,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==a||t[15]!==i||t[16]!==s||t[17]!==d||t[18]!==f||t[19]!==m?(h=V(k,{flexDirection:`column`,width:`100%`,marginTop:i,marginBottom:a,ref:s,children:[d,f,m]}),t[14]=a,t[15]=i,t[16]=s,t[17]=d,t[18]=f,t[19]=m,t[20]=h):h=t[20],h},Rt=e=>{let t=e,n=1,r=1;for(;t;){if(!t.yogaNode)return{left:n,top:r};let e=t.yogaNode.getComputedLayout();n+=e.left,r+=e.top,t=t.parentNode}return{left:n,top:r}},zt=({onClick:e,children:t,fullWidth:n=!0})=>{let{subscribeClick:r}=Ot(),i=L(e);return i.current=e,B(k,{ref:oe(e=>{if(e)return r((t,n)=>{if(n!==`press`||!e.yogaNode)return;let r=Rt(e),a=e.yogaNode.getComputedLayout(),o=t.x<r.left||t.x>=r.left+a.width,s=t.y<r.top||t.y>=r.top+a.height;!o&&!s&&i.current?.()})},[r]),width:n?`100%`:void 0,children:t})},Bt=e=>/\w/.test(e),Vt=(e,t)=>{let n=t-1;for(;n>0&&!Bt(e[n]);)n--;for(;n>0&&Bt(e[n-1]);)n--;return n},Ht=(e,t)=>{let n=t;for(;n<e.length&&Bt(e[n]);)n++;for(;n<e.length&&!Bt(e[n]);)n++;return n},Ut=(e,t)=>{let n=e.split(`
|
|
3
|
+
`),r=0;for(let e=0;e<n.length;e++){let i=n[e].length;if(t<=r+i)return{lineIndex:e,column:t-r,lines:n};r+=i+1}let i=n.length-1;return{lineIndex:i,column:n[i].length,lines:n}},Wt=(e,t,n)=>{let r=0;for(let n=0;n<t;n++)r+=e[n].length+1;return r+Math.min(n,e[t].length)},Gt=({value:e,placeholder:t=``,focus:n=!0,mask:r,highlightPastedText:i=!1,showCursor:a=!0,multiline:o=!1,onChange:s,onSubmit:c,onUpArrowAtTop:l,onDownArrowAtBottom:u})=>{let[d,f]=R({cursorOffset:(e||``).length,cursorWidth:0}),{cursorOffset:p,cursorWidth:m}=d,h=L({originalValue:e,focus:n,showCursor:a});(h.current.originalValue!==e||h.current.focus!==n||h.current.showCursor!==a)&&(h.current={originalValue:e,focus:n,showCursor:a},f(t=>{if(!n||!a)return t;let r=e||``;return t.cursorOffset>r.length-1?{cursorOffset:r.length,cursorWidth:0}:t}));let g=i?m:0,_=r?r.repeat(e.length):e,v=_,y=t?U.gray(t):void 0;if(a&&n){y=t.length>0?U.inverse(t[0])+U.gray(t.slice(1)):U.inverse(` `),v=_.length>0?``:U.inverse(` `);let e=0;for(let t of _){let n=e>=p-g&&e<=p;n&&t===`
|
|
4
|
+
`?v+=U.inverse(` `)+`
|
|
5
|
+
`:v+=n?U.inverse(t):t,e++}_.length>0&&p===_.length&&(v+=U.inverse(` `))}return ne((t,n)=>{if(!o&&(n.upArrow||n.downArrow)||n.ctrl&&t===`c`||n.tab||n.shift&&n.tab)return;let r=p,i=e,d=0,m=!1;if(o&&n.upArrow&&a){let{lineIndex:t,column:n,lines:i}=Ut(e,p);t>0?r=Wt(i,t-1,n):l?.(),m=!0}else if(o&&n.downArrow&&a){let{lineIndex:t,column:n,lines:i}=Ut(e,p);t<i.length-1?r=Wt(i,t+1,n):u?.(),m=!0}else if(n.ctrl&&t===`a`&&a)r=0,m=!0;else if(n.ctrl&&t===`e`&&a)r=e.length,m=!0;else if(n.ctrl&&t===`f`&&a)r=p+1,m=!0;else if(n.ctrl&&t===`b`&&a)r=p-1,m=!0;else if(n.ctrl&&t===`k`)i=e.slice(0,p),m=!0;else if(n.ctrl&&t===`u`)p>0&&(i=e.slice(p),r=0),m=!0;else if(n.ctrl&&t===`w`){if(p>0){let t=Vt(e,p);i=e.slice(0,t)+e.slice(p),r=t}m=!0}else if(n.ctrl&&t===`d`)p<e.length&&(i=e.slice(0,p)+e.slice(p+1)),m=!0;else if(n.ctrl&&t===`t`)p>0&&p<e.length&&(i=e.slice(0,p-1)+e[p]+e[p-1]+e.slice(p+1),r=p+1),m=!0;else if(n.meta&&t===`b`&&a)r=Vt(e,p),m=!0;else if(n.meta&&t===`f`&&a)r=Ht(e,p),m=!0;else if(n.meta&&(n.backspace||n.delete)){if(p>0){let t=Vt(e,p);i=e.slice(0,t)+e.slice(p),r=t}m=!0}else if(n.meta)return;if(!m)if(n.return)if(o&&n.shift)i=e.slice(0,p)+`
|
|
6
|
+
`+e.slice(p),r++;else{c&&c(e);return}else n.leftArrow?a&&r--:n.rightArrow?a&&r++:n.backspace||n.delete?p>0&&(i=e.slice(0,p-1)+e.slice(p,e.length),r--):(i=e.slice(0,p)+t+e.slice(p,e.length),r+=t.length,t.length>1&&(d=t.length));r<0&&(r=0),r>i.length&&(r=i.length),f({cursorOffset:r,cursorWidth:d}),i!==e&&s(i)},{isActive:n}),B(j,{children:t?_.length>0?v:y:v})},Kt=e=>{let t=ae(13);if(t[0]!==`ed5db14495474995e96712c30462d38da6b6aa36bffcbec475f62d8824e8125d`){for(let e=0;e<13;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`ed5db14495474995e96712c30462d38da6b6aa36bffcbec475f62d8824e8125d`}let{isSearching:n,query:r,onChange:i,onSubmit:a}=e,o=It();if(n){let e;t[1]===o.DIM?e=t[2]:(e=B(j,{color:o.DIM,children:`/`}),t[1]=o.DIM,t[2]=e);let n;t[3]!==i||t[4]!==a||t[5]!==r?(n=B(Gt,{focus:!0,value:r,onChange:i,onSubmit:a}),t[3]=i,t[4]=a,t[5]=r,t[6]=n):n=t[6];let s;return t[7]!==e||t[8]!==n?(s=V(k,{marginTop:1,children:[e,n]}),t[7]=e,t[8]=n,t[9]=s):s=t[9],s}if(r){let e;return t[10]!==o.DIM||t[11]!==r?(e=B(k,{marginTop:1,children:V(j,{color:o.DIM,children:[`/`,r]})}),t[10]=o.DIM,t[11]=r,t[12]=e):e=t[12],e}return null},qt=w.Literals([`pending`,`in_progress`,`completed`,`failed`]),Jt=w.Literals([`read`,`edit`,`delete`,`move`,`search`,`execute`,`think`,`fetch`,`switch_mode`,`other`]);w.Literals([`end_turn`,`max_tokens`,`max_turn_requests`,`refusal`,`cancelled`]);const Yt=w.Union([w.Struct({type:w.Literal(`text`),text:w.String}),w.Struct({type:w.Literal(`image`),data:w.String,mimeType:w.String}),w.Struct({type:w.Literal(`resource_link`),uri:w.String}),w.Struct({type:w.Literal(`resource`),uri:w.String})]),Xt=w.Union([w.Struct({type:w.Literal(`content`),content:Yt}),w.Struct({type:w.Literal(`diff`),path:w.String,oldText:w.optional(w.NullOr(w.String)),newText:w.optional(w.NullOr(w.String))}),w.Struct({type:w.Literal(`terminal`),terminalId:w.String})]),Zt=w.Struct({path:w.String,lineNumber:w.optional(w.NullOr(w.Number))});var Qt=class extends w.Class(`AcpAgentMessageChunk`)({sessionUpdate:w.Literal(`agent_message_chunk`),content:Yt,messageId:w.optional(w.NullOr(w.String))}){},$t=class extends w.Class(`AcpAgentThoughtChunk`)({sessionUpdate:w.Literal(`agent_thought_chunk`),content:Yt,messageId:w.optional(w.NullOr(w.String))}){},en=class extends w.Class(`AcpUserMessageChunk`)({sessionUpdate:w.Literal(`user_message_chunk`),content:Yt,messageId:w.optional(w.NullOr(w.String))}){},tn=class extends w.Class(`AcpToolCall`)({sessionUpdate:w.Literal(`tool_call`),toolCallId:w.String,title:w.String,kind:w.optional(Jt),status:w.optional(qt),content:w.optional(w.Array(Xt)),locations:w.optional(w.Array(Zt)),rawInput:w.optional(w.Unknown),rawOutput:w.optional(w.Unknown)}){},nn=class extends w.Class(`AcpToolCallUpdate`)({sessionUpdate:w.Literal(`tool_call_update`),toolCallId:w.String,title:w.optional(w.NullOr(w.String)),kind:w.optional(w.NullOr(Jt)),status:w.optional(w.NullOr(qt)),content:w.optional(w.NullOr(w.Array(Xt))),locations:w.optional(w.NullOr(w.Array(Zt))),rawInput:w.optional(w.Unknown),rawOutput:w.optional(w.Unknown)}){};const rn=w.Literals([`pending`,`in_progress`,`completed`]),an=w.Literals([`high`,`medium`,`low`]);var on=class extends w.Class(`AcpPlanUpdate`)({sessionUpdate:w.Literal(`plan`),entries:w.Array(w.Struct({content:w.String,priority:an,status:rn}))}){},sn=class extends w.Class(`AcpAvailableCommandsUpdate`)({sessionUpdate:w.Literal(`available_commands_update`)}){},cn=class extends w.Class(`AcpCurrentModeUpdate`)({sessionUpdate:w.Literal(`current_mode_update`)}){},ln=class extends w.Class(`AcpConfigOptionUpdate`)({sessionUpdate:w.Literal(`config_option_update`)}){},un=class extends w.Class(`AcpSessionInfoUpdate`)({sessionUpdate:w.Literal(`session_info_update`)}){},dn=class extends w.Class(`AcpUsageUpdate`)({sessionUpdate:w.Literal(`usage_update`)}){};const fn=w.Union([Qt,$t,en,tn,nn,on,sn,cn,ln,un,dn]);w.Struct({inputTokens:w.Number,outputTokens:w.Number,cachedReadTokens:w.optional(w.NullOr(w.Number)),cachedWriteTokens:w.optional(w.NullOr(w.Number)),thoughtTokens:w.optional(w.NullOr(w.Number))});const pn=w.Literals([`claude`,`codex`,`cursor`]);var mn=class extends w.Class(`@ami/FileStat`)({relativePath:w.String,added:w.Number,removed:w.Number}){},hn=class extends w.Class(`@supervisor/GitState`)({isGitRepo:w.Boolean,currentBranch:w.String,mainBranch:w.UndefinedOr(w.String),isOnMain:w.Boolean,hasChangesFromMain:w.Boolean,hasUnstagedChanges:w.Boolean,hasBranchCommits:w.Boolean,branchCommitCount:w.Number,fileStats:w.Array(mn),workingTreeFileStats:w.Array(mn),fingerprint:w.UndefinedOr(w.String),savedFingerprint:w.UndefinedOr(w.String)}){get hasUntestedChanges(){return this.hasChangesFromMain||this.hasUnstagedChanges}get totalChangedLines(){return this.fileStats.reduce((e,t)=>e+t.added+t.removed,0)}get isCurrentStateTested(){return!this.fingerprint||!this.savedFingerprint?!1:this.fingerprint===this.savedFingerprint}};const gn=w.String.pipe(w.brand(`StepId`)),_n=w.String.pipe(w.brand(`PlanId`)),vn=w.TaggedUnion({WorkingTree:{},Branch:{mainBranch:w.String},Changes:{mainBranch:w.String},Commit:{hash:w.String}}),yn=e=>_.value(e).pipe(_.tagsExhaustive({WorkingTree:()=>`working tree`,Branch:()=>`branch`,Changes:()=>`changes`,Commit:({hash:e})=>e.slice(0,7)})),bn=w.Struct({number:w.Number,headRefName:w.String,author:w.Struct({login:w.String}),state:w.String,updatedAt:w.String}),xn=[`recent`,`all`,`open`,`draft`,`merged`,`no-pr`];var Sn=class extends w.Class(`@supervisor/RemoteBranch`)({name:w.String,author:w.String,prNumber:w.NullOr(w.Number),prStatus:w.NullOr(w.Literals([`open`,`draft`,`merged`])),updatedAt:w.NullOr(w.String)}){static filterBranches(e,t,n){let r=e.filter(e=>t===`recent`||t===`all`?!0:t===`no-pr`?e.prStatus===null:e.prStatus===t);if(n){let e=n.toLowerCase();r=r.filter(t=>t.name.toLowerCase().includes(e))}return t===`recent`&&(r=[...r].filter(e=>e.updatedAt!==null).sort((e,t)=>{let n=new Date(e.updatedAt??0).getTime();return new Date(t.updatedAt??0).getTime()-n})),r}};const Cn=w.Literals([`pending`,`active`,`passed`,`failed`,`skipped`]);var wn=class e extends w.Class(`@supervisor/TestPlanStep`)({id:gn,title:w.String,instruction:w.String,expectedOutcome:w.String,routeHint:w.OptionFromNullOr(w.String),status:Cn,summary:w.OptionFromNullOr(w.String),startedAt:w.OptionFromNullOr(w.DateTimeUtc),endedAt:w.OptionFromNullOr(w.DateTimeUtc)}){update(t){return new e({...this,...t})}},Tn=class extends w.Class(`@supervisor/TestCoverageEntry`)({path:w.String,testFiles:w.Array(w.String),covered:w.Boolean}){},En=class extends w.Class(`@supervisor/TestCoverageReport`)({entries:w.Array(Tn),coveredCount:w.Number,totalCount:w.Number,percent:w.Number}){};const Dn=w.String.pipe(w.brand(`DraftId`));var On=class e extends w.Class(`@supervisor/TestPlanDraft`)({id:Dn,changesFor:vn,currentBranch:w.String,diffPreview:w.String,fileStats:w.Array(mn),instruction:w.String,baseUrl:w.Option(w.String),isHeadless:w.Boolean,requiresCookies:w.Boolean,testCoverage:w.Option(En)}){update(t){return new e({...this,...t})}},kn=class e extends On.extend(`@supervisor/TestPlan`)({id:_n,title:w.String,rationale:w.String,steps:w.Array(wn)}){update(t){return new e({...this,...t})}updateStep(t,n){return new e({...this,steps:this.steps.map((e,r)=>r===t?n(e):e)})}get stepCount(){return this.steps.length}get resetForRerun(){return new e({...this,steps:this.steps.map(e=>new wn({...e,status:`pending`,summary:v.none(),startedAt:v.none(),endedAt:v.none()}))})}},An=class extends w.TaggedClass()(`RunStarted`,{plan:kn}){get id(){return`run-started-${this.plan.id}`}},jn=class extends w.TaggedClass()(`StepStarted`,{stepId:gn,title:w.String}){get id(){return`step-started-${this.stepId}`}},Mn=class extends w.TaggedClass()(`StepCompleted`,{stepId:gn,summary:w.String}){get id(){return`step-completed-${this.stepId}`}},Nn=class extends w.TaggedClass()(`StepFailed`,{stepId:gn,message:w.String}){get id(){return`step-failed-${this.stepId}`}},Pn=class extends w.TaggedClass()(`StepSkipped`,{stepId:gn,reason:w.String}){get id(){return`step-skipped-${this.stepId}`}},Fn=class extends w.TaggedClass()(`ToolCall`,{toolName:w.String,input:w.Unknown}){get id(){return`tool-call-${this.toolName}-${JSON.stringify(this.input)}`}get displayText(){return y.isObject(this.input)&&`command`in this.input?String(this.input.command).slice(0,80):this.toolName}},In=class extends w.TaggedClass()(`ToolProgress`,{toolName:w.String,outputSize:w.Number}){get id(){return`tool-progress-${this.toolName}-${this.outputSize}`}},Ln=class extends w.TaggedClass()(`ToolResult`,{toolName:w.String,result:w.String,isError:w.Boolean}){get id(){return`tool-result-${this.toolName}-${this.result}`}},Rn=class extends w.TaggedClass()(`AgentThinking`,{text:w.String}){get id(){return`agent-thinking-${this.text}`}},zn=class extends w.TaggedClass()(`AgentText`,{text:w.String}){get id(){return`agent-text-${this.text}`}},Bn=class extends w.TaggedClass()(`RunFinished`,{status:w.Literals([`passed`,`failed`]),summary:w.String}){get id(){return`run-finished-${this.status}`}};const Vn=e=>{if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`||e==null)return String(e);try{return JSON.stringify(e)}catch{return String(e)}},Hn=e=>{let t=e.indexOf(`|`);if(t===-1)return;let n=e.slice(0,t),r=e.slice(t+1),i=r.indexOf(`|`),a=i===-1?r:r.slice(0,i),o=i===-1?``:r.slice(i+1);if(n===`STEP_START`)return new jn({stepId:gn.makeUnsafe(a),title:o});if(n===`STEP_DONE`)return new Mn({stepId:gn.makeUnsafe(a),summary:o});if(n===`ASSERTION_FAILED`)return new Nn({stepId:gn.makeUnsafe(a),message:o});if(n===`STEP_SKIPPED`)return new Pn({stepId:gn.makeUnsafe(a),reason:o});if(n===`RUN_COMPLETED`)return new Bn({status:a===`failed`?`failed`:`passed`,summary:o})},Un=w.Union([An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn]);var Wn=class extends w.TaggedClass()(`RunCompleted`,{report:w.suspend(()=>tr)}){};const Gn=w.Union([An,jn,Mn,Nn,Pn,Fn,Ln,Rn,Bn,Wn]);var Kn=class extends w.Class(`@supervisor/Update`)({content:Gn,receivedAt:w.DateTimeUtc}){},qn=class extends w.Class(`@supervisor/PullRequest`)({number:w.Number,url:w.String,title:w.String,headRefName:w.String}){};const Jn=w.TaggedUnion({WorkingTree:{},Branch:{branch:Sn},PullRequest:{branch:Sn},Commit:{hash:w.String,shortHash:w.String,subject:w.String}}),Yn=e=>_.value(e).pipe(_.tagsExhaustive({WorkingTree:()=>`working-tree`,Branch:({branch:e})=>`branch-${e.name}`,PullRequest:({branch:e})=>`pr-${e.prNumber}`,Commit:({hash:e})=>`commit-${e}`})),Xn=e=>_.value(e).pipe(_.tagsExhaustive({WorkingTree:()=>`local changes`,Branch:({branch:e})=>e.name,PullRequest:({branch:e})=>`#${e.prNumber} ${e.name} ${e.author}`,Commit:({shortHash:e,subject:t})=>`${e} ${t}`})),Zn=e=>_.value(e).pipe(_.tagsExhaustive({WorkingTree:()=>`Local changes`,Branch:({branch:e})=>e.name,PullRequest:({branch:e})=>e.name,Commit:({shortHash:e})=>e})),Qn=e=>_.value(e).pipe(_.tagsExhaustive({WorkingTree:()=>`working tree`,Branch:({branch:e})=>e.author?`by ${e.author}`:``,PullRequest:({branch:e})=>`#${e.prNumber} ${e.prStatus??``}`.trim(),Commit:({subject:e})=>e})),$n=e=>_.value(e).pipe(_.tagsExhaustive({WorkingTree:()=>`Local changes`,Branch:({branch:e})=>e.name,PullRequest:({branch:e})=>`#${e.prNumber}`,Commit:({shortHash:e})=>e}));w.TaggedUnion({Branch:{branchName:w.String}});var er=class e extends kn.extend(`@supervisor/ExecutedTestPlan`)({events:w.Array(Un)}){addEvent(t){if(t.sessionUpdate===`agent_thought_chunk`){if(t.content.type!==`text`||t.content.text===void 0)return this;let n=this.finalizeTextBlock(),r=n.events.at(-1);return r?._tag===`AgentThinking`?new e({...n,events:[...n.events.slice(0,-1),new Rn({text:r.text+t.content.text})]}):new e({...n,events:[...n.events,new Rn({text:t.content.text})]})}if(t.sessionUpdate===`agent_message_chunk`){if(t.content.type!==`text`||t.content.text===void 0)return this;let n=this.events.at(-1);return n?._tag===`AgentText`?new e({...this,events:[...this.events.slice(0,-1),new zn({text:n.text+t.content.text})]}):new e({...this,events:[...this.events,new zn({text:t.content.text})]})}if(t.sessionUpdate===`tool_call`){let n=this.finalizeTextBlock();return new e({...n,events:[...n.events,new Fn({toolName:t.title,input:JSON.stringify(t.rawInput??{})})]})}if(t.sessionUpdate===`tool_call_update`){let n;if(t.rawInput!==void 0){let r=[...this.events];for(let e=r.length-1;e>=0;e--){let n=r[e];if(n._tag===`ToolCall`&&n.toolName===(t.title??``)){r[e]=new Fn({toolName:n.toolName,input:JSON.stringify(t.rawInput)});break}}n=new e({...this,events:r})}let r=n??this;if(t.status===`completed`||t.status===`failed`)return new e({...r,events:[...r.events,new Ln({toolName:t.title??``,result:Vn(t.rawOutput),isError:t.status===`failed`})]});if(t.rawOutput!==void 0){let n=Vn(t.rawOutput).length;return new e({...r,events:[...r.events.filter(e=>!(e._tag===`ToolProgress`&&e.toolName===(t.title??``))),new In({toolName:t.title??``,outputSize:n})]})}return r}return this}finalizeTextBlock(){let t=this.events.at(-1);if(t?._tag!==`AgentText`)return this;let n=t.text.split(`
|
|
7
|
+
`).map(Hn).filter(y.isNotUndefined);if(n.length===0)return this;let r=new e({...this,events:[...this.events,...n]});for(let e of n)r=r.applyMarker(e);return r}applyMarker(t){return t._tag===`StepStarted`?this.steps.some(e=>e.id===t.stepId)?new e({...this,steps:this.steps.map(e=>e.id===t.stepId?e.update({status:`active`,title:t.title,startedAt:v.some(l.nowUnsafe())}):e)}):new e({...this,steps:[...this.steps,new wn({id:t.stepId,title:t.title,instruction:t.title,expectedOutcome:``,routeHint:v.none(),status:`active`,summary:v.none(),startedAt:v.some(l.nowUnsafe()),endedAt:v.none()})]}):t._tag===`StepCompleted`?new e({...this,steps:this.steps.map(e=>e.id===t.stepId?e.update({status:`passed`,summary:v.some(t.summary),expectedOutcome:t.summary,endedAt:v.some(l.nowUnsafe())}):e)}):t._tag===`StepFailed`?new e({...this,steps:this.steps.map(e=>e.id===t.stepId?e.update({status:`failed`,summary:v.some(t.message),expectedOutcome:t.message,endedAt:v.some(l.nowUnsafe())}):e)}):t._tag===`StepSkipped`?new e({...this,steps:this.steps.map(e=>e.id===t.stepId?e.update({status:`skipped`,summary:v.some(t.reason),endedAt:v.some(l.nowUnsafe())}):e)}):this}get activeStep(){return this.steps.find(e=>e.status===`active`)}get completedStepCount(){return this.steps.filter(e=>e.status===`passed`||e.status===`failed`||e.status===`skipped`).length}get lastToolCallDisplayText(){let e=this.events.findLast(e=>e._tag===`ToolCall`);if(!(!e||e._tag!==`ToolCall`))return e.displayText}},tr=class extends er.extend(`@supervisor/TestReport`)({summary:w.String,screenshotPaths:w.Array(w.String),pullRequest:w.Option(w.suspend(()=>qn)),testCoverageReport:w.Option(En)}){get stepStatuses(){let e=new Map(this.steps.map(e=>[e.id,{status:`not-run`,summary:``}]));for(let t of this.events)t._tag===`StepCompleted`?e.set(t.stepId,{status:`passed`,summary:t.summary}):t._tag===`StepFailed`?e.set(t.stepId,{status:`failed`,summary:t.message}):t._tag===`StepSkipped`&&e.set(t.stepId,{status:`skipped`,summary:t.reason});return e}get status(){let e=this.stepStatuses;for(let{status:t}of e.values())if(t===`failed`)return`failed`;return`passed`}get toPlainText(){let e=this.stepStatuses,t=this.steps.filter(t=>e.get(t.id)?.status===`passed`).length,n=this.steps.filter(t=>e.get(t.id)?.status===`failed`).length,r=this.steps.filter(t=>e.get(t.id)?.status===`skipped`).length,i=this.status===`passed`?`✅`:`❌`,a=[`${t} passed`,`${n} failed`];r>0&&a.push(`${r} skipped`);let o=[`${i} ${this.title} \u2014 ${this.status.toUpperCase()}`,``,this.summary,``,`${a.join(`, `)} out of ${this.steps.length} steps`,``];for(let t of this.steps){let n=e.get(t.id),r=n?.status??`not-run`,i=r===`passed`?`✓`:r===`failed`?`✗`:r===`skipped`?`→`:`–`;o.push(` ${i} ${t.title}`),n?.summary&&o.push(` ${n.summary}`)}if(v.isSome(this.testCoverageReport)){let e=this.testCoverageReport.value;o.push(``),o.push(`Test coverage: ${e.percent}% (${e.coveredCount}/${e.totalCount} changed files have tests)`);let t=e.entries.filter(e=>!e.covered);if(t.length>0){o.push(` Untested files:`);for(let e of t)o.push(` - ${e.path}`)}}return o.join(`
|
|
8
|
+
`)}},nr=class extends T.Service()(`@supervisor/Updates`,{make:d.gen(function*(){let e=yield*b.unbounded();return{publish:d.fn(`Updates.publish`)(function*(t){yield*b.publish(e,new Kn({content:t,receivedAt:l.nowUnsafe()}))}),stream:d.fn(`Updates.stream`)(function*(){return E.fromPubSub(e)})}})}){static layer=h.effect(this)(this.make)};const rr=w.Struct({name:w.String,value:w.String});var ir=class extends w.Class(`AgentStreamOptions`)({cwd:w.String,sessionId:w.Option(w.String),prompt:w.String,systemPrompt:w.Option(w.String),mcpEnv:w.optional(w.Array(rr))}){};const ar={authenticate:`authenticate`,initialize:`initialize`,session_cancel:`session/cancel`,session_close:`session/close`,session_fork:`session/fork`,session_list:`session/list`,session_load:`session/load`,session_new:`session/new`,session_prompt:`session/prompt`,session_resume:`session/resume`,session_set_config_option:`session/set_config_option`,session_set_mode:`session/set_mode`,session_set_model:`session/set_model`},or={fs_read_text_file:`fs/read_text_file`,fs_write_text_file:`fs/write_text_file`,session_request_permission:`session/request_permission`,session_update:`session/update`,terminal_create:`terminal/create`,terminal_kill:`terminal/kill`,terminal_output:`terminal/output`,terminal_release:`terminal/release`,terminal_wait_for_exit:`terminal/wait_for_exit`},sr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),terminal:G.boolean().optional().default(!1)}),cr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),label:G.string().nullish(),name:G.string(),optional:G.boolean().optional().default(!1),secret:G.boolean().optional().default(!0)}),lr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),description:G.string().nullish(),id:G.string(),name:G.string()}),ur=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),description:G.string().nullish(),id:G.string(),link:G.string().nullish(),name:G.string(),vars:G.array(cr)}),dr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),args:G.array(G.string()).optional(),description:G.string().nullish(),env:G.record(G.string(),G.string()).optional(),id:G.string(),name:G.string()}),fr=G.union([ur.and(G.object({type:G.literal(`env_var`)})),dr.and(G.object({type:G.literal(`terminal`)})),lr]),pr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),methodId:G.string()}),mr=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),hr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),blob:G.string(),mimeType:G.string().nullish(),uri:G.string()}),gr=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),_r=G.object({amount:G.number(),currency:G.string()}),vr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),terminalId:G.string()}),yr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),newText:G.string(),oldText:G.string().nullish(),path:G.string()}),br=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),name:G.string(),value:G.string()}),xr=G.union([G.literal(-32700),G.literal(-32600),G.literal(-32601),G.literal(-32602),G.literal(-32603),G.literal(-32800),G.literal(-32e3),G.literal(-32002),G.number().int().min(-2147483648,{message:`Invalid value: Expected int32 to be >= -2147483648`}).max(2147483647,{message:`Invalid value: Expected int32 to be <= 2147483647`})]),Sr=G.object({code:xr,data:G.unknown().optional(),message:G.string()}),Cr=G.unknown(),wr=G.unknown(),Tr=G.unknown(),Er=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),readTextFile:G.boolean().optional().default(!1),writeTextFile:G.boolean().optional().default(!1)}),Dr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),auth:sr.optional().default({terminal:!1}),fs:Er.optional().default({readTextFile:!1,writeTextFile:!1}),terminal:G.boolean().optional().default(!1)}),Or=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),name:G.string(),value:G.string()}),kr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),name:G.string(),title:G.string().nullish(),version:G.string()}),Ar=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),jr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),cursor:G.string().nullish(),cwd:G.string().nullish()}),Mr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),http:G.boolean().optional().default(!1),sse:G.boolean().optional().default(!1)}),Nr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),headers:G.array(Or),name:G.string(),url:G.string()}),Pr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),headers:G.array(Or),name:G.string(),url:G.string()}),Fr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),args:G.array(G.string()),command:G.string(),env:G.array(br),name:G.string()}),Ir=G.union([Nr.and(G.object({type:G.literal(`http`)})),Pr.and(G.object({type:G.literal(`sse`)})),Fr]),Lr=G.string(),Rr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),description:G.string().nullish(),modelId:Lr,name:G.string()}),zr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),cwd:G.string(),mcpServers:G.array(Ir)}),Br=G.string(),Vr=G.union([G.literal(`allow_once`),G.literal(`allow_always`),G.literal(`reject_once`),G.literal(`reject_always`)]),Hr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),kind:Vr,name:G.string(),optionId:Br}),Ur=G.union([G.literal(`high`),G.literal(`medium`),G.literal(`low`)]),Wr=G.union([G.literal(`pending`),G.literal(`in_progress`),G.literal(`completed`)]),Gr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),content:G.string(),priority:Ur,status:Wr}),Kr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),entries:G.array(Gr)}),qr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),audio:G.boolean().optional().default(!1),embeddedContext:G.boolean().optional().default(!1),image:G.boolean().optional().default(!1)}),Jr=G.number().int().gte(0).lte(65535),Yr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),clientCapabilities:Dr.optional().default({auth:{terminal:!1},fs:{readTextFile:!1,writeTextFile:!1},terminal:!1}),clientInfo:kr.nullish(),protocolVersion:Jr}),Xr=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),content:G.string()}),Zr=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),Qr=G.union([G.number(),G.string()]).nullable();G.object({_meta:G.record(G.string(),G.unknown()).nullish(),requestId:Qr});const $r=G.enum([`assistant`,`user`]),ei=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),audience:G.array($r).nullish(),lastModified:G.string().nullish(),priority:G.number().nullish()}),ti=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),annotations:ei.nullish(),data:G.string(),mimeType:G.string()}),ni=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),annotations:ei.nullish(),data:G.string(),mimeType:G.string(),uri:G.string().nullish()}),ri=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),annotations:ei.nullish(),description:G.string().nullish(),mimeType:G.string().nullish(),name:G.string(),size:G.number().nullish(),title:G.string().nullish(),uri:G.string()}),ii=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),optionId:Br}),ai=G.union([G.object({outcome:G.literal(`cancelled`)}),ii.and(G.object({outcome:G.literal(`selected`)}))]),oi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),outcome:ai}),si=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),ci=G.object({currentValue:G.boolean()}),li=G.string(),ui=G.string(),di=G.union([G.literal(`mode`),G.literal(`model`),G.literal(`thought_level`),G.string()]),fi=G.string(),pi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),description:G.string().nullish(),name:G.string(),value:fi}),mi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),group:li,name:G.string(),options:G.array(pi)}),hi=G.union([G.array(pi),G.array(mi)]),gi=G.object({currentValue:fi,options:hi}),_i=G.intersection(G.union([gi.and(G.object({type:G.literal(`select`)})),ci.and(G.object({type:G.literal(`boolean`)}))]),G.object({_meta:G.record(G.string(),G.unknown()).nullish(),category:di.nullish(),description:G.string().nullish(),id:ui,name:G.string()})),vi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),configOptions:G.array(_i)}),yi=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),bi=G.string(),xi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),sessionId:bi});G.object({method:G.string(),params:G.union([xi,Cr]).nullish()});const Si=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),sessionId:bi}),Ci=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),args:G.array(G.string()).optional(),command:G.string(),cwd:G.string().nullish(),env:G.array(br).optional(),outputByteLimit:G.number().nullish(),sessionId:bi}),wi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),cwd:G.string(),mcpServers:G.array(Ir).optional(),sessionId:bi}),Ti=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),sessionId:bi,terminalId:G.string()}),Ei=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),cwd:G.string(),mcpServers:G.array(Ir),sessionId:bi}),Di=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),limit:G.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),line:G.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:G.string(),sessionId:bi}),Oi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),sessionId:bi,terminalId:G.string()}),ki=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),cwd:G.string(),mcpServers:G.array(Ir).optional(),sessionId:bi}),Ai=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),cwd:G.string(),sessionId:bi,title:G.string().nullish(),updatedAt:G.string().nullish()}),ji=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),nextCursor:G.string().nullish(),sessions:G.array(Ai)}),Mi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),title:G.string().nullish(),updatedAt:G.string().nullish()}),Ni=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),Pi=G.string(),Fi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),currentModeId:Pi}),Ii=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),description:G.string().nullish(),id:Pi,name:G.string()}),Li=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),availableModes:G.array(Ii),currentModeId:Pi}),Ri=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),availableModels:G.array(Rr),currentModelId:Lr}),zi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),configOptions:G.array(_i).nullish(),models:Ri.nullish(),modes:Li.nullish(),sessionId:bi}),Bi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),configOptions:G.array(_i).nullish(),models:Ri.nullish(),modes:Li.nullish()}),Vi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),configOptions:G.array(_i).nullish(),models:Ri.nullish(),modes:Li.nullish(),sessionId:bi}),Hi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),configOptions:G.array(_i).nullish(),models:Ri.nullish(),modes:Li.nullish()}),Ui=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),Wi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),close:si.nullish(),fork:yi.nullish(),list:Ni.nullish(),resume:Ui.nullish()}),Gi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),loadSession:G.boolean().optional().default(!1),mcpCapabilities:Mr.optional().default({http:!1,sse:!1}),promptCapabilities:qr.optional().default({audio:!1,embeddedContext:!1,image:!1}),sessionCapabilities:Wi.optional().default({})}),Ki=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),agentCapabilities:Gi.optional().default({loadSession:!1,mcpCapabilities:{http:!1,sse:!1},promptCapabilities:{audio:!1,embeddedContext:!1,image:!1},sessionCapabilities:{}}),agentInfo:kr.nullish(),authMethods:G.array(fr).optional().default([]),protocolVersion:Jr}),qi=G.intersection(G.union([G.object({type:G.literal(`boolean`),value:G.boolean()}),G.object({value:fi})]),G.object({_meta:G.record(G.string(),G.unknown()).nullish(),configId:ui,sessionId:bi})),Ji=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),configOptions:G.array(_i)}),Yi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),modeId:Pi,sessionId:bi}),Xi=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),Zi=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),modelId:Lr,sessionId:bi}),Qi=G.object({_meta:G.record(G.string(),G.unknown()).nullish()}),$i=G.union([G.literal(`end_turn`),G.literal(`max_tokens`),G.literal(`max_turn_requests`),G.literal(`refusal`),G.literal(`cancelled`)]),ea=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),terminalId:G.string()}),ta=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),exitCode:G.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:G.string().nullish()}),na=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),sessionId:bi,terminalId:G.string()}),ra=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),exitStatus:ta.nullish(),output:G.string(),truncated:G.boolean()}),ia=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),annotations:ei.nullish(),text:G.string()}),aa=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),mimeType:G.string().nullish(),text:G.string(),uri:G.string()}),oa=G.union([aa,hr]),sa=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),annotations:ei.nullish(),resource:oa}),ca=G.union([ia.and(G.object({type:G.literal(`text`)})),ni.and(G.object({type:G.literal(`image`)})),ti.and(G.object({type:G.literal(`audio`)})),ri.and(G.object({type:G.literal(`resource_link`)})),sa.and(G.object({type:G.literal(`resource`)}))]),la=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),content:ca}),ua=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),content:ca,messageId:G.string().nullish()}),da=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),messageId:G.string().nullish(),prompt:G.array(ca),sessionId:bi});G.object({id:Qr,method:G.string(),params:G.union([Yr,pr,zr,Ei,jr,wi,ki,Si,Yi,qi,da,Zi,wr]).nullish()});const fa=G.union([la.and(G.object({type:G.literal(`content`)})),yr.and(G.object({type:G.literal(`diff`)})),ea.and(G.object({type:G.literal(`terminal`)}))]),pa=G.string(),ma=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),line:G.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),path:G.string()}),ha=G.union([G.literal(`pending`),G.literal(`in_progress`),G.literal(`completed`),G.literal(`failed`)]),ga=G.union([G.literal(`read`),G.literal(`edit`),G.literal(`delete`),G.literal(`move`),G.literal(`search`),G.literal(`execute`),G.literal(`think`),G.literal(`fetch`),G.literal(`switch_mode`),G.literal(`other`)]),_a=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),content:G.array(fa).optional(),kind:ga.optional(),locations:G.array(ma).optional(),rawInput:G.unknown().optional(),rawOutput:G.unknown().optional(),status:ha.optional(),title:G.string(),toolCallId:pa}),va=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),content:G.array(fa).nullish(),kind:ga.nullish(),locations:G.array(ma).nullish(),rawInput:G.unknown().optional(),rawOutput:G.unknown().optional(),status:ha.nullish(),title:G.string().nullish(),toolCallId:pa}),ya=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),options:G.array(Hr),sessionId:bi,toolCall:va}),ba=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),hint:G.string()}),xa=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),description:G.string(),input:ba.nullish(),name:G.string()}),Sa=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),availableCommands:G.array(xa)}),Ca=G.object({cachedReadTokens:G.number().nullish(),cachedWriteTokens:G.number().nullish(),inputTokens:G.number(),outputTokens:G.number(),thoughtTokens:G.number().nullish(),totalTokens:G.number()}),wa=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),stopReason:$i,usage:Ca.nullish(),userMessageId:G.string().nullish()});G.union([G.object({id:Qr,result:G.union([Ki,mr,Vi,Bi,ji,zi,Hi,gr,Xi,Ji,wa,Qi,Tr])}),G.object({error:Sr,id:Qr})]);const Ta=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),cost:_r.nullish(),size:G.number(),used:G.number()}),Ea=G.union([ua.and(G.object({sessionUpdate:G.literal(`user_message_chunk`)})),ua.and(G.object({sessionUpdate:G.literal(`agent_message_chunk`)})),ua.and(G.object({sessionUpdate:G.literal(`agent_thought_chunk`)})),_a.and(G.object({sessionUpdate:G.literal(`tool_call`)})),va.and(G.object({sessionUpdate:G.literal(`tool_call_update`)})),Kr.and(G.object({sessionUpdate:G.literal(`plan`)})),Sa.and(G.object({sessionUpdate:G.literal(`available_commands_update`)})),Fi.and(G.object({sessionUpdate:G.literal(`current_mode_update`)})),vi.and(G.object({sessionUpdate:G.literal(`config_option_update`)})),Mi.and(G.object({sessionUpdate:G.literal(`session_info_update`)})),Ta.and(G.object({sessionUpdate:G.literal(`usage_update`)}))]),Da=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),sessionId:bi,update:Ea});G.object({method:G.string(),params:G.union([Da,Cr]).nullish()});const Oa=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),sessionId:bi,terminalId:G.string()}),ka=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),exitCode:G.number().int().gte(0).max(4294967295,{message:`Invalid value: Expected uint32 to be <= 4294967295`}).nullish(),signal:G.string().nullish()}),Aa=G.object({_meta:G.record(G.string(),G.unknown()).nullish(),content:G.string(),path:G.string(),sessionId:bi});G.object({id:Qr,method:G.string(),params:G.union([Aa,Di,ya,Ci,na,Oi,Oa,Ti,wr]).nullish()});const ja=G.object({_meta:G.record(G.string(),G.unknown()).nullish()});G.union([G.object({id:Qr,result:G.union([ja,Xr,oi,vr,ra,Zr,ka,Ar,Tr])}),G.object({error:Sr,id:Qr})]);function Ma(e,t){let n=new TextEncoder,r=new TextDecoder;return{readable:new ReadableStream({async start(e){let n=``,i=t.getReader();try{for(;;){let{value:t,done:a}=await i.read();if(a)break;if(!t)continue;n+=r.decode(t,{stream:!0});let o=n.split(`
|
|
9
9
|
`);n=o.pop()||``;for(let t of o){let n=t.trim();if(n)try{let t=JSON.parse(n);e.enqueue(t)}catch(e){console.error(`Failed to parse JSON message:`,n,e)}}}}finally{i.releaseLock(),e.close()}}}),writable:new WritableStream({async write(t){let r=JSON.stringify(t)+`
|
|
10
|
-
`,i=e.getWriter();try{await i.write(n.encode(r))}finally{i.releaseLock()}}})}}Symbol.asyncDispose;var ja=class{#e;constructor(e,t){let n=e(this);this.#e=new Ma(async(e,t)=>{switch(e){case ir.fs_write_text_file:{let e=Oa.parse(t);return n.writeTextFile?.(e)}case ir.fs_read_text_file:{let e=Ti.parse(t);return n.readTextFile?.(e)}case ir.session_request_permission:{let e=_a.parse(t);return n.requestPermission(e)}case ir.terminal_create:{let e=xi.parse(t);return n.createTerminal?.(e)}case ir.terminal_output:{let e=ea.parse(t);return n.terminalOutput?.(e)}case ir.terminal_release:{let e=Ei.parse(t);return await n.releaseTerminal?.(e)??{}}case ir.terminal_wait_for_exit:{let e=Ea.parse(t);return n.waitForTerminalExit?.(e)}case ir.terminal_kill:{let e=Ci.parse(t);return await n.killTerminal?.(e)??{}}default:if(n.extMethod)return n.extMethod(e,t);throw Na.methodNotFound(e)}},async(e,t)=>{switch(e){case ir.session_update:{let e=Ta.parse(t);return n.sessionUpdate(e)}default:if(n.extNotification)return n.extNotification(e,t);throw Na.methodNotFound(e)}},t)}async initialize(e){return await this.#e.sendRequest(rr.initialize,e)}async newSession(e){return await this.#e.sendRequest(rr.session_new,e)}async loadSession(e){return await this.#e.sendRequest(rr.session_load,e)??{}}async unstable_forkSession(e){return await this.#e.sendRequest(rr.session_fork,e)}async listSessions(e){return await this.#e.sendRequest(rr.session_list,e)}async unstable_resumeSession(e){return await this.#e.sendRequest(rr.session_resume,e)}async unstable_closeSession(e){return await this.#e.sendRequest(rr.session_close,e)}async setSessionMode(e){return await this.#e.sendRequest(rr.session_set_mode,e)??{}}async unstable_setSessionModel(e){return await this.#e.sendRequest(rr.session_set_model,e)??{}}async setSessionConfigOption(e){return await this.#e.sendRequest(rr.session_set_config_option,e)}async authenticate(e){return await this.#e.sendRequest(rr.authenticate,e)??{}}async prompt(e){return await this.#e.sendRequest(rr.session_prompt,e)}async cancel(e){return await this.#e.sendNotification(rr.session_cancel,e)}async extMethod(e,t){return await this.#e.sendRequest(e,t)}async extNotification(e,t){return await this.#e.sendNotification(e,t)}get signal(){return this.#e.signal}get closed(){return this.#e.closed}},Ma=class{#e=new Map;#t=0;#n;#r;#i;#a=Promise.resolve();#o=new AbortController;#s;constructor(e,t,n){this.#n=e,this.#r=t,this.#i=n,this.#s=new Promise(e=>{this.#o.signal.addEventListener(`abort`,()=>e())}),this.#c()}get signal(){return this.#o.signal}get closed(){return this.#s}async#c(){let e=this.#i.readable.getReader();try{for(;;){let{value:t,done:n}=await e.read();if(n)break;if(t)try{this.#l(t)}catch(e){console.error(`Unexpected error during message processing:`,t,e),`id`in t&&t.id!==void 0&&this.#p({jsonrpc:`2.0`,id:t.id,error:{code:-32700,message:`Parse error`}})}}}finally{e.releaseLock(),this.#o.abort()}}async#l(e){if(`method`in e&&`id`in e){let t=await this.#u(e.method,e.params);`error`in t&&console.error(`Error handling request`,e,t.error),await this.#p({jsonrpc:`2.0`,id:e.id,...t})}else if(`method`in e){let t=await this.#d(e.method,e.params);`error`in t&&console.error(`Error handling notification`,e,t.error)}else `id`in e?this.#f(e):console.error(`Invalid message`,{message:e})}async#u(e,t){try{return{result:await this.#n(e,t)??null}}catch(e){if(e instanceof Na)return e.toResult();if(e instanceof _e.ZodError)return Na.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return Na.internalError(t?JSON.parse(t):{}).toResult()}catch{return Na.internalError({details:t}).toResult()}}}async#d(e,t){try{return await this.#r(e,t),{result:null}}catch(e){if(e instanceof Na)return e.toResult();if(e instanceof _e.ZodError)return Na.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return Na.internalError(t?JSON.parse(t):{}).toResult()}catch{return Na.internalError({details:t}).toResult()}}}#f(e){let t=this.#e.get(e.id);t?(`result`in e?t.resolve(e.result):`error`in e&&t.reject(e.error),this.#e.delete(e.id)):console.error(`Got response to unknown request`,e.id)}async sendRequest(e,t){let n=this.#t++,r=new Promise((e,t)=>{this.#e.set(n,{resolve:e,reject:t})});return await this.#p({jsonrpc:`2.0`,id:n,method:e,params:t}),r}async sendNotification(e,t){await this.#p({jsonrpc:`2.0`,method:e,params:t})}async#p(e){return this.#a=this.#a.then(async()=>{let t=this.#i.writable.getWriter();try{await t.write(e)}finally{t.releaseLock()}}).catch(e=>{console.error(`ACP write error:`,e)}),this.#a}},Na=class e extends Error{code;data;constructor(e,t,n){super(t),this.code=e,this.name=`RequestError`,this.data=n}static parseError(t,n){return new e(-32700,`Parse error${n?`: ${n}`:``}`,t)}static invalidRequest(t,n){return new e(-32600,`Invalid request${n?`: ${n}`:``}`,t)}static methodNotFound(t){return new e(-32601,`"Method not found": ${t}`,{method:t})}static invalidParams(t,n){return new e(-32602,`Invalid params${n?`: ${n}`:``}`,t)}static internalError(t,n){return new e(-32603,`Internal error${n?`: ${n}`:``}`,t)}static authRequired(t,n){return new e(-32e3,`Authentication required${n?`: ${n}`:``}`,t)}static resourceNotFound(t){return new e(-32002,`Resource not found${t?`: ${t}`:``}`,t&&{uri:t})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};const Pa=v.compose(v.isObject,v.compose(v.hasProperty(`message`),v.Struct({message:v.isString}))),Fa=S.String.pipe(S.brand(`SessionId`));var Ia=class extends S.ErrorClass(`AcpStreamError`)({_tag:S.tag(`AcpStreamError`),cause:S.Unknown}){displayName=`An unexpected error occurred while streaming`;message=`Streaming failed: ${this.cause}`},La=class extends S.ErrorClass(`AcpProviderNotInstalledError`)({_tag:S.tag(`AcpProviderNotInstalledError`),provider:dn}){displayName=`${ee.capitalize(this.provider)} is not installed`;message=g.value(this.provider).pipe(g.when(`claude`,()=>"Claude Code is not installed. Install it from https://code.claude.com/docs/en/overview#native-install-recommended, or use codex agent with `expect -a codex`."),g.when(`codex`,()=>"Codex CLI is not installed. Install it with `npm install -g @openai/codex`, or use Claude Code by removing the `--agent codex` option."),g.orElse(()=>`Your coding agent CLI is not installed. Please install it and then re-run expect.`))},Ra=class extends S.ErrorClass(`AcpProviderUnauthenticatedError`)({_tag:S.tag(`AcpProviderUnauthenticatedError`),provider:dn}){displayName=`Your ${this.provider} agent is not authenticated`;message=g.value(this.provider).pipe(g.when(`claude`,()=>"Please log in using `claude login`, and then re-run expect."),g.when(`codex`,()=>"Please log in using `codex login`, and then re-run expect."),g.orElse(()=>`Please sign in to your coding agent, and then re-run expect.`))},za=class extends S.ErrorClass(`AcpProviderUsageLimitError`)({_tag:S.tag(`AcpProviderUsageLimitError`),provider:dn}){displayName=`Your ${this.provider} agent has exceeded its usage limits`;message=`Usage limits exceeded for ${this.provider}. Please check your plan and billing.`},Ba=class extends S.ErrorClass(`AcpSessionCreateError`)({_tag:S.tag(`AcpSessionCreateError`),cause:S.Unknown}){displayName=`Creating a chat session failed`;message=`Creating session failed: ${s.pretty(s.fail(this.cause))}`},Va=class extends S.ErrorClass(`AcpConnectionInitError`)({_tag:S.tag(`AcpConnectionInitError`),cause:S.Unknown}){message=`Init connection failed: ${this.cause}`},Ha=class extends S.ErrorClass(`AcpAdapterNotFoundError`)({_tag:S.tag(`AcpAdapterNotFoundError`),packageName:S.String,cause:S.Unknown}){message=`ACP adapter not found: ${this.packageName}. Error: ${s.pretty(s.fail(this.cause))}`},Ua=class e extends C.Service()(`@expect/AcpAdapter`){static layerCodex=m.effect(e)(u.try({try:()=>{let t=a(typeof __filename<`u`?__filename:import.meta.url).resolve(`@zed-industries/codex-acp/bin/codex-acp.js`);return e.of({provider:`codex`,bin:process.execPath,args:[t],env:{}})},catch:e=>new Ha({packageName:`@zed-industries/codex-acp`,cause:e})}));static layerClaude=m.effect(e)(u.gen(function*(){let t=yield*ye.ChildProcessSpawner,n=S.Struct({loggedIn:S.Boolean});return yield*ve.make(`claude`,[`auth`,`status`]).pipe(t.string,u.flatMap(S.decodeEffect(S.fromJsonString(n))),u.flatMap(({loggedIn:e})=>e?u.void:new Ra({provider:`claude`}).asEffect()),u.catchReason(`PlatformError`,`NotFound`,()=>new La({provider:`claude`}).asEffect())),yield*u.try({try:()=>{let t=a(typeof __filename<`u`?__filename:import.meta.url).resolve(`@zed-industries/claude-agent-acp/dist/index.js`);return e.of({provider:`claude`,bin:process.execPath,args:[t],env:{}})},catch:e=>new Ha({packageName:`@zed-industries/claude-agent-acp`,cause:e})})})).pipe(m.provide(be.layer))},Wa=class extends C.Service()(`@expect/AcpClient`,{make:u.gen(function*(){let e=yield*Ua;yield*u.annotateLogsScoped({adapter:e.args[0]}),yield*u.logInfo(`Initializing AcpClient`);let t=yield*ye.ChildProcessSpawner,n=yield*f.make(),r=yield*b.unbounded(),i=new Map,a={requestPermission:e=>Promise.resolve({outcome:{outcome:`selected`,optionId:e.options.find(e=>e.kind===`allow_always`||e.kind===`allow_once`)?.optionId??e.options[0].optionId}}),sessionUpdate:async({sessionId:e,update:t})=>{let n=i.get(Fa.makeUnsafe(e));if(n===void 0)return console.warn(`updates queue not found for session ${e}`);let r=S.decodeUnknownSync(un)(t);b.offerUnsafe(n,r)}},o=yield*ve.make(e.bin,e.args,{env:e.env}).pipe(t.spawn);yield*u.annotateLogsScoped({pid:o.pid}),yield*u.logDebug(`ACP adapter subprocess spawned`),yield*w.fromQueue(r).pipe(w.run(o.stdin),u.forkScoped);let s=w.toReadableStream(o.stdout),c=new ja(e=>a,Aa(new WritableStream({write:e=>void b.offerUnsafe(r,e)}),s)),l=he(new URL(`./browser-mcp.js`,import.meta.url)),d=e=>[{command:process.execPath,args:[l],env:[...e],name:`browser`}],p=yield*u.tryPromise({try:()=>c.initialize({protocolVersion:1}),catch:e=>new Va({cause:e})});yield*u.logInfo(`ACP connection initialized`,{capabilities:p.agentCapabilities});let m=u.fn(`AcpClient.createSession`)(function*(t,n=[]){yield*u.annotateCurrentSpan({cwd:t});let r=d(n);return yield*u.tryPromise({try:()=>c.newSession({cwd:t,mcpServers:r}),catch:t=>{let n=Pa(t)?t.message:String(t);return[`authentication`].some(e=>n.toLowerCase().includes(e))?new Ra({provider:e.provider}):[`out of usage`,`limits exceeded`,`usage exceeded`].some(e=>n.toLowerCase().includes(e))?new za({provider:e.provider}):new Ba({cause:t})}}).pipe(u.map(({sessionId:e})=>Fa.makeUnsafe(e)),u.tap(e=>u.gen(function*(){let t=yield*b.unbounded();i.set(e,t),yield*u.logInfo(`ACP session created`,{sessionId:e})})))}),h=u.fn(`AcpClient.getQueueBySessionId`)(function*(e){if(!i.has(e))return yield*u.die(`Session ${e} not initialized, did you forget to call createSession?`);let t=yield*b.unbounded();return i.set(e,t),t});return{createSession:m,stream:u.fn(`AcpClient.stream`)(function*({prompt:e,sessionId:t,cwd:r,mcpEnv:i=[]}){let a=_.isSome(t)?t.value:yield*m(r,i);yield*u.logDebug(`ACP stream starting`,{sessionId:a});let o=yield*h(a);return yield*u.tryPromise({try:()=>c.prompt({sessionId:a,prompt:[{type:`text`,text:e}]}),catch:e=>new Ia({cause:e})}).pipe(u.tap(()=>u.logDebug(`ACP prompt completed`)),u.tap(()=>b.end(o)),f.run(n,a,{startImmediately:!0})),w.fromQueue(o)},w.unwrap)}})}){static layer=m.effect(this)(this.make).pipe(m.provide(be.layer));static layerCodex=this.layer.pipe(m.provide(Ua.layerCodex));static layerClaude=this.layer.pipe(m.provide(Ua.layerClaude))},Ga=class e extends C.Service()(`@expect/Agent`){static layerAcp=m.effect(e)(u.gen(function*(){let t=yield*Wa;return e.of({createSession:e=>t.createSession(e),stream:e=>t.stream({cwd:e.cwd,sessionId:_.map(e.sessionId,e=>e),prompt:e.prompt,mcpEnv:e.mcpEnv})})})).pipe(m.provide(Wa.layer));static layerCodex=e.layerAcp.pipe(m.provide(Ua.layerCodex));static layerClaude=e.layerAcp.pipe(m.provide(Ua.layerClaude));static layerFor=t=>t===`claude`?e.layerClaude:e.layerCodex;static layerTest=t=>m.effect(e,u.gen(function*(){let n=yield*p.FileSystem,r=S.decodeSync(un);return e.of({stream:()=>n.stream(t).pipe(w.decodeText(),w.splitLines,w.map(e=>r(JSON.parse(e))),w.orDie),createSession:()=>u.die(`createSession not supported for test layer`)})})).pipe(m.provide(be.layer))};const Ka=[`claude`,`codex`,`cursor`],qa=process.platform===`win32`?`where`:`which`,Ja=e=>{try{return le(`${qa} ${e}`,{stdio:`pipe`}),!0}catch{return!1}},Ya=()=>Ka.filter(Ja),Xa=12e3,Za=e=>e?[`Saved flow guidance:`,`You are replaying a previously saved flow. Follow these steps as guidance, but adapt if the UI has changed.`,`Saved flow title: ${e.title}`,`Saved flow request: ${e.userInstruction}`,``,...e.steps.flatMap((e,t)=>[`Step ${t+1}: ${e.title}`,`Instruction: ${e.instruction}`,`Expected: ${e.expectedOutcome}`,``])]:[],Qa=e=>{switch(e){case`Commit`:return[`- Start narrow and prove the selected commit's intended change works first.`,`- Treat the selected commit and its touched files as the primary testing hypothesis.`,`- After the primary flow, test 2-4 adjacent flows that could regress from the same change. Think about what else touches the same components, routes, or data.`,`- For UI changes, verify related views that render the same data or share the same components.`];case`WorkingTree`:return[`- Start with the exact user-requested flow against the local in-progress changes.`,`- After the primary flow, test related flows that exercise the same code paths — aim for 2-3 follow-ups.`,`- Pay extra attention to partially-implemented features: check that incomplete states don't break existing behavior.`];case`Changes`:return[`- Treat committed and uncommitted work as one body of change.`,`- Cover the requested flow first, then the highest-risk adjacent flows.`,`- Test 2-4 follow-up flows, prioritizing paths that share components or data with the changed files.`,`- If the changes touch shared utilities or layouts, verify multiple pages that use them.`];default:return[`- This is a branch-level review — be thorough. The goal is to catch regressions before merge, not to do a quick spot-check.`,`- Cover the requested flow first, then systematically test each area affected by the changed files.`,`- Aim for 5-8 total tested flows. Derive them from the changed files: each changed route, component, or data path should get its own verification.`,`- Test cross-cutting concerns: if shared components, layouts, or utilities changed, verify them on multiple pages that consume them.`,`- Include at least one negative/edge-case flow (e.g. invalid input, empty state, unauthorized access, broken link) relevant to the changes.`,`- Do not stop after the happy path passes. The value of a branch review is catching what the developer might have missed.`]}},$a=e=>{if(!e||e.totalCount===0)return[];let t=[`Test coverage of changed files: ${e.percent}% (${e.coveredCount}/${e.totalCount} files have tests)`],n=e.entries.filter(e=>e.covered),r=e.entries.filter(e=>!e.covered);for(let e of n)t.push(` [covered] ${e.path} (tested by: ${e.testFiles.slice(0,3).join(`, `)})`);for(let e of r)t.push(` [no test] ${e.path}`);return r.length>0&&t.push(`Prioritize browser-testing files WITHOUT existing test coverage.`),t.push(``),t},eo=e=>{let t=e.browserMcpServerName??`browser`,n=e.changedFiles.slice(0,12),r=e.recentCommits.slice(0,5),i=e.diffPreview||``,a=i.length>Xa?i.slice(0,Xa)+`
|
|
11
|
-
... (truncated)`:i;return[`You are executing a browser regression test directly from repository context.`,`You have browser tools via the MCP server named "${t}":`,``,`1. open — Launch a browser and navigate to a URL.`,`2. playwright — Execute Playwright code in Node. Globals: page (Page), context (BrowserContext), browser (Browser), ref(id) (resolves a snapshot ref like 'e4' to a Playwright Locator). Supports await. Return a value to get it back as JSON.`,`3. screenshot — Capture page state. Set mode: 'snapshot' (ARIA accessibility tree, default and preferred), 'screenshot' (PNG image), or 'annotated' (PNG with numbered labels on interactive elements).`,`4. console_logs — Get browser console messages. Filter by type ('error', 'warning', 'log'). Use after navigation or interactions to catch errors.`,`5. network_requests — Get captured network requests. Filter by method, URL substring, or resource type ('xhr', 'fetch', 'document').`,`6. close — Close the browser and end the session.`,``,`Strongly prefer screenshot with mode 'snapshot' for observing page state — the ARIA tree is fast, cheap, and sufficient for almost all assertions.`,`Only use mode 'screenshot' or 'annotated' when you need to verify something purely visual (layout, colors, images) that the accessibility tree cannot capture.`,`After each step, check console_logs with type 'error' to catch unexpected errors.`,``,`Snapshot-driven workflow:`,`1. Call screenshot with mode 'snapshot' to get the ARIA tree with refs.`,`2. Read the tree to find your target elements. Every interactive element has a ref like [ref=e4].`,`3. Use ref() in one playwright call to perform multiple actions using the refs from the snapshot — fill forms, click buttons, wait, and return results all in one block.`,`4. Only take a new snapshot when the page structure has changed significantly (navigation, modal open, new content loaded) and you need fresh refs.`,``,`Example snapshot tree:`,` - navigation`,` - link "Home" [ref=e1]`,` - link "About" [ref=e2]`,` - main`,` - heading "Welcome"`,` - textbox "Email" [ref=e3]`,` - button "Submit" [ref=e4]`,``,`Acting on refs — use ref() to get a Locator directly from the snapshot ref ID:`,` await ref('e3').fill('test@example.com');`,` await ref('e4').click();`,` await ref('e1').click();`,``,`Always snapshot first, then use ref() to act. Never guess CSS selectors.`,``,`Batch as many actions as possible into a single playwright call to minimize round trips:`,` playwright: await ref('e3').fill('test@example.com'); await ref('e5').fill('secret'); await ref('e6').click(); await page.waitForLoadState('networkidle'); return await page.innerText('.result');`,` playwright: await ref('e1').click(); await page.waitForURL('**/about');`,` playwright: return { url: page.url(), title: await page.title() };`,``,`Execution strategy:`,`- First master the primary flow the developer asked for. Verify it thoroughly before moving on.`,`- Once the primary flow passes, test additional related flows suggested by the changed files and route context. The scope strategy below specifies how many — follow it.`,`- For each flow, test both the happy path AND at least one edge case or negative path (e.g. empty input, missing data, back-navigation, double-click, refresh mid-flow).`,`- Use the same browser session throughout unless the app forces you into a different path.`,`- Execution style is assertion-first: navigate, act, validate, recover once, then fail with evidence if still blocked.`,`- Create your own step structure while executing. Use stable sequential IDs like step-01, step-02, step-03.`,`- Take your time. A thorough run that catches real issues is more valuable than a fast run that misses them. Do not rush to RUN_COMPLETED.`,``,`Assertion depth — do not just confirm the page loaded. For each step, verify that the action produced the expected state change:`,`- Before acting, note what should change. After acting, confirm it actually changed.`,`- Check at least two independent signals per step (e.g. URL changed AND new content appeared, or item was added AND count updated).`,`- Verify absence when relevant: after a delete, the item is gone; after dismissing a modal, it no longer appears in the tree.`,`- Use playwright to return structured evidence rather than eyeballing snapshots: return { url: page.url(), title: await page.title(), visible: await ref('e5').isVisible() };`,`- If the changed files suggest specific behavior (e.g. a validation rule, a redirect, a computed value), test that specific behavior rather than just the surrounding UI.`,``,`Before and after each step, emit these exact status lines on their own lines:`,`STEP_START|<step-id>|<step-title>`,`STEP_DONE|<step-id>|<short-summary>`,`ASSERTION_FAILED|<step-id>|<why-it-failed>`,`STEP_SKIPPED|<step-id>|<reason-it-was-skipped>`,`RUN_COMPLETED|passed|<final-summary>`,`RUN_COMPLETED|failed|<final-summary>`,``,`Use STEP_SKIPPED when a step cannot be executed due to missing prerequisites (e.g. test credentials not available, required test data missing, auth-blocked). Never use STEP_DONE for steps that were not actually tested.`,``,`Allowed failure categories: app-bug, env-issue, auth-blocked, missing-test-data, selector-drift, agent-misread.`,`When a step fails, gather structured evidence before emitting ASSERTION_FAILED:`,`- Call screenshot with mode 'snapshot' to capture the ARIA tree.`,`- Use playwright to gather diagnostics: return { url: page.url(), title: await page.title(), text: await page.innerText('body').then(t => t.slice(0, 500)) };`,`- Only take a visual screenshot if the failure might be layout/rendering related.`,`- Summarize the failure category and the most important evidence inside <why-it-failed>.`,``,`Stability heuristics:`,`- After navigation or major UI changes, use playwright to wait for the page to settle (e.g. await page.waitForLoadState('networkidle')).`,`- Use screenshot with mode 'snapshot' to inspect the accessibility tree before interactions that depend on current UI state.`,`- Avoid interacting while the UI is visibly loading or transitioning.`,`- Confirm you reached the expected page or route before continuing.`,`- When waiting for page changes (navigation, content loading, animations), prefer short incremental waits (1-3 seconds) with snapshot checks in between rather than a single long wait. For example, instead of waiting 10 seconds: wait 2s, take a snapshot, check if ready, if not wait 2s more and snapshot again. This lets you proceed as soon as the page is ready.`,``,`Recovery policy for each blocked step:`,`- Take a new snapshot to re-inspect the page and get fresh refs.`,`- Use playwright with ref() to scroll the target into view or retry the interaction once.`,`- If still blocked, classify the blocker with one allowed failure category and include that classification in ASSERTION_FAILED.`,``,`Avoid rabbit holes:`,`- Do not repeat the same failing action more than once without new evidence such as a fresh snapshot, a different ref, a changed page state, or a clear new hypothesis.`,`- If four attempts fail or progress stalls, stop acting and report what you observed, what blocked progress, and the most likely next step.`,`- Prefer gathering evidence over brute force. If the page is confusing, use screenshot with mode 'snapshot', playwright for console or network diagnostics, or a visual screenshot to understand it before trying more actions.`,`- If you encounter a blocker such as login, passkey/manual user interaction, permissions, captchas, destructive confirmations, missing data, or an unexpected state, stop and report it instead of improvising repeated actions.`,`- Do not get stuck in wait-action-wait loops. Every retry should be justified by something newly observed.`,``,`Before emitting RUN_COMPLETED, call the close tool exactly once so the browser session flushes the video to disk.`,``,`Environment:`,`- Base URL: ${e.baseUrl??`not provided`}`,`- Headed mode preference: ${e.isHeadless?`headless`:`headed`}`,`- Reuse browser cookies: ${e.requiresCookies?`yes`:`no`}`,``,`Testing target context:`,`- Scope: ${e.scope}`,`- Current branch: ${e.currentBranch}`,`- Main branch: ${e.mainBranch??`unknown`}`,``,`Developer request:`,e.userInstruction,``,...
|
|
12
|
-
`):`- No changed files detected
|
|
13
|
-
`):`- No recent commits available`,``,`Diff preview:`,a||`No diff preview available`,``,`Scope strategy:`,...
|
|
14
|
-
`)};var
|
|
10
|
+
`,i=e.getWriter();try{await i.write(n.encode(r))}finally{i.releaseLock()}}})}}Symbol.asyncDispose;var Na=class{#e;constructor(e,t){let n=e(this);this.#e=new Pa(async(e,t)=>{switch(e){case or.fs_write_text_file:{let e=Aa.parse(t);return n.writeTextFile?.(e)}case or.fs_read_text_file:{let e=Di.parse(t);return n.readTextFile?.(e)}case or.session_request_permission:{let e=ya.parse(t);return n.requestPermission(e)}case or.terminal_create:{let e=Ci.parse(t);return n.createTerminal?.(e)}case or.terminal_output:{let e=na.parse(t);return n.terminalOutput?.(e)}case or.terminal_release:{let e=Oi.parse(t);return await n.releaseTerminal?.(e)??{}}case or.terminal_wait_for_exit:{let e=Oa.parse(t);return n.waitForTerminalExit?.(e)}case or.terminal_kill:{let e=Ti.parse(t);return await n.killTerminal?.(e)??{}}default:if(n.extMethod)return n.extMethod(e,t);throw Fa.methodNotFound(e)}},async(e,t)=>{switch(e){case or.session_update:{let e=Da.parse(t);return n.sessionUpdate(e)}default:if(n.extNotification)return n.extNotification(e,t);throw Fa.methodNotFound(e)}},t)}async initialize(e){return await this.#e.sendRequest(ar.initialize,e)}async newSession(e){return await this.#e.sendRequest(ar.session_new,e)}async loadSession(e){return await this.#e.sendRequest(ar.session_load,e)??{}}async unstable_forkSession(e){return await this.#e.sendRequest(ar.session_fork,e)}async listSessions(e){return await this.#e.sendRequest(ar.session_list,e)}async unstable_resumeSession(e){return await this.#e.sendRequest(ar.session_resume,e)}async unstable_closeSession(e){return await this.#e.sendRequest(ar.session_close,e)}async setSessionMode(e){return await this.#e.sendRequest(ar.session_set_mode,e)??{}}async unstable_setSessionModel(e){return await this.#e.sendRequest(ar.session_set_model,e)??{}}async setSessionConfigOption(e){return await this.#e.sendRequest(ar.session_set_config_option,e)}async authenticate(e){return await this.#e.sendRequest(ar.authenticate,e)??{}}async prompt(e){return await this.#e.sendRequest(ar.session_prompt,e)}async cancel(e){return await this.#e.sendNotification(ar.session_cancel,e)}async extMethod(e,t){return await this.#e.sendRequest(e,t)}async extNotification(e,t){return await this.#e.sendNotification(e,t)}get signal(){return this.#e.signal}get closed(){return this.#e.closed}},Pa=class{#e=new Map;#t=0;#n;#r;#i;#a=Promise.resolve();#o=new AbortController;#s;constructor(e,t,n){this.#n=e,this.#r=t,this.#i=n,this.#s=new Promise(e=>{this.#o.signal.addEventListener(`abort`,()=>e())}),this.#c()}get signal(){return this.#o.signal}get closed(){return this.#s}async#c(){let e=this.#i.readable.getReader();try{for(;;){let{value:t,done:n}=await e.read();if(n)break;if(t)try{this.#l(t)}catch(e){console.error(`Unexpected error during message processing:`,t,e),`id`in t&&t.id!==void 0&&this.#p({jsonrpc:`2.0`,id:t.id,error:{code:-32700,message:`Parse error`}})}}}finally{e.releaseLock(),this.#o.abort()}}async#l(e){if(`method`in e&&`id`in e){let t=await this.#u(e.method,e.params);`error`in t&&console.error(`Error handling request`,e,t.error),await this.#p({jsonrpc:`2.0`,id:e.id,...t})}else if(`method`in e){let t=await this.#d(e.method,e.params);`error`in t&&console.error(`Error handling notification`,e,t.error)}else `id`in e?this.#f(e):console.error(`Invalid message`,{message:e})}async#u(e,t){try{return{result:await this.#n(e,t)??null}}catch(e){if(e instanceof Fa)return e.toResult();if(e instanceof be.ZodError)return Fa.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return Fa.internalError(t?JSON.parse(t):{}).toResult()}catch{return Fa.internalError({details:t}).toResult()}}}async#d(e,t){try{return await this.#r(e,t),{result:null}}catch(e){if(e instanceof Fa)return e.toResult();if(e instanceof be.ZodError)return Fa.invalidParams(e.format()).toResult();let t;(e instanceof Error||typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`)&&(t=e.message);try{return Fa.internalError(t?JSON.parse(t):{}).toResult()}catch{return Fa.internalError({details:t}).toResult()}}}#f(e){let t=this.#e.get(e.id);t?(`result`in e?t.resolve(e.result):`error`in e&&t.reject(e.error),this.#e.delete(e.id)):console.error(`Got response to unknown request`,e.id)}async sendRequest(e,t){let n=this.#t++,r=new Promise((e,t)=>{this.#e.set(n,{resolve:e,reject:t})});return await this.#p({jsonrpc:`2.0`,id:n,method:e,params:t}),r}async sendNotification(e,t){await this.#p({jsonrpc:`2.0`,method:e,params:t})}async#p(e){return this.#a=this.#a.then(async()=>{let t=this.#i.writable.getWriter();try{await t.write(e)}finally{t.releaseLock()}}).catch(e=>{console.error(`ACP write error:`,e)}),this.#a}},Fa=class e extends Error{code;data;constructor(e,t,n){super(t),this.code=e,this.name=`RequestError`,this.data=n}static parseError(t,n){return new e(-32700,`Parse error${n?`: ${n}`:``}`,t)}static invalidRequest(t,n){return new e(-32600,`Invalid request${n?`: ${n}`:``}`,t)}static methodNotFound(t){return new e(-32601,`"Method not found": ${t}`,{method:t})}static invalidParams(t,n){return new e(-32602,`Invalid params${n?`: ${n}`:``}`,t)}static internalError(t,n){return new e(-32603,`Internal error${n?`: ${n}`:``}`,t)}static authRequired(t,n){return new e(-32e3,`Authentication required${n?`: ${n}`:``}`,t)}static resourceNotFound(t){return new e(-32002,`Resource not found${t?`: ${t}`:``}`,t&&{uri:t})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};const Ia=y.compose(y.isObject,y.compose(y.hasProperty(`message`),y.Struct({message:y.isString}))),La=w.String.pipe(w.brand(`SessionId`)),Ra=180*1e3;var za=class extends w.ErrorClass(`AcpStreamError`)({_tag:w.tag(`AcpStreamError`),cause:w.Unknown}){displayName=`An unexpected error occurred while streaming`;message=`Streaming failed: ${this.cause}`},Ba=class extends w.ErrorClass(`AcpProviderNotInstalledError`)({_tag:w.tag(`AcpProviderNotInstalledError`),provider:pn}){displayName=`${D.capitalize(this.provider)} is not installed`;message=_.value(this.provider).pipe(_.when(`claude`,()=>"Claude Code is not installed. Install it from https://code.claude.com/docs/en/overview#native-install-recommended, or use codex agent with `expect -a codex`."),_.when(`codex`,()=>"Codex CLI is not installed. Install it with `npm install -g @openai/codex`, or use Claude Code by removing the `--agent codex` option."),_.orElse(()=>`Your coding agent CLI is not installed. Please install it and then re-run expect.`))},Va=class extends w.ErrorClass(`AcpProviderUnauthenticatedError`)({_tag:w.tag(`AcpProviderUnauthenticatedError`),provider:pn}){displayName=`Your ${this.provider} agent is not authenticated`;message=_.value(this.provider).pipe(_.when(`claude`,()=>"Please log in using `claude login`, and then re-run expect."),_.when(`codex`,()=>"Please log in using `codex login`, and then re-run expect."),_.orElse(()=>`Please sign in to your coding agent, and then re-run expect.`))},Ha=class extends w.ErrorClass(`AcpProviderUsageLimitError`)({_tag:w.tag(`AcpProviderUsageLimitError`),provider:pn}){displayName=`Your ${this.provider} agent has exceeded its usage limits`;message=`Usage limits exceeded for ${this.provider}. Please check your plan and billing.`},Ua=class extends w.ErrorClass(`AcpSessionCreateError`)({_tag:w.tag(`AcpSessionCreateError`),cause:w.Unknown}){displayName=`Creating a chat session failed`;message=`Creating session failed: ${s.pretty(s.fail(this.cause))}`},Wa=class extends w.ErrorClass(`AcpConnectionInitError`)({_tag:w.tag(`AcpConnectionInitError`),cause:w.Unknown}){message=`Init connection failed: ${this.cause}`},Ga=class extends w.ErrorClass(`AcpAdapterNotFoundError`)({_tag:w.tag(`AcpAdapterNotFoundError`),packageName:w.String,cause:w.Unknown}){message=`ACP adapter not found: ${this.packageName}. Error: ${s.pretty(s.fail(this.cause))}`},Ka=class e extends T.Service()(`@expect/AcpAdapter`){static layerCodex=h.effect(e)(d.try({try:()=>{let t=a(typeof __filename<`u`?__filename:import.meta.url).resolve(`@zed-industries/codex-acp/bin/codex-acp.js`);return e.of({provider:`codex`,bin:process.execPath,args:[t],env:{}})},catch:e=>new Ga({packageName:`@zed-industries/codex-acp`,cause:e})}));static layerClaude=h.effect(e)(d.gen(function*(){let t=yield*Se.ChildProcessSpawner,n=w.Struct({loggedIn:w.Boolean});return yield*xe.make(`claude`,[`auth`,`status`]).pipe(t.string,d.flatMap(w.decodeEffect(w.fromJsonString(n))),d.flatMap(({loggedIn:e})=>e?d.void:new Va({provider:`claude`}).asEffect()),d.catchReason(`PlatformError`,`NotFound`,()=>new Ba({provider:`claude`}).asEffect())),yield*d.try({try:()=>{let t=a(typeof __filename<`u`?__filename:import.meta.url).resolve(`@zed-industries/claude-agent-acp/dist/index.js`);return e.of({provider:`claude`,bin:process.execPath,args:[t],env:{}})},catch:e=>new Ga({packageName:`@zed-industries/claude-agent-acp`,cause:e})})})).pipe(h.provide(K.layer))},qa=class extends T.Service()(`@expect/AcpClient`,{make:d.gen(function*(){let e=yield*Ka;yield*d.annotateLogsScoped({adapter:e.args[0]}),yield*d.logInfo(`Initializing AcpClient`);let t=yield*Se.ChildProcessSpawner,n=yield*p.make(),r=yield*x.unbounded(),i=new Map,a={requestPermission:e=>Promise.resolve({outcome:{outcome:`selected`,optionId:e.options.find(e=>e.kind===`allow_always`||e.kind===`allow_once`)?.optionId??e.options[0].optionId}}),sessionUpdate:async({sessionId:e,update:t})=>{let n=i.get(La.makeUnsafe(e));if(n===void 0)return console.warn(`updates queue not found for session ${e}`);let r=w.decodeUnknownSync(fn)(t);x.offerUnsafe(n,r)}},o=yield*xe.make(e.bin,e.args,{env:e.env,extendEnv:!0}).pipe(t.spawn);yield*d.annotateLogsScoped({pid:o.pid}),yield*d.logDebug(`ACP adapter subprocess spawned`),yield*E.fromQueue(r).pipe(E.run(o.stdin),d.forkScoped),yield*o.stderr.pipe(E.decodeText(),E.splitLines,E.tap(e=>d.logDebug(`ACP adapter stderr`,{line:e})),E.runDrain,d.forkScoped);let s=E.toReadableStream(o.stdout),c=new Na(e=>a,Ma(new WritableStream({write:e=>void x.offerUnsafe(r,e)}),s)),l=ve(new URL(`./browser-mcp.js`,import.meta.url)),f=e=>[{command:process.execPath,args:[l],env:[...e],name:`browser`}],m=yield*d.tryPromise({try:()=>c.initialize({protocolVersion:1}),catch:e=>new Wa({cause:e})});yield*d.logInfo(`ACP connection initialized`,{capabilities:m.agentCapabilities});let h=d.fn(`AcpClient.createSession`)(function*(t,n=[]){yield*d.annotateCurrentSpan({cwd:t});let r=f(n);return yield*d.tryPromise({try:()=>c.newSession({cwd:t,mcpServers:r}),catch:t=>{let n=Ia(t)?t.message:String(t);return[`authentication`].some(e=>n.toLowerCase().includes(e))?new Va({provider:e.provider}):[`out of usage`,`limits exceeded`,`usage exceeded`].some(e=>n.toLowerCase().includes(e))?new Ha({provider:e.provider}):new Ua({cause:t})}}).pipe(d.map(({sessionId:e})=>La.makeUnsafe(e)),d.tap(e=>d.gen(function*(){let t=yield*x.unbounded();i.set(e,t),yield*d.logInfo(`ACP session created`,{sessionId:e})})))}),g=d.fn(`AcpClient.getQueueBySessionId`)(function*(e){if(!i.has(e))return yield*d.die(`Session ${e} not initialized, did you forget to call createSession?`);let t=yield*x.unbounded();return i.set(e,t),t});return{createSession:h,stream:d.fn(`AcpClient.stream`)(function*({prompt:e,sessionId:t,cwd:r,mcpEnv:i=[]}){let a=v.isSome(t)?t.value:yield*h(r,i);yield*d.logDebug(`ACP stream starting`,{sessionId:a});let o=yield*g(a),s=yield*S.make(Date.now());yield*d.tryPromise({try:()=>c.prompt({sessionId:a,prompt:[{type:`text`,text:e}]}),catch:e=>new za({cause:e})}).pipe(d.tap(()=>d.logDebug(`ACP prompt completed`)),d.tap(()=>x.end(o)),p.run(n,a,{startImmediately:!0}));let l=d.gen(function*(){yield*d.sleep(u.millis(Ra));let e=yield*S.get(s);return Date.now()-e>=Ra});return yield*d.gen(function*(){(yield*d.repeat(l,{while:e=>!e}))&&(yield*d.logWarning(`ACP stream inactivity timeout`,{sessionId:a}),yield*x.fail(o,new za({cause:`Agent produced no output for ${Ra/1e3}s — the agent may be stalled`})))}).pipe(d.forkScoped),E.fromQueue(o).pipe(E.tap(()=>S.set(s,Date.now())))},E.unwrap)}})}){static layer=h.effect(this)(this.make).pipe(h.provide(K.layer));static layerCodex=this.layer.pipe(h.provide(Ka.layerCodex));static layerClaude=this.layer.pipe(h.provide(Ka.layerClaude))},Ja=class e extends T.Service()(`@expect/Agent`){static layerAcp=h.effect(e)(d.gen(function*(){let t=yield*qa;return e.of({createSession:e=>t.createSession(e),stream:e=>t.stream({cwd:e.cwd,sessionId:v.map(e.sessionId,e=>e),prompt:e.prompt,mcpEnv:e.mcpEnv})})})).pipe(h.provide(qa.layer));static layerCodex=e.layerAcp.pipe(h.provide(Ka.layerCodex));static layerClaude=e.layerAcp.pipe(h.provide(Ka.layerClaude));static layerFor=t=>t===`claude`?e.layerClaude:e.layerCodex;static layerTest=t=>h.effect(e,d.gen(function*(){let n=yield*m.FileSystem,r=w.decodeSync(fn);return e.of({stream:()=>n.stream(t).pipe(E.decodeText(),E.splitLines,E.map(e=>r(JSON.parse(e))),E.orDie),createSession:()=>d.die(`createSession not supported for test layer`)})})).pipe(h.provide(K.layer))};const Ya=[`claude`,`codex`,`cursor`],Xa=process.platform===`win32`?`where`:`which`,Za=e=>{try{return de(`${Xa} ${e}`,{stdio:`pipe`}),!0}catch{return!1}},Qa=()=>Ya.filter(Za),$a=12e3,eo=e=>e?[`Saved flow guidance:`,`You are replaying a previously saved flow. Follow these steps as guidance, but adapt if the UI has changed.`,`Saved flow title: ${e.title}`,`Saved flow request: ${e.userInstruction}`,``,...e.steps.flatMap((e,t)=>[`Step ${t+1}: ${e.title}`,`Instruction: ${e.instruction}`,`Expected: ${e.expectedOutcome}`,``])]:[],to=e=>{switch(e){case`Commit`:return[`- Start narrow and prove the selected commit's intended change works first.`,`- Treat the selected commit and its touched files as the primary testing hypothesis.`,`- After the primary flow, test 2-4 adjacent flows that could regress from the same change. Think about what else touches the same components, routes, or data.`,`- For UI changes, verify related views that render the same data or share the same components.`];case`WorkingTree`:return[`- Start with the exact user-requested flow against the local in-progress changes.`,`- After the primary flow, test related flows that exercise the same code paths — aim for 2-3 follow-ups.`,`- Pay extra attention to partially-implemented features: check that incomplete states don't break existing behavior.`];case`Changes`:return[`- Treat committed and uncommitted work as one body of change.`,`- Cover the requested flow first, then the highest-risk adjacent flows.`,`- Test 2-4 follow-up flows, prioritizing paths that share components or data with the changed files.`,`- If the changes touch shared utilities or layouts, verify multiple pages that use them.`];default:return[`- This is a branch-level review — be thorough. The goal is to catch regressions before merge, not to do a quick spot-check.`,`- Cover the requested flow first, then systematically test each area affected by the changed files.`,`- Aim for 5-8 total tested flows. Derive them from the changed files: each changed route, component, or data path should get its own verification.`,`- Test cross-cutting concerns: if shared components, layouts, or utilities changed, verify them on multiple pages that consume them.`,`- Include at least one negative/edge-case flow (e.g. invalid input, empty state, unauthorized access, broken link) relevant to the changes.`,`- Do not stop after the happy path passes. The value of a branch review is catching what the developer might have missed.`]}},no=e=>{if(!e||e.totalCount===0)return[];let t=[`Test coverage of changed files: ${e.percent}% (${e.coveredCount}/${e.totalCount} files have tests)`],n=e.entries.filter(e=>e.covered),r=e.entries.filter(e=>!e.covered);for(let e of n)t.push(` [covered] ${e.path} (tested by: ${e.testFiles.slice(0,3).join(`, `)})`);for(let e of r)t.push(` [no test] ${e.path}`);return r.length>0&&t.push(`Prioritize browser-testing files WITHOUT existing test coverage.`),t.push(``),t},ro=e=>{let t=e.browserMcpServerName??`browser`,n=e.changedFiles.slice(0,12),r=e.recentCommits.slice(0,5),i=e.diffPreview||``,a=i.length>$a?i.slice(0,$a)+`
|
|
11
|
+
... (truncated)`:i;return[`You are executing a browser regression test directly from repository context.`,`You have browser tools via the MCP server named "${t}":`,``,`1. open — Launch a browser and navigate to a URL.`,`2. playwright — Execute Playwright code in Node. Globals: page (Page), context (BrowserContext), browser (Browser), ref(id) (resolves a snapshot ref like 'e4' to a Playwright Locator). Supports await. Return a value to get it back as JSON.`,`3. screenshot — Capture page state. Set mode: 'snapshot' (ARIA accessibility tree, default and preferred), 'screenshot' (PNG image), or 'annotated' (PNG with numbered labels on interactive elements).`,`4. console_logs — Get browser console messages. Filter by type ('error', 'warning', 'log'). Use after navigation or interactions to catch errors.`,`5. network_requests — Get captured network requests. Filter by method, URL substring, or resource type ('xhr', 'fetch', 'document').`,`6. close — Close the browser and end the session.`,``,`Strongly prefer screenshot with mode 'snapshot' for observing page state — the ARIA tree is fast, cheap, and sufficient for almost all assertions.`,`Only use mode 'screenshot' or 'annotated' when you need to verify something purely visual (layout, colors, images) that the accessibility tree cannot capture.`,`After each step, check console_logs with type 'error' to catch unexpected errors.`,``,`Snapshot-driven workflow:`,`1. Call screenshot with mode 'snapshot' to get the ARIA tree with refs.`,`2. Read the tree to find your target elements. Every interactive element has a ref like [ref=e4].`,`3. Use ref() in one playwright call to perform multiple actions using the refs from the snapshot — fill forms, click buttons, wait, and return results all in one block.`,`4. Only take a new snapshot when the page structure has changed significantly (navigation, modal open, new content loaded) and you need fresh refs.`,``,`Example snapshot tree:`,` - navigation`,` - link "Home" [ref=e1]`,` - link "About" [ref=e2]`,` - main`,` - heading "Welcome"`,` - textbox "Email" [ref=e3]`,` - button "Submit" [ref=e4]`,``,`Acting on refs — use ref() to get a Locator directly from the snapshot ref ID:`,` await ref('e3').fill('test@example.com');`,` await ref('e4').click();`,` await ref('e1').click();`,``,`Always snapshot first, then use ref() to act. Never guess CSS selectors.`,``,`Batch as many actions as possible into a single playwright call to minimize round trips:`,` playwright: await ref('e3').fill('test@example.com'); await ref('e5').fill('secret'); await ref('e6').click(); await page.waitForLoadState('networkidle'); return await page.innerText('.result');`,` playwright: await ref('e1').click(); await page.waitForURL('**/about');`,` playwright: return { url: page.url(), title: await page.title() };`,``,`Execution strategy:`,`- First master the primary flow the developer asked for. Verify it thoroughly before moving on.`,`- Once the primary flow passes, test additional related flows suggested by the changed files and route context. The scope strategy below specifies how many — follow it.`,`- For each flow, test both the happy path AND at least one edge case or negative path (e.g. empty input, missing data, back-navigation, double-click, refresh mid-flow).`,`- Use the same browser session throughout unless the app forces you into a different path.`,`- Execution style is assertion-first: navigate, act, validate, recover once, then fail with evidence if still blocked.`,`- Create your own step structure while executing. Use stable sequential IDs like step-01, step-02, step-03.`,`- Take your time. A thorough run that catches real issues is more valuable than a fast run that misses them. Do not rush to RUN_COMPLETED.`,``,`Assertion depth — do not just confirm the page loaded. For each step, verify that the action produced the expected state change:`,`- Before acting, note what should change. After acting, confirm it actually changed.`,`- Check at least two independent signals per step (e.g. URL changed AND new content appeared, or item was added AND count updated).`,`- Verify absence when relevant: after a delete, the item is gone; after dismissing a modal, it no longer appears in the tree.`,`- Use playwright to return structured evidence rather than eyeballing snapshots: return { url: page.url(), title: await page.title(), visible: await ref('e5').isVisible() };`,`- If the changed files suggest specific behavior (e.g. a validation rule, a redirect, a computed value), test that specific behavior rather than just the surrounding UI.`,``,`Before and after each step, emit these exact status lines on their own lines:`,`STEP_START|<step-id>|<step-title>`,`STEP_DONE|<step-id>|<short-summary>`,`ASSERTION_FAILED|<step-id>|<why-it-failed>`,`STEP_SKIPPED|<step-id>|<reason-it-was-skipped>`,`RUN_COMPLETED|passed|<final-summary>`,`RUN_COMPLETED|failed|<final-summary>`,``,`Use STEP_SKIPPED when a step cannot be executed due to missing prerequisites (e.g. test credentials not available, required test data missing, auth-blocked). Never use STEP_DONE for steps that were not actually tested.`,``,`Allowed failure categories: app-bug, env-issue, auth-blocked, missing-test-data, selector-drift, agent-misread.`,`When a step fails, gather structured evidence before emitting ASSERTION_FAILED:`,`- Call screenshot with mode 'snapshot' to capture the ARIA tree.`,`- Use playwright to gather diagnostics: return { url: page.url(), title: await page.title(), text: await page.innerText('body').then(t => t.slice(0, 500)) };`,`- Only take a visual screenshot if the failure might be layout/rendering related.`,`- Summarize the failure category and the most important evidence inside <why-it-failed>.`,``,`Stability heuristics:`,`- After navigation or major UI changes, use playwright to wait for the page to settle (e.g. await page.waitForLoadState('networkidle')).`,`- Use screenshot with mode 'snapshot' to inspect the accessibility tree before interactions that depend on current UI state.`,`- Avoid interacting while the UI is visibly loading or transitioning.`,`- Confirm you reached the expected page or route before continuing.`,`- When waiting for page changes (navigation, content loading, animations), prefer short incremental waits (1-3 seconds) with snapshot checks in between rather than a single long wait. For example, instead of waiting 10 seconds: wait 2s, take a snapshot, check if ready, if not wait 2s more and snapshot again. This lets you proceed as soon as the page is ready.`,``,`Recovery policy for each blocked step:`,`- Take a new snapshot to re-inspect the page and get fresh refs.`,`- Use playwright with ref() to scroll the target into view or retry the interaction once.`,`- If still blocked, classify the blocker with one allowed failure category and include that classification in ASSERTION_FAILED.`,``,`Avoid rabbit holes:`,`- Do not repeat the same failing action more than once without new evidence such as a fresh snapshot, a different ref, a changed page state, or a clear new hypothesis.`,`- If four attempts fail or progress stalls, stop acting and report what you observed, what blocked progress, and the most likely next step.`,`- Prefer gathering evidence over brute force. If the page is confusing, use screenshot with mode 'snapshot', playwright for console or network diagnostics, or a visual screenshot to understand it before trying more actions.`,`- If you encounter a blocker such as login, passkey/manual user interaction, permissions, captchas, destructive confirmations, missing data, or an unexpected state, stop and report it instead of improvising repeated actions.`,`- Do not get stuck in wait-action-wait loops. Every retry should be justified by something newly observed.`,``,`Before emitting RUN_COMPLETED, call the close tool exactly once so the browser session flushes the video to disk.`,``,`Environment:`,`- Base URL: ${e.baseUrl??`not provided`}`,`- Headed mode preference: ${e.isHeadless?`headless`:`headed`}`,`- Reuse browser cookies: ${e.requiresCookies?`yes`:`no`}`,``,`Testing target context:`,`- Scope: ${e.scope}`,`- Current branch: ${e.currentBranch}`,`- Main branch: ${e.mainBranch??`unknown`}`,``,`Developer request:`,e.userInstruction,``,...eo(e.savedFlow),`Project learnings from previous runs:`,e.learnings?.trim()||`No learnings yet.`,``,`Changed files:`,n.length>0?n.map(e=>`- [${e.status}] ${e.path}`).join(`
|
|
12
|
+
`):`- No changed files detected`,``,...no(e.testCoverage),`Recent commits:`,r.length>0?r.map(e=>`- ${e.shortHash} ${e.subject}`).join(`
|
|
13
|
+
`):`- No recent commits available`,``,`Diff preview:`,a||`No diff preview available`,``,`Scope strategy:`,...to(e.scope)].join(`
|
|
14
|
+
`)};var io=n(((e,t)=>{var n=1e3,r=n*60,i=r*60,a=i*24,o=a*7,s=a*365.25;t.exports=function(e,t){t||={};var n=typeof e;if(n===`string`&&e.length>0)return c(e);if(n===`number`&&isFinite(e))return t.long?u(e):l(e);throw Error(`val is not a non-empty string or a valid number. val=`+JSON.stringify(e))};function c(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var c=parseFloat(t[1]);switch((t[2]||`ms`).toLowerCase()){case`years`:case`year`:case`yrs`:case`yr`:case`y`:return c*s;case`weeks`:case`week`:case`w`:return c*o;case`days`:case`day`:case`d`:return c*a;case`hours`:case`hour`:case`hrs`:case`hr`:case`h`:return c*i;case`minutes`:case`minute`:case`mins`:case`min`:case`m`:return c*r;case`seconds`:case`second`:case`secs`:case`sec`:case`s`:return c*n;case`milliseconds`:case`millisecond`:case`msecs`:case`msec`:case`ms`:return c;default:return}}}}function l(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+`d`:t>=i?Math.round(e/i)+`h`:t>=r?Math.round(e/r)+`m`:t>=n?Math.round(e/n)+`s`:e+`ms`}function u(e){var t=Math.abs(e);return t>=a?d(e,t,a,`day`):t>=i?d(e,t,i,`hour`):t>=r?d(e,t,r,`minute`):t>=n?d(e,t,n,`second`):e+` ms`}function d(e,t,n,r){var i=t>=n*1.5;return Math.round(e/n)+` `+r+(i?`s`:``)}})),ao=n(((e,t)=>{function n(e){n.debug=n,n.default=n,n.coerce=c,n.disable=o,n.enable=i,n.enabled=s,n.humanize=io(),n.destroy=l,Object.keys(e).forEach(t=>{n[t]=e[t]}),n.names=[],n.skips=[],n.formatters={};function t(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return n.colors[Math.abs(t)%n.colors.length]}n.selectColor=t;function n(e){let t,i=null,a,o;function s(...e){if(!s.enabled)return;let r=s,i=Number(new Date);r.diff=i-(t||i),r.prev=t,r.curr=i,t=i,e[0]=n.coerce(e[0]),typeof e[0]!=`string`&&e.unshift(`%O`);let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,i)=>{if(t===`%%`)return`%`;a++;let o=n.formatters[i];if(typeof o==`function`){let n=e[a];t=o.call(r,n),e.splice(a,1),a--}return t}),n.formatArgs.call(r,e),(r.log||n.log).apply(r,e)}return s.namespace=e,s.useColors=n.useColors(),s.color=n.selectColor(e),s.extend=r,s.destroy=n.destroy,Object.defineProperty(s,`enabled`,{enumerable:!0,configurable:!1,get:()=>i===null?(a!==n.namespaces&&(a=n.namespaces,o=n.enabled(e)),o):i,set:e=>{i=e}}),typeof n.init==`function`&&n.init(s),s}function r(e,t){let r=n(this.namespace+(t===void 0?`:`:t)+e);return r.log=this.log,r}function i(e){n.save(e),n.namespaces=e,n.names=[],n.skips=[];let t=(typeof e==`string`?e:``).trim().replace(/\s+/g,`,`).split(`,`).filter(Boolean);for(let e of t)e[0]===`-`?n.skips.push(e.slice(1)):n.names.push(e)}function a(e,t){let n=0,r=0,i=-1,a=0;for(;n<e.length;)if(r<t.length&&(t[r]===e[n]||t[r]===`*`))t[r]===`*`?(i=r,a=n,r++):(n++,r++);else if(i!==-1)r=i+1,a++,n=a;else return!1;for(;r<t.length&&t[r]===`*`;)r++;return r===t.length}function o(){let e=[...n.names,...n.skips.map(e=>`-`+e)].join(`,`);return n.enable(``),e}function s(e){for(let t of n.skips)if(a(e,t))return!1;for(let t of n.names)if(a(e,t))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}t.exports=n})),oo=n(((e,t)=>{e.formatArgs=r,e.save=i,e.load=a,e.useColors=n,e.storage=o(),e.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=`#0000CC.#0000FF.#0033CC.#0033FF.#0066CC.#0066FF.#0099CC.#0099FF.#00CC00.#00CC33.#00CC66.#00CC99.#00CCCC.#00CCFF.#3300CC.#3300FF.#3333CC.#3333FF.#3366CC.#3366FF.#3399CC.#3399FF.#33CC00.#33CC33.#33CC66.#33CC99.#33CCCC.#33CCFF.#6600CC.#6600FF.#6633CC.#6633FF.#66CC00.#66CC33.#9900CC.#9900FF.#9933CC.#9933FF.#99CC00.#99CC33.#CC0000.#CC0033.#CC0066.#CC0099.#CC00CC.#CC00FF.#CC3300.#CC3333.#CC3366.#CC3399.#CC33CC.#CC33FF.#CC6600.#CC6633.#CC9900.#CC9933.#CCCC00.#CCCC33.#FF0000.#FF0033.#FF0066.#FF0099.#FF00CC.#FF00FF.#FF3300.#FF3333.#FF3366.#FF3399.#FF33CC.#FF33FF.#FF6600.#FF6633.#FF9900.#FF9933.#FFCC00.#FFCC33`.split(`.`);function n(){if(typeof window<`u`&&window.process&&(window.process.type===`renderer`||window.process.__nwjs))return!0;if(typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return typeof document<`u`&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<`u`&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<`u`&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||typeof navigator<`u`&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function r(e){if(e[0]=(this.useColors?`%c`:``)+this.namespace+(this.useColors?` %c`:` `)+e[0]+(this.useColors?`%c `:` `)+`+`+t.exports.humanize(this.diff),!this.useColors)return;let n=`color: `+this.color;e.splice(1,0,n,`color: inherit`);let r=0,i=0;e[0].replace(/%[a-zA-Z%]/g,e=>{e!==`%%`&&(r++,e===`%c`&&(i=r))}),e.splice(i,0,n)}e.log=console.debug||console.log||(()=>{});function i(t){try{t?e.storage.setItem(`debug`,t):e.storage.removeItem(`debug`)}catch{}}function a(){let t;try{t=e.storage.getItem(`debug`)||e.storage.getItem(`DEBUG`)}catch{}return!t&&typeof process<`u`&&`env`in process&&(t=process.env.DEBUG),t}function o(){try{return localStorage}catch{}}t.exports=ao()(e);let{formatters:s}=t.exports;s.j=function(e){try{return JSON.stringify(e)}catch(e){return`[UnexpectedJSONParseError]: `+e.message}}})),so=n(((e,t)=>{t.exports=(e,t=process.argv)=>{let n=e.startsWith(`-`)?``:e.length===1?`-`:`--`,r=t.indexOf(n+e),i=t.indexOf(`--`);return r!==-1&&(i===-1||r<i)}})),co=n(((t,n)=>{let r=e(`os`),i=e(`tty`),a=so(),{env:o}=process,s;a(`no-color`)||a(`no-colors`)||a(`color=false`)||a(`color=never`)?s=0:(a(`color`)||a(`colors`)||a(`color=true`)||a(`color=always`))&&(s=1),`FORCE_COLOR`in o&&(s=o.FORCE_COLOR===`true`?1:o.FORCE_COLOR===`false`?0:o.FORCE_COLOR.length===0?1:Math.min(parseInt(o.FORCE_COLOR,10),3));function c(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function l(e,t){if(s===0)return 0;if(a(`color=16m`)||a(`color=full`)||a(`color=truecolor`))return 3;if(a(`color=256`))return 2;if(e&&!t&&s===void 0)return 0;let n=s||0;if(o.TERM===`dumb`)return n;if(process.platform===`win32`){let e=r.release().split(`.`);return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if(`CI`in o)return[`TRAVIS`,`CIRCLECI`,`APPVEYOR`,`GITLAB_CI`,`GITHUB_ACTIONS`,`BUILDKITE`].some(e=>e in o)||o.CI_NAME===`codeship`?1:n;if(`TEAMCITY_VERSION`in o)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(o.TEAMCITY_VERSION)?1:0;if(o.COLORTERM===`truecolor`)return 3;if(`TERM_PROGRAM`in o){let e=parseInt((o.TERM_PROGRAM_VERSION||``).split(`.`)[0],10);switch(o.TERM_PROGRAM){case`iTerm.app`:return e>=3?3:2;case`Apple_Terminal`:return 2}}return/-256(color)?$/i.test(o.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(o.TERM)||`COLORTERM`in o?1:n}function u(e){return c(l(e,e&&e.isTTY))}n.exports={supportsColor:u,stdout:c(l(!0,i.isatty(1))),stderr:c(l(!0,i.isatty(2)))}})),lo=n(((t,n)=>{let r=e(`tty`),i=e(`util`);t.init=d,t.log=c,t.formatArgs=o,t.save=l,t.load=u,t.useColors=a,t.destroy=i.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{let e=co();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}t.inspectOpts=Object.keys(process.env).filter(e=>/^debug_/i.test(e)).reduce((e,t)=>{let n=t.substring(6).toLowerCase().replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),r=process.env[t];return r=/^(yes|on|true|enabled)$/i.test(r)?!0:/^(no|off|false|disabled)$/i.test(r)?!1:r===`null`?null:Number(r),e[n]=r,e},{});function a(){return`colors`in t.inspectOpts?!!t.inspectOpts.colors:r.isatty(process.stderr.fd)}function o(e){let{namespace:t,useColors:r}=this;if(r){let r=this.color,i=`\x1B[3`+(r<8?r:`8;5;`+r),a=` ${i};1m${t} \u001B[0m`;e[0]=a+e[0].split(`
|
|
15
15
|
`).join(`
|
|
16
16
|
`+a),e.push(i+`m+`+n.exports.humanize(this.diff)+`\x1B[0m`)}else e[0]=s()+t+` `+e[0]}function s(){return t.inspectOpts.hideDate?``:new Date().toISOString()+` `}function c(...e){return process.stderr.write(i.formatWithOptions(t.inspectOpts,...e)+`
|
|
17
|
-
`)}function l(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function u(){return process.env.DEBUG}function d(e){e.inspectOpts={};let n=Object.keys(t.inspectOpts);for(let r=0;r<n.length;r++)e.inspectOpts[n[r]]=t.inspectOpts[n[r]]}n.exports=
|
|
18
|
-
`).map(e=>e.trim()).join(` `)},f.O=function(e){return this.inspectOpts.colors=this.useColors,i.inspect(e,this.inspectOpts)}})),
|
|
19
|
-
`){return e.split(n).reduce((e,n)=>{let r=t?n.trim():n;return r&&e.push(r),e},[])}function
|
|
20
|
-
`)){let e=
|
|
21
|
-
`);a=e[0],i=e[1]}yield{file:r,key:a,value:i}}}var Cc,wc=Y({"src/lib/responses/ConfigList.ts"(){Z(),Cc=class{constructor(){this.files=[],this.values=Object.create(null)}get all(){return this._all||=this.files.reduce((e,t)=>Object.assign(e,this.values[t]),{}),this._all}addFile(e){if(!(e in this.values)){let t=Ro(this.files);this.values[e]=t?Object.create(this.values[t]):{},this.files.push(e)}return this.values[e]}addValue(e,t,n){let r=this.addFile(e);Object.hasOwn(r,t)?Array.isArray(r[t])?r[t].push(n):r[t]=[r[t],n]:r[t]=n,this._all=void 0}}}});function Tc(e,t){return typeof e==`string`&&Object.hasOwn(Ac,e)?e:t}function Ec(e,t,n,r){let i=[`config`,`--${r}`];return n&&i.push(`--add`),i.push(e,t),{commands:i,format:`utf-8`,parser(e){return e}}}function Dc(e,t){let n=[`config`,`--null`,`--show-origin`,`--get-all`,e];return t&&n.splice(1,0,`--${t}`),{commands:n,format:`utf-8`,parser(t){return bc(t,e)}}}function Oc(e){let t=[`config`,`--list`,`--show-origin`,`--null`];return e&&t.push(`--${e}`),{commands:t,format:`utf-8`,parser(e){return yc(e)}}}function kc(){return{addConfig(e,t,...n){return this._runTask(Ec(e,t,n[0]===!0,Tc(n[1],`local`)),ks(arguments))},getConfig(e,t){return this._runTask(Dc(e,Tc(t,void 0)),ks(arguments))},listConfig(...e){return this._runTask(Oc(Tc(e[0],void 0)),ks(arguments))}}}var Ac,jc=Y({"src/lib/tasks/config.ts"(){wc(),Z(),Ac=(e=>(e.system=`system`,e.global=`global`,e.local=`local`,e.worktree=`worktree`,e))(Ac||{})}});function Mc(e){return Pc.has(e)}var Nc,Pc,Fc=Y({"src/lib/tasks/diff-name-status.ts"(){Nc=(e=>(e.ADDED=`A`,e.COPIED=`C`,e.DELETED=`D`,e.MODIFIED=`M`,e.RENAMED=`R`,e.CHANGED=`T`,e.UNMERGED=`U`,e.UNKNOWN=`X`,e.BROKEN=`B`,e))(Nc||{}),Pc=new Set(Object.values(Nc))}});function Ic(...e){return new Hc().param(...e)}function Lc(e){let t=new Set,n={};return Vo(e,e=>{let[r,i,a]=e.split(ts);t.add(r),(n[r]=n[r]||[]).push({line:Yo(i),path:r,preview:a})}),{paths:t,results:n}}function Rc(){return{grep(e){let t=ks(arguments),n=Es(arguments);for(let e of zc)if(n.includes(e))return this._runTask(Qs(`git.grep: use of "${e}" is not supported.`),t);typeof e==`string`&&(e=Ic().param(e));let r=[`grep`,`--null`,`-n`,`--full-name`,...n,...e];return this._runTask({commands:r,format:`utf-8`,parser(e){return Lc(e)}},t)}}}var zc,Bc,Vc,Hc,Uc=Y({"src/lib/tasks/grep.ts"(){Z(),ic(),zc=[`-h`],Bc=Symbol(`grepQuery`),Hc=class{constructor(){this[Vc]=[]}*[(Vc=Bc,Symbol.iterator)](){for(let e of this[Bc])yield e}and(...e){return e.length&&this[Bc].push(`--and`,`(`,...Xo(e,`-e`),`)`),this}param(...e){return this[Bc].push(...Xo(e,`-e`)),this}}}}),Wc={};bo(Wc,{ResetMode:()=>Jc,getResetMode:()=>Kc,resetTask:()=>Gc});function Gc(e,t){let n=[`reset`];return qc(e)&&n.push(`--${e}`),n.push(...t),$s(n)}function Kc(e){if(qc(e))return e;switch(typeof e){case`string`:case`undefined`:return`soft`}}function qc(e){return typeof e==`string`&&Yc.includes(e)}var Jc,Yc,Xc=Y({"src/lib/tasks/reset.ts"(){Z(),ic(),Jc=(e=>(e.MIXED=`mixed`,e.SOFT=`soft`,e.HARD=`hard`,e.MERGE=`merge`,e.KEEP=`keep`,e))(Jc||{}),Yc=Jo(Object.values(Jc))}});function Zc(){return(0,po.default)(`simple-git`)}function Qc(e,t,n){return!t||!String(t).replace(/\s*/,``)?n?(t,...r)=>{e(t,...r),n(t,...r)}:e:(r,...i)=>{e(`%s ${r}`,t,...i),n&&n(r,...i)}}function $c(e,t,{namespace:n}){if(typeof e==`string`)return e;let r=t&&t.namespace||``;return r.startsWith(n)?r.substr(n.length+1):r||n}function el(e,t,n,r=Zc()){let i=e&&`[${e}]`||``,a=[],o=typeof t==`string`?r.extend(t):t,s=$c(as(t,ds),o,r);return l(n);function c(t,n){return Uo(a,el(e,s.replace(/^[^:]+/,t),n,r))}function l(t){let n=t&&`[${t}]`||``,a=o&&Qc(o,n)||ns,s=Qc(r,`${i} ${n}`,a);return Object.assign(o?a:s,{label:e,sibling:c,info:s,step:l})}}var tl=Y({"src/lib/git-logger.ts"(){Z(),po.default.formatters.L=e=>String(ps(e)?e.length:`-`),po.default.formatters.B=e=>Buffer.isBuffer(e)?e.toString(`utf8`):rs(e)}}),nl,rl=Y({"src/lib/runners/tasks-pending-queue.ts"(){ko(),tl(),nl=class e{constructor(e=`GitExecutor`){this.logLabel=e,this._queue=new Map}withProgress(e){return this._queue.get(e)}createProgress(t){let n=e.getName(t.commands[0]);return{task:t,logger:el(this.logLabel,n),name:n}}push(e){let t=this.createProgress(e);return t.logger(`Adding task to the queue, commands = %o`,e.commands),this._queue.set(e,t),t}fatal(e){for(let[t,{logger:n}]of Array.from(this._queue.entries()))t===e.task?(n.info(`Failed %o`,e),n(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`)):n.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`,e.message),this.complete(t);if(this._queue.size!==0)throw Error(`Queue size should be zero after fatal: ${this._queue.size}`)}complete(e){this.withProgress(e)&&this._queue.delete(e)}attempt(e){let t=this.withProgress(e);if(!t)throw new Oo(void 0,`TasksPendingQueue: attempt called for an unknown task`);return t.logger(`Starting task`),t}static getName(t=`empty`){return`task:${t}:${++e.counter}`}static{this.counter=0}}}});function il(e,t){return{method:Lo(e.commands)||``,commands:t}}function al(e,t){return n=>{t(`[ERROR] child process exception %o`,n),e.push(Buffer.from(String(n.stack),`ascii`))}}function ol(e,t,n,r){return i=>{n(`%s received %L bytes`,t,i),r(`%B`,i),e.push(i)}}var sl,cl=Y({"src/lib/runners/git-executor-chain.ts"(){ko(),ic(),Z(),rl(),sl=class{constructor(e,t,n){this._executor=e,this._scheduler=t,this._plugins=n,this._chain=Promise.resolve(),this._queue=new nl}get cwd(){return this._cwd||this._executor.cwd}set cwd(e){this._cwd=e}get env(){return this._executor.env}get outputHandler(){return this._executor.outputHandler}chain(){return this}push(e){return this._queue.push(e),this._chain=this._chain.then(()=>this.attemptTask(e))}async attemptTask(e){let t=await this._scheduler.next(),n=()=>this._queue.complete(e);try{let{logger:t}=this._queue.attempt(e);return await(nc(e)?this.attemptEmptyTask(e,t):this.attemptRemoteTask(e,t))}catch(t){throw this.onFatalException(e,t)}finally{n(),t()}}onFatalException(e,t){let n=t instanceof Oo?Object.assign(t,{task:e}):new Oo(e,t&&String(t));return this._chain=Promise.resolve(),this._queue.fatal(n),n}async attemptRemoteTask(e,t){let n=this._plugins.exec(`spawn.binary`,``,il(e,e.commands)),r=this._plugins.exec(`spawn.args`,[...e.commands],il(e,e.commands)),i=await this.gitResponse(e,n,r,this.outputHandler,t.step(`SPAWN`)),a=await this.handleTaskData(e,r,i,t.step(`HANDLE`));return t(`passing response to task's parser as a %s`,e.format),tc(e)?js(e.parser,a):js(e.parser,a.asStrings())}async attemptEmptyTask(e,t){return t(`empty task bypassing child process to call to task's parser`),e.parser(this)}handleTaskData(e,t,n,r){let{exitCode:i,rejection:a,stdOut:o,stdErr:s}=n;return new Promise((c,l)=>{r(`Preparing to handle process response exitCode=%d stdOut=`,i);let{error:u}=this._plugins.exec(`task.error`,{error:a},{...il(e,t),...n});if(u&&e.onError)return r.info(`exitCode=%s handling with custom error handler`),e.onError(n,u,e=>{r.info(`custom error handler treated as success`),r(`custom error returned a %s`,rs(e)),c(new _s(Array.isArray(e)?Buffer.concat(e):e,Buffer.concat(s)))},l);if(u)return r.info(`handling as error: exitCode=%s stdErr=%s rejection=%o`,i,s.length,a),l(u);r.info(`retrieving task output complete`),c(new _s(Buffer.concat(o),Buffer.concat(s)))})}async gitResponse(e,t,n,r,i){let a=i.sibling(`output`),o=this._plugins.exec(`spawn.options`,{cwd:this.cwd,env:this.env,windowsHide:!0},il(e,e.commands));return new Promise(s=>{let c=[],l=[];i.info(`%s %o`,t,n),i(`%O`,o);let u=this._beforeSpawn(e,n);if(u)return s({stdOut:c,stdErr:l,exitCode:9901,rejection:u});this._plugins.exec(`spawn.before`,void 0,{...il(e,n),kill(e){u=e||u}});let d=De(t,n,o);d.stdout.on(`data`,ol(c,`stdOut`,i,a.step(`stdOut`))),d.stderr.on(`data`,ol(l,`stdErr`,i,a.step(`stdErr`))),d.on(`error`,al(l,i)),r&&(i(`Passing child process stdOut/stdErr to custom outputHandler`),r(t,d.stdout,d.stderr,[...n])),this._plugins.exec(`spawn.after`,void 0,{...il(e,n),spawned:d,close(e,t){s({stdOut:c,stdErr:l,exitCode:e,rejection:u||t})},kill(e){d.killed||(u=e,d.kill(`SIGINT`))}})})}_beforeSpawn(e,t){let n;return this._plugins.exec(`spawn.before`,void 0,{...il(e,t),kill(e){n=e||n}}),n}}}}),ll={};bo(ll,{GitExecutor:()=>ul});var ul,dl=Y({"src/lib/runners/git-executor.ts"(){cl(),ul=class{constructor(e,t,n){this.cwd=e,this._scheduler=t,this._plugins=n,this._chain=new sl(this,this._scheduler,this._plugins)}chain(){return new sl(this,this._scheduler,this._plugins)}push(e){return this._chain.push(e)}}}});function fl(e,t,n=ns){t.then(e=>{n(null,e)},t=>{t?.task===e&&n(t instanceof Ao?pl(t):t,void 0)})}function pl(e){let t=e=>{console.warn(`simple-git deprecation notice: accessing GitResponseError.${e} should be GitResponseError.git.${e}, this will no longer be available in version 3`),t=ns};return Object.create(e,Object.getOwnPropertyNames(e.git).reduce(n,{}));function n(n,r){return r in e||(n[r]={enumerable:!1,configurable:!1,get(){return t(r),e.git[r]}}),n}}var ml=Y({"src/lib/task-callback.ts"(){jo(),Z()}});function hl(e,t){return Zs(n=>{if(!Ho(e))throw Error(`Git.cwd: cannot change to non-directory "${e}"`);return(t||n).cwd=e})}var gl=Y({"src/lib/tasks/change-working-directory.ts"(){Z(),ic()}});function _l(e){let t=[`checkout`,...e];return t[1]===`-b`&&t.includes(`-B`)&&(t[1]=Go(t,`-B`)),$s(t)}function vl(){return{checkout(){return this._runTask(_l(Es(arguments,1)),ks(arguments))},checkoutBranch(e,t){return this._runTask(_l([`-b`,e,t,...Es(arguments)]),ks(arguments))},checkoutLocalBranch(e){return this._runTask(_l([`-b`,e,...Es(arguments)]),ks(arguments))}}}var yl=Y({"src/lib/tasks/checkout.ts"(){Z(),ic()}});function bl(){return{count:0,garbage:0,inPack:0,packs:0,prunePackable:0,size:0,sizeGarbage:0,sizePack:0}}function xl(){return{countObjects(){return this._runTask({commands:[`count-objects`,`--verbose`],format:`utf-8`,parser(e){return Ms(bl(),[Sl],e)}})}}}var Sl,Cl=Y({"src/lib/tasks/count-objects.ts"(){Z(),Sl=new X(/([a-z-]+): (\d+)$/,(e,[t,n])=>{let r=qo(t);Object.hasOwn(e,r)&&(e[r]=Yo(n))})}});function wl(e){return Ms({author:null,branch:``,commit:``,root:!1,summary:{changes:0,insertions:0,deletions:0}},Tl,e)}var Tl,El=Y({"src/lib/parsers/parse-commit.ts"(){Z(),Tl=[new X(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/,(e,[t,n,r])=>{e.branch=t,e.commit=r,e.root=!!n}),new X(/\s*Author:\s(.+)/i,(e,[t])=>{let n=t.split(`<`),r=n.pop();!r||!r.includes(`@`)||(e.author={email:r.substr(0,r.length-1),name:n.join(`<`).trim()})}),new X(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g,(e,[t,n,r])=>{e.summary.changes=parseInt(t,10)||0,e.summary.insertions=parseInt(n,10)||0,e.summary.deletions=parseInt(r,10)||0}),new X(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/,(e,[t,n,r])=>{e.summary.changes=parseInt(t,10)||0;let i=parseInt(n,10)||0;r===`-`?e.summary.deletions=i:r===`+`&&(e.summary.insertions=i)})]}});function Dl(e,t,n){return{commands:[`-c`,`core.abbrev=40`,`commit`,...Xo(e,`-m`),...t,...n],format:`utf-8`,parser:wl}}function Ol(){return{commit(t,...n){let r=ks(arguments),i=e(t)||Dl(Ko(t),Ko(as(n[0],fs,[])),[...Jo(as(n[1],ls,[])),...Es(arguments,0,!0)]);return this._runTask(i,r)}};function e(e){return!fs(e)&&Qs(`git.commit: requires the commit message to be supplied as a string/string[]`)}}var kl=Y({"src/lib/tasks/commit.ts"(){El(),Z(),ic()}});function Al(){return{firstCommit(){return this._runTask($s([`rev-list`,`--max-parents=0`,`HEAD`],!0),ks(arguments))}}}var jl=Y({"src/lib/tasks/first-commit.ts"(){Z(),ic()}});function Ml(e,t){let n=[`hash-object`,e];return t&&n.push(`-w`),$s(n,!0)}var Nl=Y({"src/lib/tasks/hash-object.ts"(){ic()}});function Pl(e,t,n){let r=String(n).trim(),i;if(i=Il.exec(r))return new Fl(e,t,!1,i[1]);if(i=Ll.exec(r))return new Fl(e,t,!0,i[1]);let a=``,o=r.split(` `);for(;o.length;)if(o.shift()===`in`){a=o.join(` `);break}return new Fl(e,t,/^re/i.test(r),a)}var Fl,Il,Ll,Rl=Y({"src/lib/responses/InitSummary.ts"(){Fl=class{constructor(e,t,n,r){this.bare=e,this.path=t,this.existing=n,this.gitDir=r}},Il=/^Init.+ repository in (.+)$/,Ll=/^Rein.+ in (.+)$/}});function zl(e){return e.includes(Vl)}function Bl(e=!1,t,n){let r=[`init`,...n];return e&&!zl(r)&&r.splice(1,0,Vl),{commands:r,format:`utf-8`,parser(e){return Pl(r.includes(`--bare`),t,e)}}}var Vl,Hl=Y({"src/lib/tasks/init.ts"(){Rl(),Vl=`--bare`}});function Ul(e){for(let t=0;t<e.length;t++){let n=Gl.exec(e[t]);if(n)return`--${n[1]}`}return``}function Wl(e){return Gl.test(e)}var Gl,Kl=Y({"src/lib/args/log-format.ts"(){Gl=/^--(stat|numstat|name-only|name-status)(=|$)/}}),ql,Jl=Y({"src/lib/responses/DiffSummary.ts"(){ql=class{constructor(){this.changed=0,this.deletions=0,this.insertions=0,this.files=[]}}}});function Yl(e=``){let t=eu[e];return e=>Ms(new ql,t,e,!1)}var Xl,Zl,Ql,$l,eu,tu=Y({"src/lib/parsers/parse-diff-summary.ts"(){Kl(),Jl(),Fc(),Z(),Xl=[new X(/^(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/,(e,[t,n,r=``])=>{e.files.push({file:t.trim(),changes:Yo(n),insertions:r.replace(/[^+]/g,``).length,deletions:r.replace(/[^-]/g,``).length,binary:!1})}),new X(/^(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,(e,[t,n,r])=>{e.files.push({file:t.trim(),before:Yo(n),after:Yo(r),binary:!0})}),new X(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/,(e,[t,n])=>{let r=/(\d+) i/.exec(n),i=/(\d+) d/.exec(n);e.changed=Yo(t),e.insertions=Yo(r?.[1]),e.deletions=Yo(i?.[1])})],Zl=[new X(/(\d+)\t(\d+)\t(.+)$/,(e,[t,n,r])=>{let i=Yo(t),a=Yo(n);e.changed++,e.insertions+=i,e.deletions+=a,e.files.push({file:r,changes:i+a,insertions:i,deletions:a,binary:!1})}),new X(/-\t-\t(.+)$/,(e,[t])=>{e.changed++,e.files.push({file:t,after:0,before:0,binary:!0})})],Ql=[new X(/(.+)$/,(e,[t])=>{e.changed++,e.files.push({file:t,changes:0,insertions:0,deletions:0,binary:!1})})],$l=[new X(/([ACDMRTUXB])([0-9]{0,3})\t(.[^\t]*)(\t(.[^\t]*))?$/,(e,[t,n,r,i,a])=>{e.changed++,e.files.push({file:a??r,changes:0,insertions:0,deletions:0,binary:!1,status:es(Mc(t)&&t),from:es(!!a&&r!==a&&r),similarity:Yo(n)})})],eu={"":Xl,"--stat":Xl,"--numstat":Zl,"--name-status":$l,"--name-only":Ql}}});function nu(e,t){return t.reduce((t,n,r)=>(t[n]=e[r]||``,t),Object.create({diff:null}))}function ru(e=ou,t=su,n=``){let r=Yl(n);return function(n){let i=Bo(n.trim(),!1,iu).map(function(n){let i=n.split(au),a=nu(i[0].split(e),t);return i.length>1&&i[1].trim()&&(a.diff=r(i[1])),a});return{all:i,latest:i.length&&i[0]||null,total:i.length}}}var iu,au,ou,su,cu=Y({"src/lib/parsers/parse-list-log-summary.ts"(){Z(),tu(),Kl(),iu=`òòòòòò `,au=` òò`,ou=` ò `,su=[`hash`,`date`,`message`,`refs`,`author_name`,`author_email`]}}),lu={};bo(lu,{diffSummaryTask:()=>uu,validateLogFormatConfig:()=>du});function uu(e){let t=Ul(e),n=[`diff`];return t===``&&(t=`--stat`,n.push(`--stat=4096`)),n.push(...e),du(n)||{commands:n,format:`utf-8`,parser:Yl(t)}}function du(e){let t=e.filter(Wl);if(t.length>1)return Qs(`Summary flags are mutually exclusive - pick one of ${t.join(`,`)}`);if(t.length&&e.includes(`-z`))return Qs(`Summary flag ${t} parsing is not compatible with null termination option '-z'`)}var fu=Y({"src/lib/tasks/diff.ts"(){Kl(),tu(),ic()}});function pu(e,t){let n=[],r=[];return Object.keys(e).forEach(t=>{n.push(t),r.push(String(e[t]))}),[n,r.join(t)]}function mu(e){return Object.keys(e).reduce((t,n)=>(n in vu||(t[n]=e[n]),t),{})}function hu(e={},t=[]){let n=as(e.splitter,ds,ou),[r,i]=pu(ss(e.format)?e.format:{hash:`%H`,date:e.strictDate===!1?`%ai`:`%aI`,message:`%s`,refs:`%D`,body:e.multiLine?`%B`:`%b`,author_name:e.mailMap===!1?`%an`:`%aN`,author_email:e.mailMap===!1?`%ae`:`%aE`},n),a=[],o=[`--pretty=format:${iu}${i}${au}`,...t],s=e.n||e[`max-count`]||e.maxCount;if(s&&o.push(`--max-count=${s}`),e.from||e.to){let t=e.symmetric===!1?`..`:`...`;a.push(`${e.from||``}${t}${e.to||``}`)}return ds(e.file)&&o.push(`--follow`,Co(e.file)),Ts(mu(e),o),{fields:r,splitter:n,commands:[...o,...a]}}function gu(e,t,n){let r=ru(e,t,Ul(n));return{commands:[`log`,...n],format:`utf-8`,parser:r}}function _u(){return{log(...n){let r=ks(arguments),i=hu(Os(arguments),Jo(as(arguments[0],ls,[]))),a=t(...n)||du(i.commands)||e(i);return this._runTask(a,r)}};function e(e){return gu(e.splitter,e.fields,e.commands)}function t(e,t){return ds(e)&&ds(t)&&Qs(`git.log(string, string) should be replaced with git.log({ from: string, to: string })`)}}var vu,yu=Y({"src/lib/tasks/log.ts"(){Kl(),Do(),cu(),Z(),ic(),fu(),vu=(e=>(e[e[`--pretty`]=0]=`--pretty`,e[e[`max-count`]=1]=`max-count`,e[e.maxCount=2]=`maxCount`,e[e.n=3]=`n`,e[e.file=4]=`file`,e[e.format=5]=`format`,e[e.from=6]=`from`,e[e.to=7]=`to`,e[e.splitter=8]=`splitter`,e[e.symmetric=9]=`symmetric`,e[e.mailMap=10]=`mailMap`,e[e.multiLine=11]=`multiLine`,e[e.strictDate=12]=`strictDate`,e))(vu||{})}}),bu,xu,Su=Y({"src/lib/responses/MergeSummary.ts"(){bu=class{constructor(e,t=null,n){this.reason=e,this.file=t,this.meta=n}toString(){return`${this.file}:${this.reason}`}},xu=class{constructor(){this.conflicts=[],this.merges=[],this.result=`success`}get failed(){return this.conflicts.length>0}get reason(){return this.result}toString(){return this.conflicts.length?`CONFLICTS: ${this.conflicts.join(`, `)}`:`OK`}}}}),Cu,wu,Tu=Y({"src/lib/responses/PullSummary.ts"(){Cu=class{constructor(){this.remoteMessages={all:[]},this.created=[],this.deleted=[],this.files=[],this.deletions={},this.insertions={},this.summary={changes:0,deletions:0,insertions:0}}},wu=class{constructor(){this.remote=``,this.hash={local:``,remote:``},this.branch={local:``,remote:``},this.message=``}toString(){return this.message}}}});function Eu(e){return e.objects=e.objects||{compressing:0,counting:0,enumerating:0,packReused:0,reused:{count:0,delta:0},total:{count:0,delta:0}}}function Du(e){let t=/^\s*(\d+)/.exec(e),n=/delta (\d+)/i.exec(e);return{count:Yo(t&&t[1]||`0`),delta:Yo(n&&n[1]||`0`)}}var Ou,ku=Y({"src/lib/parsers/parse-remote-objects.ts"(){Z(),Ou=[new bs(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i,(e,[t,n])=>{let r=t.toLowerCase(),i=Eu(e.remoteMessages);Object.assign(i,{[r]:Yo(n)})}),new bs(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i,(e,[t,n])=>{let r=t.toLowerCase(),i=Eu(e.remoteMessages);Object.assign(i,{[r]:Yo(n)})}),new bs(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i,(e,[t,n,r])=>{let i=Eu(e.remoteMessages);i.total=Du(t),i.reused=Du(n),i.packReused=Yo(r)})]}});function Au(e,t){return Ms({remoteMessages:new Mu},ju,t)}var ju,Mu,Nu=Y({"src/lib/parsers/parse-remote-messages.ts"(){Z(),ku(),ju=[new bs(/^remote:\s*(.+)$/,(e,[t])=>(e.remoteMessages.all.push(t.trim()),!1)),...Ou,new bs([/create a (?:pull|merge) request/i,/\s(https?:\/\/\S+)$/],(e,[t])=>{e.remoteMessages.pullRequestUrl=t}),new bs([/found (\d+) vulnerabilities.+\(([^)]+)\)/i,/\s(https?:\/\/\S+)$/],(e,[t,n,r])=>{e.remoteMessages.vulnerabilities={count:Yo(t),summary:n,url:r}})],Mu=class{constructor(){this.all=[]}}}});function Pu(e,t){let n=Ms(new wu,zu,[e,t]);return n.message&&n}var Fu,Iu,Lu,Ru,zu,Bu,Vu,Hu=Y({"src/lib/parsers/parse-pull.ts"(){Tu(),Z(),Nu(),Fu=/^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/,Iu=/(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/,Lu=/^(create|delete) mode \d+ (.+)/,Ru=[new X(Fu,(e,[t,n,r])=>{e.files.push(t),n&&(e.insertions[t]=n.length),r&&(e.deletions[t]=r.length)}),new X(Iu,(e,[t,,n,,r])=>n!==void 0||r!==void 0?(e.summary.changes=+t||0,e.summary.insertions=+n||0,e.summary.deletions=+r||0,!0):!1),new X(Lu,(e,[t,n])=>{Uo(e.files,n),Uo(t===`create`?e.created:e.deleted,n)})],zu=[new X(/^from\s(.+)$/i,(e,[t])=>void(e.remote=t)),new X(/^fatal:\s(.+)$/,(e,[t])=>void(e.message=t)),new X(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/,(e,[t,n,r,i])=>{e.branch.local=r,e.hash.local=t,e.branch.remote=i,e.hash.remote=n})],Bu=(e,t)=>Ms(new Cu,Ru,[e,t]),Vu=(e,t)=>Object.assign(new Cu,Bu(e,t),Au(e,t))}}),Uu,Wu,Gu,Ku=Y({"src/lib/parsers/parse-merge.ts"(){Su(),Z(),Hu(),Uu=[new X(/^Auto-merging\s+(.+)$/,(e,[t])=>{e.merges.push(t)}),new X(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/,(e,[t,n])=>{e.conflicts.push(new bu(t,n))}),new X(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/,(e,[t,n,r])=>{e.conflicts.push(new bu(t,n,{deleteRef:r}))}),new X(/^CONFLICT\s+\((.+)\):/,(e,[t])=>{e.conflicts.push(new bu(t,null))}),new X(/^Automatic merge failed;\s+(.+)$/,(e,[t])=>{e.result=t})],Wu=(e,t)=>Object.assign(Gu(e,t),Vu(e,t)),Gu=e=>Ms(new xu,Uu,e)}});function qu(e){return e.length?{commands:[`merge`,...e],format:`utf-8`,parser(e,t){let n=Wu(e,t);if(n.failed)throw new Ao(n);return n}}:Qs(`Git.merge requires at least one option`)}var Ju=Y({"src/lib/tasks/merge.ts"(){jo(),Ku(),ic()}});function Yu(e,t,n){let r=n.includes(`deleted`),i=n.includes(`tag`)||/^refs\/tags/.test(e),a=!n.includes(`new`);return{deleted:r,tag:i,branch:!i,new:!a,alreadyUpdated:a,local:e,remote:t}}var Xu,Zu,Qu,$u=Y({"src/lib/parsers/parse-push.ts"(){Z(),Nu(),Xu=[new X(/^Pushing to (.+)$/,(e,[t])=>{e.repo=t}),new X(/^updating local tracking ref '(.+)'/,(e,[t])=>{e.ref={...e.ref||{},local:t}}),new X(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/,(e,[t,n,r])=>{e.pushed.push(Yu(t,n,r))}),new X(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,(e,[t,n,r])=>{e.branch={...e.branch||{},local:t,remote:n,remoteName:r}}),new X(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/,(e,[t,n,r,i])=>{e.update={head:{local:t,remote:n},hash:{from:r,to:i}}})],Zu=(e,t)=>{let n=Qu(e,t),r=Au(e,t);return{...n,...r}},Qu=(e,t)=>Ms({pushed:[]},Xu,[e,t])}}),ed={};bo(ed,{pushTagsTask:()=>td,pushTask:()=>nd});function td(e={},t){return Uo(t,`--tags`),nd(e,t)}function nd(e={},t){let n=[`push`,...t];return e.branch&&n.splice(1,0,e.branch),e.remote&&n.splice(1,0,e.remote),Go(n,`-v`),Uo(n,`--verbose`),Uo(n,`--porcelain`),{commands:n,format:`utf-8`,parser:Zu}}var rd=Y({"src/lib/tasks/push.ts"(){$u(),Z()}});function id(){return{showBuffer(){let e=[`show`,...Es(arguments,1)];return e.includes(`--binary`)||e.splice(1,0,`--binary`),this._runTask(ec(e),ks(arguments))},show(){let e=[`show`,...Es(arguments,1)];return this._runTask($s(e),ks(arguments))}}}var ad=Y({"src/lib/tasks/show.ts"(){Z(),ic()}}),od,sd,cd=Y({"src/lib/responses/FileStatusSummary.ts"(){od=/^(.+)\0(.+)$/,sd=class{constructor(e,t,n){if(this.path=e,this.index=t,this.working_dir=n,t===`R`||n===`R`){let t=od.exec(e)||[null,e,e];this.from=t[2]||``,this.path=t[1]||``}}}}});function ld(e){let[t,n]=e.split(ts);return{from:n||t,to:t}}function ud(e,t,n){return[`${e}${t}`,n]}function dd(e,...t){return t.map(t=>ud(e,t,(e,t)=>e.conflicted.push(t)))}function fd(e,t){let n=t.trim();switch(` `){case n.charAt(2):return r(n.charAt(0),n.charAt(1),n.slice(3));case n.charAt(1):return r(` `,n.charAt(0),n.slice(2));default:return}function r(t,n,r){let i=`${t}${n}`,a=md.get(i);a&&a(e,r),i!==`##`&&i!==`!!`&&e.files.push(new sd(r,t,n))}}var pd,md,hd,gd=Y({"src/lib/responses/StatusSummary.ts"(){Z(),cd(),pd=class{constructor(){this.not_added=[],this.conflicted=[],this.created=[],this.deleted=[],this.ignored=void 0,this.modified=[],this.renamed=[],this.files=[],this.staged=[],this.ahead=0,this.behind=0,this.current=null,this.tracking=null,this.detached=!1,this.isClean=()=>!this.files.length}},md=new Map([ud(` `,`A`,(e,t)=>e.created.push(t)),ud(` `,`D`,(e,t)=>e.deleted.push(t)),ud(` `,`M`,(e,t)=>e.modified.push(t)),ud(`A`,` `,(e,t)=>{e.created.push(t),e.staged.push(t)}),ud(`A`,`M`,(e,t)=>{e.created.push(t),e.staged.push(t),e.modified.push(t)}),ud(`D`,` `,(e,t)=>{e.deleted.push(t),e.staged.push(t)}),ud(`M`,` `,(e,t)=>{e.modified.push(t),e.staged.push(t)}),ud(`M`,`M`,(e,t)=>{e.modified.push(t),e.staged.push(t)}),ud(`R`,` `,(e,t)=>{e.renamed.push(ld(t))}),ud(`R`,`M`,(e,t)=>{let n=ld(t);e.renamed.push(n),e.modified.push(n.to)}),ud(`!`,`!`,(e,t)=>{(e.ignored=e.ignored||[]).push(t)}),ud(`?`,`?`,(e,t)=>e.not_added.push(t)),...dd(`A`,`A`,`U`),...dd(`D`,`D`,`U`),...dd(`U`,`A`,`D`,`U`),[`##`,(e,t)=>{let n=/ahead (\d+)/,r=/behind (\d+)/,i=/^(.+?(?=(?:\.{3}|\s|$)))/,a=/\.{3}(\S*)/,o=/\son\s(\S+?)(?=\.{3}|$)/,s=n.exec(t);e.ahead=s&&+s[1]||0,s=r.exec(t),e.behind=s&&+s[1]||0,s=i.exec(t),e.current=as(s?.[1],ds,null),s=a.exec(t),e.tracking=as(s?.[1],ds,null),s=o.exec(t),s&&(e.current=as(s?.[1],ds,e.current)),e.detached=/\(no branch\)/.test(t)}]]),hd=function(e){let t=e.split(ts),n=new pd;for(let e=0,r=t.length;e<r;){let r=t[e++].trim();r&&(r.charAt(0)===`R`&&(r+=ts+(t[e++]||``)),fd(n,r))}return n}}});function _d(e){return{format:`utf-8`,commands:[`status`,`--porcelain`,`-b`,`-u`,`--null`,...e.filter(e=>!vd.includes(e))],parser(e){return hd(e)}}}var vd,yd=Y({"src/lib/tasks/status.ts"(){gd(),vd=[`--null`,`-z`]}});function bd(e=0,t=0,n=0,r=``,i=!0){return Object.defineProperty({major:e,minor:t,patch:n,agent:r,installed:i},`toString`,{value(){return`${this.major}.${this.minor}.${this.patch}`},configurable:!1,enumerable:!1})}function xd(){return bd(0,0,0,``,!1)}function Sd(){return{version(){return this._runTask({commands:[`--version`],format:`utf-8`,parser:Cd,onError(e,t,n,r){if(e.exitCode===-2)return n(Buffer.from(wd));r(t)}})}}}function Cd(e){return e===wd?xd():Ms(bd(0,0,0,e),Td,e)}var wd,Td,Ed=Y({"src/lib/tasks/version.ts"(){Z(),wd=`installed=false`,Td=[new X(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/,(e,[t,n,r,i=``])=>{Object.assign(e,bd(Yo(t),Yo(n),Yo(r),i))}),new X(/version (\d+)\.(\d+)\.(\D+)(.+)?$/,(e,[t,n,r,i=``])=>{Object.assign(e,bd(Yo(t),Yo(n),r,i))})]}});function Dd(e,t,n,...r){return ds(n)?t(n,as(r[0],ds),Es(arguments)):Qs(`git.${e}() requires a string 'repoPath'`)}function Od(){return{clone(e,...t){return this._runTask(Dd(`clone`,kd,as(e,ds),...t),ks(arguments))},mirror(e,...t){return this._runTask(Dd(`mirror`,Ad,as(e,ds),...t),ks(arguments))}}}var kd,Ad,jd=Y({"src/lib/tasks/clone.ts"(){ic(),Z(),Do(),kd=(e,t,n)=>{let r=[`clone`,...n];return ds(e)&&r.push(Co(e)),ds(t)&&r.push(Co(t)),$s(r)},Ad=(e,t,n)=>(Uo(n,`--mirror`),kd(e,t,n))}}),Md={};bo(Md,{SimpleGitApi:()=>Nd});var Nd,Pd=Y({"src/lib/simple-git-api.ts"(){ml(),gl(),yl(),Cl(),kl(),jc(),jl(),Uc(),Nl(),Hl(),yu(),Ju(),rd(),ad(),yd(),ic(),Ed(),Z(),jd(),Nd=class{constructor(e){this._executor=e}_runTask(e,t){let n=this._executor.chain(),r=n.push(e);return t&&fl(e,r,t),Object.create(this,{then:{value:r.then.bind(r)},catch:{value:r.catch.bind(r)},_executor:{value:n}})}add(e){return this._runTask($s([`add`,...Ko(e)]),ks(arguments))}cwd(e){let t=ks(arguments);return typeof e==`string`?this._runTask(hl(e,this._executor),t):typeof e?.path==`string`?this._runTask(hl(e.path,e.root&&this._executor||void 0),t):this._runTask(Qs(`Git.cwd: workingDirectory must be supplied as a string`),t)}hashObject(e,t){return this._runTask(Ml(e,t===!0),ks(arguments))}init(e){return this._runTask(Bl(e===!0,this._executor.cwd,Es(arguments)),ks(arguments))}merge(){return this._runTask(qu(Es(arguments)),ks(arguments))}mergeFromTo(e,t){return ds(e)&&ds(t)?this._runTask(qu([e,t,...Es(arguments)]),ks(arguments,!1)):this._runTask(Qs(`Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`))}outputHandler(e){return this._executor.outputHandler=e,this}push(){let e=nd({remote:as(arguments[0],ds),branch:as(arguments[1],ds)},Es(arguments));return this._runTask(e,ks(arguments))}stash(){return this._runTask($s([`stash`,...Es(arguments)]),ks(arguments))}status(){return this._runTask(_d(Es(arguments)),ks(arguments))}},Object.assign(Nd.prototype,vl(),Od(),Ol(),kc(),xl(),Al(),Rc(),_u(),id(),Sd())}}),Fd={};bo(Fd,{Scheduler:()=>Ld});var Id,Ld,Rd=Y({"src/lib/runners/scheduler.ts"(){Z(),tl(),Id=(()=>{let e=0;return()=>{e++;let{promise:t,done:n}=(0,mo.createDeferred)();return{promise:t,done:n,id:e}}})(),Ld=class{constructor(e=2){this.concurrency=e,this.logger=el(``,`scheduler`),this.pending=[],this.running=[],this.logger(`Constructed, concurrency=%s`,e)}schedule(){if(!this.pending.length||this.running.length>=this.concurrency){this.logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`,this.pending.length,this.running.length,this.concurrency);return}let e=Uo(this.running,this.pending.shift());this.logger(`Attempting id=%s`,e.id),e.done(()=>{this.logger(`Completing id=`,e.id),Go(this.running,e),this.schedule()})}next(){let{promise:e,id:t}=Uo(this.pending,Id());return this.logger(`Scheduling id=%s`,t),this.schedule(),e}}}}),zd={};bo(zd,{applyPatchTask:()=>Bd});function Bd(e,t){return $s([`apply`,...t,...e])}var Vd=Y({"src/lib/tasks/apply-patch.ts"(){ic()}});function Hd(e,t){return{branch:e,hash:t,success:!0}}function Ud(e){return{branch:e,hash:null,success:!1}}var Wd,Gd=Y({"src/lib/responses/BranchDeleteSummary.ts"(){Wd=class{constructor(){this.all=[],this.branches={},this.errors=[]}get success(){return!this.errors.length}}}});function Kd(e,t){return t===1&&Jd.test(e)}var qd,Jd,Yd,Xd,Zd=Y({"src/lib/parsers/parse-branch-delete.ts"(){Gd(),Z(),qd=/(\S+)\s+\(\S+\s([^)]+)\)/,Jd=/^error[^']+'([^']+)'/m,Yd=[new X(qd,(e,[t,n])=>{let r=Hd(t,n);e.all.push(r),e.branches[t]=r}),new X(Jd,(e,[t])=>{let n=Ud(t);e.errors.push(n),e.all.push(n),e.branches[t]=n})],Xd=(e,t)=>Ms(new Wd,Yd,[e,t])}}),Qd,$d=Y({"src/lib/responses/BranchSummary.ts"(){Qd=class{constructor(){this.all=[],this.branches={},this.current=``,this.detached=!1}push(e,t,n,r,i){e===`*`&&(this.detached=t,this.current=n),this.all.push(n),this.branches[n]={current:e===`*`,linkedWorkTree:e===`+`,name:n,commit:r,label:i}}}}});function ef(e){return e?e.charAt(0):``}function tf(e,t=!1){return Ms(new Qd,t?[rf]:nf,e)}var nf,rf,af=Y({"src/lib/parsers/parse-branch.ts"(){$d(),Z(),nf=[new X(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/,(e,[t,n,r,i])=>{e.push(ef(t),!0,n,r,i)}),new X(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s,(e,[t,n,r,i])=>{e.push(ef(t),!1,n,r,i)})],rf=new X(/^(\S+)$/s,(e,[t])=>{e.push(`*`,!1,t,``,``)})}}),of={};bo(of,{branchLocalTask:()=>lf,branchTask:()=>cf,containsDeleteBranchCommand:()=>sf,deleteBranchTask:()=>df,deleteBranchesTask:()=>uf});function sf(e){let t=[`-d`,`-D`,`--delete`];return e.some(e=>t.includes(e))}function cf(e){let t=sf(e),n=e.includes(`--show-current`),r=[`branch`,...e];return r.length===1&&r.push(`-a`),r.includes(`-v`)||r.splice(1,0,`-v`),{format:`utf-8`,commands:r,parser(e,r){return t?Xd(e,r).all[0]:tf(e,n)}}}function lf(){return{format:`utf-8`,commands:[`branch`,`-v`],parser(e){return tf(e)}}}function uf(e,t=!1){return{format:`utf-8`,commands:[`branch`,`-v`,t?`-D`:`-d`,...e],parser(e,t){return Xd(e,t)},onError({exitCode:e,stdOut:t},n,r,i){if(!Kd(String(n),e))return i(n);r(t)}}}function df(e,t=!1){let n={format:`utf-8`,commands:[`branch`,`-v`,t?`-D`:`-d`,e],parser(t,n){return Xd(t,n).branches[e]},onError({exitCode:e,stdErr:t,stdOut:r},i,a,o){if(!Kd(String(i),e))return o(i);throw new Ao(n.parser(Zo(r),Zo(t)),String(i))}};return n}var ff=Y({"src/lib/tasks/branch.ts"(){jo(),Zd(),af(),Z()}});function pf(e){let t=e.trim().replace(/^["']|["']$/g,``);return t&&pe(t)}var mf,hf=Y({"src/lib/responses/CheckIgnore.ts"(){mf=e=>e.split(/\n/g).map(pf).filter(Boolean)}}),gf={};bo(gf,{checkIgnoreTask:()=>_f});function _f(e){return{commands:[`check-ignore`,...e],format:`utf-8`,parser:mf}}var vf=Y({"src/lib/tasks/check-ignore.ts"(){hf()}});function yf(e,t){return Ms({raw:e,remote:null,branches:[],tags:[],updated:[],deleted:[]},bf,[e,t])}var bf,xf=Y({"src/lib/parsers/parse-fetch.ts"(){Z(),bf=[new X(/From (.+)$/,(e,[t])=>{e.remote=t}),new X(/\* \[new branch]\s+(\S+)\s*-> (.+)$/,(e,[t,n])=>{e.branches.push({name:t,tracking:n})}),new X(/\* \[new tag]\s+(\S+)\s*-> (.+)$/,(e,[t,n])=>{e.tags.push({name:t,tracking:n})}),new X(/- \[deleted]\s+\S+\s*-> (.+)$/,(e,[t])=>{e.deleted.push({tracking:t})}),new X(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/,(e,[t,n,r,i])=>{e.updated.push({name:r,tracking:i,to:n,from:t})})]}}),Sf={};bo(Sf,{fetchTask:()=>wf});function Cf(e){return/^--upload-pack(=|$)/.test(e)}function wf(e,t,n){let r=[`fetch`,...n];return e&&t&&r.push(e,t),r.find(Cf)?Qs(`git.fetch: potential exploit argument blocked.`):{commands:r,format:`utf-8`,parser:yf}}var Tf=Y({"src/lib/tasks/fetch.ts"(){xf(),ic()}});function Ef(e){return Ms({moves:[]},Df,e)}var Df,Of=Y({"src/lib/parsers/parse-move.ts"(){Z(),Df=[new X(/^Renaming (.+) to (.+)$/,(e,[t,n])=>{e.moves.push({from:t,to:n})})]}}),kf={};bo(kf,{moveTask:()=>Af});function Af(e,t){return{commands:[`mv`,`-v`,...Ko(e),t],format:`utf-8`,parser:Ef}}var jf=Y({"src/lib/tasks/move.ts"(){Of(),Z()}}),Mf={};bo(Mf,{pullTask:()=>Nf});function Nf(e,t,n){let r=[`pull`,...n];return e&&t&&r.splice(1,0,e,t),{commands:r,format:`utf-8`,parser(e,t){return Vu(e,t)},onError(e,t,n,r){let i=Pu(Zo(e.stdOut),Zo(e.stdErr));if(i)return r(new Ao(i));r(t)}}}var Pf=Y({"src/lib/tasks/pull.ts"(){jo(),Hu(),Z()}});function Ff(e){let t={};return Lf(e,([e])=>t[e]={name:e}),Object.values(t)}function If(e){let t={};return Lf(e,([e,n,r])=>{Object.hasOwn(t,e)||(t[e]={name:e,refs:{fetch:``,push:``}}),r&&n&&(t[e].refs[r.replace(/[^a-z]/g,``)]=n)}),Object.values(t)}function Lf(e,t){Vo(e,e=>t(e.split(/\s+/)))}var Rf=Y({"src/lib/responses/GetRemoteSummary.ts"(){Z()}}),zf={};bo(zf,{addRemoteTask:()=>Bf,getRemotesTask:()=>Vf,listRemotesTask:()=>Hf,remoteTask:()=>Uf,removeRemoteTask:()=>Wf});function Bf(e,t,n){return $s([`remote`,`add`,...n,e,t])}function Vf(e){let t=[`remote`];return e&&t.push(`-v`),{commands:t,format:`utf-8`,parser:e?If:Ff}}function Hf(e){let t=[...e];return t[0]!==`ls-remote`&&t.unshift(`ls-remote`),$s(t)}function Uf(e){let t=[...e];return t[0]!==`remote`&&t.unshift(`remote`),$s(t)}function Wf(e){return $s([`remote`,`remove`,e])}var Gf=Y({"src/lib/tasks/remote.ts"(){Rf(),ic()}}),Kf={};bo(Kf,{stashListTask:()=>qf});function qf(e={},t){let n=hu(e),r=[`stash`,`list`,...n.commands,...t],i=ru(n.splitter,n.fields,Ul(r));return du(r)||{commands:r,format:`utf-8`,parser:i}}var Jf=Y({"src/lib/tasks/stash-list.ts"(){Kl(),cu(),fu(),yu()}}),Yf={};bo(Yf,{addSubModuleTask:()=>Xf,initSubModuleTask:()=>Zf,subModuleTask:()=>Qf,updateSubModuleTask:()=>$f});function Xf(e,t){return Qf([`add`,e,t])}function Zf(e){return Qf([`init`,...e])}function Qf(e){let t=[...e];return t[0]!==`submodule`&&t.unshift(`submodule`),$s(t)}function $f(e){return Qf([`update`,...e])}var ep=Y({"src/lib/tasks/sub-module.ts"(){ic()}});function tp(e,t){let n=Number.isNaN(e);return n===Number.isNaN(t)?n?np(e,t):0:n?1:-1}function np(e,t){return e===t?0:e>t?1:-1}function rp(e){return e.trim()}function ip(e){return typeof e==`string`&&parseInt(e.replace(/^\D+/g,``),10)||0}var ap,op,sp=Y({"src/lib/responses/TagList.ts"(){ap=class{constructor(e,t){this.all=e,this.latest=t}},op=function(e,t=!1){let n=e.split(`
|
|
22
|
-
`).map(rp).filter(Boolean);t||n.sort(function(e,t){let n=e.split(`.`),r=t.split(`.`);if(n.length===1||r.length===1)return tp(ip(n[0]),ip(r[0]));for(let e=0,t=Math.max(n.length,r.length);e<t;e++){let t=np(ip(n[e]),ip(r[e]));if(t)return t}return 0});let r=t?n[0]:[...n].reverse().find(e=>e.indexOf(`.`)>=0);return new ap(n,r)}}}),cp={};bo(cp,{addAnnotatedTagTask:()=>dp,addTagTask:()=>up,tagListTask:()=>lp});function lp(e=[]){let t=e.some(e=>/^--sort=/.test(e));return{format:`utf-8`,commands:[`tag`,`-l`,...e],parser(e){return op(e,t)}}}function up(e){return{format:`utf-8`,commands:[`tag`,e],parser(){return{name:e}}}}function dp(e,t){return{format:`utf-8`,commands:[`tag`,`-a`,`-m`,t,e],parser(){return{name:e}}}}var fp=Y({"src/lib/tasks/tag.ts"(){sp()}}),pp=yo({"src/git.js"(e,t){var{GitExecutor:n}=(dl(),So(ll)),{SimpleGitApi:r}=(Pd(),So(Md)),{Scheduler:i}=(Rd(),So(Fd)),{adhocExecTask:a,configurationErrorTask:o}=(ic(),So(Xs)),{asArray:s,filterArray:c,filterPrimitives:l,filterString:u,filterStringOrStringArray:d,filterType:f,getTrailingOptions:p,trailingFunctionArgument:m,trailingOptionsArgument:h}=(Z(),So(Ps)),{applyPatchTask:g}=(Vd(),So(zd)),{branchTask:_,branchLocalTask:v,deleteBranchesTask:y,deleteBranchTask:b}=(ff(),So(of)),{checkIgnoreTask:x}=(vf(),So(gf)),{checkIsRepoTask:S}=(Us(),So(Fs)),{cleanWithOptionsTask:C,isCleanOptionsArray:w}=(vc(),So(ac)),{diffSummaryTask:ee}=(fu(),So(lu)),{fetchTask:T}=(Tf(),So(Sf)),{moveTask:E}=(jf(),So(kf)),{pullTask:D}=(Pf(),So(Mf)),{pushTagsTask:O}=(rd(),So(ed)),{addRemoteTask:k,getRemotesTask:A,listRemotesTask:te,remoteTask:ne,removeRemoteTask:re}=(Gf(),So(zf)),{getResetMode:j,resetTask:M}=(Xc(),So(Wc)),{stashListTask:N}=(Jf(),So(Kf)),{addSubModuleTask:ie,initSubModuleTask:ae,subModuleTask:oe,updateSubModuleTask:P}=(ep(),So(Yf)),{addAnnotatedTagTask:se,addTagTask:F,tagListTask:I}=(fp(),So(cp)),{straightThroughBufferTask:L,straightThroughStringTask:R}=(ic(),So(Xs));function z(e,t){this._plugins=t,this._executor=new n(e.baseDir,new i(e.maxConcurrentProcesses),t),this._trimmed=e.trimmed}(z.prototype=Object.create(r.prototype)).constructor=z,z.prototype.customBinary=function(e){return this._plugins.reconfigure(`binary`,e),this},z.prototype.env=function(e,t){return arguments.length===1&&typeof e==`object`?this._executor.env=e:(this._executor.env=this._executor.env||{})[e]=t,this},z.prototype.stashList=function(e){return this._runTask(N(h(arguments)||{},c(e)&&e||[]),m(arguments))},z.prototype.mv=function(e,t){return this._runTask(E(e,t),m(arguments))},z.prototype.checkoutLatestTag=function(e){var t=this;return this.pull(function(){t.tags(function(n,r){t.checkout(r.latest,e)})})},z.prototype.pull=function(e,t,n,r){return this._runTask(D(f(e,u),f(t,u),p(arguments)),m(arguments))},z.prototype.fetch=function(e,t){return this._runTask(T(f(e,u),f(t,u),p(arguments)),m(arguments))},z.prototype.silent=function(e){return this._runTask(a(()=>console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.")))},z.prototype.tags=function(e,t){return this._runTask(I(p(arguments)),m(arguments))},z.prototype.rebase=function(){return this._runTask(R([`rebase`,...p(arguments)]),m(arguments))},z.prototype.reset=function(e){return this._runTask(M(j(e),p(arguments)),m(arguments))},z.prototype.revert=function(e){let t=m(arguments);return typeof e==`string`?this._runTask(R([`revert`,...p(arguments,0,!0),e]),t):this._runTask(o(`Commit must be a string`),t)},z.prototype.addTag=function(e){let t=typeof e==`string`?F(e):o(`Git.addTag requires a tag name`);return this._runTask(t,m(arguments))},z.prototype.addAnnotatedTag=function(e,t){return this._runTask(se(e,t),m(arguments))},z.prototype.deleteLocalBranch=function(e,t,n){return this._runTask(b(e,typeof t==`boolean`?t:!1),m(arguments))},z.prototype.deleteLocalBranches=function(e,t,n){return this._runTask(y(e,typeof t==`boolean`?t:!1),m(arguments))},z.prototype.branch=function(e,t){return this._runTask(_(p(arguments)),m(arguments))},z.prototype.branchLocal=function(e){return this._runTask(v(),m(arguments))},z.prototype.raw=function(e){let t=!Array.isArray(e),n=[].slice.call(t?arguments:e,0);for(let e=0;e<n.length&&t;e++)if(!l(n[e])){n.splice(e,n.length-e);break}n.push(...p(arguments,0,!0));var r=m(arguments);return n.length?this._runTask(R(n,this._trimmed),r):this._runTask(o(`Raw: must supply one or more command to execute`),r)},z.prototype.submoduleAdd=function(e,t,n){return this._runTask(ie(e,t),m(arguments))},z.prototype.submoduleUpdate=function(e,t){return this._runTask(P(p(arguments,!0)),m(arguments))},z.prototype.submoduleInit=function(e,t){return this._runTask(ae(p(arguments,!0)),m(arguments))},z.prototype.subModule=function(e,t){return this._runTask(oe(p(arguments)),m(arguments))},z.prototype.listRemote=function(){return this._runTask(te(p(arguments)),m(arguments))},z.prototype.addRemote=function(e,t,n){return this._runTask(k(e,t,p(arguments)),m(arguments))},z.prototype.removeRemote=function(e,t){return this._runTask(re(e),m(arguments))},z.prototype.getRemotes=function(e,t){return this._runTask(A(e===!0),m(arguments))},z.prototype.remote=function(e,t){return this._runTask(ne(p(arguments)),m(arguments))},z.prototype.tag=function(e,t){let n=p(arguments);return n[0]!==`tag`&&n.unshift(`tag`),this._runTask(R(n),m(arguments))},z.prototype.updateServerInfo=function(e){return this._runTask(R([`update-server-info`]),m(arguments))},z.prototype.pushTags=function(e,t){let n=O({remote:f(e,u)},p(arguments));return this._runTask(n,m(arguments))},z.prototype.rm=function(e){return this._runTask(R([`rm`,`-f`,...s(e)]),m(arguments))},z.prototype.rmKeepLocal=function(e){return this._runTask(R([`rm`,`--cached`,...s(e)]),m(arguments))},z.prototype.catFile=function(e,t){return this._catFile(`utf-8`,arguments)},z.prototype.binaryCatFile=function(){return this._catFile(`buffer`,arguments)},z.prototype._catFile=function(e,t){var n=m(t),r=[`cat-file`],i=t[0];if(typeof i==`string`)return this._runTask(o(`Git.catFile: options must be supplied as an array of strings`),n);Array.isArray(i)&&r.push.apply(r,i);let a=e===`buffer`?L(r):R(r);return this._runTask(a,n)},z.prototype.diff=function(e,t){let n=u(e)?o(`git.diff: supplying options as a single string is no longer supported, switch to an array of strings`):R([`diff`,...p(arguments)]);return this._runTask(n,m(arguments))},z.prototype.diffSummary=function(){return this._runTask(ee(p(arguments,1)),m(arguments))},z.prototype.applyPatch=function(e){let t=d(e)?g(s(e),p([].slice.call(arguments,1))):o(`git.applyPatch requires one or more string patches as the first argument`);return this._runTask(t,m(arguments))},z.prototype.revparse=function(){let e=[`rev-parse`,...p(arguments,!0)];return this._runTask(R(e,!0),m(arguments))},z.prototype.clean=function(e,t,n){let r=w(e),i=r&&e.join(``)||f(e,u)||``,a=p([].slice.call(arguments,r?1:0));return this._runTask(C(i,a),m(arguments))},z.prototype.exec=function(e){return this._runTask({commands:[],format:`utf-8`,parser(){typeof e==`function`&&e()}})},z.prototype.clearQueue=function(){return this._runTask(a(()=>console.warn(`simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.`)))},z.prototype.checkIgnore=function(e,t){return this._runTask(x(s(f(e,d,[]))),m(arguments))},z.prototype.checkIsRepo=function(e,t){return this._runTask(S(f(e,u)),m(arguments))},t.exports=z}});Do(),ko();var mp=class extends Oo{constructor(e,t){super(void 0,t),this.config=e}};ko(),ko();var hp=class extends Oo{constructor(e,t,n){super(e,n),this.task=e,this.plugin=t,Object.setPrototypeOf(this,new.target.prototype)}};jo(),No(),Us(),vc(),jc(),Fc(),Uc(),Xc();function gp(e){if(e)return[{type:`spawn.before`,action(t,n){e.aborted&&n.kill(new hp(void 0,`abort`,`Abort already signaled`))}},{type:`spawn.after`,action(t,n){function r(){n.kill(new hp(void 0,`abort`,`Abort signal received`))}e.addEventListener(`abort`,r),n.spawned.on(`close`,()=>e.removeEventListener(`abort`,r))}}]}function _p(e){return typeof e==`string`&&e.trim().toLowerCase()===`-c`}function vp(e,t){if(typeof t!=`string`||!t.includes(e))return!1;let n=t.trim().replace(/\0/g,``);return/^(--no)?-{1,2}[\dlsqvnobucj]+(\s|$)/.test(n)}function yp(e,t,n=String(e)){let r=typeof e==`string`?RegExp(`\\s*${e}`,`i`):e;return function(e,i,a){if(e[t]!==!0&&_p(i)&&r.test(a))throw new hp(void 0,`unsafe`,`Configuring ${n} is not permitted without enabling ${t}`)}}var bp=[yp(/^\s*protocol(.[a-z]+)?.allow/i,`allowUnsafeProtocolOverride`,`protocol.allow`),yp(`core.sshCommand`,`allowUnsafeSshCommand`),yp(`core.gitProxy`,`allowUnsafeGitProxy`),yp(`core.hooksPath`,`allowUnsafeHooksPath`),yp(`diff.external`,`allowUnsafeDiffExternal`)];function xp(e,t){if(/^\s*--(upload|receive)-pack/.test(e))throw new hp(void 0,`unsafe`,`Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`);if(t===`clone`&&vp(`u`,e))throw new hp(void 0,`unsafe`,`Use of clone with option -u is not permitted without enabling allowUnsafePack`);if(t===`push`&&/^\s*--exec\b/.test(e))throw new hp(void 0,`unsafe`,`Use of push with option --exec is not permitted without enabling allowUnsafePack`)}function Sp({allowUnsafePack:e=!1,...t}={}){return{type:`spawn.args`,action(n,r){return n.forEach((i,a)=>{let o=a<n.length?n[a+1]:``;e||xp(i,r.method),bp.forEach(e=>e(t,i,o))}),n}}}Z();function Cp(e){let t=Xo(e,`-c`);return{type:`spawn.args`,action(e){return[...t,...e]}}}Z();var wp=(0,mo.deferred)().promise;function Tp({onClose:e=!0,onExit:t=50}={}){function n(){let n=-1,i={close:(0,mo.deferred)(),closeTimeout:(0,mo.deferred)(),exit:(0,mo.deferred)(),exitTimeout:(0,mo.deferred)()},a=Promise.race([e===!1?wp:i.closeTimeout.promise,t===!1?wp:i.exitTimeout.promise]);return r(e,i.close,i.closeTimeout),r(t,i.exit,i.exitTimeout),{close(e){n=e,i.close.done()},exit(e){n=e,i.exit.done()},get exitCode(){return n},result:a}}function r(e,t,n){e!==!1&&(e===!0?t.promise:t.promise.then(()=>$o(e))).then(n.done)}return{type:`spawn.after`,async action(e,{spawned:t,close:r}){let i=n(),a=!0,o=()=>void(a=!1);t.stdout?.on(`data`,o),t.stderr?.on(`data`,o),t.on(`error`,o),t.on(`close`,e=>i.close(e)),t.on(`exit`,e=>i.exit(e));try{await i.result,a&&await $o(50),r(i.exitCode)}catch(e){r(i.exitCode,e)}}}}Z();var Ep=`Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`,Dp=`Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;function Op(e){return!e||!/^([a-z]:)?([a-z0-9/.\\_~-]+)$/i.test(e)}function kp(e,t){if(e.length<1||e.length>2)throw new hp(void 0,`binary`,Ep);if(e.some(Op))if(t)console.warn(Dp);else throw new hp(void 0,`binary`,Dp);let[n,r]=e;return{binary:n,prefix:r}}function Ap(e,t=[`git`],n=!1){let r=kp(Ko(t),n);e.on(`binary`,e=>{r=kp(Ko(e),n)}),e.append(`spawn.binary`,()=>r.binary),e.append(`spawn.args`,e=>r.prefix?[r.prefix,...e]:e)}ko();function jp(e){return!!(e.exitCode&&e.stdErr.length)}function Mp(e){return Buffer.concat([...e.stdOut,...e.stdErr])}function Np(e=!1,t=jp,n=Mp){return(r,i)=>!e&&r||!t(i)?r:n(i)}function Pp(e){return{type:`task.error`,action(t,n){let r=e(t.error,{stdErr:n.stdErr,stdOut:n.stdOut,exitCode:n.exitCode});return Buffer.isBuffer(r)?{error:new Oo(void 0,r.toString(`utf-8`))}:{error:r}}}}Z();var Fp=class{constructor(){this.plugins=new Set,this.events=new Oe}on(e,t){this.events.on(e,t)}reconfigure(e,t){this.events.emit(e,t)}append(e,t){let n=Uo(this.plugins,{type:e,action:t});return()=>this.plugins.delete(n)}add(e){let t=[];return Ko(e).forEach(e=>e&&this.plugins.add(Uo(t,e))),()=>{t.forEach(e=>this.plugins.delete(e))}}exec(e,t,n){let r=t,i=Object.freeze(Object.create(n));for(let t of this.plugins)t.type===e&&(r=t.action(r,i));return r}};Z();function Ip(e){let t=`--progress`,n=[`checkout`,`clone`,`fetch`,`pull`,`push`];return[{type:`spawn.args`,action(e,r){return n.includes(r.method)?Wo(e,t):e}},{type:`spawn.after`,action(n,r){r.commands.includes(t)&&r.spawned.stderr?.on(`data`,t=>{let n=/^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(t.toString(`utf8`));n&&e({method:r.method,stage:Lp(n[1]),progress:Yo(n[2]),processed:Yo(n[3]),total:Yo(n[4])})})}}]}function Lp(e){return String(e.toLowerCase().split(` `,1))||`unknown`}Z();function Rp(e){let t=Qo(e,[`uid`,`gid`]);return{type:`spawn.options`,action(e){return{...t,...e}}}}function zp({block:e,stdErr:t=!0,stdOut:n=!0}){if(e>0)return{type:`spawn.after`,action(r,i){let a;function o(){a&&clearTimeout(a),a=setTimeout(c,e)}function s(){i.spawned.stdout?.off(`data`,o),i.spawned.stderr?.off(`data`,o),i.spawned.off(`exit`,s),i.spawned.off(`close`,s),a&&clearTimeout(a)}function c(){s(),i.kill(new hp(void 0,`timeout`,`block timeout reached`))}n&&i.spawned.stdout?.on(`data`,o),t&&i.spawned.stderr?.on(`data`,o),i.spawned.on(`exit`,s),i.spawned.on(`close`,s),o()}}}Do();function Bp(){return{type:`spawn.args`,action(e){let t=[],n;function r(e){(n||=[]).push(...e)}for(let n=0;n<e.length;n++){let i=e[n];if(wo(i)){r(To(i));continue}if(i===`--`){r(e.slice(n+1).flatMap(e=>wo(e)&&To(e)||e));break}t.push(i)}return n?[...t,`--`,...n.map(String)]:t}}}Z();var Vp=pp();function Hp(e,t){let n=new Fp,r=Ss(e&&(typeof e==`string`?{baseDir:e}:e)||{},t);if(!Ho(r.baseDir))throw new mp(r,`Cannot use simple-git on a directory that does not exist`);return Array.isArray(r.config)&&n.add(Cp(r.config)),n.add(Sp(r.unsafe)),n.add(Tp(r.completion)),r.abort&&n.add(gp(r.abort)),r.progress&&n.add(Ip(r.progress)),r.timeout&&n.add(zp(r.timeout)),r.spawnOptions&&n.add(Rp(r.spawnOptions)),n.add(Bp()),n.add(Pp(Np(!0))),r.errors&&n.add(Pp(r.errors)),Ap(n,r.binary,r.unsafe?.allowUnsafeCustomBinary),new Vp(r,n)}jo();var Up=Hp;const Wp=`.expect`,Gp=[`.ts`,`.tsx`,`.js`,`.jsx`,`.mts`,`.mjs`,`.cts`,`.cjs`],Kp=new Set([`node_modules`,`dist`,`build`,`.git`,`.next`,`.turbo`,`coverage`,`.nyc_output`,`.cache`,`.repos`,`.specs`,`__snapshots__`,`__fixtures__`]);var qp=class extends S.ErrorClass(`GitError`)({_tag:S.tag(`GitError`),operation:S.String,cause:S.Defect}){message=`Git error during "${this.operation}"`},Jp=class extends S.ErrorClass(`FindRepoRootError`)({_tag:S.tag(`FindRepoRootError`),cause:S.Defect}){message=`Could not find git repository root`},Yp=class extends C.Service()(`@supervisor/GitRepoRoot`){},Xp=class e extends C.Service()(`@supervisor/Git`,{make:u.gen(function*(){let e=yield*p.FileSystem,t=e=>u.gen(function*(){let t=yield*Yp;return yield*u.tryPromise({try:()=>Up(t).raw(e.args),catch:t=>new qp({operation:e.operation,cause:t})}).pipe(u.map(e.trim?q.trim:Se.identity))}),n=e=>u.tryPromise({try:()=>Up(e).revparse([`--show-toplevel`]),catch:e=>new Jp({cause:e})}).pipe(u.map(q.trim)),r=e=>t=>u.gen(function*(){let r=yield*n(e);return yield*t.pipe(u.provideService(Yp,r))}),i=t({args:[`symbolic-ref`,`refs/remotes/origin/HEAD`],operation:`getting main branch`,trim:!0}).pipe(u.map(e=>e.replace(`refs/remotes/origin/`,``)),u.catchTag(`GitError`,()=>t({args:[`revparse`,`--verify`,`origin/main`],operation:`getting main branch (origin/main)`,trim:!0}).pipe(u.as(`main`))),u.catchTag(`GitError`,()=>t({args:[`rev-parse`,`--verify`,`main`],operation:`getting main branch (main)`,trim:!0}).pipe(u.as(`main`))),u.catchTag(`GitError`,()=>u.succeed(`main`))),a=t({args:[`rev-parse`,`--abbrev-ref`,`HEAD`],operation:`getting current branch`,trim:!0}).pipe(u.catchTag(`GitError`,()=>u.succeed(`HEAD`))),o=t({args:[`rev-parse`,`--is-inside-work-tree`],operation:`checking if inside work tree`,trim:!0}).pipe(u.map(e=>e===`true`),u.catchTag(`GitError`,()=>u.succeed(!1))),s=e=>{let[t,n,r]=e.split(` `);return new fn({relativePath:r??``,added:Number.parseInt(t??`0`,10)||0,removed:Number.parseInt(n??`0`,10)||0})},c=u.fn(`Git.getFileStats`)(function*(e){return e._tag===`WorkingTree`?yield*t({args:[`diff`,`HEAD`,`--numstat`],operation:`getting working tree file stats`}).pipe(u.map(q.split(`
|
|
23
|
-
`)),
|
|
24
|
-
`)),
|
|
25
|
-
`)),
|
|
26
|
-
`)),
|
|
27
|
-
`)),
|
|
28
|
-
`).pipe(
|
|
29
|
-
`)},
|
|
30
|
-
`)){if(e===`selected_commit: undefined`)continue;let t=e.indexOf(`: `);if(t===-1)continue;let n=e.slice(0,t),i=e.slice(t+2);r.set(n,i)}let i={formatVersion:Number(r.get(`format_version`)),title:
|
|
31
|
-
`).pipe(
|
|
32
|
-
`).map(e=>e.trim()).filter(e=>e.length>0))})}),catch:()=>[]}),
|
|
33
|
-
`)})),
|
|
34
|
-
`)[0].replace(/\=|\s+|\"/gi,``).toLowerCase();case`win32`:return e.toString().split(`REG_SZ`)[1].replace(/\r+|\n+|\s+/gi,``).toLowerCase();case`linux`:return e.toString().replace(/\r+|\n+|\s+/gi,``).toLowerCase();case`freebsd`:return e.toString().replace(/\r+|\n+|\s+/gi,``).toLowerCase();default:throw Error(`Unsupported platform: `+process.platform)}}function s(e){var t=o((0,u.execSync)(p[f]).toString());return e?t:a(t)}function c(e){return new l.default(function(t,n){return(0,u.exec)(p[f],{},function(r,i,s){if(r)return n(Error(`Error while obtaining machine id: `+r.stack));var c=o(i.toString());return t(e?c:a(c))})})}Object.defineProperty(t,`__esModule`,{value:!0});var l=r(n(35));t.machineIdSync=s,t.machineId=c;var u=n(70),d=n(71),f=process.platform,p={darwin:`ioreg -rd1 -c IOPlatformExpertDevice`,win32:{native:`%windir%\\System32`,mixed:`%windir%\\sysnative\\cmd.exe /c %windir%\\System32`}[i()]+`\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`,linux:`( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :`,freebsd:`kenv -q smbios.system.uuid || sysctl -n kern.hostuuid`}},function(e,t,n){e.exports={default:n(36),__esModule:!0}},function(e,t,n){n(66),n(68),n(69),n(67),e.exports=n(6).Promise},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||r!==void 0&&r in e)throw TypeError(n+`: incorrect invocation!`);return e}},function(e,t,n){var r=n(13),i=n(31),a=n(62);e.exports=function(e){return function(t,n,o){var s,c=r(t),l=i(c.length),u=a(o,l);if(e&&n!=n){for(;l>u;)if(s=c[u++],s!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(7),i=n(44),a=n(43),o=n(3),s=n(31),c=n(64),l={},u={},t=e.exports=function(e,t,n,d,f){var p,m,h,g,_=f?function(){return e}:c(e),v=r(n,d,t?2:1),y=0;if(typeof _!=`function`)throw TypeError(e+` is not iterable!`);if(a(_)){for(p=s(e.length);p>y;y++)if(g=t?v(o(m=e[y])[0],m[1]):v(e[y]),g===l||g===u)return g}else for(h=_.call(e);!(m=h.next()).done;)if(g=i(h,v,m.value,t),g===l||g===u)return g};t.BREAK=l,t.RETURN=u},function(e,t){e.exports=function(e,t,n){var r=n===void 0;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(11);e.exports=Object(`z`).propertyIsEnumerable(0)?Object:function(e){return r(e)==`String`?e.split(``):Object(e)}},function(e,t,n){var r=n(10),i=n(1)(`iterator`),a=Array.prototype;e.exports=function(e){return e!==void 0&&(r.Array===e||a[i]===e)}},function(e,t,n){var r=n(3);e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw a!==void 0&&r(a.call(e)),t}}},function(e,t,n){var r=n(49),i=n(17),a=n(18),o={};n(5)(o,n(1)(`iterator`),function(){return this}),e.exports=function(e,t,n){e.prototype=r(o,{next:i(1,n)}),a(e,t+` Iterator`)}},function(e,t,n){var r=n(1)(`iterator`),i=!1;try{var a=[7][r]();a.return=function(){i=!0},Array.from(a,function(){throw 2})}catch{}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var a=[7],o=a[r]();o.next=function(){return{done:n=!0}},a[r]=function(){return o},e(a)}catch{}return n}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){var r=n(2),i=n(30).set,a=r.MutationObserver||r.WebKitMutationObserver,o=r.process,s=r.Promise,c=n(11)(o)==`process`;e.exports=function(){var e,t,n,l=function(){var r,i;for(c&&(r=o.domain)&&r.exit();e;){i=e.fn,e=e.next;try{i()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(c)n=function(){o.nextTick(l)};else if(a){var u=!0,d=document.createTextNode(``);new a(l).observe(d,{characterData:!0}),n=function(){d.data=u=!u}}else if(s&&s.resolve){var f=s.resolve();n=function(){f.then(l)}}else n=function(){i.call(r,l)};return function(r){var i={fn:r,next:void 0};t&&(t.next=i),e||(e=i,n()),t=i}}},function(e,t,n){var r=n(3),i=n(50),a=n(22),o=n(19)(`IE_PROTO`),s=function(){},c=`prototype`,l=function(){var e,t=n(16)(`iframe`),r=a.length,i=`>`;for(t.style.display=`none`,n(25).appendChild(t),t.src=`javascript:`,e=t.contentWindow.document,e.open(),e.write(`<script>document.F=Object<\/script`+i),e.close(),l=e.F;r--;)delete l[c][a[r]];return l()};e.exports=Object.create||function(e,t){var n;return e===null?n=l():(s[c]=r(e),n=new s,s[c]=null,n[o]=e),t===void 0?n:i(n,t)}},function(e,t,n){var r=n(12),i=n(3),a=n(54);e.exports=n(4)?Object.defineProperties:function(e,t){i(e);for(var n,o=a(t),s=o.length,c=0;s>c;)r.f(e,n=o[c++],t[n]);return e}},function(e,t,n){var r=n(55),i=n(17),a=n(13),o=n(32),s=n(8),c=n(26),l=Object.getOwnPropertyDescriptor;t.f=n(4)?l:function(e,t){if(e=a(e),t=o(t,!0),c)try{return l(e,t)}catch{}if(s(e,t))return i(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(8),i=n(63),a=n(19)(`IE_PROTO`),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,a)?e[a]:typeof e.constructor==`function`&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,t,n){var r=n(8),i=n(13),a=n(39)(!1),o=n(19)(`IE_PROTO`);e.exports=function(e,t){var n,s=i(e),c=0,l=[];for(n in s)n!=o&&r(s,n)&&l.push(n);for(;t.length>c;)r(s,n=t[c++])&&(~a(l,n)||l.push(n));return l}},function(e,t,n){var r=n(53),i=n(22);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(5);e.exports=function(e,t,n){for(var i in t)n&&e[i]?e[i]=t[i]:r(e,i,t[i]);return e}},function(e,t,n){e.exports=n(5)},function(e,t,n){var r=n(9),i=n(3),a=function(e,t){if(i(e),!r(t)&&t!==null)throw TypeError(t+`: can't set as prototype!`)};e.exports={set:Object.setPrototypeOf||(`__proto__`in{}?function(e,t,r){try{r=n(7)(Function.call,n(51).f(Object.prototype,`__proto__`).set,2),r(e,[]),t=!(e instanceof Array)}catch{t=!0}return function(e,n){return a(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:a}},function(e,t,n){var r=n(2),i=n(6),a=n(12),o=n(4),s=n(1)(`species`);e.exports=function(e){var t=typeof i[e]==`function`?i[e]:r[e];o&&t&&!t[s]&&a.f(t,s,{configurable:!0,get:function(){return this}})}},function(e,t,n){var r=n(3),i=n(14),a=n(1)(`species`);e.exports=function(e,t){var n,o=r(e).constructor;return o===void 0||(n=r(o)[a])==null?t:i(n)}},function(e,t,n){var r=n(20),i=n(15);e.exports=function(e){return function(t,n){var a,o,s=String(i(t)),c=r(n),l=s.length;return c<0||c>=l?e?``:void 0:(a=s.charCodeAt(c),a<55296||a>56319||c+1===l||(o=s.charCodeAt(c+1))<56320||o>57343?e?s.charAt(c):a:e?s.slice(c,c+2):(a-55296<<10)+(o-56320)+65536)}}},function(e,t,n){var r=n(20),i=Math.max,a=Math.min;e.exports=function(e,t){return e=r(e),e<0?i(e+t,0):a(e,t)}},function(e,t,n){var r=n(15);e.exports=function(e){return Object(r(e))}},function(e,t,n){var r=n(21),i=n(1)(`iterator`),a=n(10);e.exports=n(6).getIteratorMethod=function(e){if(e!=null)return e[i]||e[`@@iterator`]||a[r(e)]}},function(e,t,n){var r=n(37),i=n(47),a=n(10),o=n(13);e.exports=n(27)(Array,`Array`,function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):t==`keys`?i(0,n):t==`values`?i(0,e[n]):i(0,[n,e[n]])},`values`),a.Arguments=a.Array,r(`keys`),r(`values`),r(`entries`)},function(e,t){},function(e,t,n){var r,i,a,o=n(28),s=n(2),c=n(7),l=n(21),u=n(23),d=n(9),f=(n(3),n(14)),p=n(38),m=n(40),h=(n(58).set,n(60)),g=n(30).set,_=n(48)(),v=`Promise`,y=s.TypeError,b=s.process,x=s[v],b=s.process,S=l(b)==`process`,C=function(){},w=!!function(){try{var e=x.resolve(1),t=(e.constructor={})[n(1)(`species`)]=function(e){e(C,C)};return(S||typeof PromiseRejectionEvent==`function`)&&e.then(C)instanceof t}catch{}}(),ee=function(e,t){return e===t||e===x&&t===a},T=function(e){var t;return!(!d(e)||typeof(t=e.then)!=`function`)&&t},E=function(e){return ee(x,e)?new D(e):new i(e)},D=i=function(e){var t,n;this.promise=new e(function(e,r){if(t!==void 0||n!==void 0)throw y(`Bad Promise constructor`);t=e,n=r}),this.resolve=f(t),this.reject=f(n)},O=function(e){try{e()}catch(e){return{error:e}}},k=function(e,t){if(!e._n){e._n=!0;var n=e._c;_(function(){for(var r=e._v,i=e._s==1,a=0,o=function(t){var n,a,o=i?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{o?(i||(e._h==2&&ne(e),e._h=1),o===!0?n=r:(l&&l.enter(),n=o(r),l&&l.exit()),n===t.promise?c(y(`Promise-chain cycle`)):(a=T(n))?a.call(n,s,c):s(n)):c(r)}catch(e){c(e)}};n.length>a;)o(n[a++]);e._c=[],e._n=!1,t&&!e._h&&A(e)})}},A=function(e){g.call(s,function(){var t,n,r,i=e._v;if(te(e)&&(t=O(function(){S?b.emit(`unhandledRejection`,i,e):(n=s.onunhandledrejection)?n({promise:e,reason:i}):(r=s.console)&&r.error&&r.error(`Unhandled promise rejection`,i)}),e._h=S||te(e)?2:1),e._a=void 0,t)throw t.error})},te=function(e){if(e._h==1)return!1;for(var t,n=e._a||e._c,r=0;n.length>r;)if(t=n[r++],t.fail||!te(t.promise))return!1;return!0},ne=function(e){g.call(s,function(){var t;S?b.emit(`rejectionHandled`,e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})})},re=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||=t._c.slice(),k(t,!0))},j=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw y(`Promise can't be resolved itself`);(t=T(e))?_(function(){var r={_w:n,_d:!1};try{t.call(e,c(j,r,1),c(re,r,1))}catch(e){re.call(r,e)}}):(n._v=e,n._s=1,k(n,!1))}catch(e){re.call({_w:n,_d:!1},e)}}};w||(x=function(e){p(this,x,v,`_h`),f(e),r.call(this);try{e(c(j,this,1),c(re,this,1))}catch(e){re.call(this,e)}},r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n(56)(x.prototype,{then:function(e,t){var n=E(h(this,x));return n.ok=typeof e!=`function`||e,n.fail=typeof t==`function`&&t,n.domain=S?b.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&k(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),D=function(){var e=new r;this.promise=e,this.resolve=c(j,e,1),this.reject=c(re,e,1)}),u(u.G+u.W+u.F*!w,{Promise:x}),n(18)(x,v),n(59)(v),a=n(6)[v],u(u.S+u.F*!w,v,{reject:function(e){var t=E(this),n=t.reject;return n(e),t.promise}}),u(u.S+u.F*(o||!w),v,{resolve:function(e){if(e instanceof x&&ee(e.constructor,this))return e;var t=E(this),n=t.resolve;return n(e),t.promise}}),u(u.S+u.F*!(w&&n(46)(function(e){x.all(e).catch(C)})),v,{all:function(e){var t=this,n=E(t),r=n.resolve,i=n.reject,a=O(function(){var n=[],a=0,o=1;m(e,!1,function(e){var s=a++,c=!1;n.push(void 0),o++,t.resolve(e).then(function(e){c||(c=!0,n[s]=e,--o||r(n))},i)}),--o||r(n)});return a&&i(a.error),n.promise},race:function(e){var t=this,n=E(t),r=n.reject,i=O(function(){m(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return i&&r(i.error),n.promise}})},function(e,t,n){var r=n(61)(!0);n(27)(String,`String`,function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){n(65);for(var r=n(2),i=n(5),a=n(10),o=n(1)(`toStringTag`),s=[`NodeList`,`DOMTokenList`,`MediaList`,`StyleSheetList`,`CSSRuleList`],c=0;c<5;c++){var l=s[c],u=r[l],d=u&&u.prototype;d&&!d[o]&&i(d,o,l),a[l]=a.Array}},function(t,n){t.exports=e(`child_process`)},function(t,n){t.exports=e(`crypto`)}])})}))();function sh(e){return typeof e==`string`?`'${e}'`:new ch().serialize(e)}const ch=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}(),lh=globalThis.process?.getBuiltinModule?.(`crypto`)?.hash,uh=`sha256`,dh=`base64url`;function fh(e){if(lh)return lh(uh,e,dh);let t=we(uh).update(e);return globalThis.process?.versions?.webcontainer?t.digest().toString(dh):t.digest(dh)}function ph(e){return fh(sh(e))}function mh(){let e=hh();return async t=>{for(let n of t)n.module=e(n.filename);return t}}function hh(e=process.argv[1]?Ue(process.argv[1]):process.cwd(),t=Ge===`\\`){let n=t?gh(e):e;return e=>{if(!e)return;let r=t?gh(e):e,{dir:i,base:a,ext:o}=We.parse(r);(o===`.js`||o===`.mjs`||o===`.cjs`)&&(a=a.slice(0,-1*o.length));let s=decodeURIComponent(a);i||=`.`;let c=i.lastIndexOf(`/node_modules`);if(c>-1)return`${i.slice(c+14).replace(/\//g,`.`)}:${s}`;if(i.startsWith(n)){let e=i.slice(n.length+1).replace(/\//g,`.`);return e?`${e}:${s}`:s}return s}}function gh(e){return e.replace(/^[A-Z]:/,``).replace(/\\/g,`/`)}const _h=e=>{if(`flags`in e){let t=yh(e.flags),n=bh(e.flags);return{...e,featureFlags:t,featureFlagPayloads:n}}{let t=e.featureFlags??{},n=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([e,t])=>[e,Sh(t)])),r=Object.fromEntries(Object.entries(t).map(([e,t])=>[e,vh(e,t,n[e])]));return{...e,featureFlags:t,featureFlagPayloads:n,flags:r}}};function vh(e,t,n){return{key:e,enabled:typeof t==`string`?!0:t,variant:typeof t==`string`?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:n?JSON.stringify(n):void 0,description:void 0}}}const yh=e=>Object.fromEntries(Object.entries(e??{}).map(([e,t])=>[e,xh(t)]).filter(([,e])=>e!==void 0)),bh=e=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter(e=>{let n=t[e];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map(e=>{let n=t[e].metadata?.payload;return[e,n?Sh(n):void 0]}))},xh=e=>e===void 0?void 0:e.variant??e.enabled,Sh=e=>{if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}},Ch=`0123456789abcdef`;var wh=class e{constructor(e){this.bytes=e}static ofInner(t){if(t.length===16)return new e(t);throw TypeError(`not 128-bit length`)}static fromFieldsV7(t,n,r,i){if(!Number.isInteger(t)||!Number.isInteger(n)||!Number.isInteger(r)||!Number.isInteger(i)||t<0||n<0||r<0||i<0||t>0xffffffffffff||n>4095||r>1073741823||i>4294967295)throw RangeError(`invalid field value`);let a=new Uint8Array(16);return a[0]=t/2**40,a[1]=t/2**32,a[2]=t/2**24,a[3]=t/2**16,a[4]=t/256,a[5]=t,a[6]=112|n>>>8,a[7]=n,a[8]=128|r>>>24,a[9]=r>>>16,a[10]=r>>>8,a[11]=r,a[12]=i>>>24,a[13]=i>>>16,a[14]=i>>>8,a[15]=i,new e(a)}static parse(t){let n;switch(t.length){case 32:n=/^[0-9a-f]{32}$/i.exec(t)?.[0];break;case 36:n=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join(``);break;case 38:n=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(t)?.slice(1,6).join(``);break;case 45:n=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join(``);break;default:break}if(n){let t=new Uint8Array(16);for(let e=0;e<16;e+=4){let r=parseInt(n.substring(2*e,2*e+8),16);t[e+0]=r>>>24,t[e+1]=r>>>16,t[e+2]=r>>>8,t[e+3]=r}return new e(t)}throw SyntaxError(`could not parse UUID string`)}toString(){let e=``;for(let t=0;t<this.bytes.length;t++)e+=Ch.charAt(this.bytes[t]>>>4),e+=Ch.charAt(15&this.bytes[t]),(t===3||t===5||t===7||t===9)&&(e+=`-`);return e}toHex(){let e=``;for(let t=0;t<this.bytes.length;t++)e+=Ch.charAt(this.bytes[t]>>>4),e+=Ch.charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error(`unreachable`);if(e<=7)return this.bytes.every(e=>e===0)?`NIL`:`VAR_0`;if(e<=11)return`VAR_10`;if(e<=13)return`VAR_110`;if(e<=15)return this.bytes.every(e=>e===255)?`MAX`:`VAR_RESERVED`;throw Error(`unreachable`)}getVersion(){return this.getVariant()===`VAR_10`?this.bytes[6]>>>4:void 0}clone(){return new e(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(let t=0;t<16;t++){let n=this.bytes[t]-e.bytes[t];if(n!==0)return Math.sign(n)}return 0}},Th=class{constructor(e){this.timestamp=0,this.counter=0,this.random=e??Eh()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let n=this.generateOrAbortCore(e,t);return n===void 0&&(this.timestamp=0,n=this.generateOrAbortCore(e,t)),n}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>0xffffffffffff)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>0xffffffffffff)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;this.counter++,this.counter>4398046511103&&(this.timestamp++,this.resetCounter())}return wh.fromFieldsV7(this.timestamp,Math.trunc(this.counter/2**30),this.counter&2**30-1,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,wh.ofInner(e)}};const Eh=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())});let Dh;const Oh=()=>kh().toString(),kh=()=>(Dh||=new Th).generate();var Ah=function(e){return e.AnonymousId=`anonymous_id`,e.DistinctId=`distinct_id`,e.Props=`props`,e.EnablePersonProcessing=`enable_person_processing`,e.PersonMode=`person_mode`,e.FeatureFlagDetails=`feature_flag_details`,e.FeatureFlags=`feature_flags`,e.FeatureFlagPayloads=`feature_flag_payloads`,e.BootstrapFeatureFlagDetails=`bootstrap_feature_flag_details`,e.BootstrapFeatureFlags=`bootstrap_feature_flags`,e.BootstrapFeatureFlagPayloads=`bootstrap_feature_flag_payloads`,e.OverrideFeatureFlags=`override_feature_flags`,e.Queue=`queue`,e.OptedOut=`opted_out`,e.SessionId=`session_id`,e.SessionStartTimestamp=`session_start_timestamp`,e.SessionLastTimestamp=`session_timestamp`,e.PersonProperties=`person_properties`,e.GroupProperties=`group_properties`,e.InstalledAppBuild=`installed_app_build`,e.InstalledAppVersion=`installed_app_version`,e.SessionReplay=`session_replay`,e.SurveyLastSeenDate=`survey_last_seen_date`,e.SurveysSeen=`surveys_seen`,e.Surveys=`surveys`,e.RemoteConfig=`remote_config`,e.FlagsEndpointWasHit=`flags_endpoint_was_hit`,e}({});const jh=`amazonbot,amazonproductbot,app.hypefactors.com,applebot,archive.org_bot,awariobot,backlinksextendedbot,baiduspider,bingbot,bingpreview,chrome-lighthouse,dataforseobot,deepscan,duckduckbot,facebookexternal,facebookcatalog,http://yandex.com/bots,hubspot,ia_archiver,leikibot,linkedinbot,meta-externalagent,mj12bot,msnbot,nessus,petalbot,pinterest,prerender,rogerbot,screaming frog,sebot-wa,sitebulb,slackbot,slurp,trendictionbot,turnitin,twitterbot,vercel-screenshot,vercelbot,yahoo! slurp,yandexbot,zoombot,bot.htm,bot.php,(bot;,bot/,crawler,ahrefsbot,ahrefssiteaudit,semrushbot,siteauditbot,splitsignalbot,gptbot,oai-searchbot,chatgpt-user,perplexitybot,better uptime bot,sentryuptimebot,uptimerobot,headlesschrome,cypress,google-hoteladsverifier,adsbot-google,apis-google,duplexweb-google,feedfetcher-google,google favicon,google web preview,google-read-aloud,googlebot,googleother,google-cloudvertexbot,googleweblight,mediapartners-google,storebot-google,google-inspectiontool,bytespider`.split(`,`),Mh=function(e,t=[]){if(!e)return!1;let n=e.toLowerCase();return jh.concat(t).some(e=>{let t=e.toLowerCase();return n.indexOf(t)!==-1})},Nh=Array.isArray,Ph=Object.prototype;Ph.hasOwnProperty;const Fh=Ph.toString,Ih=Nh||function(e){return Fh.call(e)===`[object Array]`},Lh=e=>e===Object(e)&&!Ih(e),Rh=e=>e===void 0,zh=e=>Fh.call(e)==`[object String]`,Bh=e=>zh(e)&&e.trim().length===0,Vh=e=>Fh.call(e)==`[object Number]`&&e===e,Hh=e=>e instanceof Error;function Uh(e){return typeof e!=`object`||!e}function Wh(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function Gh(e){return!Rh(Event)&&qh(e,Event)}function Kh(e){return Wh(e,`Object`)}function qh(e,t){try{return e instanceof t}catch{return!1}}function Jh(e,t,n,r,i){return t>n&&(r.warn(`min cannot be greater than max.`),t=n),Vh(e)?e>n?(r.warn(` cannot be greater than max: `+n+`. Using max value instead.`),n):e<t?(r.warn(` cannot be less than min: `+t+`. Using min value instead.`),t):e:(r.warn(` must be a number. using max or fallback. max: `+n+`, fallback: `+i),Jh(i||n,t,n,r))}var Yh=class{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=Jh(e.bucketSize,0,100,e._logger),this._refillRate=Jh(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=Jh(e.refillInterval,0,864e5,e._logger)}_applyRefill(e,t){let n=t-e.lastAccess,r=Math.floor(n/this._refillInterval);if(r>0){let t=r*this._refillRate;e.tokens=Math.min(e.tokens+t,this._bucketSize),e.lastAccess+=r*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),n=String(e),r=this._buckets[n];return r?this._applyRefill(r,t):(r={tokens:this._bucketSize,lastAccess:t},this._buckets[n]=r),r.tokens===0?!0:(r.tokens--,r.tokens===0&&this._onBucketRateLimited?.(e),r.tokens===0)}stop(){this._buckets={}}},Xh=class{add(e){let t=Oh();return this.promiseByIds[t]=e,e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds),t=e.length;for(;t>0;)await Promise.all(e),e=Object.values(this.promiseByIds),t=e.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}};function Zh(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}const Qh=(e,t,n)=>{function r(r,...i){t(()=>{let t=n[r];t(e,...i)})}return{info:(...e)=>{r(`log`,...e)},warn:(...e)=>{r(`warn`,...e)},error:(...e)=>{r(`error`,...e)},critical:(...t)=>{n.error(e,...t)},createLogger:r=>Qh(`${e} ${r}`,t,n)}},$h=e=>e();function eg(e,t=$h){return Qh(e,t,Zh())}const tg=`Android`;tg+``;const ng=`BlackBerry`,rg=`Samsung`;rg+``,rg+``;const ig=`Chrome`;ig+``,ig+``;const ag=`Opera`;ag+``;const og=`Edge`;``+og;const sg=`Firefox`;sg+``;const cg=`Nintendo`,lg=`PlayStation`,ug=`Xbox`;tg+``;const dg=`Windows`;dg+``;const fg=`Generic`;fg+``,fg+``;const pg=`(\\d+(\\.\\d+)?)`;RegExp(`Version/`+pg),new RegExp(ug,`i`),RegExp(lg+` \\w+`,`i`),RegExp(cg+` \\w+`,`i`),RegExp(ng+`|PlayBook|BB10`,`i`),RegExp(`rv:`+pg),RegExp(og+`?\\/(\\d+(\\.\\d+)?)`),RegExp(`(`+ig+`|CrMo)\\/(\\d+(\\.\\d+)?)`),RegExp(`CriOS\\/`+pg),RegExp(`(UCBrowser|UCWEB)\\/`+pg),RegExp(`(`+ag+`|OPR)\\/(\\d+(\\.\\d+)?)`),RegExp(sg+`\\/(\\d+(\\.\\d+)?)`),RegExp(`FxiOS\\/`+pg),RegExp(`Konqueror[:/]?`+pg,`i`),RegExp(ng+` (\\d+(\\.\\d+)?)`),RegExp(`android\\s`+pg,`i`),RegExp(`(rv:|MSIE )`+pg),RegExp(`rv:`+pg),RegExp(ug+`; Xbox (.*?)[);]`,`i`),new RegExp(cg,`i`),new RegExp(lg,`i`),new RegExp(dg,`i`),RegExp(`(`+tg+` (\\d+)\\.(\\d+)\\.?(\\d+)?|Android)`,`i`);function mg(e,t){if(!e||typeof e!=`string`||hg(e))throw Error(t)}function hg(e){return e.trim().length===0}function gg(e){return e?.replace(/\/+$/,``)}async function _g(e,t){let n=null;for(let r=0;r<t.retryCount+1;r++){r>0&&await new Promise(e=>setTimeout(e,t.retryDelay));try{return await e()}catch(e){if(n=e,!t.retryCheck(e))throw e}}throw n}function vg(){return new Date().toISOString()}function yg(e,t){let n=setTimeout(e,t);return n?.unref&&n?.unref(),n}const bg=e=>e instanceof Error;function xg(e){return Promise.all(e.map(e=>(e??Promise.resolve()).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}var Sg=class{constructor(){this.events={},this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),()=>{this.events[e]=this.events[e].filter(e=>e!==t)}}emit(e,t){for(let n of this.events[e]||[])n(t);for(let n of this.events[`*`]||[])n(e,t)}};function Cg(){return`CompressionStream`in globalThis}async function wg(e,t=!0){try{let t=new Blob([e],{type:`text/plain`}).stream().pipeThrough(new CompressionStream(`gzip`));return await new Response(t).blob()}catch(e){return t&&console.error(`Failed to gzip compress data`,e),null}}var Tg=class extends Error{constructor(e,t){super(`HTTP error while fetching PostHog: status=`+e.status+`, reqByteLength=`+t),this.response=e,this.reqByteLength=t,this.name=`PostHogFetchHttpError`}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}},Eg=class extends Error{constructor(e){super(`Network error while fetching PostHog`,e instanceof Error?{cause:e}:{}),this.error=e,this.name=`PostHogFetchNetworkError`}};async function Dg(e){if(e instanceof Tg){let t=``;try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error(`Error while flushing PostHog`,e);return Promise.resolve()}function Og(e){return typeof e==`object`&&(e instanceof Tg||e instanceof Eg)}function kg(e){return typeof e==`object`&&e instanceof Tg&&e.status===413}var Ag=class{constructor(e,t={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new Xh,this._events=new Sg,this._isInitialized=!1,mg(e,`You must pass your PostHog project's api key.`),this.apiKey=e,this.host=gg(t.host||`https://us.i.posthog.com`),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1e3),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3e3,retryCheck:Og},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3e3,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=t.disableGeoip??!0,this.disabled=t.disabled??!1,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this._logger=eg(`[PostHog]`,this.logMsgIfDebug.bind(this)),this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts&&this._logger.warn(`evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.`),this.disableCompression=!Cg()||(t?.disableCompression??!1)}logMsgIfDebug(e){this.isDebug&&e()}wrap(e){if(this.disabled)return void this._logger.warn(`The client is disabled`);if(this._isInitialized)return e();this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Ah.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Ah.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Ah.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let e=this.on(`*`,(e,t)=>this._logger.info(e,t));this.removeDebugCallback=()=>{e(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){return{distinct_id:e.distinct_id,event:e.event,properties:{...e.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,n){this.wrap(()=>{let r={...this.buildPayload({distinct_id:e,event:`$identify`,properties:t})};this.enqueue(`identify`,r,n)})}async identifyStatelessImmediate(e,t,n){let r={...this.buildPayload({distinct_id:e,event:`$identify`,properties:t})};await this.sendImmediate(`identify`,r,n)}captureStateless(e,t,n,r){this.wrap(()=>{let i=this.buildPayload({distinct_id:e,event:t,properties:n});this.enqueue(`capture`,i,r)})}async captureStatelessImmediate(e,t,n,r){let i=this.buildPayload({distinct_id:e,event:t,properties:n});await this.sendImmediate(`capture`,i,r)}aliasStateless(e,t,n,r){this.wrap(()=>{let i=this.buildPayload({event:`$create_alias`,distinct_id:t,properties:{...n||{},distinct_id:t,alias:e}});this.enqueue(`alias`,i,r)})}async aliasStatelessImmediate(e,t,n,r){let i=this.buildPayload({event:`$create_alias`,distinct_id:t,properties:{...n||{},distinct_id:t,alias:e}});await this.sendImmediate(`alias`,i,r)}groupIdentifyStateless(e,t,n,r,i,a){this.wrap(()=>{let o=this.buildPayload({distinct_id:i||`$${e}_${t}`,event:`$groupidentify`,properties:{$group_type:e,$group_key:t,$group_set:n||{},...a||{}}});this.enqueue(`capture`,o,r)})}async getRemoteConfig(){await this._initPromise;let e=this.host;e===`https://us.i.posthog.com`?e=`https://us-assets.i.posthog.com`:e===`https://eu.i.posthog.com`&&(e=`https://eu-assets.i.posthog.com`);let t=`${e}/array/${this.apiKey}/config`,n={method:`GET`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`}};return this.fetchWithRetry(t,n,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(e=>e.json()).catch(e=>{this._logger.error(`Remote config could not be loaded`,e),this._events.emit(`error`,e)})}async getFlags(e,t={},n={},r={},i={},a=!1){await this._initPromise;let o=a?`&config=true`:``,s=`${this.host}/flags/?v=2${o}`,c={token:this.apiKey,distinct_id:e,groups:t,person_properties:n,group_properties:r,...i};this.evaluationContexts&&this.evaluationContexts.length>0&&(c.evaluation_contexts=this.evaluationContexts);let l={method:`POST`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`},body:JSON.stringify(c)};return this._logger.info(`Flags URL`,s),this.fetchWithRetry(s,l,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(e=>e.json()).then(e=>({success:!0,response:_h(e)})).catch(e=>(this._events.emit(`error`,e),{success:!1,error:this.categorizeRequestError(e)}))}categorizeRequestError(e){if(e instanceof Tg)return{type:`api_error`,statusCode:e.status};if(e instanceof Eg){let t=e.error;return t instanceof Error&&(t.name===`AbortError`||t.name===`TimeoutError`)?{type:`timeout`}:{type:`connection_error`}}return{type:`unknown_error`}}async getFeatureFlagStateless(e,t,n={},r={},i={},a){await this._initPromise;let o=await this.getFeatureFlagDetailStateless(e,t,n,r,i,a);if(o===void 0)return{response:void 0,requestId:void 0};let s=xh(o.response);return s===void 0&&(s=!1),{response:s,requestId:o.requestId}}async getFeatureFlagDetailStateless(e,t,n={},r={},i={},a){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(t,n,r,i,a,[e]);if(o!==void 0)return{response:o.flags[e],requestId:o.requestId,evaluatedAt:o.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,n={},r={},i={},a){await this._initPromise;let o=await this.getFeatureFlagPayloadsStateless(t,n,r,i,a,[e]);if(!o)return;let s=o[e];return s===void 0?null:s}async getFeatureFlagPayloadsStateless(e,t={},n={},r={},i,a){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,n,r,i,a)).payloads}async getFeatureFlagsStateless(e,t={},n={},r={},i,a){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,n,r,i,a)}async getFeatureFlagsAndPayloadsStateless(e,t={},n={},r={},i,a){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(e,t,n,r,i,a);return o?{flags:o.featureFlags,payloads:o.featureFlagPayloads,requestId:o.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(e,t={},n={},r={},i,a){await this._initPromise;let o={};(i??this.disableGeoip)&&(o.geoip_disable=!0),a&&(o.flag_keys_to_evaluate=a);let s=await this.getFlags(e,t,n,r,o);if(!s.success)return;let c=s.response;return c.errorsWhileComputingFlags&&console.error(`[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices`),c.quotaLimited?.includes(`feature_flags`)?(console.warn(`[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts`),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:c?.requestId,quotaLimited:c.quotaLimited}):c}async getSurveysStateless(){if(await this._initPromise,!0===this.disableSurveys)return this._logger.info(`Loading surveys is disabled.`),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:`GET`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`}},n=(await this.fetchWithRetry(e,t).then(e=>{if(e.status!==200||!e.json){let t=`Surveys API could not be loaded: ${e.status}`,n=Error(t);this._logger.error(n),this._events.emit(`error`,Error(t));return}return e.json()}).catch(e=>{this._logger.error(`Surveys API could not be loaded`,e),this._events.emit(`error`,e)}))?.surveys;return n&&this._logger.info(`Surveys fetched from API: `,JSON.stringify(n)),n??[]}get props(){return this._props||=this.getPersistedProperty(Ah.Props),this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(Ah.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(Ah.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}enqueue(e,t,n){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,`Library is disabled. Not sending event. To re-enable, call posthog.optIn()`);let r=this.prepareMessage(e,t,n);if(r=this.processBeforeEnqueue(r),r===null)return;let i=this.getPersistedProperty(Ah.Queue)||[];i.length>=this.maxQueueSize&&(i.shift(),this._logger.info(`Queue is full, the oldest event is dropped.`)),i.push({message:r}),this.setPersistedProperty(Ah.Queue,i),this._events.emit(e,r),i.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=yg(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(e,t,n){if(this.disabled)return void this._logger.warn(`The client is disabled`);if(this._isInitialized||await this._initPromise,this.optedOut)return void this._events.emit(e,`Library is disabled. Not sending event. To re-enable, call posthog.optIn()`);let r=this.prepareMessage(e,t,n);if(r=this.processBeforeEnqueue(r),r===null)return;let i={api_key:this.apiKey,batch:[r],sent_at:vg()};this.historicalMigration&&(i.historical_migration=!0);let a=JSON.stringify(i),o=`${this.host}/batch/`,s=this.disableCompression?null:await wg(a,this.isDebug),c={method:`POST`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`,...s!==null&&{"Content-Encoding":`gzip`}},body:s||a};try{await this.fetchWithRetry(o,c)}catch(e){this._events.emit(`error`,e)}}prepareMessage(e,t,n){let r={...t,type:e,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:vg(),uuid:n?.uuid?n.uuid:Oh()};return(n?.disableGeoip??this.disableGeoip)&&(r.properties||={},r.properties.$geoip_disable=!0),r.distinctId&&(r.distinct_id=r.distinctId,delete r.distinctId),r}clearFlushTimer(){this._flushTimer&&=(clearTimeout(this._flushTimer),void 0)}flushBackground(){this.flush().catch(async e=>{await Dg(e)})}async flush(){let e=xg([this.flushPromise]).then(()=>this._flush());return this.flushPromise=e,this.addPendingPromise(e),xg([e]).then(()=>{this.flushPromise===e&&(this.flushPromise=null)}),e}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};return e&&e!==``&&(t[`User-Agent`]=e),t}async _flush(){this.clearFlushTimer(),await this._initPromise;let e=this.getPersistedProperty(Ah.Queue)||[];if(!e.length)return;let t=[],n=e.length;for(;e.length>0&&t.length<n;){let n=e.slice(0,this.maxBatchSize),r=n.map(e=>e.message),i=async()=>{let t=(this.getPersistedProperty(Ah.Queue)||[]).slice(n.length);this.setPersistedProperty(Ah.Queue,t),e=t,await this.flushStorage()},a={api_key:this.apiKey,batch:r,sent_at:vg()};this.historicalMigration&&(a.historical_migration=!0);let o=JSON.stringify(a),s=`${this.host}/batch/`,c=this.disableCompression?null:await wg(o,this.isDebug),l={method:`POST`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`,...c!==null&&{"Content-Encoding":`gzip`}},body:c||o},u={retryCheck:e=>kg(e)?!1:Og(e)};try{await this.fetchWithRetry(s,l,u)}catch(e){if(kg(e)&&r.length>1){this.maxBatchSize=Math.max(1,Math.floor(r.length/2)),this._logger.warn(`Received 413 when sending batch of size ${r.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw e instanceof Eg||await i(),this._events.emit(`error`,e),e}await i(),t.push(...r)}this._events.emit(`flush`,t)}async fetchWithRetry(e,t,n,r){let i=t.body?t.body:``,a=-1;try{a=i instanceof Blob?i.size:Buffer.byteLength(i,`utf8`)}catch{a=i instanceof Blob?i.size:new TextEncoder().encode(i).length}return await _g(async()=>{let n=new AbortController,i=yg(()=>n.abort(),r??this.requestTimeout),o=null;try{o=await this.fetch(e,{signal:n.signal,...t})}catch(e){throw new Eg(e)}finally{clearTimeout(i)}if(t.mode!==`no-cors`&&(o.status<200||o.status>=400))throw new Tg(o,a);return o},{...this._retryOptions,...n})}async _shutdown(e=3e4){await this._initPromise;let t=!1;this.clearFlushTimer();let n=async()=>{try{for(await this.promiseQueue.join();!((this.getPersistedProperty(Ah.Queue)||[]).length===0||(await this.flush(),t)););}catch(e){if(!Og(e))throw e;await Dg(e)}},r;try{return await Promise.race([new Promise((n,i)=>{r=yg(()=>{this._logger.error(`Timed out while shutting down PostHog`),t=!0,i(`Timeout while shutting down PostHog. Some events may not have been sent.`)},e)}),n()])}finally{clearTimeout(r)}}async shutdown(e=3e4){return this.shutdownPromise?this._logger.warn(`shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup`):this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null}),this.shutdownPromise}};let jg,Mg,Ng;function Pg(e){let t=globalThis._posthogChunkIds;if(!t)return;let n=Object.keys(t);return Ng&&n.length===Mg?Ng:(Mg=n.length,Ng=n.reduce((n,r)=>{jg||={};let i=jg[r];if(i)n[i[0]]=i[1];else{let i=e(r);for(let e=i.length-1;e>=0;e--){let a=i[e]?.filename,o=t[r];if(a&&o){n[a]=o,jg[r]=[a,o];break}}}return n},{}),Ng)}var Fg=class{constructor(e,t,n=[]){this.coercers=e,this.stackParser=t,this.modifiers=n}buildFromUnknown(e,t={}){let n=t&&t.mechanism||{handled:!0,type:`generic`},r=this.buildCoercingContext(n,t,0).apply(e),i=this.buildParsingContext(t),a=this.parseStacktrace(r,i);return{$exception_list:this.convertToExceptionList(a,n),$exception_level:`error`}}async modifyFrames(e){for(let t of e)t.stacktrace&&t.stacktrace.frames&&Ih(t.stacktrace.frames)&&(t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames));return e}coerceFallback(e){return{type:`Error`,value:`Unknown error`,stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let n;e.cause!=null&&(n=this.parseStacktrace(e.cause,t));let r;return e.stack!=``&&e.stack!=null&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap)),{...e,cause:n,stack:r}}applyChunkIds(e,t){return e.map(e=>(e.filename&&t&&(e.chunk_id=t[e.filename]),e))}applyCoercers(e,t){for(let n of this.coercers)if(n.match(e))return n.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let e of this.modifiers)t=await e(t);return t}convertToExceptionList(e,t){let n={type:e.type,value:e.value,mechanism:{type:t.type??`generic`,handled:t.handled??!0,synthetic:e.synthetic??!1}};e.stack&&(n.stacktrace={type:`raw`,frames:e.stack});let r=[n];return e.cause!=null&&r.push(...this.convertToExceptionList(e.cause,{...t,handled:!0})),r}buildParsingContext(e){return{chunkIdMap:Pg(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,n=0){let r=(n,r)=>{if(r<=4){let i=this.buildCoercingContext(e,t,r);return this.applyCoercers(n,i)}};return{...t,syntheticException:n==0?t.syntheticException:void 0,mechanism:e,apply:e=>r(e,n),next:e=>r(e,n+1)}}};const Ig=/^\s*[-]{4,}$/,Lg=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,Rg=(e,t)=>{let n=e.match(Lg);if(n){let e,r,i,a,o;if(n[1]){i=n[1];let t=i.lastIndexOf(`.`);if(i[t-1]===`.`&&t--,t>0){e=i.slice(0,t),r=i.slice(t+1);let n=e.indexOf(`.Module`);n>0&&(i=i.slice(n+1),e=e.slice(0,n))}a=void 0}r&&(a=e,o=r),r===`<anonymous>`&&(o=void 0,i=void 0),i===void 0&&(o||=`?`,i=a?`${a}.${o}`:o);let s=n[2]?.startsWith(`file://`)?n[2].slice(7):n[2],c=n[5]===`native`;return s?.match(/\/[A-Z]:/)&&(s=s.slice(1)),!s&&n[5]&&!c&&(s=n[5]),{filename:s?decodeURI(s):void 0,module:void 0,function:i,lineno:Bg(n[3]),colno:Bg(n[4]),in_app:zg(s||``,c),platform:t}}if(e.match(Ig))return{filename:e,platform:t}};function zg(e,t=!1){return!(t||e&&!e.startsWith(`/`)&&!e.match(/^[A-Z]:/)&&!e.startsWith(`.`)&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes(`node_modules/`)}function Bg(e){return parseInt(e||``,10)||void 0}const Vg=/\(error: (.*)\)/;function Hg(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,50).map(e=>({...e,filename:e.filename||Ug(t).filename,function:e.function||`?`}))}function Ug(e){return e[e.length-1]||{}}function Wg(e,...t){return(n,r=0)=>{let i=[],a=n.split(`
|
|
35
|
-
`);for(let n=r;n<a.length;n++){let r=a[n];if(r.length>1024)continue;let o=Vg.test(r)?r.replace(Vg,`$1`):r;if(!o.match(/\S*Error: /)){for(let n of t){let t=n(o,e);if(t){i.push(t);break}}if(i.length>=50)break}}return Hg(i)}}var Gg=class{match(e){return Hh(e)}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let n=e.message;return n.error&&typeof n.error.message==`string`?String(n.error.message):String(n)}getStack(e){return e.stacktrace||e.stack||void 0}};const Kg=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;var qg=class{match(e){return typeof e==`string`}coerce(e,t){let[n,r]=this.getInfos(e);return{type:n??`Error`,value:r??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t=`Error`,n=e,r=e.match(Kg);return r&&(t=r[1],n=r[2]),[t,n]}};const Jg=[`fatal`,`error`,`warning`,`log`,`info`,`debug`];function Yg(e,t=40){let n=Object.keys(e);if(n.sort(),!n.length)return`[object has no keys]`;for(let e=n.length;e>0;e--){let r=n.slice(0,e).join(`, `);if(!(r.length>t))return e===n.length||r.length<=t?r:`${r.slice(0,t)}...`}return``}var Xg=class{match(e){return typeof e==`object`&&!!e}coerce(e,t){let n=this.getErrorPropertyFromObject(e);return n?t.apply(n):{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:`error`,synthetic:!0}}getType(e){return Gh(e)?e.constructor.name:`Error`}getValue(e){if(`name`in e&&typeof e.name==`string`){let t=`'${e.name}' captured as exception`;return`message`in e&&typeof e.message==`string`&&(t+=` with message: '${e.message}'`),t}if(`message`in e&&typeof e.message==`string`)return e.message;let t=this.getObjectClassName(e),n=Yg(e);return`${t&&t!==`Object`?`'${t}'`:`Object`} captured as exception with keys: ${n}`}isSeverityLevel(e){return zh(e)&&!Bh(e)&&Jg.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];if(bg(n))return n}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch{return}}},Zg=class{match(e){return Gh(e)}coerce(e,t){let n=e.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${Yg(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}},Qg=class{match(e){return Uh(e)}coerce(e,t){return{type:`Error`,value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}},$g=class{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(t!==void 0)return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){for(;this._cache.size>=this._maxSize;){let e=this._cache.keys().next().value;e&&this._cache.delete(e)}}};const e_=new $g(25),t_=new $g(20);async function n_(e){let t={};for(let n=e.length-1;n>=0;n--){let r=e[n],i=r?.filename;!r||typeof i!=`string`||typeof r.lineno!=`number`||s_(i)||c_(r)||(t[i]||(t[i]=[]),t[i].push(r.lineno))}let n=Object.keys(t);if(n.length==0)return e;let r=[];for(let e of n){if(t_.get(e))continue;let n=t[e];if(!n)continue;n.sort((e,t)=>e-t);let i=u_(n);if(i.every(t=>l_(e,t)))continue;let a=m_(e_,e,{});r.push(r_(e,i,a))}return await Promise.all(r).catch(()=>{}),e&&e.length>0&&i_(e,e_),e_.reduce(),e}function r_(e,t,n){return new Promise(r=>{let i=Je(e),a=Ye({input:i});function o(){i.destroy(),r()}let s=0,c=0,l=t[c];if(l===void 0)return void o();let u=l[0],d=l[1];function f(){t_.set(e,1),a.close(),a.removeAllListeners(),o()}i.on(`error`,f),a.on(`error`,f),a.on(`close`,o),a.on(`line`,e=>{if(s++,!(s<u)&&(n[s]=h_(e,0),s>=d)){if(c===t.length-1){a.close(),a.removeAllListeners();return}c++;let e=t[c];if(e===void 0){a.close(),a.removeAllListeners();return}u=e[0],d=e[1]}})})}function i_(e,t){for(let n of e)if(n.filename&&n.context_line===void 0&&typeof n.lineno==`number`){let e=t.get(n.filename);if(e===void 0)continue;a_(n.lineno,n,e)}}function a_(e,t,n){if(t.lineno===void 0||n===void 0)return;t.pre_context=[];for(let r=f_(e);r<e;r++){let e=n[r];if(e===void 0)return void o_(t);t.pre_context.push(e)}if(n[e]===void 0)return void o_(t);t.context_line=n[e];let r=p_(e);t.post_context=[];for(let i=e+1;i<=r;i++){let e=n[i];if(e===void 0)break;t.post_context.push(e)}}function o_(e){delete e.pre_context,delete e.context_line,delete e.post_context}function s_(e){return e.startsWith(`node:`)||e.endsWith(`.min.js`)||e.endsWith(`.min.cjs`)||e.endsWith(`.min.mjs`)||e.startsWith(`data:`)}function c_(e){return e.lineno!==void 0&&e.lineno>1e4||e.colno!==void 0&&e.colno>1e3}function l_(e,t){let n=e_.get(e);if(n===void 0)return!1;for(let e=t[0];e<=t[1];e++)if(n[e]===void 0)return!1;return!0}function u_(e){if(!e.length)return[];let t=0,n=e[0];if(typeof n!=`number`)return[];let r=d_(n),i=[];for(;;){if(t===e.length-1){i.push(r);break}let n=e[t+1];if(typeof n!=`number`)break;n<=r[1]?r[1]=n+7:(i.push(r),r=d_(n)),t++}return i}function d_(e){return[f_(e),p_(e)]}function f_(e){return Math.max(1,e-7)}function p_(e){return e+7}function m_(e,t,n){let r=e.get(t);return r===void 0?(e.set(t,n),n):r}function h_(e,t){let n=e,r=n.length;if(r<=150)return n;t>r&&(t=r);let i=Math.max(t-60,0);i<5&&(i=0);let a=Math.min(i+140,r);return a>r-5&&(a=r),a===r&&(i=Math.max(a-140,0)),n=n.slice(i,a),i>0&&(n=`...${n}`),a<r&&(n+=`...`),n}function g_(e,t){let n=!1;return Object.assign(r=>{let i=global.process.listeners(`uncaughtException`).filter(e=>e.name!==`domainUncaughtExceptionClear`&&!0!==e._posthogErrorHandler).length===0;e(r,{mechanism:{type:`onuncaughtexception`,handled:!1}}),!n&&i&&(n=!0,t(r))},{_posthogErrorHandler:!0})}function __(e,t){globalThis.process?.on(`uncaughtException`,g_(e,t))}function v_(e){globalThis.process?.on(`unhandledRejection`,t=>e(t,{mechanism:{type:`onunhandledrejection`,handled:!1}}))}var y_=class e{constructor(e,t,n){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new Yh({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return Lh(e)&&`__posthog_previously_captured_error`in e&&!0===e.__posthog_previously_captured_error}static async buildEventMessage(e,t,n,r){let i={...r};n||(i.$process_person_profile=!1);let a=this.errorPropertiesBuilder.buildFromUnknown(e,t);return a.$exception_list=await this.errorPropertiesBuilder.modifyFrames(a.$exception_list),{event:`$exception`,distinctId:n||Oh(),properties:{...a,...i},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(__(this.onException.bind(this),this.onFatalError.bind(this)),v_(this.onException.bind(this)))}onException(t,n){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let r=await e.buildEventMessage(t,n),i=r.properties?.$exception_list[0]?.type??`Exception`;return this._rateLimiter.consumeRateLimit(i)?void this._logger.info(`Skipping exception capture because of client rate limiting.`,{exception:i}):this.client.capture(r)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(2e3),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};const b_={ERRORS_WHILE_COMPUTING:`errors_while_computing_flags`,FLAG_MISSING:`flag_missing`,QUOTA_LIMITED:`quota_limited`,UNKNOWN_ERROR:`unknown_error`};async function x_(e){let t=globalThis.crypto?.subtle;if(!t)throw Error(`SubtleCrypto API not available`);let n=await t.digest(`SHA-1`,new TextEncoder().encode(e));return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}const S_=[`is_not`];var C_=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name=`ClientError`,this.message=t,Object.setPrototypeOf(this,e.prototype)}},Q=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},w_=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},T_=class{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:n,timeout:r,host:i,customHeaders:a,...o}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=r,this.projectApiKey=n,this.host=i,this.poller=void 0,this.fetch=o.fetch||fetch,this.onError=o.onError,this.customHeaders=a,this.onLoad=o.onLoad,this.cacheProvider=o.cacheProvider,this.strictLocalEvaluation=o.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){this.debugMode&&e()}createEvaluationContext(e,t={},n={},r={},i={}){return{distinctId:e,groups:t,personProperties:n,groupProperties:r,evaluationCache:i}}async getFeatureFlag(e,t,n={},r={},i={}){await this.loadFeatureFlags();let a,o;if(!this.loadedSuccessfullyOnce)return a;if(o=this.featureFlagsByKey[e],o!==void 0){let s=this.createEvaluationContext(t,n,r,i);try{a=(await this.computeFlagAndPayloadLocally(o,s)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${a}`))}catch(t){t instanceof w_||t instanceof Q?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e}: ${t}`))}}return a}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let n={},r={},i=this.featureFlags.length==0,a=t?t.map(e=>this.featureFlagsByKey[e]).filter(Boolean):this.featureFlags,o={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(a.map(async e=>{try{let{value:t,payload:i}=await this.computeFlagAndPayloadLocally(e,o);n[e.key]=t,i&&(r[e.key]=i)}catch(t){t instanceof w_||t instanceof Q?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e.key}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e.key}: ${t}`)),i=!0}})),{response:n,payloads:r,fallbackToFlags:i}}async computeFlagAndPayloadLocally(e,t,n={}){let{matchValue:r,skipLoadCheck:i=!1}=n;if(i||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let a;a=r===void 0?await this.computeFlagValueLocally(e,t):r;let o=this.getFeatureFlagPayload(e.key,a);return{value:a,payload:o}}async computeFlagValueLocally(e,t){let{distinctId:n,groups:r,personProperties:i,groupProperties:a}=t;if(e.ensure_experience_continuity)throw new Q(`Flag has experience continuity enabled`);if(!e.active)return!1;let o=(e.filters||{}).aggregation_group_type_index;if(o!=null){let n=this.groupTypeMapping[String(o)];if(!n)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${o} for feature flag ${e.key}`)),new Q(`Flag has unknown group type index`);if(!(n in r))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;e.bucketing_identifier===`device_id`&&(i?.$device_id===void 0||i?.$device_id===null||i?.$device_id===``)&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let s=a[n];return await this.matchFeatureFlagProperties(e,r[n],s,t)}{let r=this.getBucketingValueForFlag(e,n,i);if(r===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new Q(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,r,i,t)}}getBucketingValueForFlag(e,t,n){if(e.filters?.aggregation_group_type_index!=null)return t;if(e.bucketing_identifier===`device_id`){let e=n?.$device_id;return e==null||e===``?void 0:e}return t}getFeatureFlagPayload(e,t){let n=null;if(!1!==t&&t!=null&&(typeof t==`boolean`?n=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null:typeof t==`string`&&(n=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null),n!=null)){if(typeof n==`object`)return n;if(typeof n==`string`)try{return JSON.parse(n)}catch{}return n}return null}async evaluateFlagDependency(e,t,n){let{evaluationCache:r}=n,i=e.key;if(!this.featureFlagsByKey)throw new Q(`Feature flags not available for dependency evaluation`);if(!(`dependency_chain`in e))throw new Q(`Flag dependency property for '${i}' is missing required 'dependency_chain' field`);let a=e.dependency_chain;if(!Array.isArray(a))throw new Q(`Flag dependency property for '${i}' has an invalid 'dependency_chain' (expected array, got ${typeof a})`);if(a.length===0)throw new Q(`Circular dependency detected for flag '${i}' (empty dependency chain)`);for(let e of a){if(!(e in r)){let t=this.featureFlagsByKey[e];if(t)if(t.active)try{r[e]=await this.computeFlagValueLocally(t,n)}catch(t){throw new Q(`Error evaluating flag dependency '${e}' for flag '${i}': ${t}`)}else r[e]=!1;else throw new Q(`Missing flag dependency '${e}' for flag '${i}'`)}if(r[e]==null)throw new Q(`Dependency '${e}' could not be evaluated`)}let o=r[i];return this.flagEvaluatesToExpectedValue(e.value,o)}flagEvaluatesToExpectedValue(e,t){return typeof e==`boolean`?e===t||typeof t==`string`&&t!==``&&!0===e:typeof e==`string`?t===e:!1}async matchFeatureFlagProperties(e,t,n,r){let i=e.filters||{},a=i.groups||[],o=!1,s;for(let c of a)try{if(await this.isConditionMatch(e,t,c,n,r)){let n=c.variant,r=i.multivariate?.variants||[];s=n&&r.some(e=>e.key===n)?n:await this.getMatchingVariant(e,t)||!0;break}}catch(e){if(e instanceof w_)throw e;if(e instanceof Q)o=!0;else throw e}if(s!==void 0)return s;if(o)throw new Q(`Can't determine if feature flag is enabled or not with given properties`);return!1}async isConditionMatch(e,t,n,r,i){let a=n.rollout_percentage,o=e=>{this.logMsgIfDebug(()=>console.warn(e))};if((n.properties||[]).length>0){for(let e of n.properties){let t=e.type,n=!1;if(n=t===`cohort`?k_(e,r,this.cohorts,this.debugMode):t===`flag`?await this.evaluateFlagDependency(e,r,i):D_(e,r,o),!n)return!1}if(a==null)return!0}return!(a!=null&&await E_(e.key,t)>a/100)}async getMatchingVariant(e,t){let n=await E_(e.key,t,`variant`),r=this.variantLookupTable(e).find(e=>n>=e.valueMin&&n<e.valueMax);if(r)return r.key}variantLookupTable(e){let t=[],n=0,r=0;return((e.filters||{}).multivariate?.variants||[]).forEach(e=>{r=n+e.rollout_percentage/100,t.push({valueMin:n,valueMax:r,key:e.key}),n=r}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((e,t)=>(e[t.key]=t,e),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter(e=>e.ensure_experience_continuity);t.length>0&&console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map(e=>e.key).join(`, `)}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();return t?(this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0):!1}catch(e){return this.onError?.(Error(`Failed to load from cache: ${e}`)),!1}}async loadFeatureFlags(e=!1){if(!(this.loadedSuccessfullyOnce&&!e))return!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping fetch, in backoff period`)):(this.loadingPromise||=this._loadFeatureFlags().catch(e=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${e}`))).finally(()=>{this.loadingPromise=void 0}),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){return this.shouldBeginExponentialBackoff?Math.min(6e4,this.pollingInterval*2**this.backOffCount):this.pollingInterval}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&=(clearTimeout(this.poller),void 0),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(e){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${e}`))}if(!e&&(await this.loadFromCache(`Loaded flags from cache (skipped fetch)`)||this.loadedSuccessfullyOnce))return;let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Flags not modified (304), using cached data`)),this.flagsEtag=t.headers?.get(`ETag`)??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new C_(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn(`[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts`),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new C_(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new C_(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let n=await t.json()??{};if(!(`flags`in n))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(n)}`));this.flagsEtag=t.headers?.get(`ETag`)??void 0;let r={flags:n.flags??[],groupTypeMapping:n.group_type_mapping||{},cohorts:n.cohorts||{}};if(this.updateFlagState(r),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(r)}catch(e){this.onError?.(Error(`Failed to store in cache: ${e}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(r.flags);break}default:return}}catch(e){e instanceof C_&&this.onError?.(e)}}getPersonalApiKeyRequestOptions(e=`GET`,t){let n={...this.customHeaders,"Content-Type":`application/json`,Authorization:`Bearer ${this.personalApiKey}`};return t&&(n[`If-None-Match`]=t),{method:e,headers:n}}_requestFeatureFlagDefinitions(){let e=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions(`GET`,this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout==`number`){let e=new AbortController;n=yg(()=>{e.abort()},this.timeout),t.signal=e.signal}try{let n=this.fetch;return n(e,t)}finally{clearTimeout(n)}}async stopPoller(e=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();t instanceof Promise&&await Promise.race([t,new Promise((t,n)=>setTimeout(()=>n(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(e){this.onError?.(Error(`Error during cache shutdown: ${e}`))}}};async function E_(e,t,n=``){let r=await x_(`${e}.${t}${n}`);return parseInt(r.slice(0,15),16)/0x1000000000000000}function D_(e,t,n){let r=e.key,i=e.value,a=e.operator||`exact`;if(r in t){if(a===`is_not_set`)throw new Q(`Operator is_not_set is not supported`)}else throw new Q(`Property ${r} not found in propertyValues`);let o=t[r];if(o==null&&!S_.includes(a))return n&&n(`Property ${r} cannot have a value of null/undefined with the ${a} operator`),!1;function s(e,t){return Array.isArray(e)?e.map(e=>String(e).toLowerCase()).includes(String(t).toLowerCase()):String(e).toLowerCase()===String(t).toLowerCase()}function c(e,t,n){if(n===`gt`)return e>t;if(n===`gte`)return e>=t;if(n===`lt`)return e<t;if(n===`lte`)return e<=t;throw Error(`Invalid operator: ${n}`)}switch(a){case`exact`:return s(i,o);case`is_not`:return!s(i,o);case`is_set`:return r in t;case`icontains`:return String(o).toLowerCase().includes(String(i).toLowerCase());case`not_icontains`:return!String(o).toLowerCase().includes(String(i).toLowerCase());case`regex`:return j_(String(i))&&String(o).match(String(i))!==null;case`not_regex`:return j_(String(i))&&String(o).match(String(i))===null;case`gt`:case`gte`:case`lt`:case`lte`:{let e=typeof i==`number`?i:null;if(typeof i==`string`)try{e=parseFloat(i)}catch{}return e==null||o==null?c(String(o),String(i),a):typeof o==`string`?c(o,String(i),a):c(o,e,a)}case`is_date_after`:case`is_date_before`:{if(typeof i==`boolean`)throw new Q(`Date operations cannot be performed on boolean values`);let e=R_(String(i));if(e??=L_(i),e==null)throw new Q(`Invalid date: ${i}`);let t=L_(o);return[`is_date_before`].includes(a)?t<e:t>e}case`semver_eq`:return N_(M_(String(o)),M_(String(i)))===0;case`semver_neq`:return N_(M_(String(o)),M_(String(i)))!==0;case`semver_gt`:return N_(M_(String(o)),M_(String(i)))>0;case`semver_gte`:return N_(M_(String(o)),M_(String(i)))>=0;case`semver_lt`:return N_(M_(String(o)),M_(String(i)))<0;case`semver_lte`:return N_(M_(String(o)),M_(String(i)))<=0;case`semver_tilde`:{let e=M_(String(o)),{lower:t,upper:n}=P_(String(i));return N_(e,t)>=0&&N_(e,n)<0}case`semver_caret`:{let e=M_(String(o)),{lower:t,upper:n}=F_(String(i));return N_(e,t)>=0&&N_(e,n)<0}case`semver_wildcard`:{let e=M_(String(o)),{lower:t,upper:n}=I_(String(i));return N_(e,t)>=0&&N_(e,n)<0}default:throw new Q(`Unknown operator: ${a}`)}}function O_(e,t){if(!(e in t))throw new w_(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function k_(e,t,n,r=!1){let i=String(e.value);O_(i,n);let a=n[i];return A_(a,t,n,r)}function A_(e,t,n,r=!1){if(!e)return!0;let i=e.type,a=e.values;if(!a||a.length===0)return!0;let o=!1;if(`values`in a[0]){for(let e of a)try{let a=A_(e,t,n,r);if(i===`AND`){if(!a)return!1}else if(a)return!0}catch(t){if(t instanceof w_)throw t;if(t instanceof Q)r&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new Q(`Can't match cohort without a given cohort property value`);return i===`AND`}for(let e of a)try{let a;if(e.type===`cohort`)a=k_(e,t,n,r);else if(e.type===`flag`){r&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${e.key||`unknown`}'`);continue}else a=D_(e,t);let o=e.negation||!1;if(i===`AND`){if(!a&&!o||a&&o)return!1}else if(a&&!o||!a&&o)return!0}catch(t){if(t instanceof w_)throw t;if(t instanceof Q)r&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new Q(`can't match cohort without a given cohort property value`);return i===`AND`}function j_(e){try{return new RegExp(e),!0}catch{return!1}}function M_(e){let t=String(e).trim().replace(/^[vV]/,``).split(`-`)[0].split(`+`)[0];if(!t||t.startsWith(`.`))throw new Q(`Invalid semver: ${e}`);let n=t.split(`.`),r=t=>{if(t===void 0||t===``)return 0;if(!/^\d+$/.test(t))throw new Q(`Invalid semver: ${e}`);return parseInt(t,10)};return[r(n[0]),r(n[1]),r(n[2])]}function N_(e,t){for(let n=0;n<3;n++){if(e[n]<t[n])return-1;if(e[n]>t[n])return 1}return 0}function P_(e){let t=M_(e);return{lower:[t[0],t[1],t[2]],upper:[t[0],t[1]+1,0]}}function F_(e){let[t,n,r]=M_(e),i=[t,n,r],a;return a=t>0?[t+1,0,0]:n>0?[0,n+1,0]:[0,0,r+1],{lower:i,upper:a}}function I_(e){let t=String(e).trim().replace(/^[vV]/,``).replace(/\.\*$/,``).replace(/\*$/,``);if(!t)throw new Q(`Invalid wildcard semver: ${e}`);let n=t.split(`.`),r=parseInt(n[0],10);if(isNaN(r))throw new Q(`Invalid wildcard semver: ${e}`);let i,a;if(n.length===1)i=[r,0,0],a=[r+1,0,0];else{let t=parseInt(n[1],10);if(isNaN(t))throw new Q(`Invalid wildcard semver: ${e}`);i=[r,t,0],a=[r,t+1,0]}return{lower:i,upper:a}}function L_(e){if(e instanceof Date)return e;if(typeof e==`string`||typeof e==`number`){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new Q(`${e} is in an invalid date format`)}throw new Q(`The date provided ${e} must be a string, number, or date object`)}function R_(e){let t=e.match(/^-?(?<number>[0-9]+)(?<interval>[a-z])$/),n=new Date(new Date().toISOString());if(!t)return null;{if(!t.groups)return null;let e=parseInt(t.groups.number);if(e>=1e4)return null;let r=t.groups.interval;if(r==`h`)n.setUTCHours(n.getUTCHours()-e);else if(r==`d`)n.setUTCDate(n.getUTCDate()-e);else if(r==`w`)n.setUTCDate(n.getUTCDate()-7*e);else if(r==`m`)n.setUTCMonth(n.getUTCMonth()-e);else{if(r!=`y`)return null;n.setUTCFullYear(n.getUTCFullYear()-e)}return n}}var z_=class{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=t===null?void 0:t}constructor(){this._memoryStorage={}}};const B_=3e4;var V_=class extends Ag{constructor(e,t={}){if(super(e,t),this._memoryStorage=new z_,this.options=t,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof t.featureFlagsPollingInterval==`number`?Math.max(t.featureFlagsPollingInterval,100):B_,typeof t.waitUntilDebounceMs==`number`&&(this.options.waitUntilDebounceMs=Math.max(t.waitUntilDebounceMs,0)),typeof t.waitUntilMaxWaitMs==`number`&&(this.options.waitUntilMaxWaitMs=Math.max(t.waitUntilMaxWaitMs,0)),t.personalApiKey){if(t.personalApiKey.includes(`phc_`))throw Error(`Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.`);!1!==t.enableLocalEvaluation&&(this.featureFlagsPoller=new T_({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:t.personalApiKey,projectApiKey:e,timeout:t.requestTimeout??1e4,host:this.host,fetch:t.fetch,onError:e=>{this._events.emit(`error`,e)},onLoad:e=>{this._events.emit(`localEvaluationFlagsLoaded`,e)},customHeaders:this.getCustomHeaders(),cacheProvider:t.flagDefinitionCacheProvider,strictLocalEvaluation:t.strictLocalEvaluation}))}this.errorTracking=new y_(this,t,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=t.maxCacheSize||5e4}enqueue(e,t,n){super.enqueue(e,t,n),this.scheduleDebouncedFlush()}async flush(){let e=super.flush(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e||this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let t,n=new Promise(e=>{t=e});try{e(n)}catch{return}this._waitUntilCycle={resolve:t,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt>=(this.options.waitUntilMaxWaitMs??500);if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),t)return void this.resolveWaitUntilFlush();let n=this.options.waitUntilDebounceMs??50;this._waitUntilCycle.timer=yg(()=>{this.resolveWaitUntilFlush()},n)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;return e&&(clearTimeout(e.timer),this._waitUntilCycle=void 0),e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await super.flush()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getLibraryVersion(){return`5.28.5`}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}capture(e){typeof e==`string`&&this._logger.warn(`Called capture() with a string as the first argument when an object was expected.`),e.event===`$exception`&&!e._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(e).then(({distinctId:e,event:t,properties:n,options:r})=>super.captureStateless(e,t,n,{timestamp:r.timestamp,disableGeoip:r.disableGeoip,uuid:r.uuid})).catch(e=>{e&&console.error(e)}))}async captureImmediate(e){return typeof e==`string`&&this._logger.warn(`Called captureImmediate() with a string as the first argument when an object was expected.`),e.event===`$exception`&&!e._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(e).then(({distinctId:e,event:t,properties:n,options:r})=>super.captureStatelessImmediate(e,t,n,{timestamp:r.timestamp,disableGeoip:r.disableGeoip,uuid:r.uuid})).catch(e=>{e&&console.error(e)}))}identify({distinctId:e,properties:t={},disableGeoip:n}){let{$set:r,$set_once:i,$anon_distinct_id:a,...o}=t,s={$set:r||o,$set_once:i||{},$anon_distinct_id:a??void 0};super.identifyStateless(e,s,{disableGeoip:n})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:n}){let{$set:r,$set_once:i,$anon_distinct_id:a,...o}=t,s={$set:r||o,$set_once:i||{},$anon_distinct_id:a??void 0};super.identifyStatelessImmediate(e,s,{disableGeoip:n})}alias(e){super.aliasStateless(e.alias,e.distinctId,void 0,{disableGeoip:e.disableGeoip})}async aliasImmediate(e){await super.aliasStatelessImmediate(e.alias,e.distinctId,void 0,{disableGeoip:e.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=B_){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(t=>{let n=setTimeout(()=>{r(),t(!1)},e),r=this._events.on(`localEvaluationFlagsLoaded`,e=>{clearTimeout(n),r(),t(e>0)})})}_resolveDistinctId(e,t){return typeof e==`string`?{distinctId:e,options:t}:{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,n={},r){let i=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&e in this._flagOverrides){let t=this._flagOverrides[e];if(t===void 0)return;let n=this._payloadOverrides?.[e];return{key:e,enabled:!1!==t,variant:typeof t==`string`?t:void 0,payload:n}}let{groups:a,disableGeoip:o}=n,{onlyEvaluateLocally:s,personProperties:c,groupProperties:l}=n,u=this.addLocalPersonAndGroupProperties(t,a,c,l);c=u.allPersonProperties,l=u.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(t,a,c,l);s??=this.options.strictLocalEvaluation??!1;let f,p=!1,m,h,g,_,v,y;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let t=this.featureFlagsPoller?.featureFlagsByKey[e];if(t)try{let n=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(t,d,{matchValue:r});if(n){p=!0;let r=n.value;_=t.id,y=`Evaluated locally`,f={key:e,enabled:!1!==r,variant:typeof r==`string`?r:void 0,payload:n.payload??void 0}}}catch(t){if(t instanceof w_||t instanceof Q)this._logger?.info(`${t.name} when computing flag locally: ${e}: ${t.message}`);else throw t}}if(!p&&!s){let t=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,o,[e]);if(t===void 0)g=b_.UNKNOWN_ERROR;else{m=t.requestId,h=t.evaluatedAt;let n=[];t.errorsWhileComputingFlags&&n.push(b_.ERRORS_WHILE_COMPUTING),t.quotaLimited?.includes(`feature_flags`)&&n.push(b_.QUOTA_LIMITED);let r=t.flags[e];if(r===void 0)n.push(b_.FLAG_MISSING);else{_=r.metadata?.id,v=r.metadata?.version,y=r.reason?.description??r.reason?.code;let t;if(r.metadata?.payload!==void 0)try{t=JSON.parse(r.metadata.payload)}catch{t=r.metadata.payload}f={key:e,enabled:r.enabled,variant:r.variant,payload:t}}n.length>0&&(g=n.join(`,`))}}if(i){let n=f===void 0?void 0:!1===f.enabled?!1:f.variant??!0,r=`${e}_${n}`;if(!(t in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[t].includes(r)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[t])?this.distinctIdHasSentFlagCalls[t].push(r):this.distinctIdHasSentFlagCalls[t]=[r];let i={$feature_flag:e,$feature_flag_response:n,$feature_flag_id:_,$feature_flag_version:v,$feature_flag_reason:y,locally_evaluated:p,[`$feature/${e}`]:n,$feature_flag_request_id:m,$feature_flag_evaluated_at:p?Date.now():h};if(p&&this.featureFlagsPoller){let e=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();e!==void 0&&(i.$feature_flag_definitions_loaded_at=e)}g&&(i.$feature_flag_error=g),this.capture({distinctId:t,event:`$feature_flag_called`,properties:i,groups:a,disableGeoip:o})}}return f!==void 0&&this._payloadOverrides!==void 0&&e in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[e]}),f}async getFeatureFlag(e,t,n){let r=await this._getFeatureFlagResult(e,t,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(r!==void 0)return!1===r.enabled?!1:r.variant??!0}async getFeatureFlagPayload(e,t,n,r){if(this._payloadOverrides!==void 0&&e in this._payloadOverrides)return this._payloadOverrides[e];let i=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:!1},n);if(i!==void 0)return i.payload??null}async getFeatureFlagResult(e,t,n){let{distinctId:r,options:i}=this._resolveDistinctId(t,n);return r?this._getFeatureFlagResult(e,r,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn(`[PostHog] distinctId is required — pass it explicitly or use withContext()`)}async getRemoteConfigPayload(e){if(!this.options.personalApiKey)throw Error(`Personal API key is required for remote config payload decryption`);let t=await this._requestRemoteConfigPayload(e);if(!t)return;let n=await t.json();if(typeof n==`string`)try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(e,t,n){let r=await this.getFeatureFlag(e,t,n);if(r!==void 0)return!!r||!1}async getAllFlags(e,t){let{distinctId:n,options:r}=this._resolveDistinctId(e,t);return n?(await this.getAllFlagsAndPayloads(n,r)).featureFlags||{}:(this._logger.warn(`[PostHog] distinctId is required to get feature flags — pass it explicitly or use withContext()`),{})}async getAllFlagsAndPayloads(e,t){let{distinctId:n,options:r}=this._resolveDistinctId(e,t);if(!n)return this._logger.warn(`[PostHog] distinctId is required to get feature flags and payloads — pass it explicitly or use withContext()`),{featureFlags:{},featureFlagPayloads:{}};let{groups:i,disableGeoip:a,flagKeys:o}=r||{},{onlyEvaluateLocally:s,personProperties:c,groupProperties:l}=r||{},u=this.addLocalPersonAndGroupProperties(n,i,c,l);c=u.allPersonProperties,l=u.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,i,c,l);s??=this.options.strictLocalEvaluation??!1;let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,o),p={},m={},h=!0;if(f&&(p=f.response,m=f.payloads,h=f.fallbackToFlags),h&&!s){let e=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,o);p={...p,...e.flags||{}},m={...m,...e.payloads||{}}}return this._flagOverrides!==void 0&&(p={...p,...this._flagOverrides}),this._payloadOverrides!==void 0&&(m={...m,...this._payloadOverrides}),{featureFlags:p,featureFlagPayloads:m}}groupIdentify({groupType:e,groupKey:t,properties:n,distinctId:r,disableGeoip:i}){super.groupIdentifyStateless(e,t,n,{disableGeoip:i},r)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=e=>Object.fromEntries(e.map(e=>[e,!0]));if(!1===e){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){`flags`in e&&(!1===e.flags?this._flagOverrides=void 0:Array.isArray(e.flags)?this._flagOverrides=t(e.flags):e.flags!==void 0&&(this._flagOverrides={...e.flags})),`payloads`in e&&(!1===e.payloads?this._payloadOverrides=void 0:e.payloads!==void 0&&(this._payloadOverrides={...e.payloads}));return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;if(`flags`in t){let e=t.flags;if(!1===e||Array.isArray(e)||typeof e==`object`&&e)return!0}if(`payloads`in t){let e=t.payloads;if(!1===e||typeof e==`object`&&e)return!0}return!1}withContext(e,t,n){return this.context?this.context.run(e,t,n):t()}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown();try{return await super._shutdown(e)}finally{t?.()}}async _requestRemoteConfigPayload(e){if(!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:`GET`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`,Authorization:`Bearer ${this.options.personalApiKey}`}},r=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout==`number`){let e=new AbortController;r=yg(()=>{e.abort()},this.options.requestTimeout),n.signal=e.signal}try{return await this.fetch(t,n)}catch(e){this._events.emit(`error`,e);return}finally{r&&clearTimeout(r)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let n={},r={};for(let[i,a]of Object.entries(e))if(Kh(a)&&t&&i in t){let e={};for(let[t,n]of Object.entries(a))e[String(t)]=String(n);r[String(i)]=e}else n[String(i)]=String(a);return{personProperties:n,groupProperties:r}}async getFeatureFlagsForEvent(e,t,n,r){let i=r?.personProperties||{},a=r?.groupProperties||{},o=r?.flagKeys;if(r?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let r={};for(let[e,n]of Object.entries(t||{}))r[e]=String(n);return await this.getAllFlags(e,{groups:r,personProperties:i,groupProperties:a,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:o})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let r={};for(let[e,n]of Object.entries(t||{}))r[e]=String(n);return await this.getAllFlags(e,{groups:r,personProperties:i,groupProperties:a,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:o})}return(await super.getFeatureFlagsStateless(e,t,i,a,n)).flags}addLocalPersonAndGroupProperties(e,t,n,r){let i={distinct_id:e,...n||{}},a={};if(t)for(let e of Object.keys(t))a[e]={$group_key:t[e],...r?.[e]||{}};return{allPersonProperties:i,allGroupProperties:a}}createFeatureFlagEvaluationContext(e,t,n,r){return{distinctId:e,groups:t||{},personProperties:n||{},groupProperties:r||{},evaluationCache:{}}}captureException(e,t,n,r){if(!y_.isPreviouslyCapturedError(e)){let i=Error(`PostHog syntheticException`);this.addPendingPromise(y_.buildEventMessage(e,{syntheticException:i},t,n).then(e=>this.capture({...e,uuid:r})))}}async captureExceptionImmediate(e,t,n){if(!y_.isPreviouslyCapturedError(e)){let r=Error(`PostHog syntheticException`);return this.addPendingPromise(y_.buildEventMessage(e,{syntheticException:r},t,n).then(e=>this.captureImmediate(e)))}}async prepareEventMessage(e){let{distinctId:t,event:n,properties:r,groups:i,sendFeatureFlags:a,timestamp:o,disableGeoip:s,uuid:c}=e,l=this.context?.get(),u=t||l?.distinctId,d={...this.props,...l?.properties||{},...r||{}};u||(u=Oh(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:u,event:n,properties:d,groups:i,sendFeatureFlags:a,timestamp:o,disableGeoip:s,uuid:c});if(!f)return Promise.reject(null);let p=await Promise.resolve().then(async()=>{if(a){let e=typeof a==`object`?a:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,i,s,e)}return f.event,{}}).then(e=>{let t={};if(e)for(let[n,r]of Object.entries(e))t[`$feature/${n}`]=r;let n=Object.keys(e||{}).filter(t=>e?.[t]!==!1).sort();return n.length>0&&(t.$active_feature_flags=n),t}).catch(()=>({})).then(e=>({...e,...f.properties||{},$groups:f.groups||i}));return f.event===`$pageview`&&this.options.__preview_capture_bot_pageviews&&typeof p.$raw_user_agent==`string`&&Mh(p.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event=`$bot_pageview`,p.$browser_type=`bot`),{distinctId:f.distinctId,event:f.event,properties:p,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let n=Array.isArray(t)?t:[t],r=e;for(let t of n){if(r=t(r),!r)return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!r.properties||Object.keys(r.properties).length===0){let e=`Event '${r.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(e)}}return r}},H_=class{constructor(){this.storage=new Xe}get(){return this.storage.getStore()}run(e,t,n){return this.storage.run(this.resolve(e,n),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let n=this.get()||{};return{distinctId:e.distinctId??n.distinctId,sessionId:e.sessionId??n.sessionId,properties:{...n.properties||{},...e.properties||{}}}}};const U_=`posthog-node`;function W_(e,{organization:t,projectId:n,prefix:r,severityAllowList:i=[`error`],sendExceptionsToPostHog:a=!0}={}){return o=>{if(!(i===`*`||i.includes(o.level)))return o;o.tags||={};let s=o.tags[G_.POSTHOG_ID_TAG];if(s===void 0)return o;let c=e.options.host??`https://us.i.posthog.com`,l=new URL(`/project/${e.apiKey}/person/${s}`,c).toString();o.tags[`PostHog Person URL`]=l;let u=o.exception?.values||[],d=u.map(e=>({...e,stacktrace:e.stacktrace?{...e.stacktrace,type:`raw`,frames:(e.stacktrace.frames||[]).map(e=>({...e,platform:`node:javascript`}))}:void 0})),f={$exception_message:u[0]?.value||o.message,$exception_type:u[0]?.type,$exception_level:o.level,$exception_list:d,$sentry_event_id:o.event_id,$sentry_exception:o.exception,$sentry_exception_message:u[0]?.value||o.message,$sentry_exception_type:u[0]?.type,$sentry_tags:o.tags};return t&&n&&(f.$sentry_url=(r||`https://sentry.io/organizations/`)+t+`/issues/?project=`+n+`&query=`+o.event_id),a&&e.capture({event:`$exception`,distinctId:s,properties:f}),o}}var G_=class{static#e=this.POSTHOG_ID_TAG=`posthog_distinct_id`;constructor(e,t,n,r,i){this.name=U_,this.name=U_,this.setupOnce=function(a,o){let s=o()?.getClient()?.getDsn()?.projectId;a(W_(e,{organization:t,projectId:s,prefix:n,severityAllowList:r,sendExceptionsToPostHog:i??!0}))}}};y_.errorPropertiesBuilder=new Fg([new Zg,new Gg,new Xg,new qg,new Qg],Wg(`node:javascript`,Rg),[mh(),n_]);const K_=new class extends V_{getLibraryId(){return`posthog-node`}initializeContext(){return new H_}}(`phc_t5FKk9mlc4pKbbBimiIlrM5Acq9meRp1FSuNjmwxjAX`,{host:`https://us.i.posthog.com`});var q_=class extends C.Service()(`@expect/AnalyticsProvider`){static layerPostHog=m.succeed(this)({capture:e=>u.sync(()=>{K_.captureImmediate({event:e.eventName,properties:e.properties,distinctId:e.distinctId})}),identify:e=>u.sync(()=>{K_.identify({distinctId:e.distinctId,properties:{email:e.email,...e.name?{name:e.name}:{}}})}),flush:u.tryPromise({try:()=>K_.flush(),catch:e=>e}).pipe(u.ignore)});static layerDev=m.succeed(this)({capture:e=>u.logInfo(`Tracked event`,{eventName:e.eventName,distinctId:e.distinctId,...e.properties}).pipe(u.annotateLogs({module:`Analytics`})),identify:e=>u.logInfo(`Identified user`,{distinctId:e.distinctId,email:e.email,name:e.name}).pipe(u.annotateLogs({module:`Analytics`})),flush:u.void})},J_=class extends C.Service()(`@expect/Analytics`,{make:u.gen(function*(){let e=yield*q_,t=yield*c.option(c.string(`NO_TELEMETRY`)),n=yield*c.option(c.string(`NO_TELEMTRY`)),r=_.match(t,{onNone:()=>!1,onSome:e=>e===`1`})||_.match(n,{onNone:()=>!1,onSome:e=>e===`1`}),i=yield*u.tryPromise(()=>(0,oh.machineId)()).pipe(u.orDie),a=ph(process.cwd()),o=(t,...[n])=>r?u.void:u.gen(function*(){let r={timestamp:new Date().toISOString(),projectId:a};yield*e.capture({eventName:t,properties:{...r,...n??{}},distinctId:i})}).pipe(u.catchCause(e=>u.logWarning(`Analytics capture failed`,{eventName:t,cause:e}).pipe(u.annotateLogs({module:`Analytics`}))));return{capture:o,track:((e,t)=>n=>u.tap(n,n=>{let r=t?t(n):void 0;return o.call(void 0,e,...r===void 0?[]:[r])})),flush:r?u.void:e.flush}})}){static layerPostHog=m.effect(this)(this.make).pipe(m.provide(q_.layerPostHog),m.provide(be.layer));static layerDev=m.effect(this)(this.make).pipe(m.provide(q_.layerDev),m.provide(be.layer))};const Y_=e=>{let t=s.squash(e);return{error_tag:v.hasProperty(t,`_tag`)?String(t._tag):`Unknown`,error_message:s.pretty(e)}};(class extends C.Service()(`@expect/ErrorHandler`,{make:u.gen(function*(){let e=yield*J_;return{orDie:t=>t.pipe(u.tapCause(t=>e.capture(`error:unexpected`,Y_(t))),u.orDie),streamOrDie:t=>t.pipe(w.tapCause(t=>e.capture(`error:unexpected`,Y_(t))),w.orDie),tapCause:(...t)=>n=>n.pipe(u.tapCause(n=>u.all([e.capture(`error:expected`,Y_(n)),u.logError(...t,n)],{discard:!0})))}})}){static layer=m.effect(this)(this.make)}),Ze.layerWebSocket().pipe(m.provide(Ne.layerWebSocketConstructor));const X_=m.unwrap(u.gen(function*(){let e=`expect-cli`;return Qe.layerJson({baseUrl:`https://api.axiom.co`,resource:{serviceName:e},headers:{Authorization:`Bearer xaat-a6ce2fdb-d378-444e-9d72-bb458867187a`,"X-Axiom-Dataset":e}})})).pipe(m.provide(Me.layerUndici),m.orDie),Z_=Be()(et(e=>({agentBackend:`claude`,browserHeaded:!1,replayHost:`https://expect.dev`,autoSaveFlows:!0,notifications:void 0,instructionHistory:[],setAgentBackend:t=>e({agentBackend:t}),toggleAutoSave:()=>e(e=>({autoSaveFlows:!e.autoSaveFlows})),toggleNotifications:()=>e(e=>({notifications:e.notifications!==!0})),rememberInstruction:t=>{t&&e(e=>({instructionHistory:[t,...e.instructionHistory.filter(e=>e!==t)].slice(0,20)}))}}),{name:`prompt-history`,storage:$e(()=>gm),partialize:e=>({instructionHistory:e.instructionHistory,notifications:e.notifications})})),Q_=J_.layerPostHog,$_=(e,...[t])=>u.runPromise(u.gen(function*(){let n=yield*J_;yield*n.capture.call(n,e,...t===void 0?[]:[t])}).pipe(u.catchCause(()=>u.void),u.provide(Q_))),ev=()=>$_(`session:started`,{mode:`interactive`,skip_planning:!1,browser_headed:Z_.getState().browserHeaded}),tv=e=>u.runPromise(u.gen(function*(){let t=yield*J_;yield*t.capture(`session:ended`,{session_ms:Date.now()-e}),yield*t.flush}).pipe(u.provide(Q_))),nv=()=>{let e=ie(15);if(e[0]!==`d0800512c2dc78a7eda82a0b9a76ade6e9bb7fa0b8809da478275b21ba8ce62d`){for(let t=0;t<15;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`d0800512c2dc78a7eda82a0b9a76ade6e9bb7fa0b8809da478275b21ba8ce62d`}let t=Pt(),n;e[1]===t.RED?n=e[2]:(n=V(O,{color:t.RED,children:U.cross}),e[1]=t.RED,e[2]=n);let r;e[3]===t.GREEN?r=e[4]:(r=V(O,{color:t.GREEN,children:U.tick}),e[3]=t.GREEN,e[4]=r);let i;e[5]===t.PRIMARY?i=e[6]:(i=V(O,{bold:!0,color:t.PRIMARY,children:` Expect`}),e[5]=t.PRIMARY,e[6]=i);let a;e[7]===t.DIM?a=e[8]:(a=V(O,{color:t.DIM,children:` v${gt}`}),e[7]=t.DIM,e[8]=a);let o;return e[9]!==t.BORDER||e[10]!==n||e[11]!==r||e[12]!==i||e[13]!==a?(o=V(E,{children:H(O,{color:t.BORDER,children:[n,r,i,a]})}),e[9]=t.BORDER,e[10]=n,e[11]=r,e[12]=i,e[13]=a,e[14]=o):o=e[14],o},rv=[{id:`enable-sync`,label:`Use existing cookies`,detail:`Recommended. Uses your browser session as-is.`},{id:`run-without-sync`,label:`Skip cookies`,detail:`Not recommended. Tests requiring login will fail.`}],iv=e=>{let t=ie(34);if(t[0]!==`e3c7abb53538ed236081ea9ec92e2272ee1c8b466fbb62e1c8ec442744cd59e3`){for(let e=0;e<34;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e3c7abb53538ed236081ea9ec92e2272ee1c8b466fbb62e1c8ec442744cd59e3`}let{changesFor:n,instruction:r,savedFlow:i}=e,a=Pt(),o=Zm(av),[s,c]=L(0),l;t[1]!==n||t[2]!==r||t[3]!==i||t[4]!==o?(l=e=>{let t=e.id===`enable-sync`;$_(`cookies:sync_choice`,{choice:t?`use_cookies`:`skip_cookies`}),o(Xm({changesFor:n,instruction:r,savedFlow:i,requiresCookies:t}))},t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=l):l=t[5];let u=l,d;t[6]!==u||t[7]!==s?(d=(e,t)=>{(t.downArrow||e===`j`||t.ctrl&&e===`n`)&&c(ov),(t.upArrow||e===`k`||t.ctrl&&e===`p`)&&c(sv),e===`c`&&u(rv[0]),e===`a`&&u(rv[1]),t.return&&u(rv[s])},t[6]=u,t[7]=s,t[8]=d):d=t[8],te(d);let f;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=V(nv,{}),t[9]=f):f=t[9];let p;t[10]===a.DIM?p=t[11]:(p=V(O,{color:a.DIM,children:U.pointerSmall}),t[10]=a.DIM,t[11]=p);let m;t[12]!==a.TEXT||t[13]!==r?(m=V(O,{color:a.TEXT,children:r}),t[12]=a.TEXT,t[13]=r,t[14]=m):m=t[14];let h;t[15]!==p||t[16]!==m?(h=H(E,{children:[f,H(O,{wrap:`truncate`,children:[` `,p,` `,m]})]}),t[15]=p,t[16]=m,t[17]=h):h=t[17];let g;t[18]!==a.GREEN||t[19]!==a.YELLOW||t[20]!==s?(g=V(E,{marginTop:1,children:s===0?H(O,{color:a.GREEN,children:[U.tick,` Your signed-in session will be synced to the browser. Cookies stay on device.`]}):H(O,{color:a.YELLOW,children:[U.warning,` The browser won`,`'`,`t inherit your signed-in session without cookies.`]})}),t[18]=a.GREEN,t[19]=a.YELLOW,t[20]=s,t[21]=g):g=t[21];let _;t[22]!==a.DIM||t[23]!==a.PRIMARY||t[24]!==a.TEXT||t[25]!==u||t[26]!==s?(_=rv.map((e,t)=>{let n=t===s;return V(Lt,{onClick:()=>{c(t),u(e)},children:H(E,{flexDirection:`column`,marginBottom:1,children:[H(O,{children:[V(O,{color:n?a.PRIMARY:a.DIM,children:n?`${U.pointer} `:` `}),V(O,{color:n?a.PRIMARY:a.TEXT,bold:n,children:e.label})]}),H(O,{color:a.DIM,children:[` `,e.detail]})]})},e.id)}),t[22]=a.DIM,t[23]=a.PRIMARY,t[24]=a.TEXT,t[25]=u,t[26]=s,t[27]=_):_=t[27];let v;t[28]===_?v=t[29]:(v=V(E,{flexDirection:`column`,marginTop:1,children:_}),t[28]=_,t[29]=v);let y;return t[30]!==h||t[31]!==g||t[32]!==v?(y=H(E,{flexDirection:`column`,width:`100%`,paddingY:1,paddingX:1,children:[h,g,v]}),t[30]=h,t[31]=g,t[32]=v,t[33]=y):y=t[33],y};function av(e){return e.setScreen}function ov(e){return Math.min(rv.length-1,e+1)}function sv(e){return Math.max(0,e-1)}const cv=Be()(et(e=>({cookiesEnabled:!1,setCookiesEnabled:t=>e({cookiesEnabled:t}),toggleCookies:()=>e(e=>({cookiesEnabled:!e.cookiesEnabled})),lastBaseUrl:void 0,setLastBaseUrl:t=>e({lastBaseUrl:t})}),{name:`project-preferences`,storage:$e(()=>ym)})),lv=`spotify,raycast,google,controlce,controlcenter,cursor,electron,slack,discord,figma,redis,postgres,mysqld,mongod,mongos,memcached,dockerd,containerd,com.docke,docker,code,rapportd,wifiagent,airplayxpc,identitys,sharingd,bluetoothd,screencap,loginwind,systempol,corespeec,apsd,mds_store,spotlight,lsd`.split(`,`),uv=[[/next[\\/]dist[\\/]/,`next`],[/next-server/,`next`],[/vite[\\/]/,`vite`],[/vite-plus[\\/]/,`vite`],[/react-scripts[\\/]/,`react-scripts`],[/angular[\\/]cli[\\/]/,`angular`],[/remix[\\/]/,`remix`],[/astro[\\/]/,`astro`],[/nuxt[\\/]/,`nuxt`],[/svelte[\\/]/,`svelte`],[/webpack[\\/]/,`webpack`],[/webpack-dev-server/,`webpack`],[/turbopack[\\/]/,`turbopack`],[/remotion[\\/]/,`remotion`],[/gatsby[\\/]/,`gatsby`],[/parcel[\\/]/,`parcel`],[/http-server/,`http-server`],[/live-server/,`live-server`],[/serve[\\/]/,`serve`],[/express[\\/]/,`express`],[/fastify[\\/]/,`fastify`],[/hono[\\/]/,`hono`],[/elysia[\\/]/,`elysia`]],dv=e=>{let t=e.toLowerCase();return lv.some(e=>t.startsWith(e))},fv=e=>{if(!/^\d+$/.test(e))return``;try{let t=Ee(`lsof -p ${e} -a -d cwd -Fn`,{encoding:`utf-8`,timeout:1e3}).split(`
|
|
36
|
-
`).find(e=>e.startsWith(`n`));return t?t.slice(1):``}catch{return``}},
|
|
37
|
-
`)){let e=r.trim().split(/\s+/);if(e.length<9)continue;let i=e[0]??``,a=e[1]??``,o=(e[8]??``).match(/:(\d+)$/);if(!o)continue;let s=Number(o[1]);s<1024||s>65535||t.has(s)||(t.add(s),n.push({port:s,pid:a,commandName:i}))}return n},hv=()=>{try{let e=mv(Ee(`lsof -iTCP -sTCP:LISTEN -nP`,{encoding:`utf-8`,timeout:3e3})),t=[];for(let n of e){let e=pv(n.pid,n.commandName);e!==void 0&&(n.port>=32768&&!e.isFramework||t.push({port:n.port,processName:e.name,cwd:e.cwd}))}return t.sort((e,t)=>e.port-t.port)}catch{return[]}},gv=()=>N({queryKey:[`listening-ports`],queryFn:()=>hv(),refetchInterval:5e3}),_v=e=>`http://localhost:${e}`,vv=(e,t)=>{let n=t.toLowerCase();return String(e.port).includes(n)||e.processName.toLowerCase().includes(n)||e.cwd.toLowerCase().includes(n)},yv=e=>{let t=e.trim(),n=Number(t);if(Number.isInteger(n)&&n>=1&&n<=65535)return n;let r=t.match(/:(\d+)\/?$/);if(r){let e=Number(r[1]);if(Number.isInteger(e)&&e>=1&&e<=65535)return e}},bv=e=>{let t=ie(178);if(t[0]!==`84a93f0b7994a0f9318ab42167dadcad0ffba85a300830ca86b74045fc7574ce`){for(let e=0;e<178;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`84a93f0b7994a0f9318ab42167dadcad0ffba85a300830ca86b74045fc7574ce`}let{changesFor:n,instruction:r,savedFlow:i,requiresCookies:a}=e,o=Pt(),s=Zm(xv),c=cv(Sv),l=cv(Cv),{data:u}=gv(),d=u===void 0?[]:u,[f,p]=L(!1),[m,h]=L(``),[g,_]=L(!1),[v,y]=L(``),b;t[1]===c?b=t[2]:(b=()=>{if(!c)return new Set;let e=c.match(/:(\d+)/);return e?new Set([Number(e[1])]):new Set},t[1]=c,t[2]=b);let[x,S]=L(b),C;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(C=new Set,t[3]=C):C=t[3];let[w,ee]=L(C),T=d.map(wv),D=m?T.filter(e=>vv(e,m)):T,k=D.length,A=D.length+1,ne=D.length+2,re;t[4]===ne?re=t[5]:(re={itemCount:ne,visibleCount:10},t[4]=ne,t[5]=re);let{highlightedIndex:j,setHighlightedIndex:M,scrollOffset:N,handleNavigation:ae}=Km(re),oe;t[6]!==n||t[7]!==w||t[8]!==r||t[9]!==a||t[10]!==i||t[11]!==l||t[12]!==s?(oe=e=>{let t=[...e,...w];l(t.length>0?t[0]:void 0),t.length===0?$_(`port:skipped`):$_(`port:selected`,{port_count:t.length,has_custom_url:w.size>0}),s(Ym.Testing({changesFor:n,instruction:r,savedFlow:i,requiresCookies:a,baseUrls:t.length>0?t:void 0}))},t[6]=n,t[7]=w,t[8]=r,t[9]=a,t[10]=i,t[11]=l,t[12]=s,t[13]=oe):oe=t[13];let P=oe,se;t[14]===S?se=t[15]:(se=e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},t[14]=S,t[15]=se);let F=se,I;t[16]!==k||t[17]!==w||t[18]!==D||t[19]!==j||t[20]!==P||t[21]!==x||t[22]!==_||t[23]!==A?(I=()=>{if(j===A){P([]);return}if(x.size>0||w.size>0){P([...x].sort(Tv).map(_v));return}if(j===k){_(!0);return}let e=D[j];e&&P([_v(e.port)])},t[16]=k,t[17]=w,t[18]=D,t[19]=j,t[20]=P,t[21]=x,t[22]=_,t[23]=A,t[24]=I):I=t[24];let R=I,z=Ev,ce;t[25]!==y||t[26]!==ee||t[27]!==_?(ce=e=>{let t=e.trim();if(!t){_(!1);return}let n=z(t);ee(e=>new Set([...e,n])),y(``),_(!1)},t[25]=y,t[26]=ee,t[27]=_,t[28]=ce):ce=t[28];let le=ce,B;t[29]===ee?B=t[30]:(B=e=>{ee(t=>{let n=new Set(t);return n.delete(e),n})},t[29]=ee,t[30]=B);let ue=B,W;t[31]!==M||t[32]!==h?(W=e=>{h(e),M(0)},t[31]=M,t[32]=h,t[33]=W):W=t[33];let G=W,de;t[34]!==p||t[35]!==h||t[36]!==F?(de=e=>{let t=yv(e);if(t){F(t),p(!1),h(``);return}p(!1)},t[34]=p,t[35]=h,t[36]=F,t[37]=de):de=t[37];let fe=de,pe;t[38]!==R||t[39]!==k||t[40]!==D||t[41]!==ae||t[42]!==j||t[43]!==g||t[44]!==f||t[45]!==y||t[46]!==_||t[47]!==p||t[48]!==F?(pe=(e,t)=>{if(g){if(t.escape){_(!1),y(``);return}return}if(f){if(t.escape){p(!1);return}return}if(!ae(e,t)){if(e===`/`){p(!0);return}if(e===` `){if(j===k){_(!0);return}let e=D[j];e&&F(e.port);return}t.return&&R()}},t[38]=R,t[39]=k,t[40]=D,t[41]=ae,t[42]=j,t[43]=g,t[44]=f,t[45]=y,t[46]=_,t[47]=p,t[48]=F,t[49]=pe):pe=t[49],te(pe);let me,he,ge,_e,K,ve,ye,be,xe,q,Se,Ce,we,Te,Ee,De;if(t[50]!==o.DIM||t[51]!==o.GREEN||t[52]!==o.PRIMARY||t[53]!==o.TEXT||t[54]!==o.YELLOW||t[55]!==k||t[56]!==w||t[57]!==D||t[58]!==j||t[59]!==r||t[60]!==N||t[61]!==x||t[62]!==M||t[63]!==A||t[64]!==F){let e=D.slice(N,N+8);ge=N+8>=D.length,ve=ge;let n=D[j];_e=j===k,K=j===A;let i;t[81]!==w||t[82]!==x?(i=[...[...x].sort(Dv).map(_v),...w],t[81]=w,t[82]=x,t[83]=i):i=t[83];let a=i;he=E,q=`column`,Se=`100%`,Ce=1,we=1;let s;t[84]===Symbol.for(`react.memo_cache_sentinel`)?(s=V(nv,{}),t[84]=s):s=t[84];let c;t[85]===o.DIM?c=t[86]:(c=V(O,{color:o.DIM,children:U.pointerSmall}),t[85]=o.DIM,t[86]=c);let l;t[87]!==o.TEXT||t[88]!==r?(l=V(O,{color:o.TEXT,children:r}),t[87]=o.TEXT,t[88]=r,t[89]=l):l=t[89],t[90]!==c||t[91]!==l?(Te=H(E,{children:[s,H(O,{wrap:`truncate`,children:[` `,c,` `,l]})]}),t[90]=c,t[91]=l,t[92]=Te):Te=t[92],t[93]===o.DIM?Ee=t[94]:(Ee=V(E,{marginTop:1,children:V(O,{color:o.DIM,children:`Pick the dev server the agent should open in the browser.`})}),t[93]=o.DIM,t[94]=Ee);let u;t[95]!==o.GREEN||t[96]!==a?(u=a.length>0&&H(O,{color:o.GREEN,children:[U.tick,` `,a.join(`, `)]}),t[95]=o.GREEN,t[96]=a,t[97]=u):u=t[97];let d;t[98]!==o.DIM||t[99]!==a.length||t[100]!==n||t[101]!==_e||t[102]!==K?(d=a.length===0&&!K&&!_e&&n&&H(O,{color:o.DIM,children:[U.arrowRight,` `,_v(n.port)]}),t[98]=o.DIM,t[99]=a.length,t[100]=n,t[101]=_e,t[102]=K,t[103]=d):d=t[103];let f;t[104]!==o.YELLOW||t[105]!==a.length||t[106]!==K?(f=a.length===0&&K&&H(O,{color:o.YELLOW,children:[U.warning,` No base URL. The agent won`,`'`,`t know where your dev server is.`]}),t[104]=o.YELLOW,t[105]=a.length,t[106]=K,t[107]=f):f=t[107],t[108]!==u||t[109]!==d||t[110]!==f?(De=H(E,{marginTop:1,children:[u,d,f]}),t[108]=u,t[109]=d,t[110]=f,t[111]=De):De=t[111],me=E,ye=`column`,be=1;let p;t[112]!==o.DIM||t[113]!==o.PRIMARY||t[114]!==o.TEXT||t[115]!==j||t[116]!==N||t[117]!==x||t[118]!==M||t[119]!==F?(p=(e,t)=>{let n=t+N,r=n===j,i=x.has(e.port);return V(Lt,{onClick:()=>{M(n),F(e.port)},children:H(E,{children:[V(O,{color:r?o.PRIMARY:o.DIM,children:r?`${U.pointer} `:` `}),H(O,{color:i?o.PRIMARY:o.DIM,children:[i?U.checkboxOn:U.checkboxOff,` `]}),H(O,{color:r?o.PRIMARY:o.TEXT,bold:r,children:[`:`,e.port]}),e.processName&&H(O,{color:o.DIM,children:[` `,e.processName]}),e.cwd&&H(O,{color:o.DIM,children:[` `,e.cwd]})]})},e.port)},t[112]=o.DIM,t[113]=o.PRIMARY,t[114]=o.TEXT,t[115]=j,t[116]=N,t[117]=x,t[118]=M,t[119]=F,t[120]=p):p=t[120],xe=e.map(p),t[50]=o.DIM,t[51]=o.GREEN,t[52]=o.PRIMARY,t[53]=o.TEXT,t[54]=o.YELLOW,t[55]=k,t[56]=w,t[57]=D,t[58]=j,t[59]=r,t[60]=N,t[61]=x,t[62]=M,t[63]=A,t[64]=F,t[65]=me,t[66]=he,t[67]=ge,t[68]=_e,t[69]=K,t[70]=ve,t[71]=ye,t[72]=be,t[73]=xe,t[74]=q,t[75]=Se,t[76]=Ce,t[77]=we,t[78]=Te,t[79]=Ee,t[80]=De}else me=t[65],he=t[66],ge=t[67],_e=t[68],K=t[69],ve=t[70],ye=t[71],be=t[72],xe=t[73],q=t[74],Se=t[75],Ce=t[76],we=t[77],Te=t[78],Ee=t[79],De=t[80];let Oe;t[121]!==o.DIM||t[122]!==o.PRIMARY||t[123]!==o.TEXT||t[124]!==k||t[125]!==v||t[126]!==ge||t[127]!==le||t[128]!==_e||t[129]!==g||t[130]!==y||t[131]!==M||t[132]!==_?(Oe=ge&&V(Lt,{onClick:()=>{M(k),_(!0)},children:H(E,{children:[V(O,{color:_e?o.PRIMARY:o.DIM,children:_e?`${U.pointer} `:` `}),g&&H(E,{children:[V(O,{color:o.PRIMARY,children:`URL: `}),V(Ut,{focus:!0,value:v,placeholder:`http://localhost:4000 or staging.example.com`,onChange:y,onSubmit:le})]}),!g&&H(O,{color:_e?o.PRIMARY:o.TEXT,bold:_e,children:[`Enter a custom URL`,U.ellipsis]})]})}),t[121]=o.DIM,t[122]=o.PRIMARY,t[123]=o.TEXT,t[124]=k,t[125]=v,t[126]=ge,t[127]=le,t[128]=_e,t[129]=g,t[130]=y,t[131]=M,t[132]=_,t[133]=Oe):Oe=t[133];let ke;t[134]!==o.DIM||t[135]!==o.PRIMARY||t[136]!==o.TEXT||t[137]!==ge||t[138]!==w||t[139]!==ue?(ke=ge&&[...w].map(e=>V(Lt,{onClick:()=>ue(e),children:H(E,{children:[V(O,{children:` `}),H(O,{color:o.PRIMARY,children:[U.checkboxOn,` `]}),V(O,{color:o.TEXT,children:e}),V(O,{color:o.DIM,children:` (click to remove)`})]})},e)),t[134]=o.DIM,t[135]=o.PRIMARY,t[136]=o.TEXT,t[137]=ge,t[138]=w,t[139]=ue,t[140]=ke):ke=t[140];let Ae;t[141]!==o.DIM||t[142]!==o.PRIMARY||t[143]!==K||t[144]!==P||t[145]!==M||t[146]!==A||t[147]!==ve?(Ae=ve&&V(Lt,{onClick:()=>{M(A),P([])},children:H(E,{children:[V(O,{color:K?o.PRIMARY:o.DIM,children:K?`${U.pointer} `:` `}),H(O,{color:K?o.PRIMARY:o.DIM,bold:K,children:[`Skip `,U.arrowRight,` no base URL`]})]})}),t[141]=o.DIM,t[142]=o.PRIMARY,t[143]=K,t[144]=P,t[145]=M,t[146]=A,t[147]=ve,t[148]=Ae):Ae=t[148];let je;t[149]!==o.DIM||t[150]!==D.length||t[151]!==ve?(je=D.length===0&&!ve&&V(O,{color:o.DIM,children:`No matching ports`}),t[149]=o.DIM,t[150]=D.length,t[151]=ve,t[152]=je):je=t[152];let Me;t[153]!==me||t[154]!==ye||t[155]!==be||t[156]!==xe||t[157]!==Oe||t[158]!==ke||t[159]!==Ae||t[160]!==je?(Me=H(me,{flexDirection:ye,marginTop:be,children:[xe,Oe,ke,Ae,je]}),t[153]=me,t[154]=ye,t[155]=be,t[156]=xe,t[157]=Oe,t[158]=ke,t[159]=Ae,t[160]=je,t[161]=Me):Me=t[161];let Ne;t[162]!==G||t[163]!==fe||t[164]!==f||t[165]!==m?(Ne=V(Wt,{isSearching:f,query:m,onChange:G,onSubmit:fe}),t[162]=G,t[163]=fe,t[164]=f,t[165]=m,t[166]=Ne):Ne=t[166];let Pe;return t[167]!==he||t[168]!==q||t[169]!==Se||t[170]!==Ce||t[171]!==we||t[172]!==Te||t[173]!==Ee||t[174]!==De||t[175]!==Me||t[176]!==Ne?(Pe=H(he,{flexDirection:q,width:Se,paddingY:Ce,paddingX:we,children:[Te,Ee,De,Me,Ne]}),t[167]=he,t[168]=q,t[169]=Se,t[170]=Ce,t[171]=we,t[172]=Te,t[173]=Ee,t[174]=De,t[175]=Me,t[176]=Ne,t[177]=Pe):Pe=t[177],Pe};function xv(e){return e.setScreen}function Sv(e){return e.lastBaseUrl}function Cv(e){return e.setLastBaseUrl}function wv(e){return{port:e.port,processName:e.processName,cwd:e.cwd}}function Tv(e,t){return e-t}function Ev(e){let t=e.trim(),n=Number(t);return Number.isInteger(n)&&n>=1&&n<=65535?_v(n):/^https?:\/\//i.test(t)?t:`http://${t}`}function Dv(e,t){return e-t}const Ov=e=>{let t=e.replace(`#`,``);return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]},kv=(e,t,n)=>`#${[e,t,n].map(e=>Math.round(e).toString(16).padStart(2,`0`)).join(``)}`,Av=(e,t,n)=>e+(t-e)*n,jv=(e,t,n)=>{let[r,i,a]=Ov(e),[o,s,c]=Ov(t);return kv(Av(r,o,n),Av(i,s,n),Av(a,c,n))},Mv=({text:e,baseColor:t,highlightColor:n,speed:r=1})=>{let[i,a]=L(-16),o=I(r);o.current=r;let s=I(e.length);s.current=e.length;let c=I(!1);return c.current||(c.current=!0,setTimeout(()=>{setInterval(()=>{let e=s.current+16;a(t=>t>=e?-16:t+o.current)},50)},0)),V(O,{children:[...e].map((e,r)=>{let a=Math.abs(r-i),o=Math.max(0,1-a/16);return V(O,{color:o>0?jv(t,n,o):t,children:e},r)})})},Nv=Be(e=>({executedPlan:void 0,expanded:!1,setExecutedPlan:t=>e({executedPlan:t}),setExpanded:t=>e({expanded:t}),toggleExpanded:()=>e(e=>({expanded:!e.expanded}))})),Pv=e=>st(Math.max(0,e),{secondsDecimalDigits:0}),Fv=new Set([`warpterminal`]),Iv=lt.stdout,Lv=ct({preferOuter:!0}),Rv=process.stdout.isTTY&&!Fv.has(Lv??``),zv=Rv&&Iv.kitty,Bv=Rv&&Iv.iterm2,Vv=zv||Bv,Hv=ct(),Uv=Hv===`tmux`||Hv===`screen`,Wv=e=>Uv?`Ptmux;${e.replaceAll(`\x1B`,`\x1B\x1B`)}\\`:e,Gv=(e,t)=>{let n=Buffer.from(e).toString(`base64`),r=`a=T,t=f`;return t.width&&(r+=`,c=${t.width}`),t.height&&(r+=`,r=${t.height}`),Wv(`_G${r};${n}\\`)},Kv=(e,t)=>{let n=`\x1B]1337;File=inline=1`;return t.width&&(n+=`;width=${t.width}`),t.height&&(n+=`;height=${t.height}`),n+=`;size=${e.byteLength}:${e.toString(`base64`)}`,Wv(n)},qv=(e,t={})=>{if(!Ke.existsSync(e))return null;if(zv)return Gv(e,t);if(Bv)try{return Kv(Ke.readFileSync(e),t)}catch{return null}return null},Jv=e=>e.startsWith(`file://`),Yv=e=>{let t=ie(9);if(t[0]!==`edb58922a19f7cd34125950b48961a70defca0454a8de685a54dc50281109929`){for(let e=0;e<9;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`edb58922a19f7cd34125950b48961a70defca0454a8de685a54dc50281109929`}let{path:n,label:r}=e,i,a;t[1]===n?(i=t[2],a=t[3]):(i=Jv(n)?me.fileURLToPath(n):G.resolve(n),a=Jv(n)?n:me.pathToFileURL(i).href,t[1]=n,t[2]=i,t[3]=a);let o=a,s=r??i,c;t[4]===s?c=t[5]:(c=V(O,{children:s}),t[4]=s,t[5]=c);let l;return t[6]!==o||t[7]!==c?(l=V(ut,{url:o,children:c}),t[6]=o,t[7]=c,t[8]=l):l=t[8],l},Xv=({src:e,alt:t,width:n,height:r})=>{let i=G.resolve(e),{write:a}=ne(),o=I(!1);if(!o.current){let e=qv(i,{width:n,height:r});e&&(a(e+`
|
|
38
|
-
`),o.current=!0)}return
|
|
39
|
-
`)),i.length>0&&t.write(i),n.length>0&&r.write(n),r.pipe(t),t.pipe(r),t.on(`error`,()=>r.destroy()),r.on(`error`,()=>t.destroy())}),a.on(`error`,()=>t.destroy()),a.end()},
|
|
40
|
-
`).map(e=>e.trim()).filter(e=>e.length>0),r=n.find(e=>e.startsWith(
|
|
41
|
-
`)?o:void 0}},
|
|
42
|
-
`);i.push(H(O,{color:r.DIM,wrap:`truncate`,children:[t,U.lineVertical,` `,V(O,{color:r.TEXT,children:o.tool.name}),`(`,o.isRunning&&H(O,{children:[` `,V(Le,{type:`line`})]}),o.resultTokens!==void 0&&` ${U.arrowDown} ${Sy(o.resultTokens)} tokens`]},`${s}-h`));for(let n=0;n<e.length;n++)i.push(H(O,{color:r.DIM,children:[t,U.lineVertical,` `,` `,V(O,{color:r.TEXT,children:e[n]})]},`${s}-${n}`));i.push(H(O,{color:r.DIM,children:[t,U.lineVertical,` )`]},`${s}-c`))}else i.push(H(O,{color:r.DIM,wrap:`truncate`,children:[t,U.lineVertical,` `,V(O,{color:r.TEXT,children:o.tool.name}),`(`,o.tool.args,`)`,o.isRunning&&H(O,{children:[` `,V(Le,{type:`line`})]}),o.resultTokens!==void 0&&` ${U.arrowDown} ${Sy(o.resultTokens)} tokens`]},s))}return i},My=t=>{let n=ie(113);if(n[0]!==`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`){for(let e=0;e<113;e+=1)n[e]=Symbol.for(`react.memo_cache_sentinel`);n[0]=`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`}let{changesFor:r,instruction:i,savedFlow:a,requiresCookies:o,baseUrls:s}=t,c=o===void 0?!1:o,l=Zm(Ny),u=Pt(),[,d]=jt(),f=Z_(Py),p=Z_(Fy),m=Z_(Iy),h=Z_(Ly),g;n[1]===Symbol.for(`react.memo_cache_sentinel`)?(g={mode:`promiseExit`},n[1]=g):g=n[1];let[v,y]=it(gy,g),b=ot(my),[x,S]=L(void 0),C;n[2]===v?C=n[3]:(C=tt.isWaiting(v),n[2]=v,n[3]=C);let w=C,ee;n[4]===v?ee=n[5]:(ee=tt.isSuccess(v),n[4]=v,n[5]=ee);let T=ee,k=T?v.value.report:void 0,[A,ne]=L(void 0),[re,j]=L(void 0),[M,N]=L(0),[ae,oe]=L(!1),P=Nv(Ry),F=Nv(zy),R=Nv(By),z;n[6]===M?z=n[7]:(z=Pv(M),n[6]=M,n[7]=z);let ce=z,le=A?.steps?A.steps.length:0,B;if(n[8]!==u||n[9]!==ce||n[10]!==A||n[11]!==P||n[12]!==w){if(B=[],P&&A){let e=A.steps??[];if(e.length===0&&w){let e=Ey(A.events,!0);B.push(...jy(e,` `,`planning`,u))}for(let t=0;t<e.length;t++){let n=e[t],r=_.isSome(n.summary)?n.summary.value:n.title,i=Ay(n),a=i===void 0?void 0:Pv(i),o=`${t+1}.`;if(n.status===`active`){B.push(H(E,{children:[H(O,{color:u.DIM,children:[` `,o,` `]}),V(Wm,{}),V(O,{children:` `}),V(Mv,{text:`${n.title} ${ce}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]},`step-${t}`));let e=Ty(A.events,!0);B.push(...jy(e,` `,`s${t}`,u))}else if(n.status===`passed`){B.push(H(O,{children:[H(O,{color:u.DIM,children:[` `,o]}),H(O,{color:u.GREEN,children:[` `,U.tick,` `,Re(r,100)]}),a&&H(O,{color:u.DIM,children:[` `,a]})]},`step-${t}`));let e=Oy(A.events,t);B.push(...jy(e,` `,`s${t}`,u))}else if(n.status===`failed`){B.push(H(O,{children:[H(O,{color:u.DIM,children:[` `,o]}),H(O,{color:u.RED,children:[` `,U.cross,` `,Re(r,100)]}),a&&H(O,{color:u.DIM,children:[` `,a]})]},`step-${t}`));let e=Oy(A.events,t);B.push(...jy(e,` `,`s${t}`,u))}else n.status===`skipped`?B.push(H(O,{children:[H(O,{color:u.DIM,children:[` `,o]}),H(O,{color:u.YELLOW,children:[` `,U.arrowRight,` `,Re(r,100)]}),a&&H(O,{color:u.DIM,children:[` `,a]})]},`step-${t}`)):B.push(H(O,{color:u.DIM,children:[` `,o,` `,U.circle,` `,n.title]},`step-${t}`))}}n[8]=u,n[9]=ce,n[10]=A,n[11]=P,n[12]=w,n[13]=B}else B=n[13];let W=Math.max(1,d-6),G;n[14]!==B.length||n[15]!==W?(G={itemCount:B.length,visibleCount:W},n[14]=B.length,n[15]=W,n[16]=G):G=n[16];let de=Km(G),fe=I(!1),pe,me;n[17]!==P||n[18]!==B.length||n[19]!==de?(pe=()=>{P&&!fe.current&&B.length>0&&de.setHighlightedIndex(B.length-1),fe.current=P},me=[P,B.length,de],n[17]=P,n[18]=B.length,n[19]=de,n[20]=pe,n[21]=me):(pe=n[20],me=n[21]),se(pe,me);let he,ge;n[22]!==f||n[23]!==s||n[24]!==p||n[25]!==r||n[26]!==i||n[27]!==m||n[28]!==c||n[29]!==a||n[30]!==y?(ge=()=>{j(Date.now());let e=s&&s.length>0?s.join(`, `):void 0,t=s?s.map(Vy).join(` `):void 0;return y({options:{changesFor:r,instruction:t?`${i} ${t}`:i,isHeadless:!p,requiresCookies:c,savedFlow:a,baseUrl:e},agentBackend:f,replayHost:m,onUpdate:ne,onReplayUrl:S}),()=>{y(nt.Interrupt)}},he=[y,f,p,r,i,a,c,s,m],n[22]=f,n[23]=s,n[24]=p,n[25]=r,n[26]=i,n[27]=m,n[28]=c,n[29]=a,n[30]=y,n[31]=he,n[32]=ge):(he=n[31],ge=n[32]),se(ge,he);let _e=T?v.value.replayUrl:void 0,K=T?v.value.localReplayUrl:void 0,ve=T?v.value.videoUrl:void 0,ye,be;n[33]!==A||n[34]!==T||n[35]!==K||n[36]!==_e||n[37]!==k||n[38]!==l||n[39]!==ve?(ye=()=>{T&&A&&k&&(Nv.getState().setExecutedPlan(A),l(Ym.Results({report:k,replayUrl:_e,localReplayUrl:K,videoUrl:ve})))},be=[T,A,k,_e,K,ve,l],n[33]=A,n[34]=T,n[35]=K,n[36]=_e,n[37]=k,n[38]=l,n[39]=ve,n[40]=ye,n[41]=be):(ye=n[40],be=n[41]),se(ye,be);let xe;n[42]===l?xe=n[43]:(xe=()=>{Nv.getState().setExecutedPlan(void 0),l(Ym.Main())},n[42]=l,n[43]=xe);let q=xe,Se,Ce;n[44]!==w||n[45]!==re?(Se=()=>{if(re===void 0||!w)return;let e=setInterval(()=>{N(Date.now()-re)},1e3);return()=>clearInterval(e)},Ce=[re,w],n[44]=w,n[45]=re,n[46]=Se,n[47]=Ce):(Se=n[46],Ce=n[47]),se(Se,Ce);let we;n[48]!==A||n[49]!==v||n[50]!==P||n[51]!==de||n[52]!==q||n[53]!==w||n[54]!==x||n[55]!==K||n[56]!==_e||n[57]!==k||n[58]!==F||n[59]!==l||n[60]!==ae||n[61]!==R||n[62]!==h||n[63]!==ve?(we=(t,n)=>{let r=t.toLowerCase();if(ae){if(n.return||r===`y`){oe(!1),$_(`run:cancelled`),q();return}(n.escape||r===`n`)&&oe(!1);return}if(r===`o`&&!n.ctrl&&!n.meta&&x){let{exec:t}=e(`node:child_process`);t(`open "${x.replace(/"/g,`\\"`)}"`),$_(`live_preview:opened`);return}if(n.ctrl&&t===`o`){R();return}if(n.ctrl&&t===`n`){h();return}if(P){if(de.handleNavigation(t,n))return;if(n.escape){F(!1);return}return}if(n.escape){if(tt.isFailure(v)){q();return}if(w){oe(!0);return}if(A&&k){Nv.getState().setExecutedPlan(A),l(Ym.Results({report:k,replayUrl:_e,localReplayUrl:K,videoUrl:ve}));return}q()}},n[48]=A,n[49]=v,n[50]=P,n[51]=de,n[52]=q,n[53]=w,n[54]=x,n[55]=K,n[56]=_e,n[57]=k,n[58]=F,n[59]=l,n[60]=ae,n[61]=R,n[62]=h,n[63]=ve,n[64]=we):we=n[64],te(we);let Te;n[65]!==B||n[66]!==de.scrollOffset||n[67]!==W?(Te=B.slice(de.scrollOffset,de.scrollOffset+W),n[65]=B,n[66]=de.scrollOffset,n[67]=W,n[68]=Te):Te=n[68];let Ee=Te,De;n[69]===b?De=n[70]:(De=V(D,{items:[...b],children:Hy}),n[69]=b,n[70]=De);let Oe;n[71]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=V(nv,{}),n[71]=Oe):Oe=n[71];let ke;n[72]===u.DIM?ke=n[73]:(ke=V(O,{color:u.DIM,children:U.pointerSmall}),n[72]=u.DIM,n[73]=ke);let Ae;n[74]!==u.TEXT||n[75]!==i?(Ae=V(O,{color:u.TEXT,children:i}),n[74]=u.TEXT,n[75]=i,n[76]=Ae):Ae=n[76];let je;n[77]!==ke||n[78]!==Ae?(je=H(E,{children:[Oe,H(O,{wrap:`truncate`,children:[` `,ke,` `,Ae]})]}),n[77]=ke,n[78]=Ae,n[79]=je):je=n[79];let Me;n[80]!==u.DIM||n[81]!==u.PRIMARY||n[82]!==w||n[83]!==x?(Me=x&&w&&V(E,{marginTop:0,children:H(O,{color:u.DIM,children:[` `,`Press `,V(O,{color:u.PRIMARY,children:`o`}),` to open live preview`]})}),n[80]=u.DIM,n[81]=u.PRIMARY,n[82]=w,n[83]=x,n[84]=Me):Me=n[84];let Ne;n[85]!==u.DIM||n[86]!==u.GREEN||n[87]!==u.RED||n[88]!==u.YELLOW||n[89]!==ce||n[90]!==A||n[91]!==P||n[92]!==w||n[93]!==le||n[94]!==Ee?(Ne=P?V(E,{flexDirection:`column`,marginTop:1,children:Ee}):H(ue,{children:[le===0&&w&&(()=>{let e=A?Ey(A.events,!1):[];return H(E,{marginTop:1,flexDirection:`column`,children:[H(E,{children:[V(Wm,{}),V(O,{children:` `}),V(Mv,{text:`Starting${U.ellipsis} ${ce}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]}),e.map(Uy)]})})(),V(E,{flexDirection:`column`,marginTop:1,children:(A?.steps??[]).map((e,t)=>{let n=_.isSome(e.summary)?e.summary.value:e.title,r=Ay(e),i=r===void 0?void 0:Pv(r),a=`${t+1}.`;if(e.status===`active`){let t=A?Ty(A.events,!1):[];return H(E,{flexDirection:`column`,children:[H(E,{children:[H(O,{color:u.DIM,children:[` `,a,` `]}),V(Wm,{}),V(O,{children:` `}),V(Mv,{text:`${e.title} ${ce}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]}),t.map(Wy)]},e.id)}return e.status===`passed`?H(O,{children:[H(O,{color:u.DIM,children:[` `,a]}),H(O,{color:u.GREEN,children:[` `,U.tick,` `,Re(n,100)]}),i&&H(O,{color:u.DIM,children:[` `,i]})]},e.id):e.status===`failed`?H(O,{children:[H(O,{color:u.DIM,children:[` `,a]}),H(O,{color:u.RED,children:[` `,U.cross,` `,Re(n,100)]}),i&&H(O,{color:u.DIM,children:[` `,i]})]},e.id):e.status===`skipped`?H(O,{children:[H(O,{color:u.DIM,children:[` `,a]}),H(O,{color:u.YELLOW,children:[` `,U.arrowRight,` `,Re(n,100)]}),i&&H(O,{color:u.DIM,children:[` `,i]})]},e.id):H(O,{color:u.DIM,children:[` `,a,` `,U.circle,` `,e.title]},e.id)})})]}),n[85]=u.DIM,n[86]=u.GREEN,n[87]=u.RED,n[88]=u.YELLOW,n[89]=ce,n[90]=A,n[91]=P,n[92]=w,n[93]=le,n[94]=Ee,n[95]=Ne):Ne=n[95];let Pe;n[96]!==u.PRIMARY||n[97]!==u.YELLOW||n[98]!==ae?(Pe=ae&&V(E,{marginTop:1,children:H(O,{color:u.YELLOW,children:[`Stop run? `,V(O,{color:u.PRIMARY,children:`enter`}),` to stop,`,` `,V(O,{color:u.PRIMARY,children:`esc`}),` to dismiss`]})}),n[96]=u.PRIMARY,n[97]=u.YELLOW,n[98]=ae,n[99]=Pe):Pe=n[99];let Fe;n[100]!==je||n[101]!==Me||n[102]!==Ne||n[103]!==Pe?(Fe=H(E,{flexDirection:`column`,width:`100%`,paddingY:1,paddingX:1,children:[je,Me,Ne,Pe]}),n[100]=je,n[101]=Me,n[102]=Ne,n[103]=Pe,n[104]=Fe):Fe=n[104];let Ie;n[105]===v?Ie=n[106]:(Ie=tt.builder(v).onError(Gy).onDefect(Ky).orNull(),n[105]=v,n[106]=Ie);let Le;n[107]!==Fe||n[108]!==Ie?(Le=H(E,{flexDirection:`column`,width:`100%`,children:[Fe,Ie]}),n[107]=Fe,n[108]=Ie,n[109]=Le):Le=n[109];let ze;return n[110]!==De||n[111]!==Le?(ze=H(ue,{children:[De,Le]}),n[110]=De,n[111]=Le,n[112]=ze):ze=n[112],ze};function Ny(e){return e.setScreen}function Py(e){return e.agentBackend}function Fy(e){return e.browserHeaded}function Iy(e){return e.replayHost}function Ly(e){return e.toggleNotifications}function Ry(e){return e.expanded}function zy(e){return e.setExpanded}function By(e){return e.toggleExpanded}function Vy(e){return`[url: ${e}]`}function Hy(e){return V(E,{paddingX:1,children:V(Xv,{src:e,alt:e})},e)}function Uy(e,t){return V(ky,{display:e,indent:` `},t)}function Wy(e,t){return V(ky,{display:e,indent:` `},t)}function Gy(e){return V(Zv,{type:`error`,error:e})}function Ky(e){return V(Zv,{type:`defect`,error:{_tag:`Defect`,message:s.pretty(s.fail(e))}})}const qy=e=>{try{return R.execSync(`pbcopy`,{input:e,stdio:[`pipe`,`ignore`,`ignore`]}),!0}catch{return!1}},Jy=(e,t)=>u.runPromise(pm.use(n=>n.addComment(process.cwd(),e,t)).pipe(u.provide(pm.layer))),Yy=()=>M({mutationFn:({pullRequest:e,body:t})=>Jy(e,t)}),Xy=ty.fn(u.fnUntraced(function*(e,t){return yield*(yield*um).save(e.plan)},u.annotateLogs({fn:`saveFlowFn`}),u.provide(be.layer))),Zy=e=>{if(!(_.isNone(e.startedAt)||_.isNone(e.endedAt)))return l.toEpochMillis(e.endedAt.value)-l.toEpochMillis(e.startedAt.value)},Qy=e=>{let t=0;for(let n of e){let e=Zy(n);e!==void 0&&(t+=e)}return t},$y=e=>{let t=ie(141);if(t[0]!==`b7e547f8ebc01ced52659efc05613f9ccf6a352b61760b052762a2223144f2e9`){for(let e=0;e<141;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`b7e547f8ebc01ced52659efc05613f9ccf6a352b61760b052762a2223144f2e9`}let{report:n,replayUrl:r,localReplayUrl:i,videoUrl:a}=e,o=Pt(),s=Zm(eb),[c,l]=L(void 0),u=Yy(),d;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(d={mode:`promiseExit`},t[1]=d):d=t[1];let[f,p]=it(Xy,d),m=f.waiting,h;t[2]===f?h=t[3]:(h=tt.isSuccess(f),t[2]=f,t[3]=h);let g=h,v;t[4]!==u||t[5]!==n.pullRequest||t[6]!==n.toPlainText?(v=()=>{_.isSome(n.pullRequest)&&($_(`results:posted_to_pr`),u.mutate({pullRequest:n.pullRequest.value,body:n.toPlainText}))},t[4]=u,t[5]=n.pullRequest,t[6]=n.toPlainText,t[7]=v):v=t[7];let y=v,b;t[8]!==o.GREEN||t[9]!==o.RED||t[10]!==n.toPlainText?(b=()=>{qy(n.toPlainText)?($_(`results:copied_to_clipboard`),l({text:`${U.tick} Copied to clipboard`,color:o.GREEN})):l({text:`${U.cross} Failed to copy to clipboard`,color:o.RED})},t[8]=o.GREEN,t[9]=o.RED,t[10]=n.toPlainText,t[11]=b):b=t[11];let x=b,S;t[12]!==n||t[13]!==m||t[14]!==g||t[15]!==p?(S=async()=>{m||g||($_(`flow:saved`,{step_count:n.steps.length}),await p({plan:n}))},t[12]=n,t[13]=m,t[14]=g,t[15]=p,t[16]=S):S=t[16];let C=S,w;t[17]!==n.changesFor||t[18]!==n.instruction||t[19]!==s?(w=()=>{$_(`results:restarted`),Nv.getState().setExecutedPlan(void 0),s(Xm({changesFor:n.changesFor,instruction:n.instruction}))},t[17]=n.changesFor,t[18]=n.instruction,t[19]=s,t[20]=w):w=t[20];let ee=w,T;t[21]!==x||t[22]!==y||t[23]!==ee||t[24]!==C?(T=e=>{let t=e.toLowerCase();t===`y`&&x(),t===`p`&&y(),t===`s`&&C(),t===`r`&&ee()},t[21]=x,t[22]=y,t[23]=ee,t[24]=C,t[25]=T):T=t[25],te(T);let D=n.status===`passed`,k=D?o.GREEN:o.RED,A=D?U.tick:U.cross,ne=D?`Passed`:`Failed`,re,j,M,N,ae,oe,P,se,F,I,R;if(t[26]!==o.DIM||t[27]!==o.GREEN||t[28]!==o.RED||t[29]!==o.TEXT||t[30]!==o.YELLOW||t[31]!==i||t[32]!==r||t[33]!==n.instruction||t[34]!==n.stepStatuses||t[35]!==n.steps||t[36]!==k||t[37]!==A||t[38]!==ne){let e=Qy(n.steps);j=r??i,M=!!r&&!!i&&r!==i&&i!==void 0,re=E,I=`column`,R=`100%`,N=1,ae=1;let a;t[50]===Symbol.for(`react.memo_cache_sentinel`)?(a=V(nv,{}),t[50]=a):a=t[50];let s;t[51]===o.DIM?s=t[52]:(s=V(O,{color:o.DIM,children:U.pointerSmall}),t[51]=o.DIM,t[52]=s);let c;t[53]!==o.TEXT||t[54]!==n.instruction?(c=V(O,{color:o.TEXT,children:n.instruction}),t[53]=o.TEXT,t[54]=n.instruction,t[55]=c):c=t[55],t[56]!==s||t[57]!==c?(oe=H(E,{children:[a,H(O,{wrap:`truncate`,children:[` `,s,` `,c]})]}),t[56]=s,t[57]=c,t[58]=oe):oe=t[58];let l;t[59]!==k||t[60]!==A||t[61]!==ne?(l=H(O,{color:k,bold:!0,children:[A,` `,ne]}),t[59]=k,t[60]=A,t[61]=ne,t[62]=l):l=t[62];let u=n.steps.length===1?``:`s`,d;t[63]!==o.DIM||t[64]!==n.steps.length||t[65]!==u?(d=H(O,{color:o.DIM,children:[` `,n.steps.length,` step`,u]}),t[63]=o.DIM,t[64]=n.steps.length,t[65]=u,t[66]=d):d=t[66],t[67]!==l||t[68]!==d?(P=H(E,{marginTop:1,children:[l,d]}),t[67]=l,t[68]=d,t[69]=P):P=t[69];let f;if(t[70]!==o.DIM||t[71]!==o.GREEN||t[72]!==o.RED||t[73]!==o.YELLOW||t[74]!==n.stepStatuses||t[75]!==n.steps){let e;t[77]!==o.DIM||t[78]!==o.GREEN||t[79]!==o.RED||t[80]!==o.YELLOW||t[81]!==n.stepStatuses?(e=(e,t)=>{let r=Zy(e),i=r===void 0?void 0:Pv(r),a=n.stepStatuses.get(e.id),s=a?.status===`failed`,c=a?.status===`skipped`,l=s?o.RED:c?o.YELLOW:o.GREEN,u=s?U.cross:c?U.arrowRight:U.tick,d=`${t+1}.`;return H(E,{flexDirection:`column`,children:[H(O,{children:[H(O,{color:o.DIM,children:[` `,d]}),H(O,{color:l,children:[` `,u,` `,e.title]}),i&&H(O,{color:o.DIM,children:[` `,i]})]}),(s||c)&&a?.summary&&H(O,{color:o.DIM,children:[` `,a.summary]})]},e.id)},t[77]=o.DIM,t[78]=o.GREEN,t[79]=o.RED,t[80]=o.YELLOW,t[81]=n.stepStatuses,t[82]=e):e=t[82],f=n.steps.map(e),t[70]=o.DIM,t[71]=o.GREEN,t[72]=o.RED,t[73]=o.YELLOW,t[74]=n.stepStatuses,t[75]=n.steps,t[76]=f}else f=t[76];t[83]===f?se=t[84]:(se=V(E,{flexDirection:`column`,marginTop:1,children:f}),t[83]=f,t[84]=se),F=e>0&&V(E,{marginTop:1,children:H(O,{color:o.DIM,children:[`Worked for `,Pv(e)]})}),t[26]=o.DIM,t[27]=o.GREEN,t[28]=o.RED,t[29]=o.TEXT,t[30]=o.YELLOW,t[31]=i,t[32]=r,t[33]=n.instruction,t[34]=n.stepStatuses,t[35]=n.steps,t[36]=k,t[37]=A,t[38]=ne,t[39]=re,t[40]=j,t[41]=M,t[42]=N,t[43]=ae,t[44]=oe,t[45]=P,t[46]=se,t[47]=F,t[48]=I,t[49]=R}else re=t[39],j=t[40],M=t[41],N=t[42],ae=t[43],oe=t[44],P=t[45],se=t[46],F=t[47],I=t[48],R=t[49];let z;t[85]===c?z=t[86]:(z=c&&V(E,{marginTop:1,children:V(O,{color:c.color,children:c.text})}),t[85]=c,t[86]=z);let ce;t[87]!==o.DIM||t[88]!==u.isPending?(ce=u.isPending&&V(E,{marginTop:1,children:H(O,{color:o.DIM,children:[`Posting to PR`,U.ellipsis]})}),t[87]=o.DIM,t[88]=u.isPending,t[89]=ce):ce=t[89];let le;t[90]!==o.GREEN||t[91]!==u.isSuccess?(le=u.isSuccess&&V(E,{marginTop:1,children:H(O,{color:o.GREEN,children:[U.tick,` Posted to PR`]})}),t[90]=o.GREEN,t[91]=u.isSuccess,t[92]=le):le=t[92];let B;t[93]!==o.RED||t[94]!==u.isError?(B=u.isError&&V(E,{marginTop:1,children:H(O,{color:o.RED,children:[U.cross,` Failed to post to PR`]})}),t[93]=o.RED,t[94]=u.isError,t[95]=B):B=t[95];let ue;t[96]!==o.DIM||t[97]!==m?(ue=m&&V(E,{marginTop:1,children:H(O,{color:o.DIM,children:[`Saving flow`,U.ellipsis]})}),t[96]=o.DIM,t[97]=m,t[98]=ue):ue=t[98];let W;t[99]!==o.GREEN||t[100]!==g?(W=g&&V(E,{marginTop:1,children:H(O,{color:o.GREEN,children:[U.tick,` Flow saved`]})}),t[99]=o.GREEN,t[100]=g,t[101]=W):W=t[101];let G;t[102]!==o.RED||t[103]!==f?(G=tt.isFailure(f)&&V(E,{marginTop:1,children:H(O,{color:o.RED,children:[U.cross,` Failed to save flow`]})}),t[102]=o.RED,t[103]=f,t[104]=G):G=t[104];let de;t[105]!==o.DIM||t[106]!==o.PRIMARY||t[107]!==j?(de=j&&V(E,{flexDirection:`column`,paddingX:1,marginTop:1,children:H(O,{color:o.DIM,children:[`Replay:`,` `,V(O,{color:o.PRIMARY,bold:!0,children:j})]})}),t[105]=o.DIM,t[106]=o.PRIMARY,t[107]=j,t[108]=de):de=t[108];let fe;t[109]!==o.DIM||t[110]!==o.PRIMARY||t[111]!==i||t[112]!==M?(fe=M&&V(E,{flexDirection:`column`,paddingX:1,children:H(O,{color:o.DIM,children:[`Local Replay:`,` `,V(O,{color:o.PRIMARY,bold:!0,children:i})]})}),t[109]=o.DIM,t[110]=o.PRIMARY,t[111]=i,t[112]=M,t[113]=fe):fe=t[113];let pe;t[114]!==o.DIM||t[115]!==o.PRIMARY||t[116]!==a?(pe=a&&V(E,{flexDirection:`column`,paddingX:1,children:H(O,{color:o.DIM,children:[`Video:`,` `,V(O,{color:o.PRIMARY,bold:!0,children:a})]})}),t[114]=o.DIM,t[115]=o.PRIMARY,t[116]=a,t[117]=pe):pe=t[117];let me;t[118]===n.screenshotPaths?me=t[119]:(me=n.screenshotPaths.map(tb),t[118]=n.screenshotPaths,t[119]=me);let he;return t[120]!==re||t[121]!==N||t[122]!==ae||t[123]!==oe||t[124]!==P||t[125]!==se||t[126]!==F||t[127]!==z||t[128]!==ce||t[129]!==le||t[130]!==B||t[131]!==ue||t[132]!==W||t[133]!==G||t[134]!==de||t[135]!==fe||t[136]!==pe||t[137]!==me||t[138]!==I||t[139]!==R?(he=H(re,{flexDirection:I,width:R,paddingY:N,paddingX:ae,children:[oe,P,se,F,z,ce,le,B,ue,W,G,de,fe,pe,me]}),t[120]=re,t[121]=N,t[122]=ae,t[123]=oe,t[124]=P,t[125]=se,t[126]=F,t[127]=z,t[128]=ce,t[129]=le,t[130]=B,t[131]=ue,t[132]=W,t[133]=G,t[134]=de,t[135]=fe,t[136]=pe,t[137]=me,t[138]=I,t[139]=R,t[140]=he):he=t[140],he};function eb(e){return e.setScreen}function tb(e){return V(E,{marginTop:1,children:V(Xv,{src:e,alt:`Screenshot: ${e}`})},e)}const nb=m.mergeAll(um.layer,Xp.withRepoRoot(process.cwd())),rb=()=>N({queryKey:[`saved-flows`],queryFn:()=>u.gen(function*(){return yield*(yield*um).list()}).pipe(u.provide(nb),u.provide(be.layer),u.catchTag(`FindRepoRootError`,()=>u.succeed([])),u.runPromise)}),ib=new pn({isGitRepo:!1,currentBranch:`HEAD`,mainBranch:void 0,isOnMain:!1,hasChangesFromMain:!1,hasUnstagedChanges:!1,hasBranchCommits:!1,branchCommitCount:0,fileStats:[],workingTreeFileStats:[],fingerprint:void 0,savedFingerprint:void 0}),ab=()=>N({queryKey:[`git-state`],queryFn:async()=>{let e=await u.runPromiseExit(u.gen(function*(){return yield*(yield*Xp).getState()}).pipe(u.provide(Xp.withRepoRoot(process.cwd())),u.catchTag(`FindRepoRootError`,()=>u.succeed(ib)),u.timeoutOrElse({duration:1e4,onTimeout:()=>u.succeed(ib)}),u.provide(be.layer)));return d.isSuccess(e)?e.value:ib}}),ob=e=>Array.isArray(e.flow?.steps)?e.flow.steps:[],sb=(e,t)=>{let n=gn.makeUnsafe({_tag:`Changes`,mainBranch:t}),r=ob(e),i={title:e.flow.title,userInstruction:e.flow.userInstruction,steps:r},a=e.environment.cookies;$_(`flow:reused`,{slug:e.slug,step_count:r.length}),Zm.getState().setScreen(Xm({changesFor:n,instruction:e.flow.userInstruction,savedFlow:i,requiresCookies:a}))},cb=()=>{let e=ie(11);if(e[0]!==`53939b05c229418d7d52eba403172d78da52d4f06481f5625a9cf002fc443ae8`){for(let t=0;t<11;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`53939b05c229418d7d52eba403172d78da52d4f06481f5625a9cf002fc443ae8`}let t=Pt(),[n]=jt(),r=Zm(lb),{data:i}=ab(),{data:a,isLoading:o}=rb(),s=a===void 0?[]:a,{highlightedIndex:c,setHighlightedIndex:l,scrollOffset:u,handleNavigation:d}=Km({itemCount:s.length,visibleCount:15}),f=Math.min(40,Math.floor(n*.35)),p=Math.max(20,n-f-8),m=s.slice(u,u+15);te((e,t)=>{if(!d(e,t)){if(t.return){let e=s[c];e&&sb(e,i?.mainBranch??`main`)}t.escape&&r(Ym.Main())}});let h=E,g=`${s.length} flow${s.length===1?``:`s`}`,_;e[1]===g?_=e[2]:(_=V(E,{paddingX:1,children:V($m,{title:`Saved flows`,subtitle:g})}),e[1]=g,e[2]=_);let v;e[3]===o?v=e[4]:(v=o&&V(E,{marginTop:1,paddingX:1,children:V(Wm,{message:`Loading saved flows...`})}),e[3]=o,e[4]=v);let y=!o&&s.length===0&&V(E,{marginTop:1,paddingX:1,flexDirection:`column`,children:H(O,{color:t.DIM,children:[`No saved flows yet. Run a test and press `,V(O,{color:t.PRIMARY,children:`s`}),` on the results screen to save a flow.`]})}),b=!o&&s.length>0&&V(E,{marginTop:1,flexDirection:`column`,height:15,overflow:`hidden`,paddingX:1,children:m.map((e,n)=>{let r=n+u,a=r===c,o=ob(e).length;return H(Lt,{onClick:()=>{l(r),sb(e,i?.mainBranch??`main`)},children:[V(O,{color:a?t.PRIMARY:t.DIM,children:a?`${U.pointer} `:` `}),V(O,{color:a?t.PRIMARY:t.TEXT,bold:a,children:Gm(Re(e.title,f-1),f)}),V(O,{color:t.DIM,children:Gm(`${o} step${o===1?``:`s`}`,10)}),V(O,{color:t.DIM,children:Re(e.description,p)})]},e.slug)})}),x;return e[5]!==h||e[6]!==_||e[7]!==v||e[8]!==y||e[9]!==b?(x=H(h,{flexDirection:`column`,width:`100%`,paddingY:1,children:[_,v,y,b]}),e[5]=h,e[6]=_,e[7]=v,e[8]=y,e[9]=b,e[10]=x):x=e[10],x};function lb(e){return e.setScreen}const ub=e=>{let t=ie(7);if(t[0]!==`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`){for(let e=0;e<7;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`}let{status:n}=e,r=Pt();if(n===`open`){let e;return t[1]===r.GREEN?e=t[2]:(e=H(O,{color:r.GREEN,children:[U.bullet,` `]}),t[1]=r.GREEN,t[2]=e),e}if(n===`merged`){let e;return t[3]===r.PURPLE?e=t[4]:(e=H(O,{color:r.PURPLE,children:[U.bullet,` `]}),t[3]=r.PURPLE,t[4]=e),e}if(n===`draft`){let e;return t[5]===r.DIM?e=t[6]:(e=H(O,{color:r.DIM,children:[U.bullet,` `]}),t[5]=r.DIM,t[6]=e),e}return null},db=e=>{let t=ie(30);if(t[0]!==`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`){for(let e=0;e<30;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`}let{options:n,selectedIndex:r,isLoading:i,gitState:a}=e,o=Pt(),s;bb0:{if(n.length<=8){s=0;break bb0}let e=n.length-8;s=Math.min(e,Math.max(0,r-4))}let c=s,l,u,d,f;if(t[1]!==o||t[2]!==a||t[3]!==i||t[4]!==n||t[5]!==c||t[6]!==r){f=Symbol.for(`react.early_return_sentinel`);bb1:{let e=n.slice(c,c+8);if(n.length===0&&!i){let e;t[11]===o.DIM?e=t[12]:(e=V(E,{flexDirection:`column`,children:V(O,{color:o.DIM,children:`No matching results`})}),t[11]=o.DIM,t[12]=e),f=e;break bb1}l=E,u=`column`;let s;t[13]!==o||t[14]!==a||t[15]!==c||t[16]!==r?(s=(e,t)=>{let n=t+c===r,i=zm(e,a),s=Bm(e,a),l=e._tag===`PullRequest`||e._tag===`Branch`?e.branch.prNumber:null,u=e._tag===`PullRequest`||e._tag===`Branch`?e.branch.prStatus:null;return H(O,{wrap:`truncate`,children:[V(O,{color:n?o.PRIMARY:o.DIM,children:n?`${U.pointer} `:` `}),e._tag===`WorkingTree`?H(O,{color:o.GREEN,children:[U.bullet,` `]}):null,u?V(ub,{status:u}):null,V(O,{color:n?o.PRIMARY:o.TEXT,bold:n,children:i}),l?H(O,{children:[` `,H(O,{color:u===`open`?o.GREEN:u===`merged`?o.PURPLE:o.DIM,children:[`#`,l]}),u?H(O,{color:o.DIM,children:[` `,u]}):null]}):null,s&&!l?H(O,{color:o.DIM,children:[` `,s]}):null]},qn(e))},t[13]=o,t[14]=a,t[15]=c,t[16]=r,t[17]=s):s=t[17],d=e.map(s)}t[1]=o,t[2]=a,t[3]=i,t[4]=n,t[5]=c,t[6]=r,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else l=t[7],u=t[8],d=t[9],f=t[10];if(f!==Symbol.for(`react.early_return_sentinel`))return f;let p;t[18]!==o||t[19]!==i?(p=i?V(E,{children:H(O,{color:o.DIM,children:[` Loading PRs and branches`,U.ellipsis]})}):null,t[18]=o,t[19]=i,t[20]=p):p=t[20];let m;t[21]!==o||t[22]!==n.length?(m=n.length>8?V(E,{children:H(O,{color:o.DIM,children:[` `,n.length-8,` more `,U.arrowUp,`/`,U.arrowDown]})}):null,t[21]=o,t[22]=n.length,t[23]=m):m=t[23];let h;return t[24]!==l||t[25]!==u||t[26]!==d||t[27]!==p||t[28]!==m?(h=H(l,{flexDirection:u,children:[d,p,m]}),t[24]=l,t[25]=u,t[26]=d,t[27]=p,t[28]=m,t[29]=h):h=t[29],h},fb=({gitState:e,onSelect:t})=>{let[n,r]=L(!1),[i,a]=L(``),[o,s]=L(0),{data:c=[]}=N({queryKey:[`local-context-options`,e?.currentBranch],queryFn:()=>Im(e),enabled:!!e}),{data:l=[],isLoading:u}=N({queryKey:[`remote-context-options`,e?.currentBranch],queryFn:()=>Rm(e),enabled:n&&!!e}),d=F(()=>[...c,...l],[c,l]),f=F(()=>Hm(d,i,e),[d,i,e]);se(()=>{s(0)},[i]);let p=oe(()=>{r(!0),a(``),s(0)},[]),m=oe(()=>{r(!1),a(``)},[]);return{pickerOpen:n,pickerQuery:i,pickerIndex:o,filteredOptions:f,localOptions:c,remoteLoading:u,openPicker:p,closePicker:m,handleContextSelect:oe(e=>{t(e),m()},[t,m]),setPickerQuery:a,setPickerIndex:s,createInputChangeHandler:(e,t)=>r=>{let i=Ot(r),o=e.current;if(i.length>o.length&&i[i.length-1]===`@`&&(o.length===0||i[i.length-2]===` `)){t(i.slice(0,-1)),p();return}if(n){i.length-o.length<0?(m(),t(i)):a(e=>{let n=i.slice(o.length);return n.includes(` `)?(m(),t(i),``):e+n});return}t(i)}}},pb=e=>{let t=new Set;return e.filter(e=>t.has(e.path)?!1:(t.add(e.path),!0))},mb=e=>N({queryKey:[`test-coverage`,e?.fingerprint],queryFn:async()=>{if(!e?.isGitRepo||!e.hasChangesFromMain&&!e.hasUnstagedChanges)return;let t=e.mainBranch??`main`,n=await u.runPromiseExit(u.gen(function*(){let e=yield*Xp,n=yield*Pm,r=yield*e.getChangedFiles(gn.makeUnsafe({_tag:`WorkingTree`})),i=yield*e.getChangedFiles(gn.makeUnsafe({_tag:`Changes`,mainBranch:t})),a=pb([...r,...i]);if(a.length!==0)return yield*n.analyze(a)}).pipe(u.provide(Xp.withRepoRoot(process.cwd())),u.provide(Pm.layer),u.timeoutOrElse({duration:15e3,onTimeout:()=>u.succeed(void 0)}),u.provide(be.layer)));if(d.isSuccess(n))return n.value},enabled:!!(e?.isGitRepo&&(e.hasChangesFromMain||e.hasUnstagedChanges)),staleTime:3e4}),hb=[`Test the main user flow end to end`,`Smoke test the homepage and key pages`,`Check authentication and protected routes`],gb=[`Verify my recent changes work as expected`,`Check for regressions in related features`,`Test the main user flow end to end`],_b=[`Test the changes on this branch`,`Smoke test this branch end to end`,`Check for regressions on this branch`],vb=[`Test the changes in this pull request`,`Check for regressions introduced by this PR`,`Verify the PR works end to end`],yb=[`Test the changes from this commit`,`Check if this commit introduces regressions`,`Verify this commit works as expected`],bb=(e,t)=>{if(!e)return hb;switch(e._tag){case`WorkingTree`:return gb;case`Branch`:return _b;case`PullRequest`:return vb;case`Commit`:return yb;default:return hb}},xb=e=>e>=70?Nt.GREEN:e>=40?Nt.YELLOW:Nt.RED,Sb=e=>e>=70?`#0a2b0a`:e>=40?`#332b00`:`#331510`,Cb=e=>`Use Expect to test your changes.`,wb=e=>{let t=Math.round(e/100*10),n=10-t;return{filled:`█`.repeat(t),empty:`░`.repeat(n)}},Tb=({gitState:e})=>{let t=Pt(),[n]=jt(),r=Z_(e=>e.instructionHistory),i=Zm(e=>e.setScreen),[a,o]=L(void 0),[s,c]=L(``),[l,u]=L(0),[d,f]=L(0),[p,m]=L(!1),[h,g]=L(void 0),[_,v]=L(-1),[y,b]=L(``),x=cv(e=>e.cookiesEnabled),S=cv(e=>e.toggleCookies),{data:C}=mb(e),w=()=>{if(r.length===0)return;let e=_+1;e>=r.length||(_===-1&&b(s),v(e),c(r[e]),u(e=>e+1))},ee=()=>{if(_<=-1)return;let e=_-1;v(e),c(e===-1?y:r[e]),u(e=>e+1)},T=fb({gitState:e??null,onSelect:e=>{o(e),$_(`context:selected`,{context_type:{WorkingTree:`working_tree`,Branch:`branch`,PullRequest:`pull_request`,Commit:`commit`}[e._tag]})}}),D=T.localOptions.find(e=>e._tag===`WorkingTree`)??void 0,k=a??D??null,A=bb(k,e??null);se(()=>{f(0)},[k,e]);let ne=t=>{let n=(t??s).trim();if(!n){g(`Describe what you want the browser agent to test.`);return}if(!e)return;let r=e.mainBranch??`main`,a;k?._tag===`Commit`?a=gn.makeUnsafe({_tag:`Commit`,hash:k.hash}):k?._tag===`Branch`||k?._tag===`PullRequest`?(k.branch.name&&(dm(process.cwd(),k.branch.name),Qm.invalidateQueries({queryKey:[`git-state`]})),a=gn.makeUnsafe({_tag:`Branch`,mainBranch:r})):a=gn.makeUnsafe({_tag:`Changes`,mainBranch:r}),Z_.getState().rememberInstruction(n),x||Jm(n)?i(Xm({changesFor:a,instruction:n,requiresCookies:x})):i(Ym.CookieSyncConfirm({changesFor:a,instruction:n}))},re=I(s);re.current=s;let j=T.createInputChangeHandler(re,e=>{c(e),h&&g(void 0)}),M=!s.includes(`
|
|
43
|
-
`),N=s===``&&!T.pickerOpen&&A.length>0,ie=N&&!p&&n>=80,ae=A[d%A.length];return te((e,t)=>{if(T.pickerOpen){if(t.escape){T.closePicker();return}if(t.downArrow||t.ctrl&&e===`n`){T.setPickerIndex(Math.min(T.filteredOptions.length-1,T.pickerIndex+1));return}if(t.upArrow||t.ctrl&&e===`p`){T.setPickerIndex(Math.max(0,T.pickerIndex-1));return}if(t.return||t.tab){let e=T.filteredOptions[T.pickerIndex];e&&T.handleContextSelect(e);return}if(t.backspace||t.delete){T.pickerQuery.length===0?T.closePicker():T.setPickerQuery(T.pickerQuery.slice(0,-1));return}e&&!t.ctrl&&!t.meta&&T.setPickerQuery(T.pickerQuery+e);return}if(M&&t.upArrow){w();return}if(M&&t.downArrow){ee();return}if(t.ctrl&&e===`k`){S(),$_(`cookies:toggled`,{enabled:!x});return}if(t.tab&&!t.shift&&N&&ae){c(ae),u(e=>e+1),$_(`suggestion:accepted`);return}if(!(t.tab&&t.shift)&&N){if(t.rightArrow){f(e=>(e+1)%A.length),m(!0);return}if(t.leftArrow){f(e=>(e-1+A.length)%A.length),m(!0);return}}},{isActive:!0}),H(E,{flexDirection:`column`,width:`100%`,paddingY:1,children:[V(E,{flexDirection:`column`,marginBottom:1,paddingX:1,children:V(nv,{})}),(e?.hasUntestedChanges||C&&C.totalCount>0)&&!(C&&C.totalCount>0&&C.percent>=90)&&H(E,{paddingX:1,paddingY:1,marginBottom:1,backgroundColor:C&&C.totalCount>0?Sb(C.percent):t.BANNER_BG,width:`100%`,flexDirection:`column`,gap:0,children:[(()=>{if(C&&C.totalCount>0)return H(E,{children:[H(O,{color:xb(C.percent),bold:!0,children:[U.warning,` Untested changes`]}),V(O,{children:` `}),V(O,{color:xb(C.percent),children:wb(C.percent).filled}),V(O,{color:t.DIM,children:wb(C.percent).empty}),H(O,{color:xb(C.percent),children:[` `,C.percent,`% test coverage`]})]});if(!e)return null;let n=e.workingTreeFileStats,r=n.reduce((e,t)=>e+t.added,0),i=n.reduce((e,t)=>e+t.removed,0);return H(E,{children:[H(O,{color:t.YELLOW,bold:!0,children:[U.warning,` Untested changes detected`]}),n.length>0&&H(ue,{children:[H(O,{color:t.DIM,children:[` `,n.length,` file`,n.length===1?``:`s`,` `]}),r>0&&H(O,{color:t.GREEN,children:[`+`,r]}),r>0&&i>0&&V(O,{color:t.DIM,children:` `}),i>0&&H(O,{color:t.RED,children:[`-`,i]})]})]})})(),V(O,{color:t.DIM,children:C&&C.totalCount>0?Cb(C.percent):`Describe what to test and hit enter to verify your changes.`})]}),H(E,{flexDirection:`column`,width:`100%`,children:[H(E,{paddingX:1,children:[!e&&V(Wm,{message:`loading context`}),e&&e.isGitRepo&&k&&V(Lt,{fullWidth:!1,onClick:()=>{T.pickerOpen?T.closePicker():T.openPicker()},children:H(O,{color:t.DIM,children:[U.bullet,` `,H(O,{color:t.PRIMARY,children:[`@`,Vm(k,e)]}),Bm(k,e)&&` (${Bm(k,e)})`]})})]}),V(Lt,{children:V(E,{flexDirection:`column`,marginTop:1,backgroundColor:t.INPUT_BG,width:`100%`,paddingX:1,paddingY:1,children:H(E,{children:[V(O,{color:t.PRIMARY,children:`❯ `}),V(E,{flexGrow:1,children:V(Ut,{focus:!T.pickerOpen,multiline:!0,placeholder:ae?`${ae} [tab]`:``,value:s,onSubmit:ne,onUpArrowAtTop:M?void 0:w,onDownArrowAtBottom:M?void 0:ee,onChange:j},l)}),ie?V(O,{color:t.DIM,children:` ←→ cycle test suggestions`}):null]})})}),e?.isGitRepo&&T.pickerOpen&&H(Ft,{color:t.BORDER,children:[H(E,{marginBottom:0,children:[V(O,{color:t.DIM,children:`@ `}),V(O,{color:t.PRIMARY,children:T.pickerQuery}),V(O,{color:t.DIM,children:T.pickerQuery?``:`type to filter`})]}),V(db,{options:T.filteredOptions,selectedIndex:T.pickerIndex,isLoading:T.remoteLoading,gitState:e})]}),e?.isGitRepo&&!T.pickerOpen&&V(E,{marginTop:1,paddingX:1,children:H(O,{color:t.DIM,children:[V(O,{color:t.PRIMARY,children:`@`}),` add context`]})})]}),V(Qv,{message:h})]})},Eb=e=>{let t=ie(10);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<10;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segment:n,mutedColor:r}=e,i=n.color??r,a;t[1]!==n.label||t[2]!==i?(a=H(O,{color:i,children:[n.label,` `]}),t[1]=n.label,t[2]=i,t[3]=a):a=t[3];let o=n.color??r,s;t[4]!==n.key||t[5]!==o?(s=H(O,{color:o,children:[`[`,n.key,`]`]}),t[4]=n.key,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==a||t[8]!==s?(c=H(ue,{children:[a,s]}),t[7]=a,t[8]=s,t[9]=c):c=t[9],c},Db=e=>{let t=ie(12);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<12;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segments:n,color:r,mutedColor:i}=e,a;t[1]===r?a=t[2]:(a=V(O,{color:r,children:` `}),t[1]=r,t[2]=a);let o;if(t[3]!==i||t[4]!==n){let e;t[6]!==i||t[7]!==n.length?(e=(e,t)=>H(E,{children:[e.onClick?V(Lt,{fullWidth:!1,onClick:e.onClick,children:V(Eb,{segment:e,mutedColor:i})}):V(Eb,{segment:e,mutedColor:i}),t<n.length-1&&V(O,{color:i,children:` `})]},e.key+e.label),t[6]=i,t[7]=n.length,t[8]=e):e=t[8],o=n.map(e),t[3]=i,t[4]=n,t[5]=o}else o=t[5];let s;return t[9]!==a||t[10]!==o?(s=H(E,{children:[a,o]}),t[9]=a,t[10]=o,t[11]=s):s=t[11],s},Ob=S.Struct({version:S.String}),kb=(e,t)=>{let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){if((n[e]??0)>(r[e]??0))return!0;if((n[e]??0)<(r[e]??0))return!1}return!1},Ab=u.gen(function*(){let e=yield*u.tryPromise({try:()=>fetch(`https://registry.npmjs.org/${bt}/latest`).then(e=>e.json()),catch:e=>Error(`npm registry fetch failed: ${e}`)});return(yield*u.try({try:()=>S.decodeUnknownSync(Ob)(e),catch:e=>Error(`npm response decode failed: ${e}`)})).version}).pipe(u.timeoutOrElse({duration:5e3,onTimeout:()=>u.succeed(void 0)})),jb=()=>{let{data:e}=N({queryKey:[`update-check`],queryFn:async()=>{let e=await u.runPromiseExit(Ab);if(d.isSuccess(e))return e.value},staleTime:36e5,retry:!1,refetchOnWindowFocus:!1});return{latestVersion:e,updateAvailable:e!==void 0&&kb(e,`0.0.13`)}},Mb=(e,t)=>{let n=ie(87);if(n[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let e=0;e<87;e+=1)n[e]=Symbol.for(`react.memo_cache_sentinel`);n[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let r=Pt(),i=Zm(Fb),a=cv(Ib),o=cv(Lb),s=Z_(Rb),c=Z_(zb),l=Nv(Bb);switch(e._tag){case`Main`:{let e=a?`cookies on`:`cookies off`,r;n[1]!==e||n[2]!==o?(r={key:`ctrl+k`,label:e,cta:!0,onClick:o},n[1]=e,n[2]=o,n[3]=r):r=n[3];let s;n[4]===i?s=n[5]:(s={key:`ctrl+r`,label:`saved flows`,cta:!0,onClick:()=>i(Ym.SavedFlowPicker())},n[4]=i,n[5]=s);let c;if(n[6]!==t?.isGitRepo||n[7]!==i||n[8]!==r||n[9]!==s){if(c=[r,s],t?.isGitRepo){let e;n[11]===i?e=n[12]:(e={key:`ctrl+p`,label:`pick pr`,cta:!0,onClick:()=>i(Ym.SelectPr())},n[11]=i,n[12]=e),c.push(e)}n[6]=t?.isGitRepo,n[7]=i,n[8]=r,n[9]=s,n[10]=c}else c=n[10];return c}case`SelectPr`:{let e,t,a;n[13]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`←→`,label:`filter`},a={key:`/`,label:`search`},n[13]=e,n[14]=t,n[15]=a):(e=n[13],t=n[14],a=n[15]);let o;n[16]===i?o=n[17]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[16]=i,n[17]=o);let s;n[18]===r.PRIMARY?s=n[19]:(s={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[18]=r.PRIMARY,n[19]=s);let c;return n[20]!==o||n[21]!==s?(c=[e,t,a,o,s],n[20]=o,n[21]=s,n[22]=c):c=n[22],c}case`SavedFlowPicker`:{let e;n[23]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},n[23]=e):e=n[23];let t;n[24]===i?t=n[25]:(t={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[24]=i,n[25]=t);let a;n[26]===r.PRIMARY?a=n[27]:(a={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[26]=r.PRIMARY,n[27]=a);let o;return n[28]!==t||n[29]!==a?(o=[e,t,a],n[28]=t,n[29]=a,n[30]=o):o=n[30],o}case`CookieSyncConfirm`:{let t;n[31]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`↑↓`,label:`nav`},n[31]=t):t=n[31];let a;n[32]===i?a=n[33]:(a={key:`esc`,label:`back`,onClick:()=>i(Ym.Main())},n[32]=i,n[33]=a);let o;n[34]!==e.changesFor||n[35]!==e.instruction||n[36]!==e.savedFlow||n[37]!==i?(o={key:`c`,label:`enable sync`,cta:!0,onClick:()=>{i(Xm({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!0}))}},n[34]=e.changesFor,n[35]=e.instruction,n[36]=e.savedFlow,n[37]=i,n[38]=o):o=n[38];let s;n[39]!==e.changesFor||n[40]!==e.instruction||n[41]!==e.savedFlow||n[42]!==i?(s=()=>{i(Xm({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!1}))},n[39]=e.changesFor,n[40]=e.instruction,n[41]=e.savedFlow,n[42]=i,n[43]=s):s=n[43];let c;n[44]!==r.PRIMARY||n[45]!==s?(c={key:`a`,label:`run anyway`,color:r.PRIMARY,cta:!0,onClick:s},n[44]=r.PRIMARY,n[45]=s,n[46]=c):c=n[46];let l;return n[47]!==a||n[48]!==o||n[49]!==c?(l=[t,a,o,c],n[47]=a,n[48]=o,n[49]=c,n[50]=l):l=n[50],l}case`PortPicker`:{let e,t,a;n[51]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`space`,label:`toggle`},a={key:`/`,label:`custom port`},n[51]=e,n[52]=t,n[53]=a):(e=n[51],t=n[52],a=n[53]);let o;n[54]===i?o=n[55]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Ym.Main())},n[54]=i,n[55]=o);let s;n[56]===r.PRIMARY?s=n[57]:(s={key:`enter`,label:`confirm`,color:r.PRIMARY,cta:!0},n[56]=r.PRIMARY,n[57]=s);let c;return n[58]!==o||n[59]!==s?(c=[e,t,a,o,s],n[58]=o,n[59]=s,n[60]=c):c=n[60],c}case`Testing`:{let e=s===!0?`notify on`:`notify off`,t=l?`collapse`:`expand`,r;n[61]!==e||n[62]!==c?(r={key:`ctrl+n`,label:e,cta:!0,onClick:c},n[61]=e,n[62]=c,n[63]=r):r=n[63];let i;n[64]===t?i=n[65]:(i={key:`ctrl+o`,label:t,cta:!0},n[64]=t,n[65]=i);let a=l?`collapse`:`cancel`,o;n[66]===a?o=n[67]:(o={key:`esc`,label:a},n[66]=a,n[67]=o);let u;return n[68]!==r||n[69]!==i||n[70]!==o?(u=[r,i,o],n[68]=r,n[69]=i,n[70]=o,n[71]=u):u=n[71],u}case`Results`:{let t;n[72]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`y`,label:`copy`,cta:!0},n[72]=t):t=n[72];let r;if(n[73]!==e.report.changesFor||n[74]!==e.report.instruction||n[75]!==e.report.pullRequest||n[76]!==i){if(r=[t],_.isSome(e.report.pullRequest)){let e;n[78]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`p`,label:`post to PR`,cta:!0},n[78]=e):e=n[78],r.push(e)}let a;n[79]===Symbol.for(`react.memo_cache_sentinel`)?(a={key:`s`,label:`save flow`,cta:!0},n[79]=a):a=n[79],r.push(a);let o;n[80]!==e.report.changesFor||n[81]!==e.report.instruction||n[82]!==i?(o={key:`r`,label:`restart`,cta:!0,onClick:()=>{Nv.getState().setExecutedPlan(void 0),i(Xm({changesFor:e.report.changesFor,instruction:e.report.instruction}))}},n[80]=e.report.changesFor,n[81]=e.report.instruction,n[82]=i,n[83]=o):o=n[83],r.push(o);let s;n[84]===i?s=n[85]:(s={key:`esc`,label:`main menu`,cta:!0,onClick:()=>{Nv.getState().setExecutedPlan(void 0),i(Ym.Main())}},n[84]=i,n[85]=s),r.push(s),n[73]=e.report.changesFor,n[74]=e.report.instruction,n[75]=e.report.pullRequest,n[76]=i,n[77]=r}else r=n[77];return r}default:{let e;return n[86]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],n[86]=e):e=n[86],e}}},Nb=e=>e.length>0?` ${e.map(e=>`${e.label} [${e.key}]`).join(` `)}`:``,Pb=()=>{let e=ie(34);if(e[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let t=0;t<34;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let[t]=jt(),{data:n}=ab(),r=Zm(Vb),{latestVersion:i,updateAvailable:a}=jb(),o=Mb(r,n),s,c,l,u,d,f,p,m;if(e[1]!==o||e[2]!==t||e[3]!==i||e[4]!==r._tag||e[5]!==a){let n=a?[...o,{key:`ctrl+u`,label:`v${i} available`,cta:!0,color:J.warning}]:o;u=n.filter(Hb);let h=ze(Nb(u)),g=Wb,_=n.filter(Gb),v=g(_)+h+2>t?_.filter(Kb):_,y=g(v);l=Math.max(0,t-y-h-2),c=E,p=`column`,e[14]!==t||e[15]!==r._tag?(m=r._tag===`Testing`?V(Mv,{text:`─`.repeat(t),baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight,speed:3}):V(O,{color:J.border,children:`─`.repeat(t)}),e[14]=t,e[15]=r._tag,e[16]=m):m=e[16],s=E,d=1,f=v.map(qb),e[1]=o,e[2]=t,e[3]=i,e[4]=r._tag,e[5]=a,e[6]=s,e[7]=c,e[8]=l,e[9]=u,e[10]=d,e[11]=f,e[12]=p,e[13]=m}else s=e[6],c=e[7],l=e[8],u=e[9],d=e[10],f=e[11],p=e[12],m=e[13];let h;e[17]===l?h=e[18]:(h=` `.repeat(l),e[17]=l,e[18]=h);let g;e[19]===h?g=e[20]:(g=V(O,{children:h}),e[19]=h,e[20]=g);let _;e[21]===u?_=e[22]:(_=u.length>0?V(Db,{segments:u,color:J.primary,mutedColor:J.textMuted}):null,e[21]=u,e[22]=_);let v;e[23]!==s||e[24]!==d||e[25]!==f||e[26]!==g||e[27]!==_?(v=H(s,{paddingX:d,children:[f,g,_]}),e[23]=s,e[24]=d,e[25]=f,e[26]=g,e[27]=_,e[28]=v):v=e[28];let y;return e[29]!==c||e[30]!==p||e[31]!==m||e[32]!==v?(y=H(c,{flexDirection:p,children:[m,v]}),e[29]=c,e[30]=p,e[31]=m,e[32]=v,e[33]=y):y=e[33],y};function Fb(e){return e.setScreen}function Ib(e){return e.cookiesEnabled}function Lb(e){return e.toggleCookies}function Rb(e){return e.notifications}function zb(e){return e.toggleNotifications}function Bb(e){return e.expanded}function Vb(e){return e.screen}function Hb(e){return!e.cta}function Ub(e){return e.color?` ${e.label} [${e.key}] `:`${e.label} [${e.key}]`}function Wb(e){return ze(e.map(Ub).join(` `))}function Gb(e){return e.cta}function Kb(e){return e.key!==`ctrl+p`}function qb(e,t){let n=H(O,{children:[t>0?` `:``,e.color?H(O,{backgroundColor:e.color,color:`black`,children:[` `,V(O,{bold:!0,children:e.label}),` `,H(O,{children:[`[`,e.key,`]`]}),` `]}):H(O,{children:[H(O,{color:J.textMuted,children:[e.label,` `]}),H(O,{color:J.textMuted,children:[`[`,e.key,`]`]})]})]},e.key+e.label);return e.onClick?V(Lt,{onClick:e.onClick,fullWidth:!1,children:n},e.key+e.label):n}let Jb=null;const Yb=e=>{Jb=e},Xb=()=>Jb?.clear(),Zb=e=>{let t=ie(34);if(t[0]!==`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`){for(let e=0;e<34;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`}let{agent:n}=e,r=Zm(Qb),i=Zm($b),a=Zm(ex),{data:o}=ab(),s=at(ey),c,l;t[1]!==n||t[2]!==s?(c=()=>{s(_.some(n))},l=[n,s],t[1]=n,t[2]=s,t[3]=c,t[4]=l):(c=t[3],l=t[4]),se(c,l);let u;t[5]!==r._tag||t[6]!==i?(u=()=>{if(r._tag===`CookieSyncConfirm`){i(Ym.Main());return}if(r._tag===`PortPicker`){i(Ym.Main());return}if(r._tag===`Results`){Nv.getState().setExecutedPlan(void 0),i(Ym.Main());return}r._tag!==`Testing`&&i(Ym.Main())},t[5]=r._tag,t[6]=i,t[7]=u):u=t[7];let d=u,{updateAvailable:f}=jb(),{exit:p}=A(),[,m]=L(0),[,h]=jt(),g;t[8]!==p||t[9]!==o?.isGitRepo||t[10]!==d||t[11]!==a||t[12]!==r._tag||t[13]!==m||t[14]!==f?(g=(e,t)=>{if(t.ctrl&&e===`l`){Xb(),m(tx);return}if(t.ctrl&&e===`u`&&f){p(),process.stdout.write(_t),B(`npm`,[`install`,`-g`,`${bt}@latest`],{stdio:`inherit`});return}t.escape&&r._tag!==`Main`&&d(),t.ctrl&&e===`p`&&r._tag===`Main`&&o?.isGitRepo&&a(Ym.SelectPr()),t.ctrl&&e===`r`&&r._tag===`Main`&&a(Ym.SavedFlowPicker())},t[8]=p,t[9]=o?.isGitRepo,t[10]=d,t[11]=a,t[12]=r._tag,t[13]=m,t[14]=f,t[15]=g):g=t[15],te(g);let v;t[16]!==o||t[17]!==r._tag||t[18]!==r.baseUrls||t[19]!==r.changesFor||t[20]!==r.instruction||t[21]!==r.localReplayUrl||t[22]!==r.replayUrl||t[23]!==r.report||t[24]!==r.requiresCookies||t[25]!==r.savedFlow||t[26]!==r.videoUrl?(v=()=>{if(!o)return V(Tb,{gitState:void 0});switch(r._tag){case`PortPicker`:return V(bv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies});case`Testing`:return V(My,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies,baseUrls:r.baseUrls});case`Results`:return V($y,{report:r.report,replayUrl:r.replayUrl,localReplayUrl:r.localReplayUrl,videoUrl:r.videoUrl});case`SelectPr`:return V(eh,{});case`CookieSyncConfirm`:return V(iv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow});case`SavedFlowPicker`:return V(cb,{});default:return V(Tb,{gitState:o})}},t[16]=o,t[17]=r._tag,t[18]=r.baseUrls,t[19]=r.changesFor,t[20]=r.instruction,t[21]=r.localReplayUrl,t[22]=r.replayUrl,t[23]=r.report,t[24]=r.requiresCookies,t[25]=r.savedFlow,t[26]=r.videoUrl,t[27]=v):v=t[27];let y=v,b;t[28]===y?b=t[29]:(b=V(E,{flexGrow:1,children:y()}),t[28]=y,t[29]=b);let x;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(x=V(Pb,{}),t[30]=x):x=t[30];let S;return t[31]!==h||t[32]!==b?(S=V(Tt,{children:H(E,{flexDirection:`column`,width:`100%`,height:h,children:[b,x]})}),t[31]=h,t[32]=b,t[33]=S):S=t[33],S};function Qb(e){return e.screen}function $b(e){return e.setScreen}function ex(e){return e.navigateTo}function tx(e){return e+1}const nx=()=>{let e=je();return e===`darwin`?`afplay /System/Library/Sounds/Glass.aiff`:e===`win32`?`powershell -c (New-Object Media.SoundPlayer 'C:\\Windows\\Media\\chimes.wav').PlaySync()`:`paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || aplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null`},rx=()=>new Promise(e=>{z(nx(),()=>e())});var ix=class extends S.ErrorClass(`ExecutionTimeoutError`)({_tag:S.tag(`ExecutionTimeoutError`),timeoutMs:S.Number}){message=`expect execution timed out after ${this.timeoutMs}ms`};const ax=e=>`[${((Date.now()-e)/1e3).toFixed(1)}s]`,ox=e=>e.replace(/\r?\n/g,` `).replace(/::/g,`: :`),sx=e=>u.runPromise(ny(u.gen(function*(){let t=yield*Qp,n=yield*$p,r=yield*J_,i=Date.now();yield*r.capture(`session:started`,{mode:`headless`,skip_planning:!1,browser_headed:e.headed});let a=(yield*c.string(`GITHUB_ACTIONS`).pipe(c.withDefault(``)))!==``,o=e.ci?` [CI mode]`:``;console.log(`expect v${gt}${o}`),_.isSome(e.timeoutMs)&&console.log(`Timeout: ${e.timeoutMs.value}ms`),console.log(`Agent: ${e.agent}`),console.log(`Target: ${_n(e.changesFor)}`),console.log(`Starting browser test...`),a&&console.log(`::group::expect test execution`);let s=Date.now(),l=Date.now(),d=e.ci?setInterval(()=>{let e=Date.now();if(e-l>=6e4){let t=Math.floor((e-s)/6e4);console.log(`${ax(s)} Still running... (${t} minute${t===1?``:`s`} elapsed)`),l=e}},6e4):void 0;yield*r.capture(`run:started`,{plan_id:`direct`});let f=new Set,p=e=>{for(let t of e.events){if(f.has(t.id))continue;f.add(t.id),l=Date.now();let e=ax(s);switch(t._tag){case`RunStarted`:console.log(`${e} Starting ${t.plan.title}`);break;case`StepStarted`:console.log(`${e} ${U.arrowRight} ${t.stepId} ${t.title}`);break;case`StepCompleted`:console.log(`${e} ${U.tick} ${t.stepId} ${t.summary}`);break;case`StepFailed`:console.log(`${e} ${U.cross} ${t.stepId} ${t.message}`),a&&console.log(`::error title=${ox(t.stepId)} failed::${ox(t.message)}`);break;case`StepSkipped`:console.log(`${e} ${U.arrowRight} ${t.stepId} [skipped] ${t.reason}`);break}}},m=t.execute({changesFor:e.changesFor,instruction:e.instruction,isHeadless:!e.headed,requiresCookies:!1}).pipe(w.tap(e=>u.sync(()=>p(e))),w.runLast,u.map(t=>(t._tag===`Some`?t.value:new Qn({id:``,changesFor:e.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.instruction,baseUrl:void 0,isHeadless:!e.headed,requiresCookies:!1,testCoverage:_.none(),title:e.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),h=_.getOrUndefined(e.timeoutMs),g=yield*(h===void 0?m:m.pipe(u.timeoutOrElse({duration:`${h} millis`,onTimeout:()=>u.fail(new ix({timeoutMs:h}))}))).pipe(u.tapError(()=>u.sync(()=>{d&&clearInterval(d),a&&console.log(`::endgroup::`)})),u.catchTag(`ExecutionTimeoutError`,e=>u.sync(()=>{a&&console.log(`::error title=Execution timed out::${ox(e.message)}`),console.error(`\n${e.message}`),process.exit(1)})));d&&clearInterval(d),p(g),a&&console.log(`::endgroup::`);let v=yield*n.report(g),y=v.steps.filter(e=>v.stepStatuses.get(e.id)?.status===`passed`).length,b=v.steps.filter(e=>v.stepStatuses.get(e.id)?.status===`failed`).length;yield*r.capture(`run:completed`,{plan_id:g.id??`direct`,passed:y,failed:b,step_count:g.steps.length,file_count:0,duration_ms:Date.now()-s}),yield*r.capture(`session:ended`,{session_ms:Date.now()-i}),yield*r.flush;let x=v.toPlainText;console.error(`\n${x}`);let S=yield*c.option(c.string(`GITHUB_STEP_SUMMARY`));if(_.isSome(S)){let e=`## expect test results\n\n${v.status===`passed`?`**Result: PASSED**`:`**Result: FAILED**`}\n\n\`\`\`\n${x}\n\`\`\`\n`;yield*u.sync(()=>qe(S.value,e))}yield*u.promise(()=>rx()),process.exit(v.status===`passed`?0:1)}).pipe(u.provide($v({verbose:e.verbose,agent:e.agent}))))),cx={error:W.red,warn:W.yellow,info:W.cyan,success:W.green,dim:W.dim},$={error:(...e)=>{console.log(cx.error(e.join(` `)))},warn:(...e)=>{console.log(cx.warn(e.join(` `)))},info:(...e)=>{console.log(cx.info(e.join(` `)))},success:(...e)=>{console.log(cx.success(e.join(` `)))},dim:(...e)=>{console.log(cx.dim(e.join(` `)))},log:(...e)=>{console.log(e.join(` `))},break:()=>{console.log(``)}},lx=()=>{$.break(),$.log(`Cancelled.`),$.break(),process.exit(0)},ux=e=>mt(e,{onCancel:lx}),dx=(e,t)=>ht({text:e,isSilent:t?.silent}),fx=[`CI`,`CLAUDECODE`,`CURSOR_AGENT`,`CODEX_CI`,`OPENCODE`,`AMP_HOME`,`AMI`],px=()=>fx.some(e=>!!process.env[e]),mx=()=>!process.stdin.isTTY,hx={npm:`npm install -g expect-cli@latest`,pnpm:`pnpm add -g expect-cli@latest`,yarn:`yarn global add expect-cli@latest`,bun:`bun add -g expect-cli@latest`,vp:`vp install -g expect-cli@latest`},gx={npm:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,pnpm:`pnpm dlx skills add https://github.com/millionco/expect --skill expect -y`,yarn:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,bun:`bunx skills add https://github.com/millionco/expect --skill expect -y`,vp:`npx -y skills add https://github.com/millionco/expect --skill expect -y`},_x=()=>{if(process.env.VITE_PLUS_CLI_BIN)return`vp`;let e=process.env.npm_config_user_agent;if(e){if(e.startsWith(`pnpm`))return`pnpm`;if(e.startsWith(`yarn`))return`yarn`;if(e.startsWith(`bun`))return`bun`;if(e.startsWith(`npm`))return`npm`}return`npm`},vx=e=>e||px()||mx(),yx=e=>new Promise(t=>{z(e,{timeout:1e4},e=>{t(!e)}).stdin?.end()}),bx=async(e={})=>{let t=vx(e.yes??!1),n=_x(),r=hx[n];$.break(),$.log(` ${W.red(U.cross)}${W.green(U.tick)} ${W.bold(`Expect`)} ${cx.dim(`v${gt}`)}`),$.dim(` Let agents test your code in a real browser.`),$.break(),Ya().length===0&&($.error(`No supported coding agent found. expect requires one of: Claude Code, Codex, or Cursor.`),$.break(),$.log(` Install one to get started:`),$.log(` ${cx.info(`Claude Code`)} ${cx.dim(`https://docs.anthropic.com/en/docs/claude-code`)}`),$.log(` ${cx.info(`Codex`)} ${cx.dim(`https://github.com/openai/codex`)}`),$.log(` ${cx.info(`Cursor`)} ${cx.dim(`https://cursor.com`)}`),$.break(),process.exit(1));let i=dx(`Installing expect-cli globally...`).start();await yx(r)?i.succeed(`Installed! ${cx.info(`expect-cli`)} is now available globally.`):(i.fail(`Failed to install globally.`),$.dim(` Run manually: ${cx.info(r)}`)),$.break();let a=t;if(t||(a=(await ux({type:`confirm`,name:`installSkill`,message:`Install the ${cx.info(`expect`)} skill for your coding agent?`,initial:!0})).installSkill),a){let e=gx[n],t=dx(`Installing skill...`).start();await yx(e)?t.succeed(`Skill installed.`):(t.fail(`Failed to install skill.`),$.dim(` Run manually: ${cx.info(e)}`))}$.break(),$.success(`Setup complete! Here's how to get started:`),$.break(),$.log(` 1. ${cx.info(`cd`)} into your project directory`),$.log(` 2. Start your dev server (e.g. ${cx.dim(`npm run dev`)})`),$.log(` 3. Run ${cx.info(`expect-cli`)} to open the interactive test runner`),$.break(),$.log(` Or run headlessly from your coding agent:`),$.break(),$.log(` ${cx.dim(`$`)} ${cx.info(`expect-cli -m "test the login flow" -y`)}`),$.break(),$.log(` Set ${cx.info(`EXPECT_BASE_URL`)} if your app is not on localhost:3000:`),$.break(),$.log(` ${cx.dim(`$`)} ${cx.info(`EXPECT_BASE_URL=http://localhost:5173 expect-cli -m "test the homepage" -y`)}`),$.break()},xx=[`packages/*`,`apps/*`],Sx=e=>yt.some(t=>e.includes(t)),Cx=u.fn(`detectAgent`)(function*(e){let t=yield*p.FileSystem;for(let[n,r]of Object.entries(xt)){let i=G.join(e,n);if(yield*t.exists(i).pipe(u.catchTag(`PlatformError`,()=>u.succeed(!1))))return r}let n=G.join(e,`package.json`),r=yield*t.readFileString(n).pipe(u.catchTag(`PlatformError`,()=>u.succeed(``)));if(r){let e=yield*u.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})}).pipe(u.catchTag(`JsonParseError`,()=>u.succeed(void 0)));if(e?.packageManager){let t=e.packageManager.split(`@`)[0];if(t)return t}}return`npm`}),wx=u.fn(`readPackageJson`)(function*(e){let t=yield*p.FileSystem,n=G.join(e,`package.json`),r=yield*t.readFileString(n);return yield*u.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})})}),Tx=u.fn(`listWorkspaceDirectories`)(function*(e){let t=yield*p.FileSystem,n=[];for(let r of xx){let i=G.join(e,G.dirname(r)),a=yield*t.readDirectory(i).pipe(u.catchTag(`PlatformError`,()=>u.succeed([])));for(let e of a){let r=G.join(i,e);(yield*t.stat(r).pipe(u.catchTag(`PlatformError`,()=>u.succeed(void 0))))?.type===`Directory`&&n.push(r)}}return n}),Ex=(e,t,n)=>new Promise(r=>{ce(e,[`run`,n],{cwd:t,timeout:12e4,maxBuffer:5*1024*1024},(e,t,i)=>{let a=(t+`
|
|
44
|
-
`+i).trim();r({script:n,passed:!e,output:a})})}),
|
|
17
|
+
`)}function l(e){e?process.env.DEBUG=e:delete process.env.DEBUG}function u(){return process.env.DEBUG}function d(e){e.inspectOpts={};let n=Object.keys(t.inspectOpts);for(let r=0;r<n.length;r++)e.inspectOpts[n[r]]=t.inspectOpts[n[r]]}n.exports=ao()(t);let{formatters:f}=n.exports;f.o=function(e){return this.inspectOpts.colors=this.useColors,i.inspect(e,this.inspectOpts).split(`
|
|
18
|
+
`).map(e=>e.trim()).join(` `)},f.O=function(e){return this.inspectOpts.colors=this.useColors,i.inspect(e,this.inspectOpts)}})),uo=n(((e,t)=>{typeof process>`u`||process.type===`renderer`||process.browser===!0||process.__nwjs?t.exports=oo():t.exports=lo()})),fo=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,`__esModule`,{value:!0});let r=e(`fs`),i=n(uo()).default(`@kwsites/file-exists`);function a(e,t,n){i(`checking %s`,e);try{let a=r.statSync(e);return a.isFile()&&t?(i(`[OK] path represents a file`),!0):a.isDirectory()&&n?(i(`[OK] path represents a directory`),!0):(i(`[FAIL] path represents something other than a file or directory`),!1)}catch(e){if(e.code===`ENOENT`)return i(`[FAIL] path is not accessible: %o`,e),!1;throw i(`[FATAL] %o`,e),e}}function o(e,n=t.READABLE){return a(e,(n&t.FILE)>0,(n&t.FOLDER)>0)}t.exists=o,t.FILE=1,t.FOLDER=2,t.READABLE=t.FILE+t.FOLDER})),po=n((e=>{function t(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}Object.defineProperty(e,`__esModule`,{value:!0}),t(fo())})),mo=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.createDeferred=e.deferred=void 0;function t(){let e,t,n=`pending`;return{promise:new Promise((n,r)=>{e=n,t=r}),done(t){n===`pending`&&(n=`resolved`,e(t))},fail(e){n===`pending`&&(n=`rejected`,t(e))},get fulfilled(){return n!==`pending`},get status(){return n}}}e.deferred=t,e.createDeferred=t})),ho=po(),go=t(uo(),1),_o=mo(),vo=Object.defineProperty,yo=Object.getOwnPropertyDescriptor,bo=Object.getOwnPropertyNames,xo=Object.prototype.hasOwnProperty,Y=(e,t)=>function(){return e&&(t=(0,e[bo(e)[0]])(e=0)),t},So=(e,t)=>function(){return t||(0,e[bo(e)[0]])((t={exports:{}}).exports,t),t.exports},Co=(e,t)=>{for(var n in t)vo(e,n,{get:t[n],enumerable:!0})},wo=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of bo(t))!xo.call(e,i)&&i!==n&&vo(e,i,{get:()=>t[i],enumerable:!(r=yo(t,i))||r.enumerable});return e},To=e=>wo(vo({},`__esModule`,{value:!0}),e);function Eo(...e){let t=new String(e);return ko.set(t,e),t}function Do(e){return e instanceof String&&ko.has(e)}function Oo(e){return ko.get(e)||[]}var ko,Ao=Y({"src/lib/args/pathspec.ts"(){ko=new WeakMap}}),jo,Mo=Y({"src/lib/errors/git-error.ts"(){jo=class extends Error{constructor(e,t){super(t),this.task=e,Object.setPrototypeOf(this,new.target.prototype)}}}}),No,Po=Y({"src/lib/errors/git-response-error.ts"(){Mo(),No=class extends jo{constructor(e,t){super(void 0,t||String(e)),this.git=e}}}}),Fo,Io=Y({"src/lib/errors/task-configuration-error.ts"(){Mo(),Fo=class extends jo{constructor(e){super(void 0,e)}}}});function Lo(e){return typeof e==`function`?e:as}function Ro(e){return typeof e==`function`&&e!==as}function zo(e,t){let n=e.indexOf(t);return n<=0?[e,``]:[e.substr(0,n),e.substr(n+1)]}function Bo(e,t=0){return Ho(e)&&e.length>t?e[t]:void 0}function Vo(e,t=0){if(Ho(e)&&e.length>t)return e[e.length-1-t]}function Ho(e){return gs(e)}function Uo(e=``,t=!0,n=`
|
|
19
|
+
`){return e.split(n).reduce((e,n)=>{let r=t?n.trim():n;return r&&e.push(r),e},[])}function Wo(e,t){return Uo(e,!0).map(e=>t(e))}function Go(e){return(0,ho.exists)(e,ho.FOLDER)}function Ko(e,t){return Array.isArray(e)?e.includes(t)||e.push(t):e.add(t),t}function qo(e,t){return Array.isArray(e)&&!e.includes(t)&&e.push(t),e}function Jo(e,t){if(Array.isArray(e)){let n=e.indexOf(t);n>=0&&e.splice(n,1)}else e.delete(t);return t}function Yo(e){return Array.isArray(e)?e:[e]}function Xo(e){return e.replace(/[\s-]+(.)/g,(e,t)=>t.toUpperCase())}function Zo(e){return Yo(e).map(e=>e instanceof String?e:String(e))}function Qo(e,t=0){if(e==null)return t;let n=parseInt(e,10);return Number.isNaN(n)?t:n}function $o(e,t){let n=[];for(let r=0,i=e.length;r<i;r++)n.push(t,e[r]);return n}function es(e){return(Array.isArray(e)?De.concat(e):e).toString(`utf-8`)}function ts(e,t){let n={};return t.forEach(t=>{e[t]!==void 0&&(n[t]=e[t])}),n}function ns(e=0){return new Promise(t=>setTimeout(t,e))}function rs(e){if(e!==!1)return e}var is,as,os,ss=Y({"src/lib/utils/util.ts"(){_s(),is=`\0`,as=()=>{},os=Object.prototype.toString.call.bind(Object.prototype.toString)}});function cs(e,t,n){return t(e)?e:arguments.length>2?n:void 0}function ls(e,t){let n=Do(e)?`string`:typeof e;return/number|string|boolean/.test(n)&&(!t||!t.includes(n))}function us(e){return!!e&&os(e)===`[object Object]`}function ds(e){return typeof e==`function`}var fs,ps,ms,hs,gs,_s=Y({"src/lib/utils/argument-filters.ts"(){Ao(),ss(),fs=e=>Array.isArray(e),ps=e=>typeof e==`number`,ms=e=>typeof e==`string`||Do(e),hs=e=>ms(e)||Array.isArray(e)&&e.every(ms),gs=e=>e==null||`number|boolean|function`.includes(typeof e)?!1:typeof e.length==`number`}}),vs,ys=Y({"src/lib/utils/exit-codes.ts"(){vs=(e=>(e[e.SUCCESS=0]=`SUCCESS`,e[e.ERROR=1]=`ERROR`,e[e.NOT_FOUND=-2]=`NOT_FOUND`,e[e.UNCLEAN=128]=`UNCLEAN`,e))(vs||{})}}),bs,xs=Y({"src/lib/utils/git-output-streams.ts"(){bs=class e{constructor(e,t){this.stdOut=e,this.stdErr=t}asStrings(){return new e(this.stdOut.toString(`utf8`),this.stdErr.toString(`utf8`))}}}});function Ss(){throw Error(`LineParser:useMatches not implemented`)}var X,Cs,ws=Y({"src/lib/utils/line-parser.ts"(){X=class{constructor(e,t){this.matches=[],this.useMatches=Ss,this.parse=(e,t)=>(this.resetMatches(),this._regExp.every((t,n)=>this.addMatch(t,n,e(n)))?this.useMatches(t,this.prepareMatches())!==!1:!1),this._regExp=Array.isArray(e)?e:[e],t&&(this.useMatches=t)}resetMatches(){this.matches.length=0}prepareMatches(){return this.matches}addMatch(e,t,n){let r=n&&e.exec(n);return r&&this.pushMatch(t,r),!!r}pushMatch(e,t){this.matches.push(...t.slice(1))}},Cs=class extends X{addMatch(e,t,n){return/^remote:\s/.test(String(n))&&super.addMatch(e,t,n)}pushMatch(e,t){(e>0||t.length>1)&&super.pushMatch(e,t)}}}});function Ts(...e){let t=process.cwd(),n=Object.assign({baseDir:t,...Es},...e.filter(e=>typeof e==`object`&&e));return n.baseDir=n.baseDir||t,n.trimmed=n.trimmed===!0,n}var Es,Ds=Y({"src/lib/utils/simple-git-options.ts"(){Es={binary:`git`,maxConcurrentProcesses:5,config:[],trimmed:!1}}});function Os(e,t=[]){return us(e)?Object.keys(e).reduce((t,n)=>{let r=e[n];if(Do(r))t.push(r);else if(ls(r,[`boolean`]))t.push(n+`=`+r);else if(Array.isArray(r))for(let e of r)ls(e,[`string`,`number`])||t.push(n+`=`+e);else t.push(n);return t},t):t}function ks(e,t=0,n=!1){let r=[];for(let n=0,i=t<0?e.length:t;n<i;n++)`string|number`.includes(typeof e[n])&&r.push(String(e[n]));return Os(js(e),r),n||r.push(...As(e)),r}function As(e){return Zo(cs(Vo(e,typeof Vo(e)==`function`?1:0),fs,[]))}function js(e){return cs(Vo(e,ds(Vo(e))?1:0),us)}function Ms(e,t=!0){let n=Lo(Vo(e));return t||Ro(n)?n:void 0}var Ns=Y({"src/lib/utils/task-options.ts"(){_s(),ss(),Ao()}});function Ps(e,t){return e(t.stdOut,t.stdErr)}function Fs(e,t,n,r=!0){return Yo(n).forEach(n=>{for(let i=Uo(n,r),a=0,o=i.length;a<o;a++){let n=(e=0)=>{if(!(a+e>=o))return i[a+e]};t.some(({parse:t})=>t(n,e))}}),e}var Is=Y({"src/lib/utils/task-parser.ts"(){ss()}}),Ls={};Co(Ls,{ExitCodes:()=>vs,GitOutputStreams:()=>bs,LineParser:()=>X,NOOP:()=>as,NULL:()=>is,RemoteLineParser:()=>Cs,append:()=>Ko,appendTaskOptions:()=>Os,asArray:()=>Yo,asCamelCase:()=>Xo,asFunction:()=>Lo,asNumber:()=>Qo,asStringArray:()=>Zo,bufferToString:()=>es,callTaskParser:()=>Ps,createInstanceConfig:()=>Ts,delay:()=>ns,filterArray:()=>fs,filterFunction:()=>ds,filterHasLength:()=>gs,filterNumber:()=>ps,filterPlainObject:()=>us,filterPrimitives:()=>ls,filterString:()=>ms,filterStringOrStringArray:()=>hs,filterType:()=>cs,first:()=>Bo,folderExists:()=>Go,forEachLineWithContent:()=>Wo,getTrailingOptions:()=>ks,including:()=>qo,isUserFunction:()=>Ro,last:()=>Vo,objectToString:()=>os,orVoid:()=>rs,parseStringResponse:()=>Fs,pick:()=>ts,prefixedArray:()=>$o,remove:()=>Jo,splitOn:()=>zo,toLinesWithContent:()=>Uo,trailingFunctionArgument:()=>Ms,trailingOptionsArgument:()=>js});var Z=Y({"src/lib/utils/index.ts"(){_s(),ys(),xs(),ws(),Ds(),Ns(),Is(),ss()}}),Rs={};Co(Rs,{CheckRepoActions:()=>Us,checkIsBareRepoTask:()=>Vs,checkIsRepoRootTask:()=>Bs,checkIsRepoTask:()=>zs});function zs(e){switch(e){case`bare`:return Vs();case`root`:return Bs()}return{commands:[`rev-parse`,`--is-inside-work-tree`],format:`utf-8`,onError:Ws,parser:Gs}}function Bs(){return{commands:[`rev-parse`,`--git-dir`],format:`utf-8`,onError:Ws,parser(e){return/^\.(git)?$/.test(e.trim())}}}function Vs(){return{commands:[`rev-parse`,`--is-bare-repository`],format:`utf-8`,onError:Ws,parser:Gs}}function Hs(e){return/(Not a git repository|Kein Git-Repository)/i.test(String(e))}var Us,Ws,Gs,Ks=Y({"src/lib/tasks/check-is-repo.ts"(){Z(),Us=(e=>(e.BARE=`bare`,e.IN_TREE=`tree`,e.IS_REPO_ROOT=`root`,e))(Us||{}),Ws=({exitCode:e},t,n,r)=>{if(e===128&&Hs(t))return n(Buffer.from(`false`));r(t)},Gs=e=>e.trim()===`true`}});function qs(e,t){let n=new Js(e),r=e?Xs:Ys;return Uo(t).forEach(e=>{let t=e.replace(r,``);n.paths.push(t),(Zs.test(t)?n.folders:n.files).push(t)}),n}var Js,Ys,Xs,Zs,Qs=Y({"src/lib/responses/CleanSummary.ts"(){Z(),Js=class{constructor(e){this.dryRun=e,this.paths=[],this.files=[],this.folders=[]}},Ys=/^[a-z]+\s*/i,Xs=/^[a-z]+\s+[a-z]+\s*/i,Zs=/\/$/}}),$s={};Co($s,{EMPTY_COMMANDS:()=>oc,adhocExecTask:()=>ec,configurationErrorTask:()=>tc,isBufferTask:()=>ic,isEmptyTask:()=>ac,straightThroughBufferTask:()=>rc,straightThroughStringTask:()=>nc});function ec(e){return{commands:oc,format:`empty`,parser:e}}function tc(e){return{commands:oc,format:`empty`,parser(){throw typeof e==`string`?new Fo(e):e}}}function nc(e,t=!1){return{commands:e,format:`utf-8`,parser(e){return t?String(e).trim():e}}}function rc(e){return{commands:e,format:`buffer`,parser(e){return e}}}function ic(e){return e.format===`buffer`}function ac(e){return e.format===`empty`||!e.commands.length}var oc,sc=Y({"src/lib/tasks/task.ts"(){Io(),oc=[]}}),cc={};Co(cc,{CONFIG_ERROR_INTERACTIVE_MODE:()=>gc,CONFIG_ERROR_MODE_REQUIRED:()=>_c,CONFIG_ERROR_UNKNOWN_OPTION:()=>vc,CleanOptions:()=>yc,cleanTask:()=>uc,cleanWithOptionsTask:()=>lc,isCleanOptionsArray:()=>dc});function lc(e,t){let{cleanMode:n,options:r,valid:i}=fc(e);return n?i.options?(r.push(...t),r.some(hc)?tc(gc):uc(n,r)):tc(vc+JSON.stringify(e)):tc(_c)}function uc(e,t){return{commands:[`clean`,`-${e}`,...t],format:`utf-8`,parser(t){return qs(e===`n`,t)}}}function dc(e){return Array.isArray(e)&&e.every(e=>bc.has(e))}function fc(e){let t,n=[],r={cleanMode:!1,options:!0};return e.replace(/[^a-z]i/g,``).split(``).forEach(e=>{pc(e)?(t=e,r.cleanMode=!0):r.options=r.options&&mc(n[n.length]=`-${e}`)}),{cleanMode:t,options:n,valid:r}}function pc(e){return e===`f`||e===`n`}function mc(e){return/^-[a-z]$/i.test(e)&&bc.has(e.charAt(1))}function hc(e){return/^-[^\-]/.test(e)?e.indexOf(`i`)>0:e===`--interactive`}var gc,_c,vc,yc,bc,xc=Y({"src/lib/tasks/clean.ts"(){Qs(),Z(),sc(),gc=`Git clean interactive mode is not supported`,_c=`Git clean mode parameter ("n" or "f") is required`,vc=`Git clean unknown option found in: `,yc=(e=>(e.DRY_RUN=`n`,e.FORCE=`f`,e.IGNORED_INCLUDED=`x`,e.IGNORED_ONLY=`X`,e.EXCLUDING=`e`,e.QUIET=`q`,e.RECURSIVE=`d`,e))(yc||{}),bc=new Set([`i`,...Zo(Object.values(yc))])}});function Sc(e){let t=new Ec;for(let n of Tc(e))t.addValue(n.file,String(n.key),n.value);return t}function Cc(e,t){let n=null,r=[],i=new Map;for(let a of Tc(e,t))a.key===t&&(r.push(n=a.value),i.has(a.file)||i.set(a.file,[]),i.get(a.file).push(n));return{key:t,paths:Array.from(i.keys()),scopes:i,value:n,values:r}}function wc(e){return e.replace(/^(file):/,``)}function*Tc(e,t=null){let n=e.split(`\0`);for(let e=0,r=n.length-1;e<r;){let r=wc(n[e++]),i=n[e++],a=t;if(i.includes(`
|
|
20
|
+
`)){let e=zo(i,`
|
|
21
|
+
`);a=e[0],i=e[1]}yield{file:r,key:a,value:i}}}var Ec,Dc=Y({"src/lib/responses/ConfigList.ts"(){Z(),Ec=class{constructor(){this.files=[],this.values=Object.create(null)}get all(){return this._all||=this.files.reduce((e,t)=>Object.assign(e,this.values[t]),{}),this._all}addFile(e){if(!(e in this.values)){let t=Vo(this.files);this.values[e]=t?Object.create(this.values[t]):{},this.files.push(e)}return this.values[e]}addValue(e,t,n){let r=this.addFile(e);Object.hasOwn(r,t)?Array.isArray(r[t])?r[t].push(n):r[t]=[r[t],n]:r[t]=n,this._all=void 0}}}});function Oc(e,t){return typeof e==`string`&&Object.hasOwn(Nc,e)?e:t}function kc(e,t,n,r){let i=[`config`,`--${r}`];return n&&i.push(`--add`),i.push(e,t),{commands:i,format:`utf-8`,parser(e){return e}}}function Ac(e,t){let n=[`config`,`--null`,`--show-origin`,`--get-all`,e];return t&&n.splice(1,0,`--${t}`),{commands:n,format:`utf-8`,parser(t){return Cc(t,e)}}}function jc(e){let t=[`config`,`--list`,`--show-origin`,`--null`];return e&&t.push(`--${e}`),{commands:t,format:`utf-8`,parser(e){return Sc(e)}}}function Mc(){return{addConfig(e,t,...n){return this._runTask(kc(e,t,n[0]===!0,Oc(n[1],`local`)),Ms(arguments))},getConfig(e,t){return this._runTask(Ac(e,Oc(t,void 0)),Ms(arguments))},listConfig(...e){return this._runTask(jc(Oc(e[0],void 0)),Ms(arguments))}}}var Nc,Pc=Y({"src/lib/tasks/config.ts"(){Dc(),Z(),Nc=(e=>(e.system=`system`,e.global=`global`,e.local=`local`,e.worktree=`worktree`,e))(Nc||{})}});function Fc(e){return Lc.has(e)}var Ic,Lc,Rc=Y({"src/lib/tasks/diff-name-status.ts"(){Ic=(e=>(e.ADDED=`A`,e.COPIED=`C`,e.DELETED=`D`,e.MODIFIED=`M`,e.RENAMED=`R`,e.CHANGED=`T`,e.UNMERGED=`U`,e.UNKNOWN=`X`,e.BROKEN=`B`,e))(Ic||{}),Lc=new Set(Object.values(Ic))}});function zc(...e){return new Gc().param(...e)}function Bc(e){let t=new Set,n={};return Wo(e,e=>{let[r,i,a]=e.split(is);t.add(r),(n[r]=n[r]||[]).push({line:Qo(i),path:r,preview:a})}),{paths:t,results:n}}function Vc(){return{grep(e){let t=Ms(arguments),n=ks(arguments);for(let e of Hc)if(n.includes(e))return this._runTask(tc(`git.grep: use of "${e}" is not supported.`),t);typeof e==`string`&&(e=zc().param(e));let r=[`grep`,`--null`,`-n`,`--full-name`,...n,...e];return this._runTask({commands:r,format:`utf-8`,parser(e){return Bc(e)}},t)}}}var Hc,Uc,Wc,Gc,Kc=Y({"src/lib/tasks/grep.ts"(){Z(),sc(),Hc=[`-h`],Uc=Symbol(`grepQuery`),Gc=class{constructor(){this[Wc]=[]}*[(Wc=Uc,Symbol.iterator)](){for(let e of this[Uc])yield e}and(...e){return e.length&&this[Uc].push(`--and`,`(`,...$o(e,`-e`),`)`),this}param(...e){return this[Uc].push(...$o(e,`-e`)),this}}}}),qc={};Co(qc,{ResetMode:()=>Zc,getResetMode:()=>Yc,resetTask:()=>Jc});function Jc(e,t){let n=[`reset`];return Xc(e)&&n.push(`--${e}`),n.push(...t),nc(n)}function Yc(e){if(Xc(e))return e;switch(typeof e){case`string`:case`undefined`:return`soft`}}function Xc(e){return typeof e==`string`&&Qc.includes(e)}var Zc,Qc,$c=Y({"src/lib/tasks/reset.ts"(){Z(),sc(),Zc=(e=>(e.MIXED=`mixed`,e.SOFT=`soft`,e.HARD=`hard`,e.MERGE=`merge`,e.KEEP=`keep`,e))(Zc||{}),Qc=Zo(Object.values(Zc))}});function el(){return(0,go.default)(`simple-git`)}function tl(e,t,n){return!t||!String(t).replace(/\s*/,``)?n?(t,...r)=>{e(t,...r),n(t,...r)}:e:(r,...i)=>{e(`%s ${r}`,t,...i),n&&n(r,...i)}}function nl(e,t,{namespace:n}){if(typeof e==`string`)return e;let r=t&&t.namespace||``;return r.startsWith(n)?r.substr(n.length+1):r||n}function rl(e,t,n,r=el()){let i=e&&`[${e}]`||``,a=[],o=typeof t==`string`?r.extend(t):t,s=nl(cs(t,ms),o,r);return l(n);function c(t,n){return Ko(a,rl(e,s.replace(/^[^:]+/,t),n,r))}function l(t){let n=t&&`[${t}]`||``,a=o&&tl(o,n)||as,s=tl(r,`${i} ${n}`,a);return Object.assign(o?a:s,{label:e,sibling:c,info:s,step:l})}}var il=Y({"src/lib/git-logger.ts"(){Z(),go.default.formatters.L=e=>String(gs(e)?e.length:`-`),go.default.formatters.B=e=>Buffer.isBuffer(e)?e.toString(`utf8`):os(e)}}),al,ol=Y({"src/lib/runners/tasks-pending-queue.ts"(){Mo(),il(),al=class e{constructor(e=`GitExecutor`){this.logLabel=e,this._queue=new Map}withProgress(e){return this._queue.get(e)}createProgress(t){let n=e.getName(t.commands[0]);return{task:t,logger:rl(this.logLabel,n),name:n}}push(e){let t=this.createProgress(e);return t.logger(`Adding task to the queue, commands = %o`,e.commands),this._queue.set(e,t),t}fatal(e){for(let[t,{logger:n}]of Array.from(this._queue.entries()))t===e.task?(n.info(`Failed %o`,e),n(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`)):n.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`,e.message),this.complete(t);if(this._queue.size!==0)throw Error(`Queue size should be zero after fatal: ${this._queue.size}`)}complete(e){this.withProgress(e)&&this._queue.delete(e)}attempt(e){let t=this.withProgress(e);if(!t)throw new jo(void 0,`TasksPendingQueue: attempt called for an unknown task`);return t.logger(`Starting task`),t}static getName(t=`empty`){return`task:${t}:${++e.counter}`}static{this.counter=0}}}});function sl(e,t){return{method:Bo(e.commands)||``,commands:t}}function cl(e,t){return n=>{t(`[ERROR] child process exception %o`,n),e.push(Buffer.from(String(n.stack),`ascii`))}}function ll(e,t,n,r){return i=>{n(`%s received %L bytes`,t,i),r(`%B`,i),e.push(i)}}var ul,dl=Y({"src/lib/runners/git-executor-chain.ts"(){Mo(),sc(),Z(),ol(),ul=class{constructor(e,t,n){this._executor=e,this._scheduler=t,this._plugins=n,this._chain=Promise.resolve(),this._queue=new al}get cwd(){return this._cwd||this._executor.cwd}set cwd(e){this._cwd=e}get env(){return this._executor.env}get outputHandler(){return this._executor.outputHandler}chain(){return this}push(e){return this._queue.push(e),this._chain=this._chain.then(()=>this.attemptTask(e))}async attemptTask(e){let t=await this._scheduler.next(),n=()=>this._queue.complete(e);try{let{logger:t}=this._queue.attempt(e);return await(ac(e)?this.attemptEmptyTask(e,t):this.attemptRemoteTask(e,t))}catch(t){throw this.onFatalException(e,t)}finally{n(),t()}}onFatalException(e,t){let n=t instanceof jo?Object.assign(t,{task:e}):new jo(e,t&&String(t));return this._chain=Promise.resolve(),this._queue.fatal(n),n}async attemptRemoteTask(e,t){let n=this._plugins.exec(`spawn.binary`,``,sl(e,e.commands)),r=this._plugins.exec(`spawn.args`,[...e.commands],sl(e,e.commands)),i=await this.gitResponse(e,n,r,this.outputHandler,t.step(`SPAWN`)),a=await this.handleTaskData(e,r,i,t.step(`HANDLE`));return t(`passing response to task's parser as a %s`,e.format),ic(e)?Ps(e.parser,a):Ps(e.parser,a.asStrings())}async attemptEmptyTask(e,t){return t(`empty task bypassing child process to call to task's parser`),e.parser(this)}handleTaskData(e,t,n,r){let{exitCode:i,rejection:a,stdOut:o,stdErr:s}=n;return new Promise((c,l)=>{r(`Preparing to handle process response exitCode=%d stdOut=`,i);let{error:u}=this._plugins.exec(`task.error`,{error:a},{...sl(e,t),...n});if(u&&e.onError)return r.info(`exitCode=%s handling with custom error handler`),e.onError(n,u,e=>{r.info(`custom error handler treated as success`),r(`custom error returned a %s`,os(e)),c(new bs(Array.isArray(e)?Buffer.concat(e):e,Buffer.concat(s)))},l);if(u)return r.info(`handling as error: exitCode=%s stdErr=%s rejection=%o`,i,s.length,a),l(u);r.info(`retrieving task output complete`),c(new bs(Buffer.concat(o),Buffer.concat(s)))})}async gitResponse(e,t,n,r,i){let a=i.sibling(`output`),o=this._plugins.exec(`spawn.options`,{cwd:this.cwd,env:this.env,windowsHide:!0},sl(e,e.commands));return new Promise(s=>{let c=[],l=[];i.info(`%s %o`,t,n),i(`%O`,o);let u=this._beforeSpawn(e,n);if(u)return s({stdOut:c,stdErr:l,exitCode:9901,rejection:u});this._plugins.exec(`spawn.before`,void 0,{...sl(e,n),kill(e){u=e||u}});let d=ke(t,n,o);d.stdout.on(`data`,ll(c,`stdOut`,i,a.step(`stdOut`))),d.stderr.on(`data`,ll(l,`stdErr`,i,a.step(`stdErr`))),d.on(`error`,cl(l,i)),r&&(i(`Passing child process stdOut/stdErr to custom outputHandler`),r(t,d.stdout,d.stderr,[...n])),this._plugins.exec(`spawn.after`,void 0,{...sl(e,n),spawned:d,close(e,t){s({stdOut:c,stdErr:l,exitCode:e,rejection:u||t})},kill(e){d.killed||(u=e,d.kill(`SIGINT`))}})})}_beforeSpawn(e,t){let n;return this._plugins.exec(`spawn.before`,void 0,{...sl(e,t),kill(e){n=e||n}}),n}}}}),fl={};Co(fl,{GitExecutor:()=>pl});var pl,ml=Y({"src/lib/runners/git-executor.ts"(){dl(),pl=class{constructor(e,t,n){this.cwd=e,this._scheduler=t,this._plugins=n,this._chain=new ul(this,this._scheduler,this._plugins)}chain(){return new ul(this,this._scheduler,this._plugins)}push(e){return this._chain.push(e)}}}});function hl(e,t,n=as){t.then(e=>{n(null,e)},t=>{t?.task===e&&n(t instanceof No?gl(t):t,void 0)})}function gl(e){let t=e=>{console.warn(`simple-git deprecation notice: accessing GitResponseError.${e} should be GitResponseError.git.${e}, this will no longer be available in version 3`),t=as};return Object.create(e,Object.getOwnPropertyNames(e.git).reduce(n,{}));function n(n,r){return r in e||(n[r]={enumerable:!1,configurable:!1,get(){return t(r),e.git[r]}}),n}}var _l=Y({"src/lib/task-callback.ts"(){Po(),Z()}});function vl(e,t){return ec(n=>{if(!Go(e))throw Error(`Git.cwd: cannot change to non-directory "${e}"`);return(t||n).cwd=e})}var yl=Y({"src/lib/tasks/change-working-directory.ts"(){Z(),sc()}});function bl(e){let t=[`checkout`,...e];return t[1]===`-b`&&t.includes(`-B`)&&(t[1]=Jo(t,`-B`)),nc(t)}function xl(){return{checkout(){return this._runTask(bl(ks(arguments,1)),Ms(arguments))},checkoutBranch(e,t){return this._runTask(bl([`-b`,e,t,...ks(arguments)]),Ms(arguments))},checkoutLocalBranch(e){return this._runTask(bl([`-b`,e,...ks(arguments)]),Ms(arguments))}}}var Sl=Y({"src/lib/tasks/checkout.ts"(){Z(),sc()}});function Cl(){return{count:0,garbage:0,inPack:0,packs:0,prunePackable:0,size:0,sizeGarbage:0,sizePack:0}}function wl(){return{countObjects(){return this._runTask({commands:[`count-objects`,`--verbose`],format:`utf-8`,parser(e){return Fs(Cl(),[Tl],e)}})}}}var Tl,El=Y({"src/lib/tasks/count-objects.ts"(){Z(),Tl=new X(/([a-z-]+): (\d+)$/,(e,[t,n])=>{let r=Xo(t);Object.hasOwn(e,r)&&(e[r]=Qo(n))})}});function Dl(e){return Fs({author:null,branch:``,commit:``,root:!1,summary:{changes:0,insertions:0,deletions:0}},Ol,e)}var Ol,kl=Y({"src/lib/parsers/parse-commit.ts"(){Z(),Ol=[new X(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/,(e,[t,n,r])=>{e.branch=t,e.commit=r,e.root=!!n}),new X(/\s*Author:\s(.+)/i,(e,[t])=>{let n=t.split(`<`),r=n.pop();!r||!r.includes(`@`)||(e.author={email:r.substr(0,r.length-1),name:n.join(`<`).trim()})}),new X(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g,(e,[t,n,r])=>{e.summary.changes=parseInt(t,10)||0,e.summary.insertions=parseInt(n,10)||0,e.summary.deletions=parseInt(r,10)||0}),new X(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/,(e,[t,n,r])=>{e.summary.changes=parseInt(t,10)||0;let i=parseInt(n,10)||0;r===`-`?e.summary.deletions=i:r===`+`&&(e.summary.insertions=i)})]}});function Al(e,t,n){return{commands:[`-c`,`core.abbrev=40`,`commit`,...$o(e,`-m`),...t,...n],format:`utf-8`,parser:Dl}}function jl(){return{commit(t,...n){let r=Ms(arguments),i=e(t)||Al(Yo(t),Yo(cs(n[0],hs,[])),[...Zo(cs(n[1],fs,[])),...ks(arguments,0,!0)]);return this._runTask(i,r)}};function e(e){return!hs(e)&&tc(`git.commit: requires the commit message to be supplied as a string/string[]`)}}var Ml=Y({"src/lib/tasks/commit.ts"(){kl(),Z(),sc()}});function Nl(){return{firstCommit(){return this._runTask(nc([`rev-list`,`--max-parents=0`,`HEAD`],!0),Ms(arguments))}}}var Pl=Y({"src/lib/tasks/first-commit.ts"(){Z(),sc()}});function Fl(e,t){let n=[`hash-object`,e];return t&&n.push(`-w`),nc(n,!0)}var Il=Y({"src/lib/tasks/hash-object.ts"(){sc()}});function Ll(e,t,n){let r=String(n).trim(),i;if(i=zl.exec(r))return new Rl(e,t,!1,i[1]);if(i=Bl.exec(r))return new Rl(e,t,!0,i[1]);let a=``,o=r.split(` `);for(;o.length;)if(o.shift()===`in`){a=o.join(` `);break}return new Rl(e,t,/^re/i.test(r),a)}var Rl,zl,Bl,Vl=Y({"src/lib/responses/InitSummary.ts"(){Rl=class{constructor(e,t,n,r){this.bare=e,this.path=t,this.existing=n,this.gitDir=r}},zl=/^Init.+ repository in (.+)$/,Bl=/^Rein.+ in (.+)$/}});function Hl(e){return e.includes(Wl)}function Ul(e=!1,t,n){let r=[`init`,...n];return e&&!Hl(r)&&r.splice(1,0,Wl),{commands:r,format:`utf-8`,parser(e){return Ll(r.includes(`--bare`),t,e)}}}var Wl,Gl=Y({"src/lib/tasks/init.ts"(){Vl(),Wl=`--bare`}});function Kl(e){for(let t=0;t<e.length;t++){let n=Jl.exec(e[t]);if(n)return`--${n[1]}`}return``}function ql(e){return Jl.test(e)}var Jl,Yl=Y({"src/lib/args/log-format.ts"(){Jl=/^--(stat|numstat|name-only|name-status)(=|$)/}}),Xl,Zl=Y({"src/lib/responses/DiffSummary.ts"(){Xl=class{constructor(){this.changed=0,this.deletions=0,this.insertions=0,this.files=[]}}}});function Ql(e=``){let t=ru[e];return e=>Fs(new Xl,t,e,!1)}var $l,eu,tu,nu,ru,iu=Y({"src/lib/parsers/parse-diff-summary.ts"(){Yl(),Zl(),Rc(),Z(),$l=[new X(/^(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/,(e,[t,n,r=``])=>{e.files.push({file:t.trim(),changes:Qo(n),insertions:r.replace(/[^+]/g,``).length,deletions:r.replace(/[^-]/g,``).length,binary:!1})}),new X(/^(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,(e,[t,n,r])=>{e.files.push({file:t.trim(),before:Qo(n),after:Qo(r),binary:!0})}),new X(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/,(e,[t,n])=>{let r=/(\d+) i/.exec(n),i=/(\d+) d/.exec(n);e.changed=Qo(t),e.insertions=Qo(r?.[1]),e.deletions=Qo(i?.[1])})],eu=[new X(/(\d+)\t(\d+)\t(.+)$/,(e,[t,n,r])=>{let i=Qo(t),a=Qo(n);e.changed++,e.insertions+=i,e.deletions+=a,e.files.push({file:r,changes:i+a,insertions:i,deletions:a,binary:!1})}),new X(/-\t-\t(.+)$/,(e,[t])=>{e.changed++,e.files.push({file:t,after:0,before:0,binary:!0})})],tu=[new X(/(.+)$/,(e,[t])=>{e.changed++,e.files.push({file:t,changes:0,insertions:0,deletions:0,binary:!1})})],nu=[new X(/([ACDMRTUXB])([0-9]{0,3})\t(.[^\t]*)(\t(.[^\t]*))?$/,(e,[t,n,r,i,a])=>{e.changed++,e.files.push({file:a??r,changes:0,insertions:0,deletions:0,binary:!1,status:rs(Fc(t)&&t),from:rs(!!a&&r!==a&&r),similarity:Qo(n)})})],ru={"":$l,"--stat":$l,"--numstat":eu,"--name-status":nu,"--name-only":tu}}});function au(e,t){return t.reduce((t,n,r)=>(t[n]=e[r]||``,t),Object.create({diff:null}))}function ou(e=lu,t=uu,n=``){let r=Ql(n);return function(n){let i=Uo(n.trim(),!1,su).map(function(n){let i=n.split(cu),a=au(i[0].split(e),t);return i.length>1&&i[1].trim()&&(a.diff=r(i[1])),a});return{all:i,latest:i.length&&i[0]||null,total:i.length}}}var su,cu,lu,uu,du=Y({"src/lib/parsers/parse-list-log-summary.ts"(){Z(),iu(),Yl(),su=`òòòòòò `,cu=` òò`,lu=` ò `,uu=[`hash`,`date`,`message`,`refs`,`author_name`,`author_email`]}}),fu={};Co(fu,{diffSummaryTask:()=>pu,validateLogFormatConfig:()=>mu});function pu(e){let t=Kl(e),n=[`diff`];return t===``&&(t=`--stat`,n.push(`--stat=4096`)),n.push(...e),mu(n)||{commands:n,format:`utf-8`,parser:Ql(t)}}function mu(e){let t=e.filter(ql);if(t.length>1)return tc(`Summary flags are mutually exclusive - pick one of ${t.join(`,`)}`);if(t.length&&e.includes(`-z`))return tc(`Summary flag ${t} parsing is not compatible with null termination option '-z'`)}var hu=Y({"src/lib/tasks/diff.ts"(){Yl(),iu(),sc()}});function gu(e,t){let n=[],r=[];return Object.keys(e).forEach(t=>{n.push(t),r.push(String(e[t]))}),[n,r.join(t)]}function _u(e){return Object.keys(e).reduce((t,n)=>(n in xu||(t[n]=e[n]),t),{})}function vu(e={},t=[]){let n=cs(e.splitter,ms,lu),[r,i]=gu(us(e.format)?e.format:{hash:`%H`,date:e.strictDate===!1?`%ai`:`%aI`,message:`%s`,refs:`%D`,body:e.multiLine?`%B`:`%b`,author_name:e.mailMap===!1?`%an`:`%aN`,author_email:e.mailMap===!1?`%ae`:`%aE`},n),a=[],o=[`--pretty=format:${su}${i}${cu}`,...t],s=e.n||e[`max-count`]||e.maxCount;if(s&&o.push(`--max-count=${s}`),e.from||e.to){let t=e.symmetric===!1?`..`:`...`;a.push(`${e.from||``}${t}${e.to||``}`)}return ms(e.file)&&o.push(`--follow`,Eo(e.file)),Os(_u(e),o),{fields:r,splitter:n,commands:[...o,...a]}}function yu(e,t,n){let r=ou(e,t,Kl(n));return{commands:[`log`,...n],format:`utf-8`,parser:r}}function bu(){return{log(...n){let r=Ms(arguments),i=vu(js(arguments),Zo(cs(arguments[0],fs,[]))),a=t(...n)||mu(i.commands)||e(i);return this._runTask(a,r)}};function e(e){return yu(e.splitter,e.fields,e.commands)}function t(e,t){return ms(e)&&ms(t)&&tc(`git.log(string, string) should be replaced with git.log({ from: string, to: string })`)}}var xu,Su=Y({"src/lib/tasks/log.ts"(){Yl(),Ao(),du(),Z(),sc(),hu(),xu=(e=>(e[e[`--pretty`]=0]=`--pretty`,e[e[`max-count`]=1]=`max-count`,e[e.maxCount=2]=`maxCount`,e[e.n=3]=`n`,e[e.file=4]=`file`,e[e.format=5]=`format`,e[e.from=6]=`from`,e[e.to=7]=`to`,e[e.splitter=8]=`splitter`,e[e.symmetric=9]=`symmetric`,e[e.mailMap=10]=`mailMap`,e[e.multiLine=11]=`multiLine`,e[e.strictDate=12]=`strictDate`,e))(xu||{})}}),Cu,wu,Tu=Y({"src/lib/responses/MergeSummary.ts"(){Cu=class{constructor(e,t=null,n){this.reason=e,this.file=t,this.meta=n}toString(){return`${this.file}:${this.reason}`}},wu=class{constructor(){this.conflicts=[],this.merges=[],this.result=`success`}get failed(){return this.conflicts.length>0}get reason(){return this.result}toString(){return this.conflicts.length?`CONFLICTS: ${this.conflicts.join(`, `)}`:`OK`}}}}),Eu,Du,Ou=Y({"src/lib/responses/PullSummary.ts"(){Eu=class{constructor(){this.remoteMessages={all:[]},this.created=[],this.deleted=[],this.files=[],this.deletions={},this.insertions={},this.summary={changes:0,deletions:0,insertions:0}}},Du=class{constructor(){this.remote=``,this.hash={local:``,remote:``},this.branch={local:``,remote:``},this.message=``}toString(){return this.message}}}});function ku(e){return e.objects=e.objects||{compressing:0,counting:0,enumerating:0,packReused:0,reused:{count:0,delta:0},total:{count:0,delta:0}}}function Au(e){let t=/^\s*(\d+)/.exec(e),n=/delta (\d+)/i.exec(e);return{count:Qo(t&&t[1]||`0`),delta:Qo(n&&n[1]||`0`)}}var ju,Mu=Y({"src/lib/parsers/parse-remote-objects.ts"(){Z(),ju=[new Cs(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i,(e,[t,n])=>{let r=t.toLowerCase(),i=ku(e.remoteMessages);Object.assign(i,{[r]:Qo(n)})}),new Cs(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i,(e,[t,n])=>{let r=t.toLowerCase(),i=ku(e.remoteMessages);Object.assign(i,{[r]:Qo(n)})}),new Cs(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i,(e,[t,n,r])=>{let i=ku(e.remoteMessages);i.total=Au(t),i.reused=Au(n),i.packReused=Qo(r)})]}});function Nu(e,t){return Fs({remoteMessages:new Fu},Pu,t)}var Pu,Fu,Iu=Y({"src/lib/parsers/parse-remote-messages.ts"(){Z(),Mu(),Pu=[new Cs(/^remote:\s*(.+)$/,(e,[t])=>(e.remoteMessages.all.push(t.trim()),!1)),...ju,new Cs([/create a (?:pull|merge) request/i,/\s(https?:\/\/\S+)$/],(e,[t])=>{e.remoteMessages.pullRequestUrl=t}),new Cs([/found (\d+) vulnerabilities.+\(([^)]+)\)/i,/\s(https?:\/\/\S+)$/],(e,[t,n,r])=>{e.remoteMessages.vulnerabilities={count:Qo(t),summary:n,url:r}})],Fu=class{constructor(){this.all=[]}}}});function Lu(e,t){let n=Fs(new Du,Hu,[e,t]);return n.message&&n}var Ru,zu,Bu,Vu,Hu,Uu,Wu,Gu=Y({"src/lib/parsers/parse-pull.ts"(){Ou(),Z(),Iu(),Ru=/^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/,zu=/(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/,Bu=/^(create|delete) mode \d+ (.+)/,Vu=[new X(Ru,(e,[t,n,r])=>{e.files.push(t),n&&(e.insertions[t]=n.length),r&&(e.deletions[t]=r.length)}),new X(zu,(e,[t,,n,,r])=>n!==void 0||r!==void 0?(e.summary.changes=+t||0,e.summary.insertions=+n||0,e.summary.deletions=+r||0,!0):!1),new X(Bu,(e,[t,n])=>{Ko(e.files,n),Ko(t===`create`?e.created:e.deleted,n)})],Hu=[new X(/^from\s(.+)$/i,(e,[t])=>void(e.remote=t)),new X(/^fatal:\s(.+)$/,(e,[t])=>void(e.message=t)),new X(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/,(e,[t,n,r,i])=>{e.branch.local=r,e.hash.local=t,e.branch.remote=i,e.hash.remote=n})],Uu=(e,t)=>Fs(new Eu,Vu,[e,t]),Wu=(e,t)=>Object.assign(new Eu,Uu(e,t),Nu(e,t))}}),Ku,qu,Ju,Yu=Y({"src/lib/parsers/parse-merge.ts"(){Tu(),Z(),Gu(),Ku=[new X(/^Auto-merging\s+(.+)$/,(e,[t])=>{e.merges.push(t)}),new X(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/,(e,[t,n])=>{e.conflicts.push(new Cu(t,n))}),new X(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/,(e,[t,n,r])=>{e.conflicts.push(new Cu(t,n,{deleteRef:r}))}),new X(/^CONFLICT\s+\((.+)\):/,(e,[t])=>{e.conflicts.push(new Cu(t,null))}),new X(/^Automatic merge failed;\s+(.+)$/,(e,[t])=>{e.result=t})],qu=(e,t)=>Object.assign(Ju(e,t),Wu(e,t)),Ju=e=>Fs(new wu,Ku,e)}});function Xu(e){return e.length?{commands:[`merge`,...e],format:`utf-8`,parser(e,t){let n=qu(e,t);if(n.failed)throw new No(n);return n}}:tc(`Git.merge requires at least one option`)}var Zu=Y({"src/lib/tasks/merge.ts"(){Po(),Yu(),sc()}});function Qu(e,t,n){let r=n.includes(`deleted`),i=n.includes(`tag`)||/^refs\/tags/.test(e),a=!n.includes(`new`);return{deleted:r,tag:i,branch:!i,new:!a,alreadyUpdated:a,local:e,remote:t}}var $u,ed,td,nd=Y({"src/lib/parsers/parse-push.ts"(){Z(),Iu(),$u=[new X(/^Pushing to (.+)$/,(e,[t])=>{e.repo=t}),new X(/^updating local tracking ref '(.+)'/,(e,[t])=>{e.ref={...e.ref||{},local:t}}),new X(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/,(e,[t,n,r])=>{e.pushed.push(Qu(t,n,r))}),new X(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,(e,[t,n,r])=>{e.branch={...e.branch||{},local:t,remote:n,remoteName:r}}),new X(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/,(e,[t,n,r,i])=>{e.update={head:{local:t,remote:n},hash:{from:r,to:i}}})],ed=(e,t)=>{let n=td(e,t),r=Nu(e,t);return{...n,...r}},td=(e,t)=>Fs({pushed:[]},$u,[e,t])}}),rd={};Co(rd,{pushTagsTask:()=>id,pushTask:()=>ad});function id(e={},t){return Ko(t,`--tags`),ad(e,t)}function ad(e={},t){let n=[`push`,...t];return e.branch&&n.splice(1,0,e.branch),e.remote&&n.splice(1,0,e.remote),Jo(n,`-v`),Ko(n,`--verbose`),Ko(n,`--porcelain`),{commands:n,format:`utf-8`,parser:ed}}var od=Y({"src/lib/tasks/push.ts"(){nd(),Z()}});function sd(){return{showBuffer(){let e=[`show`,...ks(arguments,1)];return e.includes(`--binary`)||e.splice(1,0,`--binary`),this._runTask(rc(e),Ms(arguments))},show(){let e=[`show`,...ks(arguments,1)];return this._runTask(nc(e),Ms(arguments))}}}var cd=Y({"src/lib/tasks/show.ts"(){Z(),sc()}}),ld,ud,dd=Y({"src/lib/responses/FileStatusSummary.ts"(){ld=/^(.+)\0(.+)$/,ud=class{constructor(e,t,n){if(this.path=e,this.index=t,this.working_dir=n,t===`R`||n===`R`){let t=ld.exec(e)||[null,e,e];this.from=t[2]||``,this.path=t[1]||``}}}}});function fd(e){let[t,n]=e.split(is);return{from:n||t,to:t}}function pd(e,t,n){return[`${e}${t}`,n]}function md(e,...t){return t.map(t=>pd(e,t,(e,t)=>e.conflicted.push(t)))}function hd(e,t){let n=t.trim();switch(` `){case n.charAt(2):return r(n.charAt(0),n.charAt(1),n.slice(3));case n.charAt(1):return r(` `,n.charAt(0),n.slice(2));default:return}function r(t,n,r){let i=`${t}${n}`,a=_d.get(i);a&&a(e,r),i!==`##`&&i!==`!!`&&e.files.push(new ud(r,t,n))}}var gd,_d,vd,yd=Y({"src/lib/responses/StatusSummary.ts"(){Z(),dd(),gd=class{constructor(){this.not_added=[],this.conflicted=[],this.created=[],this.deleted=[],this.ignored=void 0,this.modified=[],this.renamed=[],this.files=[],this.staged=[],this.ahead=0,this.behind=0,this.current=null,this.tracking=null,this.detached=!1,this.isClean=()=>!this.files.length}},_d=new Map([pd(` `,`A`,(e,t)=>e.created.push(t)),pd(` `,`D`,(e,t)=>e.deleted.push(t)),pd(` `,`M`,(e,t)=>e.modified.push(t)),pd(`A`,` `,(e,t)=>{e.created.push(t),e.staged.push(t)}),pd(`A`,`M`,(e,t)=>{e.created.push(t),e.staged.push(t),e.modified.push(t)}),pd(`D`,` `,(e,t)=>{e.deleted.push(t),e.staged.push(t)}),pd(`M`,` `,(e,t)=>{e.modified.push(t),e.staged.push(t)}),pd(`M`,`M`,(e,t)=>{e.modified.push(t),e.staged.push(t)}),pd(`R`,` `,(e,t)=>{e.renamed.push(fd(t))}),pd(`R`,`M`,(e,t)=>{let n=fd(t);e.renamed.push(n),e.modified.push(n.to)}),pd(`!`,`!`,(e,t)=>{(e.ignored=e.ignored||[]).push(t)}),pd(`?`,`?`,(e,t)=>e.not_added.push(t)),...md(`A`,`A`,`U`),...md(`D`,`D`,`U`),...md(`U`,`A`,`D`,`U`),[`##`,(e,t)=>{let n=/ahead (\d+)/,r=/behind (\d+)/,i=/^(.+?(?=(?:\.{3}|\s|$)))/,a=/\.{3}(\S*)/,o=/\son\s(\S+?)(?=\.{3}|$)/,s=n.exec(t);e.ahead=s&&+s[1]||0,s=r.exec(t),e.behind=s&&+s[1]||0,s=i.exec(t),e.current=cs(s?.[1],ms,null),s=a.exec(t),e.tracking=cs(s?.[1],ms,null),s=o.exec(t),s&&(e.current=cs(s?.[1],ms,e.current)),e.detached=/\(no branch\)/.test(t)}]]),vd=function(e){let t=e.split(is),n=new gd;for(let e=0,r=t.length;e<r;){let r=t[e++].trim();r&&(r.charAt(0)===`R`&&(r+=is+(t[e++]||``)),hd(n,r))}return n}}});function bd(e){return{format:`utf-8`,commands:[`status`,`--porcelain`,`-b`,`-u`,`--null`,...e.filter(e=>!xd.includes(e))],parser(e){return vd(e)}}}var xd,Sd=Y({"src/lib/tasks/status.ts"(){yd(),xd=[`--null`,`-z`]}});function Cd(e=0,t=0,n=0,r=``,i=!0){return Object.defineProperty({major:e,minor:t,patch:n,agent:r,installed:i},`toString`,{value(){return`${this.major}.${this.minor}.${this.patch}`},configurable:!1,enumerable:!1})}function wd(){return Cd(0,0,0,``,!1)}function Td(){return{version(){return this._runTask({commands:[`--version`],format:`utf-8`,parser:Ed,onError(e,t,n,r){if(e.exitCode===-2)return n(Buffer.from(Dd));r(t)}})}}}function Ed(e){return e===Dd?wd():Fs(Cd(0,0,0,e),Od,e)}var Dd,Od,kd=Y({"src/lib/tasks/version.ts"(){Z(),Dd=`installed=false`,Od=[new X(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/,(e,[t,n,r,i=``])=>{Object.assign(e,Cd(Qo(t),Qo(n),Qo(r),i))}),new X(/version (\d+)\.(\d+)\.(\D+)(.+)?$/,(e,[t,n,r,i=``])=>{Object.assign(e,Cd(Qo(t),Qo(n),r,i))})]}});function Ad(e,t,n,...r){return ms(n)?t(n,cs(r[0],ms),ks(arguments)):tc(`git.${e}() requires a string 'repoPath'`)}function jd(){return{clone(e,...t){return this._runTask(Ad(`clone`,Md,cs(e,ms),...t),Ms(arguments))},mirror(e,...t){return this._runTask(Ad(`mirror`,Nd,cs(e,ms),...t),Ms(arguments))}}}var Md,Nd,Pd=Y({"src/lib/tasks/clone.ts"(){sc(),Z(),Ao(),Md=(e,t,n)=>{let r=[`clone`,...n];return ms(e)&&r.push(Eo(e)),ms(t)&&r.push(Eo(t)),nc(r)},Nd=(e,t,n)=>(Ko(n,`--mirror`),Md(e,t,n))}}),Fd={};Co(Fd,{SimpleGitApi:()=>Id});var Id,Ld=Y({"src/lib/simple-git-api.ts"(){_l(),yl(),Sl(),El(),Ml(),Pc(),Pl(),Kc(),Il(),Gl(),Su(),Zu(),od(),cd(),Sd(),sc(),kd(),Z(),Pd(),Id=class{constructor(e){this._executor=e}_runTask(e,t){let n=this._executor.chain(),r=n.push(e);return t&&hl(e,r,t),Object.create(this,{then:{value:r.then.bind(r)},catch:{value:r.catch.bind(r)},_executor:{value:n}})}add(e){return this._runTask(nc([`add`,...Yo(e)]),Ms(arguments))}cwd(e){let t=Ms(arguments);return typeof e==`string`?this._runTask(vl(e,this._executor),t):typeof e?.path==`string`?this._runTask(vl(e.path,e.root&&this._executor||void 0),t):this._runTask(tc(`Git.cwd: workingDirectory must be supplied as a string`),t)}hashObject(e,t){return this._runTask(Fl(e,t===!0),Ms(arguments))}init(e){return this._runTask(Ul(e===!0,this._executor.cwd,ks(arguments)),Ms(arguments))}merge(){return this._runTask(Xu(ks(arguments)),Ms(arguments))}mergeFromTo(e,t){return ms(e)&&ms(t)?this._runTask(Xu([e,t,...ks(arguments)]),Ms(arguments,!1)):this._runTask(tc(`Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`))}outputHandler(e){return this._executor.outputHandler=e,this}push(){let e=ad({remote:cs(arguments[0],ms),branch:cs(arguments[1],ms)},ks(arguments));return this._runTask(e,Ms(arguments))}stash(){return this._runTask(nc([`stash`,...ks(arguments)]),Ms(arguments))}status(){return this._runTask(bd(ks(arguments)),Ms(arguments))}},Object.assign(Id.prototype,xl(),jd(),jl(),Mc(),wl(),Nl(),Vc(),bu(),sd(),Td())}}),Rd={};Co(Rd,{Scheduler:()=>Bd});var zd,Bd,Vd=Y({"src/lib/runners/scheduler.ts"(){Z(),il(),zd=(()=>{let e=0;return()=>{e++;let{promise:t,done:n}=(0,_o.createDeferred)();return{promise:t,done:n,id:e}}})(),Bd=class{constructor(e=2){this.concurrency=e,this.logger=rl(``,`scheduler`),this.pending=[],this.running=[],this.logger(`Constructed, concurrency=%s`,e)}schedule(){if(!this.pending.length||this.running.length>=this.concurrency){this.logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`,this.pending.length,this.running.length,this.concurrency);return}let e=Ko(this.running,this.pending.shift());this.logger(`Attempting id=%s`,e.id),e.done(()=>{this.logger(`Completing id=`,e.id),Jo(this.running,e),this.schedule()})}next(){let{promise:e,id:t}=Ko(this.pending,zd());return this.logger(`Scheduling id=%s`,t),this.schedule(),e}}}}),Hd={};Co(Hd,{applyPatchTask:()=>Ud});function Ud(e,t){return nc([`apply`,...t,...e])}var Wd=Y({"src/lib/tasks/apply-patch.ts"(){sc()}});function Gd(e,t){return{branch:e,hash:t,success:!0}}function Kd(e){return{branch:e,hash:null,success:!1}}var qd,Jd=Y({"src/lib/responses/BranchDeleteSummary.ts"(){qd=class{constructor(){this.all=[],this.branches={},this.errors=[]}get success(){return!this.errors.length}}}});function Yd(e,t){return t===1&&Zd.test(e)}var Xd,Zd,Qd,$d,ef=Y({"src/lib/parsers/parse-branch-delete.ts"(){Jd(),Z(),Xd=/(\S+)\s+\(\S+\s([^)]+)\)/,Zd=/^error[^']+'([^']+)'/m,Qd=[new X(Xd,(e,[t,n])=>{let r=Gd(t,n);e.all.push(r),e.branches[t]=r}),new X(Zd,(e,[t])=>{let n=Kd(t);e.errors.push(n),e.all.push(n),e.branches[t]=n})],$d=(e,t)=>Fs(new qd,Qd,[e,t])}}),tf,nf=Y({"src/lib/responses/BranchSummary.ts"(){tf=class{constructor(){this.all=[],this.branches={},this.current=``,this.detached=!1}push(e,t,n,r,i){e===`*`&&(this.detached=t,this.current=n),this.all.push(n),this.branches[n]={current:e===`*`,linkedWorkTree:e===`+`,name:n,commit:r,label:i}}}}});function rf(e){return e?e.charAt(0):``}function af(e,t=!1){return Fs(new tf,t?[sf]:of,e)}var of,sf,cf=Y({"src/lib/parsers/parse-branch.ts"(){nf(),Z(),of=[new X(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/,(e,[t,n,r,i])=>{e.push(rf(t),!0,n,r,i)}),new X(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s,(e,[t,n,r,i])=>{e.push(rf(t),!1,n,r,i)})],sf=new X(/^(\S+)$/s,(e,[t])=>{e.push(`*`,!1,t,``,``)})}}),lf={};Co(lf,{branchLocalTask:()=>ff,branchTask:()=>df,containsDeleteBranchCommand:()=>uf,deleteBranchTask:()=>mf,deleteBranchesTask:()=>pf});function uf(e){let t=[`-d`,`-D`,`--delete`];return e.some(e=>t.includes(e))}function df(e){let t=uf(e),n=e.includes(`--show-current`),r=[`branch`,...e];return r.length===1&&r.push(`-a`),r.includes(`-v`)||r.splice(1,0,`-v`),{format:`utf-8`,commands:r,parser(e,r){return t?$d(e,r).all[0]:af(e,n)}}}function ff(){return{format:`utf-8`,commands:[`branch`,`-v`],parser(e){return af(e)}}}function pf(e,t=!1){return{format:`utf-8`,commands:[`branch`,`-v`,t?`-D`:`-d`,...e],parser(e,t){return $d(e,t)},onError({exitCode:e,stdOut:t},n,r,i){if(!Yd(String(n),e))return i(n);r(t)}}}function mf(e,t=!1){let n={format:`utf-8`,commands:[`branch`,`-v`,t?`-D`:`-d`,e],parser(t,n){return $d(t,n).branches[e]},onError({exitCode:e,stdErr:t,stdOut:r},i,a,o){if(!Yd(String(i),e))return o(i);throw new No(n.parser(es(r),es(t)),String(i))}};return n}var hf=Y({"src/lib/tasks/branch.ts"(){Po(),ef(),cf(),Z()}});function gf(e){let t=e.trim().replace(/^["']|["']$/g,``);return t&&ge(t)}var _f,vf=Y({"src/lib/responses/CheckIgnore.ts"(){_f=e=>e.split(/\n/g).map(gf).filter(Boolean)}}),yf={};Co(yf,{checkIgnoreTask:()=>bf});function bf(e){return{commands:[`check-ignore`,...e],format:`utf-8`,parser:_f}}var xf=Y({"src/lib/tasks/check-ignore.ts"(){vf()}});function Sf(e,t){return Fs({raw:e,remote:null,branches:[],tags:[],updated:[],deleted:[]},Cf,[e,t])}var Cf,wf=Y({"src/lib/parsers/parse-fetch.ts"(){Z(),Cf=[new X(/From (.+)$/,(e,[t])=>{e.remote=t}),new X(/\* \[new branch]\s+(\S+)\s*-> (.+)$/,(e,[t,n])=>{e.branches.push({name:t,tracking:n})}),new X(/\* \[new tag]\s+(\S+)\s*-> (.+)$/,(e,[t,n])=>{e.tags.push({name:t,tracking:n})}),new X(/- \[deleted]\s+\S+\s*-> (.+)$/,(e,[t])=>{e.deleted.push({tracking:t})}),new X(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/,(e,[t,n,r,i])=>{e.updated.push({name:r,tracking:i,to:n,from:t})})]}}),Tf={};Co(Tf,{fetchTask:()=>Df});function Ef(e){return/^--upload-pack(=|$)/.test(e)}function Df(e,t,n){let r=[`fetch`,...n];return e&&t&&r.push(e,t),r.find(Ef)?tc(`git.fetch: potential exploit argument blocked.`):{commands:r,format:`utf-8`,parser:Sf}}var Of=Y({"src/lib/tasks/fetch.ts"(){wf(),sc()}});function kf(e){return Fs({moves:[]},Af,e)}var Af,jf=Y({"src/lib/parsers/parse-move.ts"(){Z(),Af=[new X(/^Renaming (.+) to (.+)$/,(e,[t,n])=>{e.moves.push({from:t,to:n})})]}}),Mf={};Co(Mf,{moveTask:()=>Nf});function Nf(e,t){return{commands:[`mv`,`-v`,...Yo(e),t],format:`utf-8`,parser:kf}}var Pf=Y({"src/lib/tasks/move.ts"(){jf(),Z()}}),Ff={};Co(Ff,{pullTask:()=>If});function If(e,t,n){let r=[`pull`,...n];return e&&t&&r.splice(1,0,e,t),{commands:r,format:`utf-8`,parser(e,t){return Wu(e,t)},onError(e,t,n,r){let i=Lu(es(e.stdOut),es(e.stdErr));if(i)return r(new No(i));r(t)}}}var Lf=Y({"src/lib/tasks/pull.ts"(){Po(),Gu(),Z()}});function Rf(e){let t={};return Bf(e,([e])=>t[e]={name:e}),Object.values(t)}function zf(e){let t={};return Bf(e,([e,n,r])=>{Object.hasOwn(t,e)||(t[e]={name:e,refs:{fetch:``,push:``}}),r&&n&&(t[e].refs[r.replace(/[^a-z]/g,``)]=n)}),Object.values(t)}function Bf(e,t){Wo(e,e=>t(e.split(/\s+/)))}var Vf=Y({"src/lib/responses/GetRemoteSummary.ts"(){Z()}}),Hf={};Co(Hf,{addRemoteTask:()=>Uf,getRemotesTask:()=>Wf,listRemotesTask:()=>Gf,remoteTask:()=>Kf,removeRemoteTask:()=>qf});function Uf(e,t,n){return nc([`remote`,`add`,...n,e,t])}function Wf(e){let t=[`remote`];return e&&t.push(`-v`),{commands:t,format:`utf-8`,parser:e?zf:Rf}}function Gf(e){let t=[...e];return t[0]!==`ls-remote`&&t.unshift(`ls-remote`),nc(t)}function Kf(e){let t=[...e];return t[0]!==`remote`&&t.unshift(`remote`),nc(t)}function qf(e){return nc([`remote`,`remove`,e])}var Jf=Y({"src/lib/tasks/remote.ts"(){Vf(),sc()}}),Yf={};Co(Yf,{stashListTask:()=>Xf});function Xf(e={},t){let n=vu(e),r=[`stash`,`list`,...n.commands,...t],i=ou(n.splitter,n.fields,Kl(r));return mu(r)||{commands:r,format:`utf-8`,parser:i}}var Zf=Y({"src/lib/tasks/stash-list.ts"(){Yl(),du(),hu(),Su()}}),Qf={};Co(Qf,{addSubModuleTask:()=>$f,initSubModuleTask:()=>ep,subModuleTask:()=>tp,updateSubModuleTask:()=>np});function $f(e,t){return tp([`add`,e,t])}function ep(e){return tp([`init`,...e])}function tp(e){let t=[...e];return t[0]!==`submodule`&&t.unshift(`submodule`),nc(t)}function np(e){return tp([`update`,...e])}var rp=Y({"src/lib/tasks/sub-module.ts"(){sc()}});function ip(e,t){let n=Number.isNaN(e);return n===Number.isNaN(t)?n?ap(e,t):0:n?1:-1}function ap(e,t){return e===t?0:e>t?1:-1}function op(e){return e.trim()}function sp(e){return typeof e==`string`&&parseInt(e.replace(/^\D+/g,``),10)||0}var cp,lp,up=Y({"src/lib/responses/TagList.ts"(){cp=class{constructor(e,t){this.all=e,this.latest=t}},lp=function(e,t=!1){let n=e.split(`
|
|
22
|
+
`).map(op).filter(Boolean);t||n.sort(function(e,t){let n=e.split(`.`),r=t.split(`.`);if(n.length===1||r.length===1)return ip(sp(n[0]),sp(r[0]));for(let e=0,t=Math.max(n.length,r.length);e<t;e++){let t=ap(sp(n[e]),sp(r[e]));if(t)return t}return 0});let r=t?n[0]:[...n].reverse().find(e=>e.indexOf(`.`)>=0);return new cp(n,r)}}}),dp={};Co(dp,{addAnnotatedTagTask:()=>mp,addTagTask:()=>pp,tagListTask:()=>fp});function fp(e=[]){let t=e.some(e=>/^--sort=/.test(e));return{format:`utf-8`,commands:[`tag`,`-l`,...e],parser(e){return lp(e,t)}}}function pp(e){return{format:`utf-8`,commands:[`tag`,e],parser(){return{name:e}}}}function mp(e,t){return{format:`utf-8`,commands:[`tag`,`-a`,`-m`,t,e],parser(){return{name:e}}}}var hp=Y({"src/lib/tasks/tag.ts"(){up()}}),gp=So({"src/git.js"(e,t){var{GitExecutor:n}=(ml(),To(fl)),{SimpleGitApi:r}=(Ld(),To(Fd)),{Scheduler:i}=(Vd(),To(Rd)),{adhocExecTask:a,configurationErrorTask:o}=(sc(),To($s)),{asArray:s,filterArray:c,filterPrimitives:l,filterString:u,filterStringOrStringArray:d,filterType:f,getTrailingOptions:p,trailingFunctionArgument:m,trailingOptionsArgument:h}=(Z(),To(Ls)),{applyPatchTask:g}=(Wd(),To(Hd)),{branchTask:_,branchLocalTask:v,deleteBranchesTask:y,deleteBranchTask:b}=(hf(),To(lf)),{checkIgnoreTask:x}=(xf(),To(yf)),{checkIsRepoTask:S}=(Ks(),To(Rs)),{cleanWithOptionsTask:C,isCleanOptionsArray:w}=(xc(),To(cc)),{diffSummaryTask:T}=(hu(),To(fu)),{fetchTask:E}=(Of(),To(Tf)),{moveTask:D}=(Pf(),To(Mf)),{pullTask:O}=(Lf(),To(Ff)),{pushTagsTask:k}=(od(),To(rd)),{addRemoteTask:A,getRemotesTask:j,listRemotesTask:ee,remoteTask:te,removeRemoteTask:ne}=(Jf(),To(Hf)),{getResetMode:M,resetTask:N}=($c(),To(qc)),{stashListTask:re}=(Zf(),To(Yf)),{addSubModuleTask:ie,initSubModuleTask:P,subModuleTask:ae,updateSubModuleTask:F}=(rp(),To(Qf)),{addAnnotatedTagTask:oe,addTagTask:I,tagListTask:se}=(hp(),To(dp)),{straightThroughBufferTask:ce,straightThroughStringTask:L}=(sc(),To($s));function R(e,t){this._plugins=t,this._executor=new n(e.baseDir,new i(e.maxConcurrentProcesses),t),this._trimmed=e.trimmed}(R.prototype=Object.create(r.prototype)).constructor=R,R.prototype.customBinary=function(e){return this._plugins.reconfigure(`binary`,e),this},R.prototype.env=function(e,t){return arguments.length===1&&typeof e==`object`?this._executor.env=e:(this._executor.env=this._executor.env||{})[e]=t,this},R.prototype.stashList=function(e){return this._runTask(re(h(arguments)||{},c(e)&&e||[]),m(arguments))},R.prototype.mv=function(e,t){return this._runTask(D(e,t),m(arguments))},R.prototype.checkoutLatestTag=function(e){var t=this;return this.pull(function(){t.tags(function(n,r){t.checkout(r.latest,e)})})},R.prototype.pull=function(e,t,n,r){return this._runTask(O(f(e,u),f(t,u),p(arguments)),m(arguments))},R.prototype.fetch=function(e,t){return this._runTask(E(f(e,u),f(t,u),p(arguments)),m(arguments))},R.prototype.silent=function(e){return this._runTask(a(()=>console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.")))},R.prototype.tags=function(e,t){return this._runTask(se(p(arguments)),m(arguments))},R.prototype.rebase=function(){return this._runTask(L([`rebase`,...p(arguments)]),m(arguments))},R.prototype.reset=function(e){return this._runTask(N(M(e),p(arguments)),m(arguments))},R.prototype.revert=function(e){let t=m(arguments);return typeof e==`string`?this._runTask(L([`revert`,...p(arguments,0,!0),e]),t):this._runTask(o(`Commit must be a string`),t)},R.prototype.addTag=function(e){let t=typeof e==`string`?I(e):o(`Git.addTag requires a tag name`);return this._runTask(t,m(arguments))},R.prototype.addAnnotatedTag=function(e,t){return this._runTask(oe(e,t),m(arguments))},R.prototype.deleteLocalBranch=function(e,t,n){return this._runTask(b(e,typeof t==`boolean`?t:!1),m(arguments))},R.prototype.deleteLocalBranches=function(e,t,n){return this._runTask(y(e,typeof t==`boolean`?t:!1),m(arguments))},R.prototype.branch=function(e,t){return this._runTask(_(p(arguments)),m(arguments))},R.prototype.branchLocal=function(e){return this._runTask(v(),m(arguments))},R.prototype.raw=function(e){let t=!Array.isArray(e),n=[].slice.call(t?arguments:e,0);for(let e=0;e<n.length&&t;e++)if(!l(n[e])){n.splice(e,n.length-e);break}n.push(...p(arguments,0,!0));var r=m(arguments);return n.length?this._runTask(L(n,this._trimmed),r):this._runTask(o(`Raw: must supply one or more command to execute`),r)},R.prototype.submoduleAdd=function(e,t,n){return this._runTask(ie(e,t),m(arguments))},R.prototype.submoduleUpdate=function(e,t){return this._runTask(F(p(arguments,!0)),m(arguments))},R.prototype.submoduleInit=function(e,t){return this._runTask(P(p(arguments,!0)),m(arguments))},R.prototype.subModule=function(e,t){return this._runTask(ae(p(arguments)),m(arguments))},R.prototype.listRemote=function(){return this._runTask(ee(p(arguments)),m(arguments))},R.prototype.addRemote=function(e,t,n){return this._runTask(A(e,t,p(arguments)),m(arguments))},R.prototype.removeRemote=function(e,t){return this._runTask(ne(e),m(arguments))},R.prototype.getRemotes=function(e,t){return this._runTask(j(e===!0),m(arguments))},R.prototype.remote=function(e,t){return this._runTask(te(p(arguments)),m(arguments))},R.prototype.tag=function(e,t){let n=p(arguments);return n[0]!==`tag`&&n.unshift(`tag`),this._runTask(L(n),m(arguments))},R.prototype.updateServerInfo=function(e){return this._runTask(L([`update-server-info`]),m(arguments))},R.prototype.pushTags=function(e,t){let n=k({remote:f(e,u)},p(arguments));return this._runTask(n,m(arguments))},R.prototype.rm=function(e){return this._runTask(L([`rm`,`-f`,...s(e)]),m(arguments))},R.prototype.rmKeepLocal=function(e){return this._runTask(L([`rm`,`--cached`,...s(e)]),m(arguments))},R.prototype.catFile=function(e,t){return this._catFile(`utf-8`,arguments)},R.prototype.binaryCatFile=function(){return this._catFile(`buffer`,arguments)},R.prototype._catFile=function(e,t){var n=m(t),r=[`cat-file`],i=t[0];if(typeof i==`string`)return this._runTask(o(`Git.catFile: options must be supplied as an array of strings`),n);Array.isArray(i)&&r.push.apply(r,i);let a=e===`buffer`?ce(r):L(r);return this._runTask(a,n)},R.prototype.diff=function(e,t){let n=u(e)?o(`git.diff: supplying options as a single string is no longer supported, switch to an array of strings`):L([`diff`,...p(arguments)]);return this._runTask(n,m(arguments))},R.prototype.diffSummary=function(){return this._runTask(T(p(arguments,1)),m(arguments))},R.prototype.applyPatch=function(e){let t=d(e)?g(s(e),p([].slice.call(arguments,1))):o(`git.applyPatch requires one or more string patches as the first argument`);return this._runTask(t,m(arguments))},R.prototype.revparse=function(){let e=[`rev-parse`,...p(arguments,!0)];return this._runTask(L(e,!0),m(arguments))},R.prototype.clean=function(e,t,n){let r=w(e),i=r&&e.join(``)||f(e,u)||``,a=p([].slice.call(arguments,r?1:0));return this._runTask(C(i,a),m(arguments))},R.prototype.exec=function(e){return this._runTask({commands:[],format:`utf-8`,parser(){typeof e==`function`&&e()}})},R.prototype.clearQueue=function(){return this._runTask(a(()=>console.warn(`simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.`)))},R.prototype.checkIgnore=function(e,t){return this._runTask(x(s(f(e,d,[]))),m(arguments))},R.prototype.checkIsRepo=function(e,t){return this._runTask(S(f(e,u)),m(arguments))},t.exports=R}});Ao(),Mo();var _p=class extends jo{constructor(e,t){super(void 0,t),this.config=e}};Mo(),Mo();var vp=class extends jo{constructor(e,t,n){super(e,n),this.task=e,this.plugin=t,Object.setPrototypeOf(this,new.target.prototype)}};Po(),Io(),Ks(),xc(),Pc(),Rc(),Kc(),$c();function yp(e){if(e)return[{type:`spawn.before`,action(t,n){e.aborted&&n.kill(new vp(void 0,`abort`,`Abort already signaled`))}},{type:`spawn.after`,action(t,n){function r(){n.kill(new vp(void 0,`abort`,`Abort signal received`))}e.addEventListener(`abort`,r),n.spawned.on(`close`,()=>e.removeEventListener(`abort`,r))}}]}function bp(e){return typeof e==`string`&&e.trim().toLowerCase()===`-c`}function xp(e,t){if(typeof t!=`string`||!t.includes(e))return!1;let n=t.trim().replace(/\0/g,``);return/^(--no)?-{1,2}[\dlsqvnobucj]+(\s|$)/.test(n)}function Sp(e,t,n=String(e)){let r=typeof e==`string`?RegExp(`\\s*${e}`,`i`):e;return function(e,i,a){if(e[t]!==!0&&bp(i)&&r.test(a))throw new vp(void 0,`unsafe`,`Configuring ${n} is not permitted without enabling ${t}`)}}var Cp=[Sp(/^\s*protocol(.[a-z]+)?.allow/i,`allowUnsafeProtocolOverride`,`protocol.allow`),Sp(`core.sshCommand`,`allowUnsafeSshCommand`),Sp(`core.gitProxy`,`allowUnsafeGitProxy`),Sp(`core.hooksPath`,`allowUnsafeHooksPath`),Sp(`diff.external`,`allowUnsafeDiffExternal`)];function wp(e,t){if(/^\s*--(upload|receive)-pack/.test(e))throw new vp(void 0,`unsafe`,`Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`);if(t===`clone`&&xp(`u`,e))throw new vp(void 0,`unsafe`,`Use of clone with option -u is not permitted without enabling allowUnsafePack`);if(t===`push`&&/^\s*--exec\b/.test(e))throw new vp(void 0,`unsafe`,`Use of push with option --exec is not permitted without enabling allowUnsafePack`)}function Tp({allowUnsafePack:e=!1,...t}={}){return{type:`spawn.args`,action(n,r){return n.forEach((i,a)=>{let o=a<n.length?n[a+1]:``;e||wp(i,r.method),Cp.forEach(e=>e(t,i,o))}),n}}}Z();function Ep(e){let t=$o(e,`-c`);return{type:`spawn.args`,action(e){return[...t,...e]}}}Z();var Dp=(0,_o.deferred)().promise;function Op({onClose:e=!0,onExit:t=50}={}){function n(){let n=-1,i={close:(0,_o.deferred)(),closeTimeout:(0,_o.deferred)(),exit:(0,_o.deferred)(),exitTimeout:(0,_o.deferred)()},a=Promise.race([e===!1?Dp:i.closeTimeout.promise,t===!1?Dp:i.exitTimeout.promise]);return r(e,i.close,i.closeTimeout),r(t,i.exit,i.exitTimeout),{close(e){n=e,i.close.done()},exit(e){n=e,i.exit.done()},get exitCode(){return n},result:a}}function r(e,t,n){e!==!1&&(e===!0?t.promise:t.promise.then(()=>ns(e))).then(n.done)}return{type:`spawn.after`,async action(e,{spawned:t,close:r}){let i=n(),a=!0,o=()=>void(a=!1);t.stdout?.on(`data`,o),t.stderr?.on(`data`,o),t.on(`error`,o),t.on(`close`,e=>i.close(e)),t.on(`exit`,e=>i.exit(e));try{await i.result,a&&await ns(50),r(i.exitCode)}catch(e){r(i.exitCode,e)}}}}Z();var kp=`Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`,Ap=`Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;function jp(e){return!e||!/^([a-z]:)?([a-z0-9/.\\_~-]+)$/i.test(e)}function Mp(e,t){if(e.length<1||e.length>2)throw new vp(void 0,`binary`,kp);if(e.some(jp))if(t)console.warn(Ap);else throw new vp(void 0,`binary`,Ap);let[n,r]=e;return{binary:n,prefix:r}}function Np(e,t=[`git`],n=!1){let r=Mp(Yo(t),n);e.on(`binary`,e=>{r=Mp(Yo(e),n)}),e.append(`spawn.binary`,()=>r.binary),e.append(`spawn.args`,e=>r.prefix?[r.prefix,...e]:e)}Mo();function Pp(e){return!!(e.exitCode&&e.stdErr.length)}function Fp(e){return Buffer.concat([...e.stdOut,...e.stdErr])}function Ip(e=!1,t=Pp,n=Fp){return(r,i)=>!e&&r||!t(i)?r:n(i)}function Lp(e){return{type:`task.error`,action(t,n){let r=e(t.error,{stdErr:n.stdErr,stdOut:n.stdOut,exitCode:n.exitCode});return Buffer.isBuffer(r)?{error:new jo(void 0,r.toString(`utf-8`))}:{error:r}}}}Z();var Rp=class{constructor(){this.plugins=new Set,this.events=new Ae}on(e,t){this.events.on(e,t)}reconfigure(e,t){this.events.emit(e,t)}append(e,t){let n=Ko(this.plugins,{type:e,action:t});return()=>this.plugins.delete(n)}add(e){let t=[];return Yo(e).forEach(e=>e&&this.plugins.add(Ko(t,e))),()=>{t.forEach(e=>this.plugins.delete(e))}}exec(e,t,n){let r=t,i=Object.freeze(Object.create(n));for(let t of this.plugins)t.type===e&&(r=t.action(r,i));return r}};Z();function zp(e){let t=`--progress`,n=[`checkout`,`clone`,`fetch`,`pull`,`push`];return[{type:`spawn.args`,action(e,r){return n.includes(r.method)?qo(e,t):e}},{type:`spawn.after`,action(n,r){r.commands.includes(t)&&r.spawned.stderr?.on(`data`,t=>{let n=/^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(t.toString(`utf8`));n&&e({method:r.method,stage:Bp(n[1]),progress:Qo(n[2]),processed:Qo(n[3]),total:Qo(n[4])})})}}]}function Bp(e){return String(e.toLowerCase().split(` `,1))||`unknown`}Z();function Vp(e){let t=ts(e,[`uid`,`gid`]);return{type:`spawn.options`,action(e){return{...t,...e}}}}function Hp({block:e,stdErr:t=!0,stdOut:n=!0}){if(e>0)return{type:`spawn.after`,action(r,i){let a;function o(){a&&clearTimeout(a),a=setTimeout(c,e)}function s(){i.spawned.stdout?.off(`data`,o),i.spawned.stderr?.off(`data`,o),i.spawned.off(`exit`,s),i.spawned.off(`close`,s),a&&clearTimeout(a)}function c(){s(),i.kill(new vp(void 0,`timeout`,`block timeout reached`))}n&&i.spawned.stdout?.on(`data`,o),t&&i.spawned.stderr?.on(`data`,o),i.spawned.on(`exit`,s),i.spawned.on(`close`,s),o()}}}Ao();function Up(){return{type:`spawn.args`,action(e){let t=[],n;function r(e){(n||=[]).push(...e)}for(let n=0;n<e.length;n++){let i=e[n];if(Do(i)){r(Oo(i));continue}if(i===`--`){r(e.slice(n+1).flatMap(e=>Do(e)&&Oo(e)||e));break}t.push(i)}return n?[...t,`--`,...n.map(String)]:t}}}Z();var Wp=gp();function Gp(e,t){let n=new Rp,r=Ts(e&&(typeof e==`string`?{baseDir:e}:e)||{},t);if(!Go(r.baseDir))throw new _p(r,`Cannot use simple-git on a directory that does not exist`);return Array.isArray(r.config)&&n.add(Ep(r.config)),n.add(Tp(r.unsafe)),n.add(Op(r.completion)),r.abort&&n.add(yp(r.abort)),r.progress&&n.add(zp(r.progress)),r.timeout&&n.add(Hp(r.timeout)),r.spawnOptions&&n.add(Vp(r.spawnOptions)),n.add(Up()),n.add(Lp(Ip(!0))),r.errors&&n.add(Lp(r.errors)),Np(n,r.binary,r.unsafe?.allowUnsafeCustomBinary),new Wp(r,n)}Po();var Kp=Gp;const qp=`.expect`,Jp=[`.ts`,`.tsx`,`.js`,`.jsx`,`.mts`,`.mjs`,`.cts`,`.cjs`],Yp=new Set([`node_modules`,`dist`,`build`,`.git`,`.next`,`.turbo`,`coverage`,`.nyc_output`,`.cache`,`.repos`,`.specs`,`__snapshots__`,`__fixtures__`]);var Xp=class extends w.ErrorClass(`GitError`)({_tag:w.tag(`GitError`),operation:w.String,cause:w.Defect}){message=`Git error during "${this.operation}"`},Zp=class extends w.ErrorClass(`FindRepoRootError`)({_tag:w.tag(`FindRepoRootError`),cause:w.Defect}){message=`Could not find git repository root`},Qp=class extends T.Service()(`@supervisor/GitRepoRoot`){},$p=class e extends T.Service()(`@supervisor/Git`,{make:d.gen(function*(){let e=yield*m.FileSystem,t=e=>d.gen(function*(){let t=yield*Qp;return yield*d.tryPromise({try:()=>Kp(t).raw(e.args),catch:t=>new Xp({operation:e.operation,cause:t})}).pipe(d.map(e.trim?q.trim:we.identity))}),n=e=>d.tryPromise({try:()=>Kp(e).revparse([`--show-toplevel`]),catch:e=>new Zp({cause:e})}).pipe(d.map(q.trim)),r=e=>t=>d.gen(function*(){let r=yield*n(e);return yield*t.pipe(d.provideService(Qp,r))}),i=t({args:[`symbolic-ref`,`refs/remotes/origin/HEAD`],operation:`getting main branch`,trim:!0}).pipe(d.map(e=>e.replace(`refs/remotes/origin/`,``)),d.catchTag(`GitError`,()=>t({args:[`revparse`,`--verify`,`origin/main`],operation:`getting main branch (origin/main)`,trim:!0}).pipe(d.as(`main`))),d.catchTag(`GitError`,()=>t({args:[`rev-parse`,`--verify`,`main`],operation:`getting main branch (main)`,trim:!0}).pipe(d.as(`main`))),d.catchTag(`GitError`,()=>d.succeed(`main`))),a=t({args:[`rev-parse`,`--abbrev-ref`,`HEAD`],operation:`getting current branch`,trim:!0}).pipe(d.catchTag(`GitError`,()=>d.succeed(`HEAD`))),o=t({args:[`rev-parse`,`--is-inside-work-tree`],operation:`checking if inside work tree`,trim:!0}).pipe(d.map(e=>e===`true`),d.catchTag(`GitError`,()=>d.succeed(!1))),s=e=>{let[t,n,r]=e.split(` `);return new mn({relativePath:r??``,added:Number.parseInt(t??`0`,10)||0,removed:Number.parseInt(n??`0`,10)||0})},c=d.fn(`Git.getFileStats`)(function*(e){return e._tag===`WorkingTree`?yield*t({args:[`diff`,`HEAD`,`--numstat`],operation:`getting working tree file stats`}).pipe(d.map(q.split(`
|
|
23
|
+
`)),d.map(Ce.map(q.trim)),d.map(Ce.filter(q.isNonEmpty)),d.map(Ce.map(s)),d.catchTag(`GitError`,()=>d.succeed([]))):yield*t({args:[`diff`,e._tag===`Branch`||e._tag===`Changes`?`${e.mainBranch}..HEAD`:`${e.hash}^..${e.hash}`,`--numstat`],operation:`getting file stats`}).pipe(d.map(q.split(`
|
|
24
|
+
`)),d.map(Ce.map(q.trim)),d.map(Ce.filter(q.isNonEmpty)),d.map(Ce.map(s)),d.catchTag(`GitError`,()=>d.succeed([])))}),l=e=>e===`A`?`A`:e===`D`?`D`:e===`R`?`R`:e===`C`?`C`:e===`?`?`?`:`M`,u=d.fn(`Git.getChangedFiles`)(function*(e){return e._tag===`WorkingTree`?yield*t({args:[`status`,`--porcelain`],operation:`getting working tree changes`}).pipe(d.map(q.split(`
|
|
25
|
+
`)),d.map(Ce.filter(q.isNonEmpty)),d.map(Ce.map(e=>{let t=e.at(0)??`M`;return{path:e.slice(3).trim(),status:l(t)}})),d.catchTag(`GitError`,()=>d.succeed([]))):yield*t({args:[`diff`,`--name-status`,e._tag===`Branch`||e._tag===`Changes`?`${e.mainBranch}..HEAD`:`${e.hash}^..${e.hash}`],operation:`getting changed files`,trim:!0}).pipe(d.map(q.split(`
|
|
26
|
+
`)),d.map(Ce.map(q.trim)),d.map(Ce.filter(q.isNonEmpty)),d.map(Ce.map(e=>{let t=e.split(` `),n=(t[0]??`M`).at(0)??`M`;return{path:(n===`R`||n===`C`?t[2]:t[1])??``,status:l(n)}})),d.catchTag(`GitError`,()=>d.succeed([])))}),f=d.fn(`Git.getDiffPreview`)(function*(e){return e._tag===`WorkingTree`?yield*t({args:[`diff`,`HEAD`],operation:`getting diff preview`,trim:!0}).pipe(d.catchTag(`GitError`,()=>d.succeed(``))):yield*t({args:[`diff`,e._tag===`Branch`||e._tag===`Changes`?`${e.mainBranch}..HEAD`:`${e.hash}^..${e.hash}`],operation:`getting diff preview`,trim:!0}).pipe(d.catchTag(`GitError`,()=>d.succeed(``)))}),p=d.fn(`Git.getRecentCommits`)(function*(e){return yield*t({args:[`log`,`--format=%H %h %s`,e],operation:`getting recent commits`,trim:!0}).pipe(d.map(q.split(`
|
|
27
|
+
`)),d.map(Ce.map(q.trim)),d.map(Ce.filter(q.isNonEmpty)),d.map(Ce.map(e=>{let[t,n,...r]=e.split(` `);return{hash:t??``,shortHash:n??``,subject:r.join(` `)}})),d.catchTag(`GitError`,()=>d.succeed([])))}),h=d.fn(`Git.getCommitSummary`)(function*(e){return yield*t({args:[`log`,`-1`,`--format=%H %h %s`,e],operation:`getting commit summary`,trim:!0}).pipe(d.map(e=>{let[t,n,...r]=e.split(` `);if(!(!t||!n))return{hash:t,shortHash:n,subject:r.join(` `)}}),d.catchTag(`GitError`,()=>d.succeed(void 0)))}),g=d.fn(`Git.computeFingerprint`)(function*(){let e=yield*t({args:[`rev-parse`,`HEAD`],operation:`getting HEAD for fingerprint`,trim:!0}).pipe(d.catchTag(`GitError`,()=>d.succeed(``)));if(!e)return;let n=yield*t({args:[`diff`],operation:`getting unstaged diff for fingerprint`}).pipe(d.catchTag(`GitError`,()=>d.succeed(``))),r=yield*t({args:[`diff`,`--cached`],operation:`getting staged diff for fingerprint`}).pipe(d.catchTag(`GitError`,()=>d.succeed(``)));return Te.createHash(`sha256`).update(e).update(`\0`).update(n).update(`\0`).update(r).digest(`hex`)}),_=d.fn(`ensureStateDir`)(function*(t){let n=W.join(t,qp);yield*e.makeDirectory(n,{recursive:!0}).pipe(d.catchTag(`PlatformError`,()=>d.void));let r=W.join(n,`.gitignore`);return(yield*e.exists(r).pipe(d.catchTag(`PlatformError`,()=>d.succeed(!1))))||(yield*e.writeFileString(r,`*
|
|
28
|
+
`).pipe(d.catchTag(`PlatformError`,()=>d.void))),n}),v=d.gen(function*(){let e=yield*_(yield*Qp);return W.join(e,`last-tested`)}),y=d.fn(`Git.loadSavedFingerprint`)(function*(){let t=yield*v;return yield*e.readFileString(t).pipe(d.map(q.trim),d.catchTag(`PlatformError`,()=>d.succeed(void 0)))}),b=d.fn(`Git.saveTestedFingerprint`)(function*(){let t=yield*g();if(!t)return;let n=yield*v;yield*e.writeFileString(n,t)});return{withRepoRoot:r,getMainBranch:i,getCurrentBranch:a,isInsideWorkTree:o,getFileStats:c,getChangedFiles:u,getDiffPreview:f,getRecentCommits:p,getCommitSummary:h,getState:d.fn(`Git.getState`)(function*(){if(!(yield*o))return new hn({isGitRepo:!1,currentBranch:`HEAD`,mainBranch:void 0,isOnMain:!1,hasChangesFromMain:!1,hasUnstagedChanges:!1,hasBranchCommits:!1,branchCommitCount:0,fileStats:[],workingTreeFileStats:[],fingerprint:void 0,savedFingerprint:void 0});let[e,t,n,r]=yield*d.all([a,i,g(),y()],{concurrency:`unbounded`}),s=e===t,[l,u,f]=yield*d.all([c(vn.makeUnsafe({_tag:`Changes`,mainBranch:t})),c(vn.makeUnsafe({_tag:`WorkingTree`})),p(`${t}..HEAD`)],{concurrency:`unbounded`});return new hn({isGitRepo:!0,currentBranch:e,mainBranch:t,isOnMain:s,hasChangesFromMain:l.length>0,hasUnstagedChanges:u.length>0,hasBranchCommits:f.length>0,branchCommitCount:f.length,fileStats:l,workingTreeFileStats:u,fingerprint:n,savedFingerprint:r})}),computeFingerprint:g,saveTestedFingerprint:b}})}){static layer=h.effect(this)(this.make).pipe(h.provide(K.layer));static withRepoRoot=t=>{let n=h.effect(Qp)(d.tryPromise({try:()=>Kp(t).revparse([`--show-toplevel`]),catch:e=>new Zp({cause:e})}).pipe(d.map(e=>e.trim())));return h.mergeAll(e.layer.pipe(h.provide(n)),n)}},em=class extends w.ErrorClass(`@supervisor/ExecutionError`)({_tag:w.tag(`ExecutionError`),reason:w.Union([za,Ua,Va,Ha])}){displayName=this.reason.displayName??`Browser testing failed`;message=this.reason.message},tm=class extends T.Service()(`@supervisor/Executor`,{make:d.gen(function*(){let e=yield*Ja,t=yield*$p,n=d.fn(`Executor.gatherContext`)(function*(e){let n=yield*t.getCurrentBranch,r=yield*t.getMainBranch,i=yield*t.getChangedFiles(e),a=yield*t.getDiffPreview(e),o=e._tag===`Branch`||e._tag===`Changes`?`${e.mainBranch}..HEAD`:e._tag===`Commit`?`-1 ${e.hash}`:`HEAD~5..HEAD`,s=yield*t.getRecentCommits(o);return{currentBranch:n,mainBranch:r,changedFiles:i.slice(0,12),recentCommits:s.slice(0,5),diffPreview:a}});return{execute:d.fn(`Executor.execute`)(function*(t){let a=yield*n(t.changesFor),o=ro({userInstruction:t.instruction,scope:t.changesFor._tag,currentBranch:a.currentBranch,mainBranch:a.mainBranch,changedFiles:a.changedFiles,recentCommits:a.recentCommits,diffPreview:a.diffPreview,baseUrl:t.baseUrl,isHeadless:t.isHeadless,requiresCookies:t.requiresCookies,savedFlow:t.savedFlow,learnings:t.learnings,testCoverage:t.testCoverage}),s=_n.makeUnsafe(crypto.randomUUID()),c=W.join(process.cwd(),qp,`replays`,`${s}.ndjson`),l=new kn({id:s,changesFor:t.changesFor,currentBranch:a.currentBranch,diffPreview:a.diffPreview,fileStats:[],instruction:t.instruction,baseUrl:t.baseUrl?v.some(t.baseUrl):v.none(),isHeadless:t.isHeadless,requiresCookies:t.requiresCookies,testCoverage:t.testCoverage?v.some(t.testCoverage):v.none(),title:t.instruction,rationale:`Direct execution`,steps:[]}),u=new er({...l,events:[new An({plan:l})]}),d=[{name:`EXPECT_REPLAY_OUTPUT_PATH`,value:c}];t.liveViewUrl&&d.push({name:i,value:t.liveViewUrl}),t.requiresCookies||d.push({name:r,value:`1`});let f=new ir({cwd:process.cwd(),sessionId:v.none(),prompt:o,systemPrompt:v.none(),mcpEnv:d});return e.stream(f).pipe(E.mapAccum(()=>u,(e,t)=>{let n=e.addEvent(t);return[n,[n]]}),E.mapError(e=>new em({reason:e})))},E.unwrap)}})}){static layer=h.effect(this)(this.make).pipe(h.provide(K.layer))},nm=class extends T.Service()(`@supervisor/Reporter`,{make:d.gen(function*(){return{report:d.fn(`Reporter.report`)(function*(e){let t=e.events.filter(e=>e._tag===`StepFailed`),n=e.events.filter(e=>e._tag===`StepCompleted`),r=e.events.find(e=>e._tag===`RunFinished`),i=r?r.summary:t.length>0?`${t.length} step(s) failed, ${n.length} passed`:`${n.length} step(s) completed`,a=e.events.filter(e=>e._tag===`ToolResult`&&e.toolName.endsWith(`__screenshot`)&&!e.isError).map(e=>e._tag===`ToolResult`?e.result:``).filter(Boolean);return new tr({...e,summary:i,screenshotPaths:a,pullRequest:v.none(),testCoverageReport:e.testCoverage})})}})}){static layer=h.effect(this)(this.make)};const rm=e=>{let t=[`format_version: ${e.formatVersion}`,`title: ${JSON.stringify(e.title)}`,`description: ${JSON.stringify(e.description)}`,`slug: ${JSON.stringify(e.slug)}`,`saved_target_scope: ${JSON.stringify(e.savedTargetScope)}`,`saved_target_display_name: ${JSON.stringify(e.savedTargetDisplayName)}`];return e.selectedCommit!==void 0&&t.push(`selected_commit: ${JSON.stringify(e.selectedCommit)}`),t.push(`flow: ${JSON.stringify(e.flow)}`),t.push(`environment: ${JSON.stringify(e.environment)}`),t.join(`
|
|
29
|
+
`)},im=e=>`---\n${rm(e)}\n---\n`,am=e=>e.startsWith(`"`)&&e.endsWith(`"`)?JSON.parse(e):e,om=e=>y.isObject(e)&&typeof e.id==`string`&&typeof e.title==`string`&&typeof e.instruction==`string`&&typeof e.expectedOutcome==`string`,sm=e=>y.isObject(e)?{title:typeof e.title==`string`?e.title:``,userInstruction:typeof e.userInstruction==`string`?e.userInstruction:``,steps:Array.isArray(e.steps)?e.steps.filter(om):[]}:{title:``,userInstruction:``,steps:[]},cm=e=>y.isObject(e)?{baseUrl:typeof e.baseUrl==`string`?e.baseUrl:``,cookies:typeof e.cookies==`boolean`?e.cookies:!1}:{baseUrl:``,cookies:!1},lm=e=>{let t=e.match(/^---\n([\s\S]*?)\n---/);if(!t)throw Error(`Invalid saved flow file: no frontmatter found`);let n=t[1],r=new Map;for(let e of n.split(`
|
|
30
|
+
`)){if(e===`selected_commit: undefined`)continue;let t=e.indexOf(`: `);if(t===-1)continue;let n=e.slice(0,t),i=e.slice(t+2);r.set(n,i)}let i={formatVersion:Number(r.get(`format_version`)),title:am(r.get(`title`)??``),description:am(r.get(`description`)??``),slug:am(r.get(`slug`)??``),savedTargetScope:am(r.get(`saved_target_scope`)??``),savedTargetDisplayName:am(r.get(`saved_target_display_name`)??``),flow:sm(JSON.parse(r.get(`flow`)??`{}`)),environment:cm(JSON.parse(r.get(`environment`)??`{}`))},a=r.get(`selected_commit`);return a!==void 0&&(i.selectedCommit=am(a)),i},um=d.fn(`ensureStateDir`)(function*(e,t){let n=W.join(t,qp);yield*e.makeDirectory(n,{recursive:!0}).pipe(d.catchTag(`PlatformError`,()=>d.void));let r=W.join(n,`.gitignore`);return(yield*e.exists(r).pipe(d.catchTag(`PlatformError`,()=>d.succeed(!1))))||(yield*e.writeFileString(r,`*
|
|
31
|
+
`).pipe(d.catchTag(`PlatformError`,()=>d.void))),n}),dm=e=>e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``).slice(0,60).replace(/-$/,``),fm=e=>({formatVersion:3,title:e.title,description:e.instruction.slice(0,120),slug:dm(e.title),savedTargetScope:e.changesFor._tag,savedTargetDisplayName:yn(e.changesFor),flow:{title:e.title,userInstruction:e.instruction,steps:e.steps.map(e=>{let t=v.getOrElse(e.summary,()=>``);return{id:e.id,title:e.title,instruction:e.instruction===e.title?t||e.title:e.instruction,expectedOutcome:e.expectedOutcome||t}})},environment:{baseUrl:v.getOrElse(e.baseUrl,()=>``),cookies:e.requiresCookies}});var pm=class extends T.Service()(`@supervisor/FlowStorage`,{make:d.gen(function*(){let e=yield*m.FileSystem,t=d.gen(function*(){let t=yield*um(e,yield*Qp);return W.join(t,`flows`)});return{save:d.fn(`FlowStorage.save`)(function*(n){let r=fm(n),i=yield*t,a=W.join(i,`${r.slug}.md`);return yield*e.makeDirectory(i,{recursive:!0}).pipe(d.catchTag(`PlatformError`,()=>d.void)),yield*e.writeFileString(a,im(r)),yield*d.logInfo(`Flow saved`,{slug:r.slug,stepCount:r.flow.steps.length,filePath:a}),r}),list:d.fn(`FlowStorage.list`)(function*(){let n=yield*t;if(!(yield*e.exists(n).pipe(d.catchTag(`PlatformError`,()=>d.succeed(!1)))))return[];let r=(yield*e.readDirectory(n).pipe(d.catchTag(`PlatformError`,()=>d.succeed([])))).filter(e=>e.endsWith(`.md`)),i=[];for(let t of r){let r=yield*e.readFileString(W.join(n,t)).pipe(d.catchTag(`PlatformError`,()=>d.succeed(``)));if(!r)continue;let a=yield*d.try({try:()=>lm(r),catch:()=>({_tag:`FlowParseError`})}).pipe(d.catchTag(`FlowParseError`,()=>d.succeed(void 0)));a&&i.push(a)}return yield*d.logDebug(`Flows listed`,{count:i.length}),i})}})}){static layer=h.effect(this)(this.make).pipe(h.provide(K.layer))};const mm=(e,t)=>{try{return de(`git checkout ${t}`,{cwd:e,encoding:`utf-8`,timeout:5e3,stdio:`pipe`}),!0}catch{return!1}};var hm=class extends w.ErrorClass(`GitHubCommandError`)({_tag:w.tag(`GitHubCommandError`),cause:w.String}){message=`GitHub CLI command failed: ${this.cause}`},gm=class extends T.Service()(`@supervisor/GitHub`,{make:d.gen(function*(){let e=yield*Ie,t=yield*je,n=d.fn(`GitHub.runGhCommand`)(function*(t,n){return yield*e.string(xe.make(`gh`,n,{cwd:t})).pipe(d.timeout(15e3),d.catchTags({PlatformError:e=>d.fail(new hm({cause:e.message})),TimeoutError:()=>d.fail(new hm({cause:`command timed out`}))}),d.map(e=>e.trim()))}),r=d.fn(`GitHub.findPullRequest`)(function*(e,t){let r=yield*n(e,[`pr`,`list`,`--head`,_.value(t).pipe(_.when({_tag:`Branch`},e=>e.branchName),_.exhaustive),`--state`,`open`,`--limit`,`1`,`--json`,`number,url,title,headRefName`]);return yield*w.decodeEffect(w.fromJsonString(w.Array(qn)))(r).pipe(d.map(o.head),d.catchTag(`SchemaError`,()=>d.succeed(v.none())))}),i=w.fromJsonString(w.Array(bn));return{findPullRequest:r,listPullRequests:d.fn(`GitHub.listPullRequests`)(function*(e){let t=yield*n(e,[`pr`,`list`,`--state`,`all`,`--json`,`number,headRefName,author,state,updatedAt`,`--limit`,`100`]).pipe(d.catchTag(`GitHubCommandError`,()=>d.succeed(`[]`)));return(yield*w.decodeEffect(i)(t).pipe(d.catchTag(`SchemaError`,d.die))).map(e=>new Sn({name:e.headRefName,author:e.author.login,prNumber:e.number,prStatus:e.state===`OPEN`?`open`:e.state===`MERGED`||e.state===`CLOSED`?`merged`:null,updatedAt:e.updatedAt}))}),addComment:d.fn(`GitHub.addComment`)(function*(e,r,i){yield*d.scoped(d.gen(function*(){let a=he(yield*t.makeTempDirectoryScoped({prefix:`expect-comment-`}),`pull-request-comment.md`);yield*t.writeFileString(a,i),yield*n(e,[`pr`,`comment`,String(r.number),`--body-file`,a])}))})}})}){static layer=h.effect(this)(this.make).pipe(h.provide(K.layer))};const _m=e=>W.join(Me.homedir(),qp,`${e}.json`),vm=new Map,ym={getItem:async e=>{try{let t=await Re.readFile(_m(e),`utf-8`);return vm.set(e,t),t}catch{return null}},setItem:async(e,t)=>{if(vm.get(e)===t)return;vm.set(e,t);let n=_m(e);await Re.mkdir(W.dirname(n),{recursive:!0}),await Re.writeFile(n,t,`utf-8`)},removeItem:async e=>{vm.delete(e);try{await Re.unlink(_m(e))}catch{}}},bm=e=>W.join(process.cwd(),qp,`${e}.json`),xm=new Map,Sm={getItem:async e=>{try{let t=await Re.readFile(bm(e),`utf-8`);return xm.set(e,t),t}catch{return null}},setItem:async(e,t)=>{if(xm.get(e)===t)return;xm.set(e,t);let n=bm(e);await Re.mkdir(W.dirname(n),{recursive:!0}),await Re.writeFile(n,t,`utf-8`)},removeItem:async e=>{xm.delete(e);try{await Re.unlink(bm(e))}catch{}}},Cm=[/from\s+["']([^"']+)["']/g,/import\s*\(\s*["']([^"']+)["']\s*\)/g,/require\s*\(\s*["']([^"']+)["']\s*\)/g],wm=/\.(?:test|spec|e2e)\.(?:ts|tsx|js|jsx|mts|mjs|cts|cjs)$/,Tm=/(?:^|[/\\])(?:__tests?__|tests?)[/\\]/,Em=/\.(?:ts|tsx|js|jsx|mts|mjs|cts|cjs)$/,Dm=e=>{let t=W.extname(e).toLowerCase();return Jp.includes(t)},Om=e=>e.split(/[/\\]/).some(e=>Yp.has(e)),km=e=>!!(wm.test(e)||Tm.test(e)&&Em.test(e)),Am=e=>{let t=[];for(let n of Cm){let r=new RegExp(n.source,n.flags),i;for(;(i=r.exec(e))!==null;){let e=i[1];e&&t.push(e)}}return t},jm=(e,t)=>{let n=new Set,r=[t];for(;r.length>0;){let t=r.pop();if(n.has(t))continue;n.add(t);let i=e.get(t);if(i)for(let e of i)n.has(e)||r.push(e)}return n.delete(t),n},Mm=e=>d.tryPromise({try:()=>new Promise(t=>{z(`git`,[`ls-files`,`--cached`,`--others`,`--exclude-standard`],{cwd:e,maxBuffer:10*1024*1024},(e,n)=>{if(e){t([]);return}t(n.split(`
|
|
32
|
+
`).map(e=>e.trim()).filter(e=>e.length>0))})}),catch:()=>[]}),Nm=async e=>{try{let{ResolverFactory:t}=await import(`oxc-resolver`);return new t({tsconfig:{configFile:W.join(e,`tsconfig.json`),references:`auto`},extensions:[...Jp],mainFields:[`module`,`main`],conditionNames:[`import`,`require`,`default`]})}catch{return}},Pm=(e,t,n)=>{try{return e.sync(t,n).path??void 0}catch{return}},Fm=(e,t,n)=>d.gen(function*(){let r=t.filter(e=>Dm(e)&&!Om(e)),i=yield*d.promise(()=>Nm(e));if(!i)return new Map;let a=new Map;return yield*d.forEach(r,t=>d.gen(function*(){let r=W.join(e,t),o=yield*n.readFileString(r).pipe(d.catchTag(`PlatformError`,()=>d.succeed(``)));if(!o)return;let s=Am(o),c=new Set;for(let t of s)if(t.startsWith(`.`)||t.startsWith(`@`)||t.startsWith(`~`)){let n=Pm(i,W.dirname(r),t);if(n){let t=W.relative(e,n);Om(t)||c.add(t)}}c.size>0&&a.set(t,c)}),{concurrency:50}),a}),Im=e=>e.filter(e=>!Om(e)&&km(e)).slice(0,200);var Lm=class extends T.Service()(`@supervisor/TestCoverage`,{make:d.gen(function*(){let e=yield*m.FileSystem;return{analyze:d.fn(`TestCoverage.analyze`)(function*(t){yield*d.annotateCurrentSpan({changedFileCount:t.length});let n=yield*Qp,r=yield*Mm(n),i=Im(r),a=yield*Fm(n,r,e),o=new Map;for(let e of i){let t=jm(a,e);t.add(e);for(let n of t){let t=o.get(n)??[];t.push(e),o.set(n,t)}}let s=t.filter(e=>Em.test(e.path)&&!km(e.path)&&e.status!==`D`),c=s.map(e=>{let t=o.get(e.path)??[];return{path:e.path,testFiles:t,covered:t.length>0}}),l=c.filter(e=>e.covered).length,u=s.length,f=u>0?Math.round(l/u*100):100;return yield*d.logInfo(`Test coverage analyzed`,{coveredCount:l,totalCount:u,percent:f,testFileCount:i.length,graphEdgeCount:a.size}),{entries:c,coveredCount:l,totalCount:u,percent:f}})}})}){static layer=h.effect(this)(this.make).pipe(h.provide(K.layer))};const Rm=e=>e.pipe(d.provide(gm.layer)),zm=async e=>{let t=[];if(e.hasUntestedChanges&&t.push(Jn.makeUnsafe({_tag:`WorkingTree`})),e.mainBranch){let n=process.cwd(),r=await d.runPromise(d.gen(function*(){return yield*(yield*$p).getRecentCommits(`${e.mainBranch}..HEAD`)}).pipe(d.provide($p.withRepoRoot(n))));for(let e of r)t.push(Jn.makeUnsafe({_tag:`Commit`,hash:e.hash,shortHash:e.shortHash,subject:e.subject}))}return t},Bm=e=>d.runPromise(Rm(gm.use(t=>t.listPullRequests(e)))),Vm=async e=>{let t=await Bm(process.cwd()),n=t.filter(e=>e.prNumber!==null&&e.prStatus===`open`).map(e=>Jn.makeUnsafe({_tag:`PullRequest`,branch:e})),r=t.filter(e=>e.prNumber!==null&&e.prStatus===`merged`).slice(0,5).map(e=>Jn.makeUnsafe({_tag:`PullRequest`,branch:e})),i=t.filter(t=>t.name!==e.currentBranch&&t.prNumber===null).map(e=>Jn.makeUnsafe({_tag:`Branch`,branch:e}));return[...n,...r,...i]},Hm=(e,t)=>e._tag===`WorkingTree`&&t&&!t.isOnMain?t.currentBranch:Zn(e),Um=(e,t)=>{if(e._tag===`WorkingTree`&&t){let e=[];if(t.fileStats.length>0){let n=t.fileStats.reduce((e,t)=>e+t.added,0),r=t.fileStats.reduce((e,t)=>e+t.removed,0),i=t.fileStats.length,a=[];n>0&&a.push(`+${n}`),r>0&&a.push(`-${r}`),a.length>0?e.push(`${a.join(` `)} in ${i} file${i===1?``:`s`}`):e.push(`${i} file${i===1?``:`s`}`)}if(t.branchCommitCount>0&&e.push(`${t.branchCommitCount} commit${t.branchCommitCount===1?``:`s`}`),e.length>0)return e.join(`, `)}return Qn(e)},Wm=(e,t)=>e._tag===`WorkingTree`?Hm(e,t):$n(e),Gm=(e,t,n)=>{if(!t)return[...e];let r=t.toLowerCase();return e.filter(e=>(e._tag===`WorkingTree`?`local changes ${n?.currentBranch??``}`:Xn(e)).toLowerCase().includes(r))},Km=()=>P({queryKey:[`remote-branches`],queryFn:()=>Bm(process.cwd())}),qm=e=>{let t=ae(10);if(t[0]!==`19aae044389a98cd743b540aea8d28df87ba20582cdcc28d3b06005d495ed4de`){for(let e=0;e<10;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`19aae044389a98cd743b540aea8d28df87ba20582cdcc28d3b06005d495ed4de`}let{message:n}=e,r=It(),i;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=B(ze,{type:`dots`}),t[1]=i):i=t[1];let a;t[2]===r.SELECTION?a=t[3]:(a=B(j,{color:r.SELECTION,children:i}),t[2]=r.SELECTION,t[3]=a);let o;t[4]===n?o=t[5]:(o=n?V(j,{children:[` `,n]}):null,t[4]=n,t[5]=o);let s;return t[6]!==r.DIM||t[7]!==a||t[8]!==o?(s=V(j,{color:r.DIM,children:[a,o]}),t[6]=r.DIM,t[7]=a,t[8]=o,t[9]=s):s=t[9],s},Jm=(e,t)=>{let n=Math.max(0,t-Ve(e));return e+` `.repeat(n)},Ym=({itemCount:e,visibleCount:t,initialIndex:n})=>{let[r,i]=R(n??0),a=L(e);return a.current!==e&&(a.current=e,i(t=>Math.min(t,Math.max(0,e-1)))),{highlightedIndex:r,setHighlightedIndex:i,scrollOffset:ce(()=>{if(e<=t)return 0;let n=Math.floor(t/2),i=e-t;return Math.min(i,Math.max(0,r-n))},[e,t,r]),handleNavigation:oe((t,n)=>n.downArrow||t===`j`||n.ctrl&&t===`n`?(i(t=>Math.min(e-1,t+1)),!0):n.upArrow||t===`k`||n.ctrl&&t===`p`?(i(e=>Math.max(0,e-1)),!0):!1,[e])}},Xm=/(?:https?:\/\/|localhost[:/]|[\w-]+\.[\w-]+\.[\w]+|[\w-]+\.(com|org|net|io|dev|app|co|me|ai))\S*/i,Zm=e=>Xm.test(e),Qm=Ue.taggedEnum(),$m=e=>Zm(e.instruction)?Qm.Testing(e):Qm.PortPicker(e),eh=He(e=>({screen:Qm.Main(),previousScreen:Qm.Main(),navigateTo:t=>e(e=>({screen:t,previousScreen:e.screen})),setScreen:t=>e({screen:t})})),th=new N({defaultOptions:{queries:{staleTime:1/0,retry:!1}}}),nh=e=>{let t=ae(18);if(t[0]!==`ebd3be31f5201c04dd238bf1bd9d32bf671ecbefa6ad88d45037fbe949e8bb0c`){for(let e=0;e<18;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`ebd3be31f5201c04dd238bf1bd9d32bf671ecbefa6ad88d45037fbe949e8bb0c`}let{title:n,subtitle:r,showDivider:i}=e,a=i===void 0?!0:i,[o]=Nt(),s,c,l;t[1]!==r||t[2]!==n?(l=n.toUpperCase(),s=r?` │ ${r}`:``,c=Ve(l),t[1]=r,t[2]=n,t[3]=s,t[4]=c,t[5]=l):(s=t[3],c=t[4],l=t[5]);let u=c+Ve(s),d=a?Math.max(0,o-u-3):0,f;t[6]===l?f=t[7]:(f=B(j,{bold:!0,color:J.text,children:l}),t[6]=l,t[7]=f);let p;t[8]!==r||t[9]!==s?(p=r?B(j,{color:J.textMuted,children:s}):null,t[8]=r,t[9]=s,t[10]=p):p=t[10];let m;t[11]!==d||t[12]!==a?(m=a?V(j,{color:J.border,children:[` `,`─`.repeat(d)]}):null,t[11]=d,t[12]=a,t[13]=m):m=t[13];let h;return t[14]!==f||t[15]!==p||t[16]!==m?(h=V(j,{children:[f,p,m]}),t[14]=f,t[15]=p,t[16]=m,t[17]=h):h=t[17],h},rh=()=>{let e=ae(39);if(e[0]!==`155bac1331928275f0977c44c5021af2a99f257236d72aa818a512bae62664a8`){for(let t=0;t<39;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`155bac1331928275f0977c44c5021af2a99f257236d72aa818a512bae62664a8`}let[t]=Nt(),n=eh(ih),r=It(),[i,a]=R(null),[o,s]=R(``),[c,l]=R(`recent`),[u,d]=R(!1),[f,p]=R(void 0),{data:m,isLoading:h}=Km(),g=m===void 0?[]:m,_=Sn.filterBranches(g,c,o),{highlightedIndex:v,setHighlightedIndex:y,scrollOffset:b,handleNavigation:x}=Ym({itemCount:_.length,visibleCount:15}),S=t-2-32-16-2,C=_.slice(b,b+15),w;e[1]===y?w=e[2]:(w=e=>{s(At(e)),y(0)},e[1]=y,e[2]=w);let T=w,E;e[3]===n?E=e[4]:(E=e=>{mm(process.cwd(),e)?(p(void 0),th.invalidateQueries({queryKey:[`git-state`]}),n(Qm.Main())):p(`Could not checkout "${e}". You may have uncommitted changes or the branch may not exist locally.`)},e[3]=n,e[4]=E);let D=E,O;e[5]!==c||e[6]!==y?(O=e=>{l(xn[(xn.indexOf(c)+e+xn.length)%xn.length]),y(0)},e[5]=c,e[6]=y,e[7]=O):O=e[7];let A=O;ne((e,t)=>{if(u){t.escape&&d(!1);return}if(!x(e,t)){if(t.rightArrow&&A(1),t.leftArrow&&A(-1),t.return){let e=_[v];e&&(p(void 0),D(e.name))}e===`/`&&d(!0)}});let ee;e[8]!==i||e[9]!==D?(ee=(e,t)=>{i&&(e.toLowerCase()===`y`&&(p(void 0),D(i.name),a(null)),(e.toLowerCase()===`n`||t.escape)&&a(null))},e[8]=i,e[9]=D,e[10]=ee):ee=e[10];let te=i!==null,M;e[11]===te?M=e[12]:(M={isActive:te},e[11]=te,e[12]=M),ne(ee,M);let N=k,re=`${_.length} branches`,ie;e[13]===re?ie=e[14]:(ie=B(k,{paddingX:1,children:B(nh,{title:`Select a PR or branch to test`,subtitle:re})}),e[13]=re,e[14]=ie);let P;e[15]!==r||e[16]!==c||e[17]!==y?(P=xn.map((e,t)=>{let n=e===c,i=t<xn.length-1?` · `:``,a={recent:r.CYAN,all:r.TEXT,open:r.GREEN,draft:r.DIM,merged:r.PURPLE,"no-pr":r.YELLOW};return V(k,{children:[B(zt,{fullWidth:!1,onClick:()=>{l(e),y(0)},children:B(j,{color:n?a[e]:r.DIM,children:n?`[${e}]`:e})}),B(j,{color:r.DIM,children:i})]},e)}),e[15]=r,e[16]=c,e[17]=y,e[18]=P):P=e[18];let F;e[19]===P?F=e[20]:(F=B(k,{marginTop:1,paddingX:1,children:P}),e[19]=P,e[20]=F);let oe=h?B(k,{marginTop:1,paddingX:1,children:B(qm,{message:`Fetching PRs...`})}):V(k,{marginTop:1,flexDirection:`column`,height:15,overflow:`hidden`,paddingX:1,children:[C.map((e,t)=>{let n=t+b,i=n===v;return V(zt,{onClick:()=>{y(n),D(e.name)},children:[B(j,{color:i?r.PRIMARY:r.DIM,children:i?`${H.pointer} `:` `}),B(j,{color:i?r.PRIMARY:r.DIM,bold:i,children:Jm(Be(e.name,31),32)}),B(j,{color:r.CYAN,children:Jm(Be(e.author||`—`,15),16)}),e.prNumber&&e.prStatus?B(j,{color:e.prStatus===`open`?r.GREEN:e.prStatus===`merged`?r.PURPLE:r.DIM,children:Be(`#${e.prNumber} ${e.prStatus}`,S)}):B(j,{color:r.DIM,children:`—`})]},e.name)}),_.length===0&&B(j,{color:r.DIM,children:`No matching branches`})]}),I;e[21]!==r||e[22]!==f?(I=f?B(k,{marginTop:1,paddingX:1,children:B(j,{color:r.RED,children:f})}):null,e[21]=r,e[22]=f,e[23]=I):I=e[23];let se;e[24]!==r||e[25]!==i?(se=i?V(Lt,{color:r.YELLOW,marginTop:1,children:[V(j,{color:r.YELLOW,bold:!0,children:[`Switch to `,i.name,`?`]}),V(j,{color:r.DIM,children:[`Press `,B(j,{color:r.PRIMARY,children:`y`}),` to continue or`,` `,B(j,{color:r.PRIMARY,children:`n`}),` to cancel.`]})]}):null,e[24]=r,e[25]=i,e[26]=se):se=e[26];let ce;e[27]!==T||e[28]!==u||e[29]!==o?(ce=B(k,{paddingX:1,children:B(Kt,{isSearching:u,query:o,onChange:T})}),e[27]=T,e[28]=u,e[29]=o,e[30]=ce):ce=e[30];let L;return e[31]!==N||e[32]!==ie||e[33]!==F||e[34]!==oe||e[35]!==I||e[36]!==se||e[37]!==ce?(L=V(N,{flexDirection:`column`,width:`100%`,paddingY:1,children:[ie,F,oe,I,se,ce]}),e[31]=N,e[32]=ie,e[33]=F,e[34]=oe,e[35]=I,e[36]=se,e[37]=ce,e[38]=L):L=e[38],L};function ih(e){return e.setScreen}const ah=me.join(process.cwd(),`.expect`,`logs.md`),oh=g.formatLogFmt.pipe(g.toFile(ah)),sh=h.effectDiscard(d.gen(function*(){let e=yield*m.FileSystem;yield*e.makeDirectory(me.dirname(ah),{recursive:!0}),yield*e.writeFileString(me.join(me.dirname(ah),`.gitignore`),`*
|
|
33
|
+
`)})),ch=h.mergeAll(sh,g.layer([oh])).pipe(h.provide(We.layer));var lh=n(((t,n)=>{(function(r,i){typeof t==`object`&&typeof n==`object`?n.exports=i(e(`child_process`),e(`crypto`)):typeof define==`function`&&define.amd?define([`child_process`,`crypto`],i):typeof t==`object`?t[`electron-machine-id`]=i(e(`child_process`),e(`crypto`)):r[`electron-machine-id`]=i(r.child_process,r.crypto)})(t,function(t,n){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=``,t(0)}([function(e,t,n){e.exports=n(34)},function(e,t,n){var r=n(29)(`wks`),i=n(33),a=n(2).Symbol,o=typeof a==`function`,s=e.exports=function(e){return r[e]||(r[e]=o&&a[e]||(o?a:i)(`Symbol.`+e))};s.store=r},function(e,t){var n=e.exports=typeof window<`u`&&window.Math==Math?window:typeof self<`u`&&self.Math==Math?self:Function(`return this`)();typeof __g==`number`&&(__g=n)},function(e,t,n){var r=n(9);e.exports=function(e){if(!r(e))throw TypeError(e+` is not an object!`);return e}},function(e,t,n){e.exports=!n(24)(function(){return Object.defineProperty({},`a`,{get:function(){return 7}}).a!=7})},function(e,t,n){var r=n(12),i=n(17);e.exports=n(4)?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n=e.exports={version:`2.4.0`};typeof __e==`number`&&(__e=n)},function(e,t,n){var r=n(14);e.exports=function(e,t,n){if(r(e),t===void 0)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){e.exports=function(e){return typeof e==`object`?e!==null:typeof e==`function`}},function(e,t){e.exports={}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(3),i=n(26),a=n(32),o=Object.defineProperty;t.f=n(4)?Object.defineProperty:function(e,t,n){if(r(e),t=a(t,!0),r(n),i)try{return o(e,t,n)}catch{}if(`get`in n||`set`in n)throw TypeError(`Accessors not supported!`);return`value`in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(42),i=n(15);e.exports=function(e){return r(i(e))}},function(e,t){e.exports=function(e){if(typeof e!=`function`)throw TypeError(e+` is not a function!`);return e}},function(e,t){e.exports=function(e){if(e==null)throw TypeError(`Can't call method on `+e);return e}},function(e,t,n){var r=n(9),i=n(2).document,a=r(i)&&r(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(12).f,i=n(8),a=n(1)(`toStringTag`);e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},function(e,t,n){var r=n(29)(`keys`),i=n(33);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(11),i=n(1)(`toStringTag`),a=r(function(){return arguments}())==`Arguments`,o=function(e,t){try{return e[t]}catch{}};e.exports=function(e){var t,n,s;return e===void 0?`Undefined`:e===null?`Null`:typeof(n=o(t=Object(e),i))==`string`?n:a?r(t):(s=r(t))==`Object`&&typeof t.callee==`function`?`Arguments`:s}},function(e,t){e.exports=`constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf`.split(`,`)},function(e,t,n){var r=n(2),i=n(6),a=n(7),o=n(5),s=`prototype`,c=function(e,t,n){var l,u,d,f=e&c.F,p=e&c.G,m=e&c.S,h=e&c.P,g=e&c.B,_=e&c.W,v=p?i:i[t]||(i[t]={}),y=v[s],b=p?r:m?r[t]:(r[t]||{})[s];for(l in p&&(n=t),n)u=!f&&b&&b[l]!==void 0,u&&l in v||(d=u?b[l]:n[l],v[l]=p&&typeof b[l]!=`function`?n[l]:g&&u?a(d,r):_&&b[l]==d?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t[s]=e[s],t}(d):h&&typeof d==`function`?a(Function.call,d):d,h&&((v.virtual||={})[l]=d,e&c.R&&y&&!y[l]&&o(y,l,d)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t){e.exports=function(e){try{return!!e()}catch{return!0}}},function(e,t,n){e.exports=n(2).document&&document.documentElement},function(e,t,n){e.exports=!n(4)&&!n(24)(function(){return Object.defineProperty(n(16)(`div`),`a`,{get:function(){return 7}}).a!=7})},function(e,t,n){var r=n(28),i=n(23),a=n(57),o=n(5),s=n(8),c=n(10),l=n(45),u=n(18),d=n(52),f=n(1)(`iterator`),p=!([].keys&&`next`in[].keys()),m=`@@iterator`,h=`keys`,g=`values`,_=function(){return this};e.exports=function(e,t,n,v,y,b,x){l(n,t,v);var S,C,w,T=function(e){if(!p&&e in k)return k[e];switch(e){case h:return function(){return new n(this,e)};case g:return function(){return new n(this,e)}}return function(){return new n(this,e)}},E=t+` Iterator`,D=y==g,O=!1,k=e.prototype,A=k[f]||k[m]||y&&k[y],j=A||T(y),ee=y?D?T(`entries`):j:void 0,te=t==`Array`&&k.entries||A;if(te&&(w=d(te.call(new e)),w!==Object.prototype&&(u(w,E,!0),r||s(w,f)||o(w,f,_))),D&&A&&A.name!==g&&(O=!0,j=function(){return A.call(this)}),r&&!x||!p&&!O&&k[f]||o(k,f,j),c[t]=j,c[E]=_,y)if(S={values:D?j:T(g),keys:b?j:T(h),entries:ee},x)for(C in S)C in k||a(k,C,S[C]);else i(i.P+i.F*(p||O),t,S);return S}},function(e,t){e.exports=!0},function(e,t,n){var r=n(2),i=`__core-js_shared__`,a=r[i]||(r[i]={});e.exports=function(e){return a[e]||(a[e]={})}},function(e,t,n){var r,i,a,o=n(7),s=n(41),c=n(25),l=n(16),u=n(2),d=u.process,f=u.setImmediate,p=u.clearImmediate,m=u.MessageChannel,h=0,g={},_=`onreadystatechange`,v=function(){var e=+this;if(g.hasOwnProperty(e)){var t=g[e];delete g[e],t()}},y=function(e){v.call(e.data)};f&&p||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return g[++h]=function(){s(typeof e==`function`?e:Function(e),t)},r(h),h},p=function(e){delete g[e]},n(11)(d)==`process`?r=function(e){d.nextTick(o(v,e,1))}:m?(i=new m,a=i.port2,i.port1.onmessage=y,r=o(a.postMessage,a,1)):u.addEventListener&&typeof postMessage==`function`&&!u.importScripts?(r=function(e){u.postMessage(e+``,`*`)},u.addEventListener(`message`,y,!1)):r=_ in l(`script`)?function(e){c.appendChild(l(`script`))[_]=function(){c.removeChild(this),v.call(e)}}:function(e){setTimeout(o(v,e,1),0)}),e.exports={set:f,clear:p}},function(e,t,n){var r=n(20),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(9);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&typeof(n=e.toString)==`function`&&!r(i=n.call(e))||typeof(n=e.valueOf)==`function`&&!r(i=n.call(e))||!t&&typeof(n=e.toString)==`function`&&!r(i=n.call(e)))return i;throw TypeError(`Can't convert object to primitive value`)}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return`Symbol(${e===void 0?``:e})_${(++n+r).toString(36)}`}},function(e,t,n){function r(e){return e&&e.__esModule?e:{default:e}}function i(){return process.platform===`win32`?process.arch===`ia32`&&process.env.hasOwnProperty(`PROCESSOR_ARCHITEW6432`)?`mixed`:`native`:``}function a(e){return(0,d.createHash)(`sha256`).update(e).digest(`hex`)}function o(e){switch(f){case`darwin`:return e.split(`IOPlatformUUID`)[1].split(`
|
|
34
|
+
`)[0].replace(/\=|\s+|\"/gi,``).toLowerCase();case`win32`:return e.toString().split(`REG_SZ`)[1].replace(/\r+|\n+|\s+/gi,``).toLowerCase();case`linux`:return e.toString().replace(/\r+|\n+|\s+/gi,``).toLowerCase();case`freebsd`:return e.toString().replace(/\r+|\n+|\s+/gi,``).toLowerCase();default:throw Error(`Unsupported platform: `+process.platform)}}function s(e){var t=o((0,u.execSync)(p[f]).toString());return e?t:a(t)}function c(e){return new l.default(function(t,n){return(0,u.exec)(p[f],{},function(r,i,s){if(r)return n(Error(`Error while obtaining machine id: `+r.stack));var c=o(i.toString());return t(e?c:a(c))})})}Object.defineProperty(t,`__esModule`,{value:!0});var l=r(n(35));t.machineIdSync=s,t.machineId=c;var u=n(70),d=n(71),f=process.platform,p={darwin:`ioreg -rd1 -c IOPlatformExpertDevice`,win32:{native:`%windir%\\System32`,mixed:`%windir%\\sysnative\\cmd.exe /c %windir%\\System32`}[i()]+`\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid`,linux:`( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :`,freebsd:`kenv -q smbios.system.uuid || sysctl -n kern.hostuuid`}},function(e,t,n){e.exports={default:n(36),__esModule:!0}},function(e,t,n){n(66),n(68),n(69),n(67),e.exports=n(6).Promise},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||r!==void 0&&r in e)throw TypeError(n+`: incorrect invocation!`);return e}},function(e,t,n){var r=n(13),i=n(31),a=n(62);e.exports=function(e){return function(t,n,o){var s,c=r(t),l=i(c.length),u=a(o,l);if(e&&n!=n){for(;l>u;)if(s=c[u++],s!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(7),i=n(44),a=n(43),o=n(3),s=n(31),c=n(64),l={},u={},t=e.exports=function(e,t,n,d,f){var p,m,h,g,_=f?function(){return e}:c(e),v=r(n,d,t?2:1),y=0;if(typeof _!=`function`)throw TypeError(e+` is not iterable!`);if(a(_)){for(p=s(e.length);p>y;y++)if(g=t?v(o(m=e[y])[0],m[1]):v(e[y]),g===l||g===u)return g}else for(h=_.call(e);!(m=h.next()).done;)if(g=i(h,v,m.value,t),g===l||g===u)return g};t.BREAK=l,t.RETURN=u},function(e,t){e.exports=function(e,t,n){var r=n===void 0;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(11);e.exports=Object(`z`).propertyIsEnumerable(0)?Object:function(e){return r(e)==`String`?e.split(``):Object(e)}},function(e,t,n){var r=n(10),i=n(1)(`iterator`),a=Array.prototype;e.exports=function(e){return e!==void 0&&(r.Array===e||a[i]===e)}},function(e,t,n){var r=n(3);e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw a!==void 0&&r(a.call(e)),t}}},function(e,t,n){var r=n(49),i=n(17),a=n(18),o={};n(5)(o,n(1)(`iterator`),function(){return this}),e.exports=function(e,t,n){e.prototype=r(o,{next:i(1,n)}),a(e,t+` Iterator`)}},function(e,t,n){var r=n(1)(`iterator`),i=!1;try{var a=[7][r]();a.return=function(){i=!0},Array.from(a,function(){throw 2})}catch{}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var a=[7],o=a[r]();o.next=function(){return{done:n=!0}},a[r]=function(){return o},e(a)}catch{}return n}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){var r=n(2),i=n(30).set,a=r.MutationObserver||r.WebKitMutationObserver,o=r.process,s=r.Promise,c=n(11)(o)==`process`;e.exports=function(){var e,t,n,l=function(){var r,i;for(c&&(r=o.domain)&&r.exit();e;){i=e.fn,e=e.next;try{i()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(c)n=function(){o.nextTick(l)};else if(a){var u=!0,d=document.createTextNode(``);new a(l).observe(d,{characterData:!0}),n=function(){d.data=u=!u}}else if(s&&s.resolve){var f=s.resolve();n=function(){f.then(l)}}else n=function(){i.call(r,l)};return function(r){var i={fn:r,next:void 0};t&&(t.next=i),e||(e=i,n()),t=i}}},function(e,t,n){var r=n(3),i=n(50),a=n(22),o=n(19)(`IE_PROTO`),s=function(){},c=`prototype`,l=function(){var e,t=n(16)(`iframe`),r=a.length,i=`>`;for(t.style.display=`none`,n(25).appendChild(t),t.src=`javascript:`,e=t.contentWindow.document,e.open(),e.write(`<script>document.F=Object<\/script`+i),e.close(),l=e.F;r--;)delete l[c][a[r]];return l()};e.exports=Object.create||function(e,t){var n;return e===null?n=l():(s[c]=r(e),n=new s,s[c]=null,n[o]=e),t===void 0?n:i(n,t)}},function(e,t,n){var r=n(12),i=n(3),a=n(54);e.exports=n(4)?Object.defineProperties:function(e,t){i(e);for(var n,o=a(t),s=o.length,c=0;s>c;)r.f(e,n=o[c++],t[n]);return e}},function(e,t,n){var r=n(55),i=n(17),a=n(13),o=n(32),s=n(8),c=n(26),l=Object.getOwnPropertyDescriptor;t.f=n(4)?l:function(e,t){if(e=a(e),t=o(t,!0),c)try{return l(e,t)}catch{}if(s(e,t))return i(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(8),i=n(63),a=n(19)(`IE_PROTO`),o=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,a)?e[a]:typeof e.constructor==`function`&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?o:null}},function(e,t,n){var r=n(8),i=n(13),a=n(39)(!1),o=n(19)(`IE_PROTO`);e.exports=function(e,t){var n,s=i(e),c=0,l=[];for(n in s)n!=o&&r(s,n)&&l.push(n);for(;t.length>c;)r(s,n=t[c++])&&(~a(l,n)||l.push(n));return l}},function(e,t,n){var r=n(53),i=n(22);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(5);e.exports=function(e,t,n){for(var i in t)n&&e[i]?e[i]=t[i]:r(e,i,t[i]);return e}},function(e,t,n){e.exports=n(5)},function(e,t,n){var r=n(9),i=n(3),a=function(e,t){if(i(e),!r(t)&&t!==null)throw TypeError(t+`: can't set as prototype!`)};e.exports={set:Object.setPrototypeOf||(`__proto__`in{}?function(e,t,r){try{r=n(7)(Function.call,n(51).f(Object.prototype,`__proto__`).set,2),r(e,[]),t=!(e instanceof Array)}catch{t=!0}return function(e,n){return a(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:a}},function(e,t,n){var r=n(2),i=n(6),a=n(12),o=n(4),s=n(1)(`species`);e.exports=function(e){var t=typeof i[e]==`function`?i[e]:r[e];o&&t&&!t[s]&&a.f(t,s,{configurable:!0,get:function(){return this}})}},function(e,t,n){var r=n(3),i=n(14),a=n(1)(`species`);e.exports=function(e,t){var n,o=r(e).constructor;return o===void 0||(n=r(o)[a])==null?t:i(n)}},function(e,t,n){var r=n(20),i=n(15);e.exports=function(e){return function(t,n){var a,o,s=String(i(t)),c=r(n),l=s.length;return c<0||c>=l?e?``:void 0:(a=s.charCodeAt(c),a<55296||a>56319||c+1===l||(o=s.charCodeAt(c+1))<56320||o>57343?e?s.charAt(c):a:e?s.slice(c,c+2):(a-55296<<10)+(o-56320)+65536)}}},function(e,t,n){var r=n(20),i=Math.max,a=Math.min;e.exports=function(e,t){return e=r(e),e<0?i(e+t,0):a(e,t)}},function(e,t,n){var r=n(15);e.exports=function(e){return Object(r(e))}},function(e,t,n){var r=n(21),i=n(1)(`iterator`),a=n(10);e.exports=n(6).getIteratorMethod=function(e){if(e!=null)return e[i]||e[`@@iterator`]||a[r(e)]}},function(e,t,n){var r=n(37),i=n(47),a=n(10),o=n(13);e.exports=n(27)(Array,`Array`,function(e,t){this._t=o(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):t==`keys`?i(0,n):t==`values`?i(0,e[n]):i(0,[n,e[n]])},`values`),a.Arguments=a.Array,r(`keys`),r(`values`),r(`entries`)},function(e,t){},function(e,t,n){var r,i,a,o=n(28),s=n(2),c=n(7),l=n(21),u=n(23),d=n(9),f=(n(3),n(14)),p=n(38),m=n(40),h=(n(58).set,n(60)),g=n(30).set,_=n(48)(),v=`Promise`,y=s.TypeError,b=s.process,x=s[v],b=s.process,S=l(b)==`process`,C=function(){},w=!!function(){try{var e=x.resolve(1),t=(e.constructor={})[n(1)(`species`)]=function(e){e(C,C)};return(S||typeof PromiseRejectionEvent==`function`)&&e.then(C)instanceof t}catch{}}(),T=function(e,t){return e===t||e===x&&t===a},E=function(e){var t;return!(!d(e)||typeof(t=e.then)!=`function`)&&t},D=function(e){return T(x,e)?new O(e):new i(e)},O=i=function(e){var t,n;this.promise=new e(function(e,r){if(t!==void 0||n!==void 0)throw y(`Bad Promise constructor`);t=e,n=r}),this.resolve=f(t),this.reject=f(n)},k=function(e){try{e()}catch(e){return{error:e}}},A=function(e,t){if(!e._n){e._n=!0;var n=e._c;_(function(){for(var r=e._v,i=e._s==1,a=0,o=function(t){var n,a,o=i?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{o?(i||(e._h==2&&te(e),e._h=1),o===!0?n=r:(l&&l.enter(),n=o(r),l&&l.exit()),n===t.promise?c(y(`Promise-chain cycle`)):(a=E(n))?a.call(n,s,c):s(n)):c(r)}catch(e){c(e)}};n.length>a;)o(n[a++]);e._c=[],e._n=!1,t&&!e._h&&j(e)})}},j=function(e){g.call(s,function(){var t,n,r,i=e._v;if(ee(e)&&(t=k(function(){S?b.emit(`unhandledRejection`,i,e):(n=s.onunhandledrejection)?n({promise:e,reason:i}):(r=s.console)&&r.error&&r.error(`Unhandled promise rejection`,i)}),e._h=S||ee(e)?2:1),e._a=void 0,t)throw t.error})},ee=function(e){if(e._h==1)return!1;for(var t,n=e._a||e._c,r=0;n.length>r;)if(t=n[r++],t.fail||!ee(t.promise))return!1;return!0},te=function(e){g.call(s,function(){var t;S?b.emit(`rejectionHandled`,e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})})},ne=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||=t._c.slice(),A(t,!0))},M=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw y(`Promise can't be resolved itself`);(t=E(e))?_(function(){var r={_w:n,_d:!1};try{t.call(e,c(M,r,1),c(ne,r,1))}catch(e){ne.call(r,e)}}):(n._v=e,n._s=1,A(n,!1))}catch(e){ne.call({_w:n,_d:!1},e)}}};w||(x=function(e){p(this,x,v,`_h`),f(e),r.call(this);try{e(c(M,this,1),c(ne,this,1))}catch(e){ne.call(this,e)}},r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n(56)(x.prototype,{then:function(e,t){var n=D(h(this,x));return n.ok=typeof e!=`function`||e,n.fail=typeof t==`function`&&t,n.domain=S?b.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&A(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),O=function(){var e=new r;this.promise=e,this.resolve=c(M,e,1),this.reject=c(ne,e,1)}),u(u.G+u.W+u.F*!w,{Promise:x}),n(18)(x,v),n(59)(v),a=n(6)[v],u(u.S+u.F*!w,v,{reject:function(e){var t=D(this),n=t.reject;return n(e),t.promise}}),u(u.S+u.F*(o||!w),v,{resolve:function(e){if(e instanceof x&&T(e.constructor,this))return e;var t=D(this),n=t.resolve;return n(e),t.promise}}),u(u.S+u.F*!(w&&n(46)(function(e){x.all(e).catch(C)})),v,{all:function(e){var t=this,n=D(t),r=n.resolve,i=n.reject,a=k(function(){var n=[],a=0,o=1;m(e,!1,function(e){var s=a++,c=!1;n.push(void 0),o++,t.resolve(e).then(function(e){c||(c=!0,n[s]=e,--o||r(n))},i)}),--o||r(n)});return a&&i(a.error),n.promise},race:function(e){var t=this,n=D(t),r=n.reject,i=k(function(){m(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return i&&r(i.error),n.promise}})},function(e,t,n){var r=n(61)(!0);n(27)(String,`String`,function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){n(65);for(var r=n(2),i=n(5),a=n(10),o=n(1)(`toStringTag`),s=[`NodeList`,`DOMTokenList`,`MediaList`,`StyleSheetList`,`CSSRuleList`],c=0;c<5;c++){var l=s[c],u=r[l],d=u&&u.prototype;d&&!d[o]&&i(d,o,l),a[l]=a.Array}},function(t,n){t.exports=e(`child_process`)},function(t,n){t.exports=e(`crypto`)}])})}))();function uh(e){return typeof e==`string`?`'${e}'`:new dh().serialize(e)}const dh=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}(),fh=globalThis.process?.getBuiltinModule?.(`crypto`)?.hash,ph=`sha256`,mh=`base64url`;function hh(e){if(fh)return fh(ph,e,mh);let t=Ee(ph).update(e);return globalThis.process?.versions?.webcontainer?t.digest().toString(mh):t.digest(mh)}function gh(e){return hh(uh(e))}function _h(){let e=vh();return async t=>{for(let n of t)n.module=e(n.filename);return t}}function vh(e=process.argv[1]?Ge(process.argv[1]):process.cwd(),t=qe===`\\`){let n=t?yh(e):e;return e=>{if(!e)return;let r=t?yh(e):e,{dir:i,base:a,ext:o}=Ke.parse(r);(o===`.js`||o===`.mjs`||o===`.cjs`)&&(a=a.slice(0,-1*o.length));let s=decodeURIComponent(a);i||=`.`;let c=i.lastIndexOf(`/node_modules`);if(c>-1)return`${i.slice(c+14).replace(/\//g,`.`)}:${s}`;if(i.startsWith(n)){let e=i.slice(n.length+1).replace(/\//g,`.`);return e?`${e}:${s}`:s}return s}}function yh(e){return e.replace(/^[A-Z]:/,``).replace(/\\/g,`/`)}const bh=e=>{if(`flags`in e){let t=Sh(e.flags),n=Ch(e.flags);return{...e,featureFlags:t,featureFlagPayloads:n}}{let t=e.featureFlags??{},n=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([e,t])=>[e,Th(t)])),r=Object.fromEntries(Object.entries(t).map(([e,t])=>[e,xh(e,t,n[e])]));return{...e,featureFlags:t,featureFlagPayloads:n,flags:r}}};function xh(e,t,n){return{key:e,enabled:typeof t==`string`?!0:t,variant:typeof t==`string`?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:n?JSON.stringify(n):void 0,description:void 0}}}const Sh=e=>Object.fromEntries(Object.entries(e??{}).map(([e,t])=>[e,wh(t)]).filter(([,e])=>e!==void 0)),Ch=e=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter(e=>{let n=t[e];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map(e=>{let n=t[e].metadata?.payload;return[e,n?Th(n):void 0]}))},wh=e=>e===void 0?void 0:e.variant??e.enabled,Th=e=>{if(typeof e!=`string`)return e;try{return JSON.parse(e)}catch{return e}},Eh=`0123456789abcdef`;var Dh=class e{constructor(e){this.bytes=e}static ofInner(t){if(t.length===16)return new e(t);throw TypeError(`not 128-bit length`)}static fromFieldsV7(t,n,r,i){if(!Number.isInteger(t)||!Number.isInteger(n)||!Number.isInteger(r)||!Number.isInteger(i)||t<0||n<0||r<0||i<0||t>0xffffffffffff||n>4095||r>1073741823||i>4294967295)throw RangeError(`invalid field value`);let a=new Uint8Array(16);return a[0]=t/2**40,a[1]=t/2**32,a[2]=t/2**24,a[3]=t/2**16,a[4]=t/256,a[5]=t,a[6]=112|n>>>8,a[7]=n,a[8]=128|r>>>24,a[9]=r>>>16,a[10]=r>>>8,a[11]=r,a[12]=i>>>24,a[13]=i>>>16,a[14]=i>>>8,a[15]=i,new e(a)}static parse(t){let n;switch(t.length){case 32:n=/^[0-9a-f]{32}$/i.exec(t)?.[0];break;case 36:n=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join(``);break;case 38:n=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(t)?.slice(1,6).join(``);break;case 45:n=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join(``);break;default:break}if(n){let t=new Uint8Array(16);for(let e=0;e<16;e+=4){let r=parseInt(n.substring(2*e,2*e+8),16);t[e+0]=r>>>24,t[e+1]=r>>>16,t[e+2]=r>>>8,t[e+3]=r}return new e(t)}throw SyntaxError(`could not parse UUID string`)}toString(){let e=``;for(let t=0;t<this.bytes.length;t++)e+=Eh.charAt(this.bytes[t]>>>4),e+=Eh.charAt(15&this.bytes[t]),(t===3||t===5||t===7||t===9)&&(e+=`-`);return e}toHex(){let e=``;for(let t=0;t<this.bytes.length;t++)e+=Eh.charAt(this.bytes[t]>>>4),e+=Eh.charAt(15&this.bytes[t]);return e}toJSON(){return this.toString()}getVariant(){let e=this.bytes[8]>>>4;if(e<0)throw Error(`unreachable`);if(e<=7)return this.bytes.every(e=>e===0)?`NIL`:`VAR_0`;if(e<=11)return`VAR_10`;if(e<=13)return`VAR_110`;if(e<=15)return this.bytes.every(e=>e===255)?`MAX`:`VAR_RESERVED`;throw Error(`unreachable`)}getVersion(){return this.getVariant()===`VAR_10`?this.bytes[6]>>>4:void 0}clone(){return new e(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(let t=0;t<16;t++){let n=this.bytes[t]-e.bytes[t];if(n!==0)return Math.sign(n)}return 0}},Oh=class{constructor(e){this.timestamp=0,this.counter=0,this.random=e??kh()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(e,t){let n=this.generateOrAbortCore(e,t);return n===void 0&&(this.timestamp=0,n=this.generateOrAbortCore(e,t)),n}generateOrAbortCore(e,t){if(!Number.isInteger(e)||e<1||e>0xffffffffffff)throw RangeError("`unixTsMs` must be a 48-bit positive integer");if(t<0||t>0xffffffffffff)throw RangeError("`rollbackAllowance` out of reasonable range");if(e>this.timestamp)this.timestamp=e,this.resetCounter();else{if(!(e+t>=this.timestamp))return;this.counter++,this.counter>4398046511103&&(this.timestamp++,this.resetCounter())}return Dh.fromFieldsV7(this.timestamp,Math.trunc(this.counter/2**30),this.counter&2**30-1,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let e=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return e[6]=64|e[6]>>>4,e[8]=128|e[8]>>>2,Dh.ofInner(e)}};const kh=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())});let Ah;const jh=()=>Mh().toString(),Mh=()=>(Ah||=new Oh).generate();var Nh=function(e){return e.AnonymousId=`anonymous_id`,e.DistinctId=`distinct_id`,e.Props=`props`,e.EnablePersonProcessing=`enable_person_processing`,e.PersonMode=`person_mode`,e.FeatureFlagDetails=`feature_flag_details`,e.FeatureFlags=`feature_flags`,e.FeatureFlagPayloads=`feature_flag_payloads`,e.BootstrapFeatureFlagDetails=`bootstrap_feature_flag_details`,e.BootstrapFeatureFlags=`bootstrap_feature_flags`,e.BootstrapFeatureFlagPayloads=`bootstrap_feature_flag_payloads`,e.OverrideFeatureFlags=`override_feature_flags`,e.Queue=`queue`,e.OptedOut=`opted_out`,e.SessionId=`session_id`,e.SessionStartTimestamp=`session_start_timestamp`,e.SessionLastTimestamp=`session_timestamp`,e.PersonProperties=`person_properties`,e.GroupProperties=`group_properties`,e.InstalledAppBuild=`installed_app_build`,e.InstalledAppVersion=`installed_app_version`,e.SessionReplay=`session_replay`,e.SurveyLastSeenDate=`survey_last_seen_date`,e.SurveysSeen=`surveys_seen`,e.Surveys=`surveys`,e.RemoteConfig=`remote_config`,e.FlagsEndpointWasHit=`flags_endpoint_was_hit`,e}({});const Ph=`amazonbot,amazonproductbot,app.hypefactors.com,applebot,archive.org_bot,awariobot,backlinksextendedbot,baiduspider,bingbot,bingpreview,chrome-lighthouse,dataforseobot,deepscan,duckduckbot,facebookexternal,facebookcatalog,http://yandex.com/bots,hubspot,ia_archiver,leikibot,linkedinbot,meta-externalagent,mj12bot,msnbot,nessus,petalbot,pinterest,prerender,rogerbot,screaming frog,sebot-wa,sitebulb,slackbot,slurp,trendictionbot,turnitin,twitterbot,vercel-screenshot,vercelbot,yahoo! slurp,yandexbot,zoombot,bot.htm,bot.php,(bot;,bot/,crawler,ahrefsbot,ahrefssiteaudit,semrushbot,siteauditbot,splitsignalbot,gptbot,oai-searchbot,chatgpt-user,perplexitybot,better uptime bot,sentryuptimebot,uptimerobot,headlesschrome,cypress,google-hoteladsverifier,adsbot-google,apis-google,duplexweb-google,feedfetcher-google,google favicon,google web preview,google-read-aloud,googlebot,googleother,google-cloudvertexbot,googleweblight,mediapartners-google,storebot-google,google-inspectiontool,bytespider`.split(`,`),Fh=function(e,t=[]){if(!e)return!1;let n=e.toLowerCase();return Ph.concat(t).some(e=>{let t=e.toLowerCase();return n.indexOf(t)!==-1})},Ih=Array.isArray,Lh=Object.prototype;Lh.hasOwnProperty;const Rh=Lh.toString,zh=Ih||function(e){return Rh.call(e)===`[object Array]`},Bh=e=>e===Object(e)&&!zh(e),Vh=e=>e===void 0,Hh=e=>Rh.call(e)==`[object String]`,Uh=e=>Hh(e)&&e.trim().length===0,Wh=e=>Rh.call(e)==`[object Number]`&&e===e,Gh=e=>e instanceof Error;function Kh(e){return typeof e!=`object`||!e}function qh(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function Jh(e){return!Vh(Event)&&Xh(e,Event)}function Yh(e){return qh(e,`Object`)}function Xh(e,t){try{return e instanceof t}catch{return!1}}function Zh(e,t,n,r,i){return t>n&&(r.warn(`min cannot be greater than max.`),t=n),Wh(e)?e>n?(r.warn(` cannot be greater than max: `+n+`. Using max value instead.`),n):e<t?(r.warn(` cannot be less than min: `+t+`. Using min value instead.`),t):e:(r.warn(` must be a number. using max or fallback. max: `+n+`, fallback: `+i),Zh(i||n,t,n,r))}var Qh=class{constructor(e){this._buckets={},this._onBucketRateLimited=e._onBucketRateLimited,this._bucketSize=Zh(e.bucketSize,0,100,e._logger),this._refillRate=Zh(e.refillRate,0,this._bucketSize,e._logger),this._refillInterval=Zh(e.refillInterval,0,864e5,e._logger)}_applyRefill(e,t){let n=t-e.lastAccess,r=Math.floor(n/this._refillInterval);if(r>0){let t=r*this._refillRate;e.tokens=Math.min(e.tokens+t,this._bucketSize),e.lastAccess+=r*this._refillInterval}}consumeRateLimit(e){let t=Date.now(),n=String(e),r=this._buckets[n];return r?this._applyRefill(r,t):(r={tokens:this._bucketSize,lastAccess:t},this._buckets[n]=r),r.tokens===0?!0:(r.tokens--,r.tokens===0&&this._onBucketRateLimited?.(e),r.tokens===0)}stop(){this._buckets={}}},$h=class{add(e){let t=jh();return this.promiseByIds[t]=e,e.catch(()=>{}).finally(()=>{delete this.promiseByIds[t]}),e}async join(){let e=Object.values(this.promiseByIds),t=e.length;for(;t>0;)await Promise.all(e),e=Object.values(this.promiseByIds),t=e.length}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={}}};function eg(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}const tg=(e,t,n)=>{function r(r,...i){t(()=>{let t=n[r];t(e,...i)})}return{info:(...e)=>{r(`log`,...e)},warn:(...e)=>{r(`warn`,...e)},error:(...e)=>{r(`error`,...e)},critical:(...t)=>{n.error(e,...t)},createLogger:r=>tg(`${e} ${r}`,t,n)}},ng=e=>e();function rg(e,t=ng){return tg(e,t,eg())}const ig=`Android`;ig+``;const ag=`BlackBerry`,og=`Samsung`;og+``,og+``;const sg=`Chrome`;sg+``,sg+``;const cg=`Opera`;cg+``;const lg=`Edge`;``+lg;const ug=`Firefox`;ug+``;const dg=`Nintendo`,fg=`PlayStation`,pg=`Xbox`;ig+``;const mg=`Windows`;mg+``;const hg=`Generic`;hg+``,hg+``;const gg=`(\\d+(\\.\\d+)?)`;RegExp(`Version/`+gg),new RegExp(pg,`i`),RegExp(fg+` \\w+`,`i`),RegExp(dg+` \\w+`,`i`),RegExp(ag+`|PlayBook|BB10`,`i`),RegExp(`rv:`+gg),RegExp(lg+`?\\/(\\d+(\\.\\d+)?)`),RegExp(`(`+sg+`|CrMo)\\/(\\d+(\\.\\d+)?)`),RegExp(`CriOS\\/`+gg),RegExp(`(UCBrowser|UCWEB)\\/`+gg),RegExp(`(`+cg+`|OPR)\\/(\\d+(\\.\\d+)?)`),RegExp(ug+`\\/(\\d+(\\.\\d+)?)`),RegExp(`FxiOS\\/`+gg),RegExp(`Konqueror[:/]?`+gg,`i`),RegExp(ag+` (\\d+(\\.\\d+)?)`),RegExp(`android\\s`+gg,`i`),RegExp(`(rv:|MSIE )`+gg),RegExp(`rv:`+gg),RegExp(pg+`; Xbox (.*?)[);]`,`i`),new RegExp(dg,`i`),new RegExp(fg,`i`),new RegExp(mg,`i`),RegExp(`(`+ig+` (\\d+)\\.(\\d+)\\.?(\\d+)?|Android)`,`i`);function _g(e,t){if(!e||typeof e!=`string`||vg(e))throw Error(t)}function vg(e){return e.trim().length===0}function yg(e){return e?.replace(/\/+$/,``)}async function bg(e,t){let n=null;for(let r=0;r<t.retryCount+1;r++){r>0&&await new Promise(e=>setTimeout(e,t.retryDelay));try{return await e()}catch(e){if(n=e,!t.retryCheck(e))throw e}}throw n}function xg(){return new Date().toISOString()}function Sg(e,t){let n=setTimeout(e,t);return n?.unref&&n?.unref(),n}const Cg=e=>e instanceof Error;function wg(e){return Promise.all(e.map(e=>(e??Promise.resolve()).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}var Tg=class{constructor(){this.events={},this.events={}}on(e,t){return this.events[e]||(this.events[e]=[]),this.events[e].push(t),()=>{this.events[e]=this.events[e].filter(e=>e!==t)}}emit(e,t){for(let n of this.events[e]||[])n(t);for(let n of this.events[`*`]||[])n(e,t)}};function Eg(){return`CompressionStream`in globalThis}async function Dg(e,t=!0){try{let t=new Blob([e],{type:`text/plain`}).stream().pipeThrough(new CompressionStream(`gzip`));return await new Response(t).blob()}catch(e){return t&&console.error(`Failed to gzip compress data`,e),null}}var Og=class extends Error{constructor(e,t){super(`HTTP error while fetching PostHog: status=`+e.status+`, reqByteLength=`+t),this.response=e,this.reqByteLength=t,this.name=`PostHogFetchHttpError`}get status(){return this.response.status}get text(){return this.response.text()}get json(){return this.response.json()}},kg=class extends Error{constructor(e){super(`Network error while fetching PostHog`,e instanceof Error?{cause:e}:{}),this.error=e,this.name=`PostHogFetchNetworkError`}};async function Ag(e){if(e instanceof Og){let t=``;try{t=await e.text}catch{}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error(`Error while flushing PostHog`,e);return Promise.resolve()}function jg(e){return typeof e==`object`&&(e instanceof Og||e instanceof kg)}function Mg(e){return typeof e==`object`&&e instanceof Og&&e.status===413}var Ng=class{constructor(e,t={}){this.flushPromise=null,this.shutdownPromise=null,this.promiseQueue=new $h,this._events=new Tg,this._isInitialized=!1,_g(e,`You must pass your PostHog project's api key.`),this.apiKey=e,this.host=yg(t.host||`https://us.i.posthog.com`),this.flushAt=t.flushAt?Math.max(t.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,t.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,t.maxQueueSize??1e3),this.flushInterval=t.flushInterval??1e4,this.preloadFeatureFlags=t.preloadFeatureFlags??!0,this.defaultOptIn=t.defaultOptIn??!0,this.disableSurveys=t.disableSurveys??!1,this._retryOptions={retryCount:t.fetchRetryCount??3,retryDelay:t.fetchRetryDelay??3e3,retryCheck:jg},this.requestTimeout=t.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=t.featureFlagsRequestTimeoutMs??3e3,this.remoteConfigRequestTimeoutMs=t.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=t.disableGeoip??!0,this.disabled=t.disabled??!1,this.historicalMigration=t?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this._logger=rg(`[PostHog]`,this.logMsgIfDebug.bind(this)),this.evaluationContexts=t?.evaluationContexts??t?.evaluationEnvironments,t?.evaluationEnvironments&&!t?.evaluationContexts&&this._logger.warn(`evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.`),this.disableCompression=!Eg()||(t?.disableCompression??!1)}logMsgIfDebug(e){this.isDebug&&e()}wrap(e){if(this.disabled)return void this._logger.warn(`The client is disabled`);if(this._isInitialized)return e();this._initPromise.then(()=>e())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(Nh.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(Nh.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(Nh.OptedOut,!0)})}on(e,t){return this._events.on(e,t)}debug(e=!0){if(this.removeDebugCallback?.(),e){let e=this.on(`*`,(e,t)=>this._logger.info(e,t));this.removeDebugCallback=()=>{e(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(e){return{distinct_id:e.distinct_id,event:e.event,properties:{...e.properties||{},...this.getCommonEventProperties()}}}addPendingPromise(e){return this.promiseQueue.add(e)}identifyStateless(e,t,n){this.wrap(()=>{let r={...this.buildPayload({distinct_id:e,event:`$identify`,properties:t})};this.enqueue(`identify`,r,n)})}async identifyStatelessImmediate(e,t,n){let r={...this.buildPayload({distinct_id:e,event:`$identify`,properties:t})};await this.sendImmediate(`identify`,r,n)}captureStateless(e,t,n,r){this.wrap(()=>{let i=this.buildPayload({distinct_id:e,event:t,properties:n});this.enqueue(`capture`,i,r)})}async captureStatelessImmediate(e,t,n,r){let i=this.buildPayload({distinct_id:e,event:t,properties:n});await this.sendImmediate(`capture`,i,r)}aliasStateless(e,t,n,r){this.wrap(()=>{let i=this.buildPayload({event:`$create_alias`,distinct_id:t,properties:{...n||{},distinct_id:t,alias:e}});this.enqueue(`alias`,i,r)})}async aliasStatelessImmediate(e,t,n,r){let i=this.buildPayload({event:`$create_alias`,distinct_id:t,properties:{...n||{},distinct_id:t,alias:e}});await this.sendImmediate(`alias`,i,r)}groupIdentifyStateless(e,t,n,r,i,a){this.wrap(()=>{let o=this.buildPayload({distinct_id:i||`$${e}_${t}`,event:`$groupidentify`,properties:{$group_type:e,$group_key:t,$group_set:n||{},...a||{}}});this.enqueue(`capture`,o,r)})}async getRemoteConfig(){await this._initPromise;let e=this.host;e===`https://us.i.posthog.com`?e=`https://us-assets.i.posthog.com`:e===`https://eu.i.posthog.com`&&(e=`https://eu-assets.i.posthog.com`);let t=`${e}/array/${this.apiKey}/config`,n={method:`GET`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`}};return this.fetchWithRetry(t,n,{retryCount:0},this.remoteConfigRequestTimeoutMs).then(e=>e.json()).catch(e=>{this._logger.error(`Remote config could not be loaded`,e),this._events.emit(`error`,e)})}async getFlags(e,t={},n={},r={},i={},a=!1){await this._initPromise;let o=a?`&config=true`:``,s=`${this.host}/flags/?v=2${o}`,c={token:this.apiKey,distinct_id:e,groups:t,person_properties:n,group_properties:r,...i};this.evaluationContexts&&this.evaluationContexts.length>0&&(c.evaluation_contexts=this.evaluationContexts);let l={method:`POST`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`},body:JSON.stringify(c)};return this._logger.info(`Flags URL`,s),this.fetchWithRetry(s,l,{retryCount:0},this.featureFlagsRequestTimeoutMs).then(e=>e.json()).then(e=>({success:!0,response:bh(e)})).catch(e=>(this._events.emit(`error`,e),{success:!1,error:this.categorizeRequestError(e)}))}categorizeRequestError(e){if(e instanceof Og)return{type:`api_error`,statusCode:e.status};if(e instanceof kg){let t=e.error;return t instanceof Error&&(t.name===`AbortError`||t.name===`TimeoutError`)?{type:`timeout`}:{type:`connection_error`}}return{type:`unknown_error`}}async getFeatureFlagStateless(e,t,n={},r={},i={},a){await this._initPromise;let o=await this.getFeatureFlagDetailStateless(e,t,n,r,i,a);if(o===void 0)return{response:void 0,requestId:void 0};let s=wh(o.response);return s===void 0&&(s=!1),{response:s,requestId:o.requestId}}async getFeatureFlagDetailStateless(e,t,n={},r={},i={},a){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(t,n,r,i,a,[e]);if(o!==void 0)return{response:o.flags[e],requestId:o.requestId,evaluatedAt:o.evaluatedAt}}async getFeatureFlagPayloadStateless(e,t,n={},r={},i={},a){await this._initPromise;let o=await this.getFeatureFlagPayloadsStateless(t,n,r,i,a,[e]);if(!o)return;let s=o[e];return s===void 0?null:s}async getFeatureFlagPayloadsStateless(e,t={},n={},r={},i,a){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(e,t,n,r,i,a)).payloads}async getFeatureFlagsStateless(e,t={},n={},r={},i,a){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(e,t,n,r,i,a)}async getFeatureFlagsAndPayloadsStateless(e,t={},n={},r={},i,a){await this._initPromise;let o=await this.getFeatureFlagDetailsStateless(e,t,n,r,i,a);return o?{flags:o.featureFlags,payloads:o.featureFlagPayloads,requestId:o.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(e,t={},n={},r={},i,a){await this._initPromise;let o={};(i??this.disableGeoip)&&(o.geoip_disable=!0),a&&(o.flag_keys_to_evaluate=a);let s=await this.getFlags(e,t,n,r,o);if(!s.success)return;let c=s.response;return c.errorsWhileComputingFlags&&console.error(`[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices`),c.quotaLimited?.includes(`feature_flags`)?(console.warn(`[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts`),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:c?.requestId,quotaLimited:c.quotaLimited}):c}async getSurveysStateless(){if(await this._initPromise,!0===this.disableSurveys)return this._logger.info(`Loading surveys is disabled.`),[];let e=`${this.host}/api/surveys/?token=${this.apiKey}`,t={method:`GET`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`}},n=(await this.fetchWithRetry(e,t).then(e=>{if(e.status!==200||!e.json){let t=`Surveys API could not be loaded: ${e.status}`,n=Error(t);this._logger.error(n),this._events.emit(`error`,Error(t));return}return e.json()}).catch(e=>{this._logger.error(`Surveys API could not be loaded`,e),this._events.emit(`error`,e)}))?.surveys;return n&&this._logger.info(`Surveys fetched from API: `,JSON.stringify(n)),n??[]}get props(){return this._props||=this.getPersistedProperty(Nh.Props),this._props||{}}set props(e){this._props=e}async register(e){this.wrap(()=>{this.props={...this.props,...e},this.setPersistedProperty(Nh.Props,this.props)})}async unregister(e){this.wrap(()=>{delete this.props[e],this.setPersistedProperty(Nh.Props,this.props)})}processBeforeEnqueue(e){return e}async flushStorage(){}enqueue(e,t,n){this.wrap(()=>{if(this.optedOut)return void this._events.emit(e,`Library is disabled. Not sending event. To re-enable, call posthog.optIn()`);let r=this.prepareMessage(e,t,n);if(r=this.processBeforeEnqueue(r),r===null)return;let i=this.getPersistedProperty(Nh.Queue)||[];i.length>=this.maxQueueSize&&(i.shift(),this._logger.info(`Queue is full, the oldest event is dropped.`)),i.push({message:r}),this.setPersistedProperty(Nh.Queue,i),this._events.emit(e,r),i.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=Sg(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(e,t,n){if(this.disabled)return void this._logger.warn(`The client is disabled`);if(this._isInitialized||await this._initPromise,this.optedOut)return void this._events.emit(e,`Library is disabled. Not sending event. To re-enable, call posthog.optIn()`);let r=this.prepareMessage(e,t,n);if(r=this.processBeforeEnqueue(r),r===null)return;let i={api_key:this.apiKey,batch:[r],sent_at:xg()};this.historicalMigration&&(i.historical_migration=!0);let a=JSON.stringify(i),o=`${this.host}/batch/`,s=this.disableCompression?null:await Dg(a,this.isDebug),c={method:`POST`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`,...s!==null&&{"Content-Encoding":`gzip`}},body:s||a};try{await this.fetchWithRetry(o,c)}catch(e){this._events.emit(`error`,e)}}prepareMessage(e,t,n){let r={...t,type:e,library:this.getLibraryId(),library_version:this.getLibraryVersion(),timestamp:n?.timestamp?n?.timestamp:xg(),uuid:n?.uuid?n.uuid:jh()};return(n?.disableGeoip??this.disableGeoip)&&(r.properties||={},r.properties.$geoip_disable=!0),r.distinctId&&(r.distinct_id=r.distinctId,delete r.distinctId),r}clearFlushTimer(){this._flushTimer&&=(clearTimeout(this._flushTimer),void 0)}flushBackground(){this.flush().catch(async e=>{await Ag(e)})}async flush(){let e=wg([this.flushPromise]).then(()=>this._flush());return this.flushPromise=e,this.addPendingPromise(e),wg([e]).then(()=>{this.flushPromise===e&&(this.flushPromise=null)}),e}getCustomHeaders(){let e=this.getCustomUserAgent(),t={};return e&&e!==``&&(t[`User-Agent`]=e),t}async _flush(){this.clearFlushTimer(),await this._initPromise;let e=this.getPersistedProperty(Nh.Queue)||[];if(!e.length)return;let t=[],n=e.length;for(;e.length>0&&t.length<n;){let n=e.slice(0,this.maxBatchSize),r=n.map(e=>e.message),i=async()=>{let t=(this.getPersistedProperty(Nh.Queue)||[]).slice(n.length);this.setPersistedProperty(Nh.Queue,t),e=t,await this.flushStorage()},a={api_key:this.apiKey,batch:r,sent_at:xg()};this.historicalMigration&&(a.historical_migration=!0);let o=JSON.stringify(a),s=`${this.host}/batch/`,c=this.disableCompression?null:await Dg(o,this.isDebug),l={method:`POST`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`,...c!==null&&{"Content-Encoding":`gzip`}},body:c||o},u={retryCheck:e=>Mg(e)?!1:jg(e)};try{await this.fetchWithRetry(s,l,u)}catch(e){if(Mg(e)&&r.length>1){this.maxBatchSize=Math.max(1,Math.floor(r.length/2)),this._logger.warn(`Received 413 when sending batch of size ${r.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw e instanceof kg||await i(),this._events.emit(`error`,e),e}await i(),t.push(...r)}this._events.emit(`flush`,t)}async fetchWithRetry(e,t,n,r){let i=t.body?t.body:``,a=-1;try{a=i instanceof Blob?i.size:Buffer.byteLength(i,`utf8`)}catch{a=i instanceof Blob?i.size:new TextEncoder().encode(i).length}return await bg(async()=>{let n=new AbortController,i=Sg(()=>n.abort(),r??this.requestTimeout),o=null;try{o=await this.fetch(e,{signal:n.signal,...t})}catch(e){throw new kg(e)}finally{clearTimeout(i)}if(t.mode!==`no-cors`&&(o.status<200||o.status>=400))throw new Og(o,a);return o},{...this._retryOptions,...n})}async _shutdown(e=3e4){await this._initPromise;let t=!1;this.clearFlushTimer();let n=async()=>{try{for(await this.promiseQueue.join();!((this.getPersistedProperty(Nh.Queue)||[]).length===0||(await this.flush(),t)););}catch(e){if(!jg(e))throw e;await Ag(e)}},r;try{return await Promise.race([new Promise((n,i)=>{r=Sg(()=>{this._logger.error(`Timed out while shutting down PostHog`),t=!0,i(`Timeout while shutting down PostHog. Some events may not have been sent.`)},e)}),n()])}finally{clearTimeout(r)}}async shutdown(e=3e4){return this.shutdownPromise?this._logger.warn(`shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup`):this.shutdownPromise=this._shutdown(e).finally(()=>{this.shutdownPromise=null}),this.shutdownPromise}};let Pg,Fg,Ig;function Lg(e){let t=globalThis._posthogChunkIds;if(!t)return;let n=Object.keys(t);return Ig&&n.length===Fg?Ig:(Fg=n.length,Ig=n.reduce((n,r)=>{Pg||={};let i=Pg[r];if(i)n[i[0]]=i[1];else{let i=e(r);for(let e=i.length-1;e>=0;e--){let a=i[e]?.filename,o=t[r];if(a&&o){n[a]=o,Pg[r]=[a,o];break}}}return n},{}),Ig)}var Rg=class{constructor(e,t,n=[]){this.coercers=e,this.stackParser=t,this.modifiers=n}buildFromUnknown(e,t={}){let n=t&&t.mechanism||{handled:!0,type:`generic`},r=this.buildCoercingContext(n,t,0).apply(e),i=this.buildParsingContext(t),a=this.parseStacktrace(r,i);return{$exception_list:this.convertToExceptionList(a,n),$exception_level:`error`}}async modifyFrames(e){for(let t of e)t.stacktrace&&t.stacktrace.frames&&zh(t.stacktrace.frames)&&(t.stacktrace.frames=await this.applyModifiers(t.stacktrace.frames));return e}coerceFallback(e){return{type:`Error`,value:`Unknown error`,stack:e.syntheticException?.stack,synthetic:!0}}parseStacktrace(e,t){let n;e.cause!=null&&(n=this.parseStacktrace(e.cause,t));let r;return e.stack!=``&&e.stack!=null&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?t.skipFirstLines:0),t.chunkIdMap)),{...e,cause:n,stack:r}}applyChunkIds(e,t){return e.map(e=>(e.filename&&t&&(e.chunk_id=t[e.filename]),e))}applyCoercers(e,t){for(let n of this.coercers)if(n.match(e))return n.coerce(e,t);return this.coerceFallback(t)}async applyModifiers(e){let t=e;for(let e of this.modifiers)t=await e(t);return t}convertToExceptionList(e,t){let n={type:e.type,value:e.value,mechanism:{type:t.type??`generic`,handled:t.handled??!0,synthetic:e.synthetic??!1}};e.stack&&(n.stacktrace={type:`raw`,frames:e.stack});let r=[n];return e.cause!=null&&r.push(...this.convertToExceptionList(e.cause,{...t,handled:!0})),r}buildParsingContext(e){return{chunkIdMap:Lg(this.stackParser),skipFirstLines:e.skipFirstLines??1}}buildCoercingContext(e,t,n=0){let r=(n,r)=>{if(r<=4){let i=this.buildCoercingContext(e,t,r);return this.applyCoercers(n,i)}};return{...t,syntheticException:n==0?t.syntheticException:void 0,mechanism:e,apply:e=>r(e,n),next:e=>r(e,n+1)}}};const zg=/^\s*[-]{4,}$/,Bg=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,Vg=(e,t)=>{let n=e.match(Bg);if(n){let e,r,i,a,o;if(n[1]){i=n[1];let t=i.lastIndexOf(`.`);if(i[t-1]===`.`&&t--,t>0){e=i.slice(0,t),r=i.slice(t+1);let n=e.indexOf(`.Module`);n>0&&(i=i.slice(n+1),e=e.slice(0,n))}a=void 0}r&&(a=e,o=r),r===`<anonymous>`&&(o=void 0,i=void 0),i===void 0&&(o||=`?`,i=a?`${a}.${o}`:o);let s=n[2]?.startsWith(`file://`)?n[2].slice(7):n[2],c=n[5]===`native`;return s?.match(/\/[A-Z]:/)&&(s=s.slice(1)),!s&&n[5]&&!c&&(s=n[5]),{filename:s?decodeURI(s):void 0,module:void 0,function:i,lineno:Ug(n[3]),colno:Ug(n[4]),in_app:Hg(s||``,c),platform:t}}if(e.match(zg))return{filename:e,platform:t}};function Hg(e,t=!1){return!(t||e&&!e.startsWith(`/`)&&!e.match(/^[A-Z]:/)&&!e.startsWith(`.`)&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes(`node_modules/`)}function Ug(e){return parseInt(e||``,10)||void 0}const Wg=/\(error: (.*)\)/;function Gg(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,50).map(e=>({...e,filename:e.filename||Kg(t).filename,function:e.function||`?`}))}function Kg(e){return e[e.length-1]||{}}function qg(e,...t){return(n,r=0)=>{let i=[],a=n.split(`
|
|
35
|
+
`);for(let n=r;n<a.length;n++){let r=a[n];if(r.length>1024)continue;let o=Wg.test(r)?r.replace(Wg,`$1`):r;if(!o.match(/\S*Error: /)){for(let n of t){let t=n(o,e);if(t){i.push(t);break}}if(i.length>=50)break}}return Gg(i)}}var Jg=class{match(e){return Gh(e)}coerce(e,t){return{type:this.getType(e),value:this.getMessage(e,t),stack:this.getStack(e),cause:e.cause?t.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,t){let n=e.message;return n.error&&typeof n.error.message==`string`?String(n.error.message):String(n)}getStack(e){return e.stacktrace||e.stack||void 0}};const Yg=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;var Xg=class{match(e){return typeof e==`string`}coerce(e,t){let[n,r]=this.getInfos(e);return{type:n??`Error`,value:r??e,stack:t.syntheticException?.stack,synthetic:!0}}getInfos(e){let t=`Error`,n=e,r=e.match(Yg);return r&&(t=r[1],n=r[2]),[t,n]}};const Zg=[`fatal`,`error`,`warning`,`log`,`info`,`debug`];function Qg(e,t=40){let n=Object.keys(e);if(n.sort(),!n.length)return`[object has no keys]`;for(let e=n.length;e>0;e--){let r=n.slice(0,e).join(`, `);if(!(r.length>t))return e===n.length||r.length<=t?r:`${r.slice(0,t)}...`}return``}var $g=class{match(e){return typeof e==`object`&&!!e}coerce(e,t){let n=this.getErrorPropertyFromObject(e);return n?t.apply(n):{type:this.getType(e),value:this.getValue(e),stack:t.syntheticException?.stack,level:this.isSeverityLevel(e.level)?e.level:`error`,synthetic:!0}}getType(e){return Jh(e)?e.constructor.name:`Error`}getValue(e){if(`name`in e&&typeof e.name==`string`){let t=`'${e.name}' captured as exception`;return`message`in e&&typeof e.message==`string`&&(t+=` with message: '${e.message}'`),t}if(`message`in e&&typeof e.message==`string`)return e.message;let t=this.getObjectClassName(e),n=Qg(e);return`${t&&t!==`Object`?`'${t}'`:`Object`} captured as exception with keys: ${n}`}isSeverityLevel(e){return Hh(e)&&!Uh(e)&&Zg.indexOf(e)>=0}getErrorPropertyFromObject(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];if(Cg(n))return n}}getObjectClassName(e){try{let t=Object.getPrototypeOf(e);return t?t.constructor.name:void 0}catch{return}}},e_=class{match(e){return Jh(e)}coerce(e,t){let n=e.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${Qg(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}},t_=class{match(e){return Kh(e)}coerce(e,t){return{type:`Error`,value:`Primitive value captured as exception: ${String(e)}`,stack:t.syntheticException?.stack,synthetic:!0}}},n_=class{constructor(e){this._maxSize=e,this._cache=new Map}get(e){let t=this._cache.get(e);if(t!==void 0)return this._cache.delete(e),this._cache.set(e,t),t}set(e,t){this._cache.set(e,t)}reduce(){for(;this._cache.size>=this._maxSize;){let e=this._cache.keys().next().value;e&&this._cache.delete(e)}}};const r_=new n_(25),i_=new n_(20);async function a_(e){let t={};for(let n=e.length-1;n>=0;n--){let r=e[n],i=r?.filename;!r||typeof i!=`string`||typeof r.lineno!=`number`||u_(i)||d_(r)||(t[i]||(t[i]=[]),t[i].push(r.lineno))}let n=Object.keys(t);if(n.length==0)return e;let r=[];for(let e of n){if(i_.get(e))continue;let n=t[e];if(!n)continue;n.sort((e,t)=>e-t);let i=p_(n);if(i.every(t=>f_(e,t)))continue;let a=__(r_,e,{});r.push(o_(e,i,a))}return await Promise.all(r).catch(()=>{}),e&&e.length>0&&s_(e,r_),r_.reduce(),e}function o_(e,t,n){return new Promise(r=>{let i=Xe(e),a=Ze({input:i});function o(){i.destroy(),r()}let s=0,c=0,l=t[c];if(l===void 0)return void o();let u=l[0],d=l[1];function f(){i_.set(e,1),a.close(),a.removeAllListeners(),o()}i.on(`error`,f),a.on(`error`,f),a.on(`close`,o),a.on(`line`,e=>{if(s++,!(s<u)&&(n[s]=v_(e,0),s>=d)){if(c===t.length-1){a.close(),a.removeAllListeners();return}c++;let e=t[c];if(e===void 0){a.close(),a.removeAllListeners();return}u=e[0],d=e[1]}})})}function s_(e,t){for(let n of e)if(n.filename&&n.context_line===void 0&&typeof n.lineno==`number`){let e=t.get(n.filename);if(e===void 0)continue;c_(n.lineno,n,e)}}function c_(e,t,n){if(t.lineno===void 0||n===void 0)return;t.pre_context=[];for(let r=h_(e);r<e;r++){let e=n[r];if(e===void 0)return void l_(t);t.pre_context.push(e)}if(n[e]===void 0)return void l_(t);t.context_line=n[e];let r=g_(e);t.post_context=[];for(let i=e+1;i<=r;i++){let e=n[i];if(e===void 0)break;t.post_context.push(e)}}function l_(e){delete e.pre_context,delete e.context_line,delete e.post_context}function u_(e){return e.startsWith(`node:`)||e.endsWith(`.min.js`)||e.endsWith(`.min.cjs`)||e.endsWith(`.min.mjs`)||e.startsWith(`data:`)}function d_(e){return e.lineno!==void 0&&e.lineno>1e4||e.colno!==void 0&&e.colno>1e3}function f_(e,t){let n=r_.get(e);if(n===void 0)return!1;for(let e=t[0];e<=t[1];e++)if(n[e]===void 0)return!1;return!0}function p_(e){if(!e.length)return[];let t=0,n=e[0];if(typeof n!=`number`)return[];let r=m_(n),i=[];for(;;){if(t===e.length-1){i.push(r);break}let n=e[t+1];if(typeof n!=`number`)break;n<=r[1]?r[1]=n+7:(i.push(r),r=m_(n)),t++}return i}function m_(e){return[h_(e),g_(e)]}function h_(e){return Math.max(1,e-7)}function g_(e){return e+7}function __(e,t,n){let r=e.get(t);return r===void 0?(e.set(t,n),n):r}function v_(e,t){let n=e,r=n.length;if(r<=150)return n;t>r&&(t=r);let i=Math.max(t-60,0);i<5&&(i=0);let a=Math.min(i+140,r);return a>r-5&&(a=r),a===r&&(i=Math.max(a-140,0)),n=n.slice(i,a),i>0&&(n=`...${n}`),a<r&&(n+=`...`),n}function y_(e,t){let n=!1;return Object.assign(r=>{let i=global.process.listeners(`uncaughtException`).filter(e=>e.name!==`domainUncaughtExceptionClear`&&!0!==e._posthogErrorHandler).length===0;e(r,{mechanism:{type:`onuncaughtexception`,handled:!1}}),!n&&i&&(n=!0,t(r))},{_posthogErrorHandler:!0})}function b_(e,t){globalThis.process?.on(`uncaughtException`,y_(e,t))}function x_(e){globalThis.process?.on(`unhandledRejection`,t=>e(t,{mechanism:{type:`onunhandledrejection`,handled:!1}}))}var S_=class e{constructor(e,t,n){this.client=e,this._exceptionAutocaptureEnabled=t.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new Qh({refillRate:1,bucketSize:10,refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(e){return Bh(e)&&`__posthog_previously_captured_error`in e&&!0===e.__posthog_previously_captured_error}static async buildEventMessage(e,t,n,r){let i={...r};n||(i.$process_person_profile=!1);let a=this.errorPropertiesBuilder.buildFromUnknown(e,t);return a.$exception_list=await this.errorPropertiesBuilder.modifyFrames(a.$exception_list),{event:`$exception`,distinctId:n||jh(),properties:{...a,...i},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(b_(this.onException.bind(this),this.onFatalError.bind(this)),x_(this.onException.bind(this)))}onException(t,n){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let r=await e.buildEventMessage(t,n),i=r.properties?.$exception_list[0]?.type??`Exception`;return this._rateLimiter.consumeRateLimit(i)?void this._logger.info(`Skipping exception capture because of client rate limiting.`,{exception:i}):this.client.capture(r)}})())}async onFatalError(e){console.error(e),await this.client.shutdown(2e3),process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}};const C_={ERRORS_WHILE_COMPUTING:`errors_while_computing_flags`,FLAG_MISSING:`flag_missing`,QUOTA_LIMITED:`quota_limited`,UNKNOWN_ERROR:`unknown_error`};async function w_(e){let t=globalThis.crypto?.subtle;if(!t)throw Error(`SubtleCrypto API not available`);let n=await t.digest(`SHA-1`,new TextEncoder().encode(e));return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}const T_=[`is_not`];var E_=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name=`ClientError`,this.message=t,Object.setPrototypeOf(this,e.prototype)}},Q=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},D_=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Error.captureStackTrace(this,this.constructor),Object.setPrototypeOf(this,e.prototype)}},O_=class{constructor({pollingInterval:e,personalApiKey:t,projectApiKey:n,timeout:r,host:i,customHeaders:a,...o}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollingInterval=e,this.personalApiKey=t,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=r,this.projectApiKey=n,this.host=i,this.poller=void 0,this.fetch=o.fetch||fetch,this.onError=o.onError,this.customHeaders=a,this.onLoad=o.onLoad,this.cacheProvider=o.cacheProvider,this.strictLocalEvaluation=o.strictLocalEvaluation??!1,this.loadFeatureFlags()}debug(e=!0){this.debugMode=e}logMsgIfDebug(e){this.debugMode&&e()}createEvaluationContext(e,t={},n={},r={},i={}){return{distinctId:e,groups:t,personProperties:n,groupProperties:r,evaluationCache:i}}async getFeatureFlag(e,t,n={},r={},i={}){await this.loadFeatureFlags();let a,o;if(!this.loadedSuccessfullyOnce)return a;if(o=this.featureFlagsByKey[e],o!==void 0){let s=this.createEvaluationContext(t,n,r,i);try{a=(await this.computeFlagAndPayloadLocally(o,s)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${e} -> ${a}`))}catch(t){t instanceof D_||t instanceof Q?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e}: ${t}`))}}return a}async getAllFlagsAndPayloads(e,t){await this.loadFeatureFlags();let n={},r={},i=this.featureFlags.length==0,a=t?t.map(e=>this.featureFlagsByKey[e]).filter(Boolean):this.featureFlags,o={...e,evaluationCache:e.evaluationCache??{}};return await Promise.all(a.map(async e=>{try{let{value:t,payload:i}=await this.computeFlagAndPayloadLocally(e,o);n[e.key]=t,i&&(r[e.key]=i)}catch(t){t instanceof D_||t instanceof Q?this.logMsgIfDebug(()=>console.debug(`${t.name} when computing flag locally: ${e.key}: ${t.message}`)):t instanceof Error&&this.onError?.(Error(`Error computing flag locally: ${e.key}: ${t}`)),i=!0}})),{response:n,payloads:r,fallbackToFlags:i}}async computeFlagAndPayloadLocally(e,t,n={}){let{matchValue:r,skipLoadCheck:i=!1}=n;if(i||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};let a;a=r===void 0?await this.computeFlagValueLocally(e,t):r;let o=this.getFeatureFlagPayload(e.key,a);return{value:a,payload:o}}async computeFlagValueLocally(e,t){let{distinctId:n,groups:r,personProperties:i,groupProperties:a}=t;if(e.ensure_experience_continuity)throw new Q(`Flag has experience continuity enabled`);if(!e.active)return!1;let o=(e.filters||{}).aggregation_group_type_index;if(o!=null){let n=this.groupTypeMapping[String(o)];if(!n)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${o} for feature flag ${e.key}`)),new Q(`Flag has unknown group type index`);if(!(n in r))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${e.key} without group names passed in`)),!1;e.bucketing_identifier===`device_id`&&(i?.$device_id===void 0||i?.$device_id===null||i?.$device_id===``)&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${e.key}`));let s=a[n];return await this.matchFeatureFlagProperties(e,r[n],s,t)}{let r=this.getBucketingValueForFlag(e,n,i);if(r===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${e.key} without $device_id, falling back to server evaluation`)),new Q(`Can't compute feature flag: ${e.key} without $device_id`);return await this.matchFeatureFlagProperties(e,r,i,t)}}getBucketingValueForFlag(e,t,n){if(e.filters?.aggregation_group_type_index!=null)return t;if(e.bucketing_identifier===`device_id`){let e=n?.$device_id;return e==null||e===``?void 0:e}return t}getFeatureFlagPayload(e,t){let n=null;if(!1!==t&&t!=null&&(typeof t==`boolean`?n=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t.toString()]||null:typeof t==`string`&&(n=this.featureFlagsByKey?.[e]?.filters?.payloads?.[t]||null),n!=null)){if(typeof n==`object`)return n;if(typeof n==`string`)try{return JSON.parse(n)}catch{}return n}return null}async evaluateFlagDependency(e,t,n){let{evaluationCache:r}=n,i=e.key;if(!this.featureFlagsByKey)throw new Q(`Feature flags not available for dependency evaluation`);if(!(`dependency_chain`in e))throw new Q(`Flag dependency property for '${i}' is missing required 'dependency_chain' field`);let a=e.dependency_chain;if(!Array.isArray(a))throw new Q(`Flag dependency property for '${i}' has an invalid 'dependency_chain' (expected array, got ${typeof a})`);if(a.length===0)throw new Q(`Circular dependency detected for flag '${i}' (empty dependency chain)`);for(let e of a){if(!(e in r)){let t=this.featureFlagsByKey[e];if(t)if(t.active)try{r[e]=await this.computeFlagValueLocally(t,n)}catch(t){throw new Q(`Error evaluating flag dependency '${e}' for flag '${i}': ${t}`)}else r[e]=!1;else throw new Q(`Missing flag dependency '${e}' for flag '${i}'`)}if(r[e]==null)throw new Q(`Dependency '${e}' could not be evaluated`)}let o=r[i];return this.flagEvaluatesToExpectedValue(e.value,o)}flagEvaluatesToExpectedValue(e,t){return typeof e==`boolean`?e===t||typeof t==`string`&&t!==``&&!0===e:typeof e==`string`?t===e:!1}async matchFeatureFlagProperties(e,t,n,r){let i=e.filters||{},a=i.groups||[],o=!1,s;for(let c of a)try{if(await this.isConditionMatch(e,t,c,n,r)){let n=c.variant,r=i.multivariate?.variants||[];s=n&&r.some(e=>e.key===n)?n:await this.getMatchingVariant(e,t)||!0;break}}catch(e){if(e instanceof D_)throw e;if(e instanceof Q)o=!0;else throw e}if(s!==void 0)return s;if(o)throw new Q(`Can't determine if feature flag is enabled or not with given properties`);return!1}async isConditionMatch(e,t,n,r,i){let a=n.rollout_percentage,o=e=>{this.logMsgIfDebug(()=>console.warn(e))};if((n.properties||[]).length>0){for(let e of n.properties){let t=e.type,n=!1;if(n=t===`cohort`?M_(e,r,this.cohorts,this.debugMode):t===`flag`?await this.evaluateFlagDependency(e,r,i):A_(e,r,o),!n)return!1}if(a==null)return!0}return!(a!=null&&await k_(e.key,t)>a/100)}async getMatchingVariant(e,t){let n=await k_(e.key,t,`variant`),r=this.variantLookupTable(e).find(e=>n>=e.valueMin&&n<e.valueMax);if(r)return r.key}variantLookupTable(e){let t=[],n=0,r=0;return((e.filters||{}).multivariate?.variants||[]).forEach(e=>{r=n+e.rollout_percentage/100,t.push({valueMin:n,valueMax:r,key:e.key}),n=r}),t}updateFlagState(e){this.featureFlags=e.flags,this.featureFlagsByKey=e.flags.reduce((e,t)=>(e[t.key]=t,e),{}),this.groupTypeMapping=e.groupTypeMapping,this.cohorts=e.cohorts,this.loadedSuccessfullyOnce=!0}warnAboutExperienceContinuityFlags(e){if(this.strictLocalEvaluation)return;let t=e.filter(e=>e.ensure_experience_continuity);t.length>0&&console.warn(`[PostHog] You are using local evaluation but ${t.length} flag(s) have experience continuity enabled: ${t.map(e=>e.key).join(`, `)}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(e){if(!this.cacheProvider)return!1;try{let t=await this.cacheProvider.getFlagDefinitions();return t?(this.updateFlagState(t),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${e} (${t.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(t.flags),!0):!1}catch(e){return this.onError?.(Error(`Failed to load from cache: ${e}`)),!1}}async loadFeatureFlags(e=!1){if(!(this.loadedSuccessfullyOnce&&!e))return!e&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping fetch, in backoff period`)):(this.loadingPromise||=this._loadFeatureFlags().catch(e=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${e}`))).finally(()=>{this.loadingPromise=void 0}),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){return this.shouldBeginExponentialBackoff?Math.min(6e4,this.pollingInterval*2**this.backOffCount):this.pollingInterval}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&=(clearTimeout(this.poller),void 0),this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval());try{let e=!0;if(this.cacheProvider)try{e=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(e){this.onError?.(Error(`Error in shouldFetchFlagDefinitions: ${e}`))}if(!e&&(await this.loadFromCache(`Loaded flags from cache (skipped fetch)`)||this.loadedSuccessfullyOnce))return;let t=await this._requestFeatureFlagDefinitions();if(!t)return;switch(t.status){case 304:this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Flags not modified (304), using cached data`)),this.flagsEtag=t.headers?.get(`ETag`)??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new E_(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn(`[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts`),this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={};return;case 403:throw this.beginBackoff(),new E_(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new E_(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let n=await t.json()??{};if(!(`flags`in n))return void this.onError?.(Error(`Invalid response when getting feature flags: ${JSON.stringify(n)}`));this.flagsEtag=t.headers?.get(`ETag`)??void 0;let r={flags:n.flags??[],groupTypeMapping:n.group_type_mapping||{},cohorts:n.cohorts||{}};if(this.updateFlagState(r),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&e)try{await this.cacheProvider.onFlagDefinitionsReceived(r)}catch(e){this.onError?.(Error(`Failed to store in cache: ${e}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(r.flags);break}default:return}}catch(e){e instanceof E_&&this.onError?.(e)}}getPersonalApiKeyRequestOptions(e=`GET`,t){let n={...this.customHeaders,"Content-Type":`application/json`,Authorization:`Bearer ${this.personalApiKey}`};return t&&(n[`If-None-Match`]=t),{method:e,headers:n}}_requestFeatureFlagDefinitions(){let e=`${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`,t=this.getPersonalApiKeyRequestOptions(`GET`,this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout==`number`){let e=new AbortController;n=Sg(()=>{e.abort()},this.timeout),t.signal=e.signal}try{let n=this.fetch;return n(e,t)}finally{clearTimeout(n)}}async stopPoller(e=3e4){if(clearTimeout(this.poller),this.cacheProvider)try{let t=this.cacheProvider.shutdown();t instanceof Promise&&await Promise.race([t,new Promise((t,n)=>setTimeout(()=>n(Error(`Cache shutdown timeout after ${e}ms`)),e))])}catch(e){this.onError?.(Error(`Error during cache shutdown: ${e}`))}}};async function k_(e,t,n=``){let r=await w_(`${e}.${t}${n}`);return parseInt(r.slice(0,15),16)/0x1000000000000000}function A_(e,t,n){let r=e.key,i=e.value,a=e.operator||`exact`;if(r in t){if(a===`is_not_set`)throw new Q(`Operator is_not_set is not supported`)}else throw new Q(`Property ${r} not found in propertyValues`);let o=t[r];if(o==null&&!T_.includes(a))return n&&n(`Property ${r} cannot have a value of null/undefined with the ${a} operator`),!1;function s(e,t){return Array.isArray(e)?e.map(e=>String(e).toLowerCase()).includes(String(t).toLowerCase()):String(e).toLowerCase()===String(t).toLowerCase()}function c(e,t,n){if(n===`gt`)return e>t;if(n===`gte`)return e>=t;if(n===`lt`)return e<t;if(n===`lte`)return e<=t;throw Error(`Invalid operator: ${n}`)}switch(a){case`exact`:return s(i,o);case`is_not`:return!s(i,o);case`is_set`:return r in t;case`icontains`:return String(o).toLowerCase().includes(String(i).toLowerCase());case`not_icontains`:return!String(o).toLowerCase().includes(String(i).toLowerCase());case`regex`:return P_(String(i))&&String(o).match(String(i))!==null;case`not_regex`:return P_(String(i))&&String(o).match(String(i))===null;case`gt`:case`gte`:case`lt`:case`lte`:{let e=typeof i==`number`?i:null;if(typeof i==`string`)try{e=parseFloat(i)}catch{}return e==null||o==null?c(String(o),String(i),a):typeof o==`string`?c(o,String(i),a):c(o,e,a)}case`is_date_after`:case`is_date_before`:{if(typeof i==`boolean`)throw new Q(`Date operations cannot be performed on boolean values`);let e=V_(String(i));if(e??=B_(i),e==null)throw new Q(`Invalid date: ${i}`);let t=B_(o);return[`is_date_before`].includes(a)?t<e:t>e}case`semver_eq`:return I_(F_(String(o)),F_(String(i)))===0;case`semver_neq`:return I_(F_(String(o)),F_(String(i)))!==0;case`semver_gt`:return I_(F_(String(o)),F_(String(i)))>0;case`semver_gte`:return I_(F_(String(o)),F_(String(i)))>=0;case`semver_lt`:return I_(F_(String(o)),F_(String(i)))<0;case`semver_lte`:return I_(F_(String(o)),F_(String(i)))<=0;case`semver_tilde`:{let e=F_(String(o)),{lower:t,upper:n}=L_(String(i));return I_(e,t)>=0&&I_(e,n)<0}case`semver_caret`:{let e=F_(String(o)),{lower:t,upper:n}=R_(String(i));return I_(e,t)>=0&&I_(e,n)<0}case`semver_wildcard`:{let e=F_(String(o)),{lower:t,upper:n}=z_(String(i));return I_(e,t)>=0&&I_(e,n)<0}default:throw new Q(`Unknown operator: ${a}`)}}function j_(e,t){if(!(e in t))throw new D_(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}function M_(e,t,n,r=!1){let i=String(e.value);j_(i,n);let a=n[i];return N_(a,t,n,r)}function N_(e,t,n,r=!1){if(!e)return!0;let i=e.type,a=e.values;if(!a||a.length===0)return!0;let o=!1;if(`values`in a[0]){for(let e of a)try{let a=N_(e,t,n,r);if(i===`AND`){if(!a)return!1}else if(a)return!0}catch(t){if(t instanceof D_)throw t;if(t instanceof Q)r&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new Q(`Can't match cohort without a given cohort property value`);return i===`AND`}for(let e of a)try{let a;if(e.type===`cohort`)a=M_(e,t,n,r);else if(e.type===`flag`){r&&console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${e.key||`unknown`}'`);continue}else a=A_(e,t);let o=e.negation||!1;if(i===`AND`){if(!a&&!o||a&&o)return!1}else if(a&&!o||!a&&o)return!0}catch(t){if(t instanceof D_)throw t;if(t instanceof Q)r&&console.debug(`Failed to compute property ${e} locally: ${t}`),o=!0;else throw t}if(o)throw new Q(`can't match cohort without a given cohort property value`);return i===`AND`}function P_(e){try{return new RegExp(e),!0}catch{return!1}}function F_(e){let t=String(e).trim().replace(/^[vV]/,``).split(`-`)[0].split(`+`)[0];if(!t||t.startsWith(`.`))throw new Q(`Invalid semver: ${e}`);let n=t.split(`.`),r=t=>{if(t===void 0||t===``)return 0;if(!/^\d+$/.test(t))throw new Q(`Invalid semver: ${e}`);return parseInt(t,10)};return[r(n[0]),r(n[1]),r(n[2])]}function I_(e,t){for(let n=0;n<3;n++){if(e[n]<t[n])return-1;if(e[n]>t[n])return 1}return 0}function L_(e){let t=F_(e);return{lower:[t[0],t[1],t[2]],upper:[t[0],t[1]+1,0]}}function R_(e){let[t,n,r]=F_(e),i=[t,n,r],a;return a=t>0?[t+1,0,0]:n>0?[0,n+1,0]:[0,0,r+1],{lower:i,upper:a}}function z_(e){let t=String(e).trim().replace(/^[vV]/,``).replace(/\.\*$/,``).replace(/\*$/,``);if(!t)throw new Q(`Invalid wildcard semver: ${e}`);let n=t.split(`.`),r=parseInt(n[0],10);if(isNaN(r))throw new Q(`Invalid wildcard semver: ${e}`);let i,a;if(n.length===1)i=[r,0,0],a=[r+1,0,0];else{let t=parseInt(n[1],10);if(isNaN(t))throw new Q(`Invalid wildcard semver: ${e}`);i=[r,t,0],a=[r,t+1,0]}return{lower:i,upper:a}}function B_(e){if(e instanceof Date)return e;if(typeof e==`string`||typeof e==`number`){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new Q(`${e} is in an invalid date format`)}throw new Q(`The date provided ${e} must be a string, number, or date object`)}function V_(e){let t=e.match(/^-?(?<number>[0-9]+)(?<interval>[a-z])$/),n=new Date(new Date().toISOString());if(!t)return null;{if(!t.groups)return null;let e=parseInt(t.groups.number);if(e>=1e4)return null;let r=t.groups.interval;if(r==`h`)n.setUTCHours(n.getUTCHours()-e);else if(r==`d`)n.setUTCDate(n.getUTCDate()-e);else if(r==`w`)n.setUTCDate(n.getUTCDate()-7*e);else if(r==`m`)n.setUTCMonth(n.getUTCMonth()-e);else{if(r!=`y`)return null;n.setUTCFullYear(n.getUTCFullYear()-e)}return n}}var H_=class{getProperty(e){return this._memoryStorage[e]}setProperty(e,t){this._memoryStorage[e]=t===null?void 0:t}constructor(){this._memoryStorage={}}};const U_=3e4;var W_=class extends Ng{constructor(e,t={}){if(super(e,t),this._memoryStorage=new H_,this.options=t,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof t.featureFlagsPollingInterval==`number`?Math.max(t.featureFlagsPollingInterval,100):U_,typeof t.waitUntilDebounceMs==`number`&&(this.options.waitUntilDebounceMs=Math.max(t.waitUntilDebounceMs,0)),typeof t.waitUntilMaxWaitMs==`number`&&(this.options.waitUntilMaxWaitMs=Math.max(t.waitUntilMaxWaitMs,0)),t.personalApiKey){if(t.personalApiKey.includes(`phc_`))throw Error(`Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.`);!1!==t.enableLocalEvaluation&&(this.featureFlagsPoller=new O_({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:t.personalApiKey,projectApiKey:e,timeout:t.requestTimeout??1e4,host:this.host,fetch:t.fetch,onError:e=>{this._events.emit(`error`,e)},onLoad:e=>{this._events.emit(`localEvaluationFlagsLoaded`,e)},customHeaders:this.getCustomHeaders(),cacheProvider:t.flagDefinitionCacheProvider,strictLocalEvaluation:t.strictLocalEvaluation}))}this.errorTracking=new S_(this,t,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=t.maxCacheSize||5e4}enqueue(e,t,n){super.enqueue(e,t,n),this.scheduleDebouncedFlush()}async flush(){let e=super.flush(),t=this.options.waitUntil;if(t&&!this._waitUntilCycle)try{t(e.catch(()=>{}))}catch{}return e}scheduleDebouncedFlush(){let e=this.options.waitUntil;if(!e||this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let t,n=new Promise(e=>{t=e});try{e(n)}catch{return}this._waitUntilCycle={resolve:t,startedAt:Date.now(),timer:void 0}}let t=Date.now()-this._waitUntilCycle.startedAt>=(this.options.waitUntilMaxWaitMs??500);if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),t)return void this.resolveWaitUntilFlush();let n=this.options.waitUntilDebounceMs??50;this._waitUntilCycle.timer=Sg(()=>{this.resolveWaitUntilFlush()},n)}_consumeWaitUntilCycle(){let e=this._waitUntilCycle;return e&&(clearTimeout(e.timer),this._waitUntilCycle=void 0),e?.resolve}async resolveWaitUntilFlush(){let e=this._consumeWaitUntilCycle();try{await super.flush()}catch{}finally{e?.()}}getPersistedProperty(e){return this._memoryStorage.getProperty(e)}setPersistedProperty(e,t){return this._memoryStorage.setProperty(e,t)}fetch(e,t){return this.options.fetch?this.options.fetch(e,t):fetch(e,t)}getLibraryVersion(){return`5.28.5`}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}enable(){return super.optIn()}disable(){return super.optOut()}debug(e=!0){super.debug(e),this.featureFlagsPoller?.debug(e)}capture(e){typeof e==`string`&&this._logger.warn(`Called capture() with a string as the first argument when an object was expected.`),e.event===`$exception`&&!e._originatedFromCaptureException&&this._logger.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.addPendingPromise(this.prepareEventMessage(e).then(({distinctId:e,event:t,properties:n,options:r})=>super.captureStateless(e,t,n,{timestamp:r.timestamp,disableGeoip:r.disableGeoip,uuid:r.uuid})).catch(e=>{e&&console.error(e)}))}async captureImmediate(e){return typeof e==`string`&&this._logger.warn(`Called captureImmediate() with a string as the first argument when an object was expected.`),e.event===`$exception`&&!e._originatedFromCaptureException&&this._logger.warn("Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this.addPendingPromise(this.prepareEventMessage(e).then(({distinctId:e,event:t,properties:n,options:r})=>super.captureStatelessImmediate(e,t,n,{timestamp:r.timestamp,disableGeoip:r.disableGeoip,uuid:r.uuid})).catch(e=>{e&&console.error(e)}))}identify({distinctId:e,properties:t={},disableGeoip:n}){let{$set:r,$set_once:i,$anon_distinct_id:a,...o}=t,s={$set:r||o,$set_once:i||{},$anon_distinct_id:a??void 0};super.identifyStateless(e,s,{disableGeoip:n})}async identifyImmediate({distinctId:e,properties:t={},disableGeoip:n}){let{$set:r,$set_once:i,$anon_distinct_id:a,...o}=t,s={$set:r||o,$set_once:i||{},$anon_distinct_id:a??void 0};super.identifyStatelessImmediate(e,s,{disableGeoip:n})}alias(e){super.aliasStateless(e.alias,e.distinctId,void 0,{disableGeoip:e.disableGeoip})}async aliasImmediate(e){await super.aliasStatelessImmediate(e.alias,e.distinctId,void 0,{disableGeoip:e.disableGeoip})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}async waitForLocalEvaluationReady(e=U_){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(t=>{let n=setTimeout(()=>{r(),t(!1)},e),r=this._events.on(`localEvaluationFlagsLoaded`,e=>{clearTimeout(n),r(),t(e>0)})})}_resolveDistinctId(e,t){return typeof e==`string`?{distinctId:e,options:t}:{distinctId:this.context?.get()?.distinctId,options:e}}async _getFeatureFlagResult(e,t,n={},r){let i=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&e in this._flagOverrides){let t=this._flagOverrides[e];if(t===void 0)return;let n=this._payloadOverrides?.[e];return{key:e,enabled:!1!==t,variant:typeof t==`string`?t:void 0,payload:n}}let{groups:a,disableGeoip:o}=n,{onlyEvaluateLocally:s,personProperties:c,groupProperties:l}=n,u=this.addLocalPersonAndGroupProperties(t,a,c,l);c=u.allPersonProperties,l=u.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(t,a,c,l);s??=this.options.strictLocalEvaluation??!1;let f,p=!1,m,h,g,_,v,y;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let t=this.featureFlagsPoller?.featureFlagsByKey[e];if(t)try{let n=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(t,d,{matchValue:r});if(n){p=!0;let r=n.value;_=t.id,y=`Evaluated locally`,f={key:e,enabled:!1!==r,variant:typeof r==`string`?r:void 0,payload:n.payload??void 0}}}catch(t){if(t instanceof D_||t instanceof Q)this._logger?.info(`${t.name} when computing flag locally: ${e}: ${t.message}`);else throw t}}if(!p&&!s){let t=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,o,[e]);if(t===void 0)g=C_.UNKNOWN_ERROR;else{m=t.requestId,h=t.evaluatedAt;let n=[];t.errorsWhileComputingFlags&&n.push(C_.ERRORS_WHILE_COMPUTING),t.quotaLimited?.includes(`feature_flags`)&&n.push(C_.QUOTA_LIMITED);let r=t.flags[e];if(r===void 0)n.push(C_.FLAG_MISSING);else{_=r.metadata?.id,v=r.metadata?.version,y=r.reason?.description??r.reason?.code;let t;if(r.metadata?.payload!==void 0)try{t=JSON.parse(r.metadata.payload)}catch{t=r.metadata.payload}f={key:e,enabled:r.enabled,variant:r.variant,payload:t}}n.length>0&&(g=n.join(`,`))}}if(i){let n=f===void 0?void 0:!1===f.enabled?!1:f.variant??!0,r=`${e}_${n}`;if(!(t in this.distinctIdHasSentFlagCalls)||!this.distinctIdHasSentFlagCalls[t].includes(r)){Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),Array.isArray(this.distinctIdHasSentFlagCalls[t])?this.distinctIdHasSentFlagCalls[t].push(r):this.distinctIdHasSentFlagCalls[t]=[r];let i={$feature_flag:e,$feature_flag_response:n,$feature_flag_id:_,$feature_flag_version:v,$feature_flag_reason:y,locally_evaluated:p,[`$feature/${e}`]:n,$feature_flag_request_id:m,$feature_flag_evaluated_at:p?Date.now():h};if(p&&this.featureFlagsPoller){let e=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();e!==void 0&&(i.$feature_flag_definitions_loaded_at=e)}g&&(i.$feature_flag_error=g),this.capture({distinctId:t,event:`$feature_flag_called`,properties:i,groups:a,disableGeoip:o})}}return f!==void 0&&this._payloadOverrides!==void 0&&e in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[e]}),f}async getFeatureFlag(e,t,n){let r=await this._getFeatureFlagResult(e,t,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(r!==void 0)return!1===r.enabled?!1:r.variant??!0}async getFeatureFlagPayload(e,t,n,r){if(this._payloadOverrides!==void 0&&e in this._payloadOverrides)return this._payloadOverrides[e];let i=await this._getFeatureFlagResult(e,t,{...r,sendFeatureFlagEvents:!1},n);if(i!==void 0)return i.payload??null}async getFeatureFlagResult(e,t,n){let{distinctId:r,options:i}=this._resolveDistinctId(t,n);return r?this._getFeatureFlagResult(e,r,{...i,sendFeatureFlagEvents:i?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn(`[PostHog] distinctId is required — pass it explicitly or use withContext()`)}async getRemoteConfigPayload(e){if(!this.options.personalApiKey)throw Error(`Personal API key is required for remote config payload decryption`);let t=await this._requestRemoteConfigPayload(e);if(!t)return;let n=await t.json();if(typeof n==`string`)try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(e,t,n){let r=await this.getFeatureFlag(e,t,n);if(r!==void 0)return!!r||!1}async getAllFlags(e,t){let{distinctId:n,options:r}=this._resolveDistinctId(e,t);return n?(await this.getAllFlagsAndPayloads(n,r)).featureFlags||{}:(this._logger.warn(`[PostHog] distinctId is required to get feature flags — pass it explicitly or use withContext()`),{})}async getAllFlagsAndPayloads(e,t){let{distinctId:n,options:r}=this._resolveDistinctId(e,t);if(!n)return this._logger.warn(`[PostHog] distinctId is required to get feature flags and payloads — pass it explicitly or use withContext()`),{featureFlags:{},featureFlagPayloads:{}};let{groups:i,disableGeoip:a,flagKeys:o}=r||{},{onlyEvaluateLocally:s,personProperties:c,groupProperties:l}=r||{},u=this.addLocalPersonAndGroupProperties(n,i,c,l);c=u.allPersonProperties,l=u.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,i,c,l);s??=this.options.strictLocalEvaluation??!1;let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,o),p={},m={},h=!0;if(f&&(p=f.response,m=f.payloads,h=f.fallbackToFlags),h&&!s){let e=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,d.personProperties,d.groupProperties,a,o);p={...p,...e.flags||{}},m={...m,...e.payloads||{}}}return this._flagOverrides!==void 0&&(p={...p,...this._flagOverrides}),this._payloadOverrides!==void 0&&(m={...m,...this._payloadOverrides}),{featureFlags:p,featureFlagPayloads:m}}groupIdentify({groupType:e,groupKey:t,properties:n,distinctId:r,disableGeoip:i}){super.groupIdentifyStateless(e,t,n,{disableGeoip:i},r)}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(e){let t=e=>Object.fromEntries(e.map(e=>[e,!0]));if(!1===e){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(e)){this._flagOverrides=t(e);return}if(this._isFeatureFlagOverrideOptions(e)){`flags`in e&&(!1===e.flags?this._flagOverrides=void 0:Array.isArray(e.flags)?this._flagOverrides=t(e.flags):e.flags!==void 0&&(this._flagOverrides={...e.flags})),`payloads`in e&&(!1===e.payloads?this._payloadOverrides=void 0:e.payloads!==void 0&&(this._payloadOverrides={...e.payloads}));return}this._flagOverrides={...e}}_isFeatureFlagOverrideOptions(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;if(`flags`in t){let e=t.flags;if(!1===e||Array.isArray(e)||typeof e==`object`&&e)return!0}if(`payloads`in t){let e=t.payloads;if(!1===e||typeof e==`object`&&e)return!0}return!1}withContext(e,t,n){return this.context?this.context.run(e,t,n):t()}getContext(){return this.context?.get()}enterContext(e,t){this.context?.enter(e,t)}async _shutdown(e){let t=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(e),this.errorTracking.shutdown();try{return await super._shutdown(e)}finally{t?.()}}async _requestRemoteConfigPayload(e){if(!this.options.personalApiKey)return;let t=`${this.host}/api/projects/@current/feature_flags/${e}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:`GET`,headers:{...this.getCustomHeaders(),"Content-Type":`application/json`,Authorization:`Bearer ${this.options.personalApiKey}`}},r=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout==`number`){let e=new AbortController;r=Sg(()=>{e.abort()},this.options.requestTimeout),n.signal=e.signal}try{return await this.fetch(t,n)}catch(e){this._events.emit(`error`,e);return}finally{r&&clearTimeout(r)}}extractPropertiesFromEvent(e,t){if(!e)return{personProperties:{},groupProperties:{}};let n={},r={};for(let[i,a]of Object.entries(e))if(Yh(a)&&t&&i in t){let e={};for(let[t,n]of Object.entries(a))e[String(t)]=String(n);r[String(i)]=e}else n[String(i)]=String(a);return{personProperties:n,groupProperties:r}}async getFeatureFlagsForEvent(e,t,n,r){let i=r?.personProperties||{},a=r?.groupProperties||{},o=r?.flagKeys;if(r?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let r={};for(let[e,n]of Object.entries(t||{}))r[e]=String(n);return await this.getAllFlags(e,{groups:r,personProperties:i,groupProperties:a,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:o})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let r={};for(let[e,n]of Object.entries(t||{}))r[e]=String(n);return await this.getAllFlags(e,{groups:r,personProperties:i,groupProperties:a,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:o})}return(await super.getFeatureFlagsStateless(e,t,i,a,n)).flags}addLocalPersonAndGroupProperties(e,t,n,r){let i={distinct_id:e,...n||{}},a={};if(t)for(let e of Object.keys(t))a[e]={$group_key:t[e],...r?.[e]||{}};return{allPersonProperties:i,allGroupProperties:a}}createFeatureFlagEvaluationContext(e,t,n,r){return{distinctId:e,groups:t||{},personProperties:n||{},groupProperties:r||{},evaluationCache:{}}}captureException(e,t,n,r){if(!S_.isPreviouslyCapturedError(e)){let i=Error(`PostHog syntheticException`);this.addPendingPromise(S_.buildEventMessage(e,{syntheticException:i},t,n).then(e=>this.capture({...e,uuid:r})))}}async captureExceptionImmediate(e,t,n){if(!S_.isPreviouslyCapturedError(e)){let r=Error(`PostHog syntheticException`);return this.addPendingPromise(S_.buildEventMessage(e,{syntheticException:r},t,n).then(e=>this.captureImmediate(e)))}}async prepareEventMessage(e){let{distinctId:t,event:n,properties:r,groups:i,sendFeatureFlags:a,timestamp:o,disableGeoip:s,uuid:c}=e,l=this.context?.get(),u=t||l?.distinctId,d={...this.props,...l?.properties||{},...r||{}};u||(u=jh(),d.$process_person_profile=!1),l?.sessionId&&!d.$session_id&&(d.$session_id=l.sessionId);let f=this._runBeforeSend({distinctId:u,event:n,properties:d,groups:i,sendFeatureFlags:a,timestamp:o,disableGeoip:s,uuid:c});if(!f)return Promise.reject(null);let p=await Promise.resolve().then(async()=>{if(a){let e=typeof a==`object`?a:void 0;return await this.getFeatureFlagsForEvent(f.distinctId,i,s,e)}return f.event,{}}).then(e=>{let t={};if(e)for(let[n,r]of Object.entries(e))t[`$feature/${n}`]=r;let n=Object.keys(e||{}).filter(t=>e?.[t]!==!1).sort();return n.length>0&&(t.$active_feature_flags=n),t}).catch(()=>({})).then(e=>({...e,...f.properties||{},$groups:f.groups||i}));return f.event===`$pageview`&&this.options.__preview_capture_bot_pageviews&&typeof p.$raw_user_agent==`string`&&Fh(p.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(f.event=`$bot_pageview`,p.$browser_type=`bot`),{distinctId:f.distinctId,event:f.event,properties:p,options:{timestamp:f.timestamp,disableGeoip:f.disableGeoip,uuid:f.uuid}}}_runBeforeSend(e){let t=this.options.before_send;if(!t)return e;let n=Array.isArray(t)?t:[t],r=e;for(let t of n){if(r=t(r),!r)return this._logger.info(`Event '${e.event}' was rejected in beforeSend function`),null;if(!r.properties||Object.keys(r.properties).length===0){let e=`Event '${r.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(e)}}return r}},G_=class{constructor(){this.storage=new Qe}get(){return this.storage.getStore()}run(e,t,n){return this.storage.run(this.resolve(e,n),t)}enter(e,t){this.storage.enterWith(this.resolve(e,t))}resolve(e,t){if(t?.fresh===!0)return e;let n=this.get()||{};return{distinctId:e.distinctId??n.distinctId,sessionId:e.sessionId??n.sessionId,properties:{...n.properties||{},...e.properties||{}}}}};const K_=`posthog-node`;function q_(e,{organization:t,projectId:n,prefix:r,severityAllowList:i=[`error`],sendExceptionsToPostHog:a=!0}={}){return o=>{if(!(i===`*`||i.includes(o.level)))return o;o.tags||={};let s=o.tags[J_.POSTHOG_ID_TAG];if(s===void 0)return o;let c=e.options.host??`https://us.i.posthog.com`,l=new URL(`/project/${e.apiKey}/person/${s}`,c).toString();o.tags[`PostHog Person URL`]=l;let u=o.exception?.values||[],d=u.map(e=>({...e,stacktrace:e.stacktrace?{...e.stacktrace,type:`raw`,frames:(e.stacktrace.frames||[]).map(e=>({...e,platform:`node:javascript`}))}:void 0})),f={$exception_message:u[0]?.value||o.message,$exception_type:u[0]?.type,$exception_level:o.level,$exception_list:d,$sentry_event_id:o.event_id,$sentry_exception:o.exception,$sentry_exception_message:u[0]?.value||o.message,$sentry_exception_type:u[0]?.type,$sentry_tags:o.tags};return t&&n&&(f.$sentry_url=(r||`https://sentry.io/organizations/`)+t+`/issues/?project=`+n+`&query=`+o.event_id),a&&e.capture({event:`$exception`,distinctId:s,properties:f}),o}}var J_=class{static#e=this.POSTHOG_ID_TAG=`posthog_distinct_id`;constructor(e,t,n,r,i){this.name=K_,this.name=K_,this.setupOnce=function(a,o){let s=o()?.getClient()?.getDsn()?.projectId;a(q_(e,{organization:t,projectId:s,prefix:n,severityAllowList:r,sendExceptionsToPostHog:i??!0}))}}};S_.errorPropertiesBuilder=new Rg([new e_,new Jg,new $g,new Xg,new t_],qg(`node:javascript`,Vg),[_h(),a_]);const Y_=new class extends W_{getLibraryId(){return`posthog-node`}initializeContext(){return new G_}}(`phc_t5FKk9mlc4pKbbBimiIlrM5Acq9meRp1FSuNjmwxjAX`,{host:`https://us.i.posthog.com`});var X_=class extends T.Service()(`@expect/AnalyticsProvider`){static layerPostHog=h.succeed(this)({capture:e=>d.sync(()=>{Y_.captureImmediate({event:e.eventName,properties:e.properties,distinctId:e.distinctId})}),identify:e=>d.sync(()=>{Y_.identify({distinctId:e.distinctId,properties:{email:e.email,...e.name?{name:e.name}:{}}})}),flush:d.tryPromise({try:()=>Y_.flush(),catch:e=>e}).pipe(d.ignore)});static layerDev=h.succeed(this)({capture:e=>d.logInfo(`Tracked event`,{eventName:e.eventName,distinctId:e.distinctId,...e.properties}).pipe(d.annotateLogs({module:`Analytics`})),identify:e=>d.logInfo(`Identified user`,{distinctId:e.distinctId,email:e.email,name:e.name}).pipe(d.annotateLogs({module:`Analytics`})),flush:d.void})},Z_=class extends T.Service()(`@expect/Analytics`,{make:d.gen(function*(){let e=yield*X_,t=yield*c.option(c.string(`NO_TELEMETRY`)),n=yield*c.option(c.string(`NO_TELEMTRY`)),r=v.match(t,{onNone:()=>!1,onSome:e=>e===`1`})||v.match(n,{onNone:()=>!1,onSome:e=>e===`1`}),i=yield*d.tryPromise(()=>(0,lh.machineId)()).pipe(d.orDie),a=gh(process.cwd()),o=(t,...[n])=>r?d.void:d.gen(function*(){let r={timestamp:new Date().toISOString(),projectId:a};yield*e.capture({eventName:t,properties:{...r,...n??{}},distinctId:i})}).pipe(d.catchCause(e=>d.logWarning(`Analytics capture failed`,{eventName:t,cause:e}).pipe(d.annotateLogs({module:`Analytics`}))));return{capture:o,track:((e,t)=>n=>d.tap(n,n=>{let r=t?t(n):void 0;return o.call(void 0,e,...r===void 0?[]:[r])})),flush:r?d.void:e.flush}})}){static layerPostHog=h.effect(this)(this.make).pipe(h.provide(X_.layerPostHog),h.provide(K.layer));static layerDev=h.effect(this)(this.make).pipe(h.provide(X_.layerDev),h.provide(K.layer))};const Q_=e=>{let t=s.squash(e);return{error_tag:y.hasProperty(t,`_tag`)?String(t._tag):`Unknown`,error_message:s.pretty(e)}};(class extends T.Service()(`@expect/ErrorHandler`,{make:d.gen(function*(){let e=yield*Z_;return{orDie:t=>t.pipe(d.tapCause(t=>e.capture(`error:unexpected`,Q_(t))),d.orDie),streamOrDie:t=>t.pipe(E.tapCause(t=>e.capture(`error:unexpected`,Q_(t))),E.orDie),tapCause:(...t)=>n=>n.pipe(d.tapCause(n=>d.all([e.capture(`error:expected`,Q_(n)),d.logError(...t,n)],{discard:!0})))}})}){static layer=h.effect(this)(this.make)}),$e.layerWebSocket().pipe(h.provide(Fe.layerWebSocketConstructor));const $_=h.unwrap(d.gen(function*(){let e=`expect-cli`;return et.layerJson({baseUrl:`https://api.axiom.co`,resource:{serviceName:e},headers:{Authorization:`Bearer xaat-a6ce2fdb-d378-444e-9d72-bb458867187a`,"X-Axiom-Dataset":e}})})).pipe(h.provide(Pe.layerUndici),h.orDie),ev=He()(nt(e=>({agentBackend:`claude`,browserHeaded:!1,replayHost:`https://expect.dev`,autoSaveFlows:!0,notifications:void 0,instructionHistory:[],setAgentBackend:t=>e({agentBackend:t}),toggleAutoSave:()=>e(e=>({autoSaveFlows:!e.autoSaveFlows})),toggleNotifications:()=>e(e=>({notifications:e.notifications!==!0})),rememberInstruction:t=>{t&&e(e=>({instructionHistory:[t,...e.instructionHistory.filter(e=>e!==t)].slice(0,20)}))}}),{name:`prompt-history`,storage:tt(()=>ym),partialize:e=>({instructionHistory:e.instructionHistory,notifications:e.notifications})})),tv=Z_.layerPostHog,nv=(e,...[t])=>d.runPromise(d.gen(function*(){let n=yield*Z_;yield*n.capture.call(n,e,...t===void 0?[]:[t])}).pipe(d.catchCause(()=>d.void),d.provide(tv))),rv=()=>nv(`session:started`,{mode:`interactive`,skip_planning:!1,browser_headed:ev.getState().browserHeaded}),iv=e=>d.runPromise(d.gen(function*(){let t=yield*Z_;yield*t.capture(`session:ended`,{session_ms:Date.now()-e}),yield*t.flush}).pipe(d.provide(tv))),av=()=>{let e=ae(15);if(e[0]!==`d0800512c2dc78a7eda82a0b9a76ade6e9bb7fa0b8809da478275b21ba8ce62d`){for(let t=0;t<15;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`d0800512c2dc78a7eda82a0b9a76ade6e9bb7fa0b8809da478275b21ba8ce62d`}let t=It(),n;e[1]===t.RED?n=e[2]:(n=B(j,{color:t.RED,children:H.cross}),e[1]=t.RED,e[2]=n);let r;e[3]===t.GREEN?r=e[4]:(r=B(j,{color:t.GREEN,children:H.tick}),e[3]=t.GREEN,e[4]=r);let i;e[5]===t.PRIMARY?i=e[6]:(i=B(j,{bold:!0,color:t.PRIMARY,children:` Expect`}),e[5]=t.PRIMARY,e[6]=i);let a;e[7]===t.DIM?a=e[8]:(a=B(j,{color:t.DIM,children:` v${vt}`}),e[7]=t.DIM,e[8]=a);let o;return e[9]!==t.BORDER||e[10]!==n||e[11]!==r||e[12]!==i||e[13]!==a?(o=B(k,{children:V(j,{color:t.BORDER,children:[n,r,i,a]})}),e[9]=t.BORDER,e[10]=n,e[11]=r,e[12]=i,e[13]=a,e[14]=o):o=e[14],o},ov=[{id:`enable-sync`,label:`Use existing cookies`,detail:`Recommended. Uses your browser session as-is.`},{id:`run-without-sync`,label:`Skip cookies`,detail:`Not recommended. Tests requiring login will fail.`}],sv=e=>{let t=ae(34);if(t[0]!==`e3c7abb53538ed236081ea9ec92e2272ee1c8b466fbb62e1c8ec442744cd59e3`){for(let e=0;e<34;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e3c7abb53538ed236081ea9ec92e2272ee1c8b466fbb62e1c8ec442744cd59e3`}let{changesFor:n,instruction:r,savedFlow:i}=e,a=It(),o=eh(cv),[s,c]=R(0),l;t[1]!==n||t[2]!==r||t[3]!==i||t[4]!==o?(l=e=>{let t=e.id===`enable-sync`;nv(`cookies:sync_choice`,{choice:t?`use_cookies`:`skip_cookies`}),o($m({changesFor:n,instruction:r,savedFlow:i,requiresCookies:t}))},t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=l):l=t[5];let u=l,d;t[6]!==u||t[7]!==s?(d=(e,t)=>{(t.downArrow||e===`j`||t.ctrl&&e===`n`)&&c(lv),(t.upArrow||e===`k`||t.ctrl&&e===`p`)&&c(uv),e===`c`&&u(ov[0]),e===`a`&&u(ov[1]),t.return&&u(ov[s])},t[6]=u,t[7]=s,t[8]=d):d=t[8],ne(d);let f;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=B(av,{}),t[9]=f):f=t[9];let p;t[10]===a.DIM?p=t[11]:(p=B(j,{color:a.DIM,children:H.pointerSmall}),t[10]=a.DIM,t[11]=p);let m;t[12]!==a.TEXT||t[13]!==r?(m=B(j,{color:a.TEXT,children:r}),t[12]=a.TEXT,t[13]=r,t[14]=m):m=t[14];let h;t[15]!==p||t[16]!==m?(h=V(k,{children:[f,V(j,{wrap:`truncate`,children:[` `,p,` `,m]})]}),t[15]=p,t[16]=m,t[17]=h):h=t[17];let g;t[18]!==a.GREEN||t[19]!==a.YELLOW||t[20]!==s?(g=B(k,{marginTop:1,children:s===0?V(j,{color:a.GREEN,children:[H.tick,` Your signed-in session will be synced to the browser. Cookies stay on device.`]}):V(j,{color:a.YELLOW,children:[H.warning,` The browser won`,`'`,`t inherit your signed-in session without cookies.`]})}),t[18]=a.GREEN,t[19]=a.YELLOW,t[20]=s,t[21]=g):g=t[21];let _;t[22]!==a.DIM||t[23]!==a.PRIMARY||t[24]!==a.TEXT||t[25]!==u||t[26]!==s?(_=ov.map((e,t)=>{let n=t===s;return B(zt,{onClick:()=>{c(t),u(e)},children:V(k,{flexDirection:`column`,marginBottom:1,children:[V(j,{children:[B(j,{color:n?a.PRIMARY:a.DIM,children:n?`${H.pointer} `:` `}),B(j,{color:n?a.PRIMARY:a.TEXT,bold:n,children:e.label})]}),V(j,{color:a.DIM,children:[` `,e.detail]})]})},e.id)}),t[22]=a.DIM,t[23]=a.PRIMARY,t[24]=a.TEXT,t[25]=u,t[26]=s,t[27]=_):_=t[27];let v;t[28]===_?v=t[29]:(v=B(k,{flexDirection:`column`,marginTop:1,children:_}),t[28]=_,t[29]=v);let y;return t[30]!==h||t[31]!==g||t[32]!==v?(y=V(k,{flexDirection:`column`,width:`100%`,paddingY:1,paddingX:1,children:[h,g,v]}),t[30]=h,t[31]=g,t[32]=v,t[33]=y):y=t[33],y};function cv(e){return e.setScreen}function lv(e){return Math.min(ov.length-1,e+1)}function uv(e){return Math.max(0,e-1)}const dv=He()(nt(e=>({cookiesEnabled:!1,setCookiesEnabled:t=>e({cookiesEnabled:t}),toggleCookies:()=>e(e=>({cookiesEnabled:!e.cookiesEnabled})),lastBaseUrl:void 0,setLastBaseUrl:t=>e({lastBaseUrl:t})}),{name:`project-preferences`,storage:tt(()=>Sm)})),fv=`spotify,raycast,google,controlce,controlcenter,cursor,electron,slack,discord,figma,redis,postgres,mysqld,mongod,mongos,memcached,dockerd,containerd,com.docke,docker,code,rapportd,wifiagent,airplayxpc,identitys,sharingd,bluetoothd,screencap,loginwind,systempol,corespeec,apsd,mds_store,spotlight,lsd`.split(`,`),pv=[[/next[\\/]dist[\\/]/,`next`],[/next-server/,`next`],[/vite[\\/]/,`vite`],[/vite-plus[\\/]/,`vite`],[/react-scripts[\\/]/,`react-scripts`],[/angular[\\/]cli[\\/]/,`angular`],[/remix[\\/]/,`remix`],[/astro[\\/]/,`astro`],[/nuxt[\\/]/,`nuxt`],[/svelte[\\/]/,`svelte`],[/webpack[\\/]/,`webpack`],[/webpack-dev-server/,`webpack`],[/turbopack[\\/]/,`turbopack`],[/remotion[\\/]/,`remotion`],[/gatsby[\\/]/,`gatsby`],[/parcel[\\/]/,`parcel`],[/http-server/,`http-server`],[/live-server/,`live-server`],[/serve[\\/]/,`serve`],[/express[\\/]/,`express`],[/fastify[\\/]/,`fastify`],[/hono[\\/]/,`hono`],[/elysia[\\/]/,`elysia`]],mv=e=>{let t=e.toLowerCase();return fv.some(e=>t.startsWith(e))},hv=e=>{if(!/^\d+$/.test(e))return``;try{let t=Oe(`lsof -p ${e} -a -d cwd -Fn`,{encoding:`utf-8`,timeout:1e3}).split(`
|
|
36
|
+
`).find(e=>e.startsWith(`n`));return t?t.slice(1):``}catch{return``}},gv=(e,t)=>{if(!/^\d+$/.test(e)||mv(t))return;let n=hv(e);try{let t=Oe(`ps -p ${e} -o command=`,{encoding:`utf-8`,timeout:1e3}).trim();for(let[e,r]of pv)if(e.test(t))return{name:r,isFramework:!0,cwd:n}}catch{}return{name:t,isFramework:!1,cwd:n}},_v=e=>{let t=new Set,n=[];for(let r of e.split(`
|
|
37
|
+
`)){let e=r.trim().split(/\s+/);if(e.length<9)continue;let i=e[0]??``,a=e[1]??``,o=(e[8]??``).match(/:(\d+)$/);if(!o)continue;let s=Number(o[1]);s<1024||s>65535||t.has(s)||(t.add(s),n.push({port:s,pid:a,commandName:i}))}return n},vv=()=>{try{let e=_v(Oe(`lsof -iTCP -sTCP:LISTEN -nP`,{encoding:`utf-8`,timeout:3e3})),t=[];for(let n of e){let e=gv(n.pid,n.commandName);e!==void 0&&(n.port>=32768&&!e.isFramework||t.push({port:n.port,processName:e.name,cwd:e.cwd}))}return t.sort((e,t)=>e.port-t.port)}catch{return[]}},yv=()=>P({queryKey:[`listening-ports`],queryFn:()=>vv(),refetchInterval:5e3}),bv=e=>`http://localhost:${e}`,xv=(e,t)=>{let n=t.toLowerCase();return String(e.port).includes(n)||e.processName.toLowerCase().includes(n)||e.cwd.toLowerCase().includes(n)},Sv=e=>{let t=e.trim(),n=Number(t);if(Number.isInteger(n)&&n>=1&&n<=65535)return n;let r=t.match(/:(\d+)\/?$/);if(r){let e=Number(r[1]);if(Number.isInteger(e)&&e>=1&&e<=65535)return e}},Cv=e=>{let t=ae(178);if(t[0]!==`84a93f0b7994a0f9318ab42167dadcad0ffba85a300830ca86b74045fc7574ce`){for(let e=0;e<178;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`84a93f0b7994a0f9318ab42167dadcad0ffba85a300830ca86b74045fc7574ce`}let{changesFor:n,instruction:r,savedFlow:i,requiresCookies:a}=e,o=It(),s=eh(wv),c=dv(Tv),l=dv(Ev),{data:u}=yv(),d=u===void 0?[]:u,[f,p]=R(!1),[m,h]=R(``),[g,_]=R(!1),[v,y]=R(``),b;t[1]===c?b=t[2]:(b=()=>{if(!c)return new Set;let e=c.match(/:(\d+)/);return e?new Set([Number(e[1])]):new Set},t[1]=c,t[2]=b);let[x,S]=R(b),C;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(C=new Set,t[3]=C):C=t[3];let[w,T]=R(C),E=d.map(Dv),D=m?E.filter(e=>xv(e,m)):E,O=D.length,A=D.length+1,ee=D.length+2,te;t[4]===ee?te=t[5]:(te={itemCount:ee,visibleCount:10},t[4]=ee,t[5]=te);let{highlightedIndex:M,setHighlightedIndex:N,scrollOffset:re,handleNavigation:ie}=Ym(te),P;t[6]!==n||t[7]!==w||t[8]!==r||t[9]!==a||t[10]!==i||t[11]!==l||t[12]!==s?(P=e=>{let t=[...e,...w];l(t.length>0?t[0]:void 0),t.length===0?nv(`port:skipped`):nv(`port:selected`,{port_count:t.length,has_custom_url:w.size>0}),s(Qm.Testing({changesFor:n,instruction:r,savedFlow:i,requiresCookies:a,baseUrls:t.length>0?t:void 0}))},t[6]=n,t[7]=w,t[8]=r,t[9]=a,t[10]=i,t[11]=l,t[12]=s,t[13]=P):P=t[13];let F=P,oe;t[14]===S?oe=t[15]:(oe=e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},t[14]=S,t[15]=oe);let I=oe,se;t[16]!==O||t[17]!==w||t[18]!==D||t[19]!==M||t[20]!==F||t[21]!==x||t[22]!==_||t[23]!==A?(se=()=>{if(M===A){F([]);return}if(x.size>0||w.size>0){F([...x].sort(Ov).map(bv));return}if(M===O){_(!0);return}let e=D[M];e&&F([bv(e.port)])},t[16]=O,t[17]=w,t[18]=D,t[19]=M,t[20]=F,t[21]=x,t[22]=_,t[23]=A,t[24]=se):se=t[24];let ce=se,L=kv,le;t[25]!==y||t[26]!==T||t[27]!==_?(le=e=>{let t=e.trim();if(!t){_(!1);return}let n=L(t);T(e=>new Set([...e,n])),y(``),_(!1)},t[25]=y,t[26]=T,t[27]=_,t[28]=le):le=t[28];let ue=le,z;t[29]===T?z=t[30]:(z=e=>{T(t=>{let n=new Set(t);return n.delete(e),n})},t[29]=T,t[30]=z);let de=z,fe;t[31]!==N||t[32]!==h?(fe=e=>{h(e),N(0)},t[31]=N,t[32]=h,t[33]=fe):fe=t[33];let pe=fe,U;t[34]!==p||t[35]!==h||t[36]!==I?(U=e=>{let t=Sv(e);if(t){I(t),p(!1),h(``);return}p(!1)},t[34]=p,t[35]=h,t[36]=I,t[37]=U):U=t[37];let W=U,me;t[38]!==ce||t[39]!==O||t[40]!==D||t[41]!==ie||t[42]!==M||t[43]!==g||t[44]!==f||t[45]!==y||t[46]!==_||t[47]!==p||t[48]!==I?(me=(e,t)=>{if(g){if(t.escape){_(!1),y(``);return}return}if(f){if(t.escape){p(!1);return}return}if(!ie(e,t)){if(e===`/`){p(!0);return}if(e===` `){if(M===O){_(!0);return}let e=D[M];e&&I(e.port);return}t.return&&ce()}},t[38]=ce,t[39]=O,t[40]=D,t[41]=ie,t[42]=M,t[43]=g,t[44]=f,t[45]=y,t[46]=_,t[47]=p,t[48]=I,t[49]=me):me=t[49],ne(me);let he,ge,_e,ve,ye,be,G,xe,Se,K,Ce,q,we,Te,Ee,De;if(t[50]!==o.DIM||t[51]!==o.GREEN||t[52]!==o.PRIMARY||t[53]!==o.TEXT||t[54]!==o.YELLOW||t[55]!==O||t[56]!==w||t[57]!==D||t[58]!==M||t[59]!==r||t[60]!==re||t[61]!==x||t[62]!==N||t[63]!==A||t[64]!==I){let e=D.slice(re,re+8);_e=re+8>=D.length,be=_e;let n=D[M];ve=M===O,ye=M===A;let i;t[81]!==w||t[82]!==x?(i=[...[...x].sort(Av).map(bv),...w],t[81]=w,t[82]=x,t[83]=i):i=t[83];let a=i;ge=k,K=`column`,Ce=`100%`,q=1,we=1;let s;t[84]===Symbol.for(`react.memo_cache_sentinel`)?(s=B(av,{}),t[84]=s):s=t[84];let c;t[85]===o.DIM?c=t[86]:(c=B(j,{color:o.DIM,children:H.pointerSmall}),t[85]=o.DIM,t[86]=c);let l;t[87]!==o.TEXT||t[88]!==r?(l=B(j,{color:o.TEXT,children:r}),t[87]=o.TEXT,t[88]=r,t[89]=l):l=t[89],t[90]!==c||t[91]!==l?(Te=V(k,{children:[s,V(j,{wrap:`truncate`,children:[` `,c,` `,l]})]}),t[90]=c,t[91]=l,t[92]=Te):Te=t[92],t[93]===o.DIM?Ee=t[94]:(Ee=B(k,{marginTop:1,children:B(j,{color:o.DIM,children:`Pick the dev server the agent should open in the browser.`})}),t[93]=o.DIM,t[94]=Ee);let u;t[95]!==o.GREEN||t[96]!==a?(u=a.length>0&&V(j,{color:o.GREEN,children:[H.tick,` `,a.join(`, `)]}),t[95]=o.GREEN,t[96]=a,t[97]=u):u=t[97];let d;t[98]!==o.DIM||t[99]!==a.length||t[100]!==n||t[101]!==ve||t[102]!==ye?(d=a.length===0&&!ye&&!ve&&n&&V(j,{color:o.DIM,children:[H.arrowRight,` `,bv(n.port)]}),t[98]=o.DIM,t[99]=a.length,t[100]=n,t[101]=ve,t[102]=ye,t[103]=d):d=t[103];let f;t[104]!==o.YELLOW||t[105]!==a.length||t[106]!==ye?(f=a.length===0&&ye&&V(j,{color:o.YELLOW,children:[H.warning,` No base URL. The agent won`,`'`,`t know where your dev server is.`]}),t[104]=o.YELLOW,t[105]=a.length,t[106]=ye,t[107]=f):f=t[107],t[108]!==u||t[109]!==d||t[110]!==f?(De=V(k,{marginTop:1,children:[u,d,f]}),t[108]=u,t[109]=d,t[110]=f,t[111]=De):De=t[111],he=k,G=`column`,xe=1;let p;t[112]!==o.DIM||t[113]!==o.PRIMARY||t[114]!==o.TEXT||t[115]!==M||t[116]!==re||t[117]!==x||t[118]!==N||t[119]!==I?(p=(e,t)=>{let n=t+re,r=n===M,i=x.has(e.port);return B(zt,{onClick:()=>{N(n),I(e.port)},children:V(k,{children:[B(j,{color:r?o.PRIMARY:o.DIM,children:r?`${H.pointer} `:` `}),V(j,{color:i?o.PRIMARY:o.DIM,children:[i?H.checkboxOn:H.checkboxOff,` `]}),V(j,{color:r?o.PRIMARY:o.TEXT,bold:r,children:[`:`,e.port]}),e.processName&&V(j,{color:o.DIM,children:[` `,e.processName]}),e.cwd&&V(j,{color:o.DIM,children:[` `,e.cwd]})]})},e.port)},t[112]=o.DIM,t[113]=o.PRIMARY,t[114]=o.TEXT,t[115]=M,t[116]=re,t[117]=x,t[118]=N,t[119]=I,t[120]=p):p=t[120],Se=e.map(p),t[50]=o.DIM,t[51]=o.GREEN,t[52]=o.PRIMARY,t[53]=o.TEXT,t[54]=o.YELLOW,t[55]=O,t[56]=w,t[57]=D,t[58]=M,t[59]=r,t[60]=re,t[61]=x,t[62]=N,t[63]=A,t[64]=I,t[65]=he,t[66]=ge,t[67]=_e,t[68]=ve,t[69]=ye,t[70]=be,t[71]=G,t[72]=xe,t[73]=Se,t[74]=K,t[75]=Ce,t[76]=q,t[77]=we,t[78]=Te,t[79]=Ee,t[80]=De}else he=t[65],ge=t[66],_e=t[67],ve=t[68],ye=t[69],be=t[70],G=t[71],xe=t[72],Se=t[73],K=t[74],Ce=t[75],q=t[76],we=t[77],Te=t[78],Ee=t[79],De=t[80];let Oe;t[121]!==o.DIM||t[122]!==o.PRIMARY||t[123]!==o.TEXT||t[124]!==O||t[125]!==v||t[126]!==_e||t[127]!==ue||t[128]!==ve||t[129]!==g||t[130]!==y||t[131]!==N||t[132]!==_?(Oe=_e&&B(zt,{onClick:()=>{N(O),_(!0)},children:V(k,{children:[B(j,{color:ve?o.PRIMARY:o.DIM,children:ve?`${H.pointer} `:` `}),g&&V(k,{children:[B(j,{color:o.PRIMARY,children:`URL: `}),B(Gt,{focus:!0,value:v,placeholder:`http://localhost:4000 or staging.example.com`,onChange:y,onSubmit:ue})]}),!g&&V(j,{color:ve?o.PRIMARY:o.TEXT,bold:ve,children:[`Enter a custom URL`,H.ellipsis]})]})}),t[121]=o.DIM,t[122]=o.PRIMARY,t[123]=o.TEXT,t[124]=O,t[125]=v,t[126]=_e,t[127]=ue,t[128]=ve,t[129]=g,t[130]=y,t[131]=N,t[132]=_,t[133]=Oe):Oe=t[133];let ke;t[134]!==o.DIM||t[135]!==o.PRIMARY||t[136]!==o.TEXT||t[137]!==_e||t[138]!==w||t[139]!==de?(ke=_e&&[...w].map(e=>B(zt,{onClick:()=>de(e),children:V(k,{children:[B(j,{children:` `}),V(j,{color:o.PRIMARY,children:[H.checkboxOn,` `]}),B(j,{color:o.TEXT,children:e}),B(j,{color:o.DIM,children:` (click to remove)`})]})},e)),t[134]=o.DIM,t[135]=o.PRIMARY,t[136]=o.TEXT,t[137]=_e,t[138]=w,t[139]=de,t[140]=ke):ke=t[140];let Ae;t[141]!==o.DIM||t[142]!==o.PRIMARY||t[143]!==ye||t[144]!==F||t[145]!==N||t[146]!==A||t[147]!==be?(Ae=be&&B(zt,{onClick:()=>{N(A),F([])},children:V(k,{children:[B(j,{color:ye?o.PRIMARY:o.DIM,children:ye?`${H.pointer} `:` `}),V(j,{color:ye?o.PRIMARY:o.DIM,bold:ye,children:[`Skip `,H.arrowRight,` no base URL`]})]})}),t[141]=o.DIM,t[142]=o.PRIMARY,t[143]=ye,t[144]=F,t[145]=N,t[146]=A,t[147]=be,t[148]=Ae):Ae=t[148];let je;t[149]!==o.DIM||t[150]!==D.length||t[151]!==be?(je=D.length===0&&!be&&B(j,{color:o.DIM,children:`No matching ports`}),t[149]=o.DIM,t[150]=D.length,t[151]=be,t[152]=je):je=t[152];let Me;t[153]!==he||t[154]!==G||t[155]!==xe||t[156]!==Se||t[157]!==Oe||t[158]!==ke||t[159]!==Ae||t[160]!==je?(Me=V(he,{flexDirection:G,marginTop:xe,children:[Se,Oe,ke,Ae,je]}),t[153]=he,t[154]=G,t[155]=xe,t[156]=Se,t[157]=Oe,t[158]=ke,t[159]=Ae,t[160]=je,t[161]=Me):Me=t[161];let Ne;t[162]!==pe||t[163]!==W||t[164]!==f||t[165]!==m?(Ne=B(Kt,{isSearching:f,query:m,onChange:pe,onSubmit:W}),t[162]=pe,t[163]=W,t[164]=f,t[165]=m,t[166]=Ne):Ne=t[166];let Pe;return t[167]!==ge||t[168]!==K||t[169]!==Ce||t[170]!==q||t[171]!==we||t[172]!==Te||t[173]!==Ee||t[174]!==De||t[175]!==Me||t[176]!==Ne?(Pe=V(ge,{flexDirection:K,width:Ce,paddingY:q,paddingX:we,children:[Te,Ee,De,Me,Ne]}),t[167]=ge,t[168]=K,t[169]=Ce,t[170]=q,t[171]=we,t[172]=Te,t[173]=Ee,t[174]=De,t[175]=Me,t[176]=Ne,t[177]=Pe):Pe=t[177],Pe};function wv(e){return e.setScreen}function Tv(e){return e.lastBaseUrl}function Ev(e){return e.setLastBaseUrl}function Dv(e){return{port:e.port,processName:e.processName,cwd:e.cwd}}function Ov(e,t){return e-t}function kv(e){let t=e.trim(),n=Number(t);return Number.isInteger(n)&&n>=1&&n<=65535?bv(n):/^https?:\/\//i.test(t)?t:`http://${t}`}function Av(e,t){return e-t}const jv=e=>{let t=e.replace(`#`,``);return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]},Mv=(e,t,n)=>`#${[e,t,n].map(e=>Math.round(e).toString(16).padStart(2,`0`)).join(``)}`,Nv=(e,t,n)=>e+(t-e)*n,Pv=(e,t,n)=>{let[r,i,a]=jv(e),[o,s,c]=jv(t);return Mv(Nv(r,o,n),Nv(i,s,n),Nv(a,c,n))},Fv=({text:e,baseColor:t,highlightColor:n,speed:r=1})=>{let[i,a]=R(-16),o=L(r);o.current=r;let s=L(e.length);s.current=e.length;let c=L(!1);return c.current||(c.current=!0,setTimeout(()=>{setInterval(()=>{let e=s.current+16;a(t=>t>=e?-16:t+o.current)},50)},0)),B(j,{children:[...e].map((e,r)=>{let a=Math.abs(r-i),o=Math.max(0,1-a/16);return B(j,{color:o>0?Pv(t,n,o):t,children:e},r)})})},Iv=He(e=>({executedPlan:void 0,expanded:!1,setExecutedPlan:t=>e({executedPlan:t}),setExpanded:t=>e({expanded:t}),toggleExpanded:()=>e(e=>({expanded:!e.expanded}))})),Lv=e=>lt(Math.max(0,e),{secondsDecimalDigits:0}),Rv=new Set([`warpterminal`]),zv=dt.stdout,Bv=ut({preferOuter:!0}),Vv=process.stdout.isTTY&&!Rv.has(Bv??``),Hv=Vv&&zv.kitty,Uv=Vv&&zv.iterm2,Wv=Hv||Uv,Gv=ut(),Kv=Gv===`tmux`||Gv===`screen`,qv=e=>Kv?`Ptmux;${e.replaceAll(`\x1B`,`\x1B\x1B`)}\\`:e,Jv=(e,t)=>{let n=Buffer.from(e).toString(`base64`),r=`a=T,t=f`;return t.width&&(r+=`,c=${t.width}`),t.height&&(r+=`,r=${t.height}`),qv(`_G${r};${n}\\`)},Yv=(e,t)=>{let n=`\x1B]1337;File=inline=1`;return t.width&&(n+=`;width=${t.width}`),t.height&&(n+=`;height=${t.height}`),n+=`;size=${e.byteLength}:${e.toString(`base64`)}`,qv(n)},Xv=(e,t={})=>{if(!Je.existsSync(e))return null;if(Hv)return Jv(e,t);if(Uv)try{return Yv(Je.readFileSync(e),t)}catch{return null}return null},Zv=e=>e.startsWith(`file://`),Qv=e=>{let t=ae(9);if(t[0]!==`edb58922a19f7cd34125950b48961a70defca0454a8de685a54dc50281109929`){for(let e=0;e<9;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`edb58922a19f7cd34125950b48961a70defca0454a8de685a54dc50281109929`}let{path:n,label:r}=e,i,a;t[1]===n?(i=t[2],a=t[3]):(i=Zv(n)?_e.fileURLToPath(n):W.resolve(n),a=Zv(n)?n:_e.pathToFileURL(i).href,t[1]=n,t[2]=i,t[3]=a);let o=a,s=r??i,c;t[4]===s?c=t[5]:(c=B(j,{children:s}),t[4]=s,t[5]=c);let l;return t[6]!==o||t[7]!==c?(l=B(ft,{url:o,children:c}),t[6]=o,t[7]=c,t[8]=l):l=t[8],l},$v=({src:e,alt:t,width:n,height:r})=>{let i=W.resolve(e),{write:a}=M(),o=L(!1);if(!o.current){let e=Xv(i,{width:n,height:r});e&&(a(e+`
|
|
38
|
+
`),o.current=!0)}return Wv?null:B(Qv,{path:i,label:t})},ey=({error:e,type:t})=>{if(!e.message)return null;let n=It(),r=t===`defect`;return V(k,{paddingX:1,paddingY:1,marginBottom:1,backgroundColor:n.ERROR_BG,width:`100%`,flexDirection:`column`,gap:0,children:[B(k,{paddingBottom:1,children:V(j,{color:n.RED,bold:!0,children:[H.warning,` `,e.displayName??e._tag]})}),B(k,{paddingBottom:1,children:B(j,{color:n.DIM,children:e.message})}),r&&V(j,{color:n.DIM,children:[`This is a bug. Report it at`,` `,B(j,{color:n.YELLOW,children:`https://github.com/millionco/expect/issues`})]}),V(j,{color:n.DIM,children:[`Press `,B(j,{color:n.RED,children:`esc`}),` to return`]})]})},ty=e=>{let t=ae(4);if(t[0]!==`075a231297c9d0f078b6eb696b743c17a186b30f3122dd20bf9f0b0544337fab`){for(let e=0;e<4;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`075a231297c9d0f078b6eb696b743c17a186b30f3122dd20bf9f0b0544337fab`}let{message:n}=e,r=It();if(!n)return null;let i;return t[1]!==r.RED||t[2]!==n?(i=B(k,{marginTop:1,children:B(j,{color:r.RED,children:n})}),t[1]=r.RED,t[2]=n,t[3]=i):i=t[3],i},ny=({verbose:e,agent:t})=>{let n=$p.withRepoRoot(process.cwd());return h.mergeAll(tm.layer.pipe(h.provide(n)),nm.layer,nr.layer,pm.layer,$e.layer(),n,Z_.layerPostHog).pipe(h.provide(Ja.layerFor(t??`claude`)),h.provide(ch),h.provide($_),h.provideMerge(h.succeed(C.MinimumLogLevel,e?`All`:`Error`)))},ry=it.make(v.none()),iy=it.runtime(d.fnUntraced(function*(e){return ny({verbose:!0,agent:yield*e.some(ry)})},h.unwrap)).pipe(it.keepAlive),ay=e=>e;var oy=class extends w.ErrorClass(`ReplayProxyStartError`)({_tag:w.tag(`ReplayProxyStartError`),cause:w.String}){message=`Failed to start replay proxy: ${this.cause}`};const sy=(e,t,n,r)=>{let i=new URL(e.url??`/`,r),a=Le({hostname:i.hostname,port:i.port,path:i.pathname+i.search,method:`GET`,headers:{...e.headers,host:i.host}});a.on(`upgrade`,(e,r,i)=>{t.write([`HTTP/1.1 101 Switching Protocols`,`Upgrade: websocket`,`Connection: Upgrade`,`Sec-WebSocket-Accept: ${e.headers[`sec-websocket-accept`]}`,``,``].join(`\r
|
|
39
|
+
`)),i.length>0&&t.write(i),n.length>0&&r.write(n),r.pipe(t),t.pipe(r),t.on(`error`,()=>r.destroy()),r.on(`error`,()=>t.destroy())}),a.on(`error`,()=>t.destroy()),a.end()},cy=d.fn(`startReplayProxy`)(function*(e){let t=new pt,n=[],r={title:``,status:`running`,steps:[]},i=!1,a=()=>{let e=r?.status;(e===`passed`||e===`failed`)&&(i=!0,r={...r,done:!0})};t.get(`/latest.json`,async t=>{if(i)return t.json(n);try{let r=await fetch(`${e.liveViewUrl}/latest.json`);if(!r.ok)return t.json(n);let i=await r.json();return Array.isArray(i)&&i.length>0&&(n=i),t.json(i)}catch{return t.json(n)}}),t.post(`/latest.json`,async e=>{try{let t=await e.req.json();return Array.isArray(t)&&(n=t),new Response(void 0,{status:204})}catch{return new Response(void 0,{status:400})}}),t.get(`/steps`,async t=>{if(i)return t.json(r);try{let n=await fetch(`${e.liveViewUrl}/steps`);return n.ok?(r=await n.json(),a(),t.json(r)):t.json(r)}catch{return t.json(r)}}),t.post(`/steps`,async t=>{try{let n=await t.req.text();r=JSON.parse(n),a();let i=await fetch(`${e.liveViewUrl}/steps`,{method:`POST`,headers:{"Content-Type":`application/json`},body:n});return new Response(i.body,{status:i.status,headers:Object.fromEntries(i.headers.entries())})}catch{return new Response(void 0,{status:204})}});let o=/^https?:\/\//.test(e.replayHost)?e.replayHost:`http://${e.replayHost}`,s=new URL(o);t.all(`/*`,async e=>{let t=e.req.path;if(t===`/latest.json`||t===`/steps`)return e.text(`Not Found`,404);let n=new URL(t,o);n.search=new URL(e.req.url).search;try{return await mt(n.toString(),{headers:{"User-Agent":e.req.header(`user-agent`)??``,Accept:e.req.header(`accept`)??`*/*`,Host:s.host}})}catch(r){return console.error(`[replay-proxy] Failed to proxy ${t} to ${n}:`,r),e.text(`Bad Gateway: could not reach ${s.host}`,502)}}),t.onError((e,t)=>(console.error(`[replay-proxy] Unhandled error:`,e),t.text(`Internal Server Error`,500)));let c=yield*d.try({try:()=>ht({fetch:t.fetch,port:0}),catch:e=>new oy({cause:String(e)})});c.on(`upgrade`,(e,t,n)=>{sy(e,t,n,o)});let l=c.address(),u=`http://localhost:${typeof l==`object`&&l?l.port:0}`;return yield*d.logInfo(`Replay proxy started`,{proxyUrl:u,liveViewUrl:e.liveViewUrl}),{url:u,close:d.callback(e=>{c.close(()=>e(d.void))})}}),ly=e=>v.isSome(e)?Number(l.toEpochMillis(e.value)):void 0,uy=e=>e.length===0||!e.every(e=>e.status===`passed`||e.status===`failed`)?`running`:e.some(e=>e.status===`failed`)?`failed`:`passed`,dy=e=>{let t=e.events.find(e=>e._tag===`RunFinished`),n=t&&t._tag===`RunFinished`?t.status:uy(e.steps),r=t&&t._tag===`RunFinished`?t.summary:void 0,i=e.steps.map(e=>({stepId:e.id,title:e.title,status:e.status,summary:v.isSome(e.summary)?e.summary.value:void 0,startedAtMs:ly(e.startedAt),endedAtMs:ly(e.endedAt)}));return{title:e.title,status:n,summary:r,steps:i}},fy=d.fn(`pushStepState`)(function*(e,t){yield*d.tryPromise(()=>fetch(`${e}/steps`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).pipe(d.catchCause(()=>d.void))}),py=`rrweb report:`,my=`Playwright video:`,hy=()=>5e4+Math.floor(Math.random()*1e4),gy=e=>{let t=e.slice().reverse().find(e=>e._tag===`ToolResult`&&e.toolName===`close`&&!e.isError&&e.result.length>0);if(!t||t._tag!==`ToolResult`)return{localReplayUrl:void 0,videoUrl:void 0};let n=t.result.split(`
|
|
40
|
+
`).map(e=>e.trim()).filter(e=>e.length>0),r=n.find(e=>e.startsWith(py))?.replace(py,``),i=n.find(e=>e.startsWith(my))?.replace(my,``);return{localReplayUrl:r&&r.trim().length>0?ye(r.trim()).href:void 0,videoUrl:i&&i.trim().length>0?ye(i.trim()).href:void 0}},_y=it.make([]),vy=d.fnUntraced(function*(e,t){let n=yield*nm,r=yield*tm,i=yield*Z_,a=yield*$p,o=Date.now(),s=`http://localhost:${hy()}`,c;e.replayHost&&(c=`${(yield*cy({replayHost:e.replayHost,liveViewUrl:s})).url}/replay?live=true`,yield*d.logInfo(`Replay viewer available`,{replayUrl:c}),yield*d.sync(()=>e.onReplayUrl?.(c)));let l={...e.options,liveViewUrl:s};yield*i.capture(`run:started`,{plan_id:`direct`});let u=yield*r.execute(l).pipe(E.tap(t=>d.gen(function*(){e.onUpdate(t),yield*fy(s,dy(t))})),E.runLast,d.map(t=>(t._tag===`Some`?t.value:new er({...e.options,id:``,changesFor:e.options.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.options.instruction,baseUrl:void 0,isHeadless:e.options.isHeadless,requiresCookies:e.options.requiresCookies,testCoverage:v.none(),title:e.options.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),f=gy(u.events);if(c){let e=c.split(`/replay`)[0];yield*d.tryPromise(()=>fetch(`${s}/latest.json`).then(async t=>{if(!t.ok)return;let n=await t.json();await fetch(`${e}/latest.json`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)})})).pipe(d.catchCause(()=>d.void)),yield*fy(e,dy(u))}let p=yield*n.report(u),m=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`passed`).length,h=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`failed`).length;return yield*i.capture(`run:completed`,{plan_id:u.id??`direct`,passed:m,failed:h,step_count:u.steps.length,file_count:0,duration_ms:Date.now()-o}),p.status===`passed`&&(yield*a.saveTestedFingerprint()),{executedPlan:u,report:p,replayUrl:c??f.localReplayUrl,localReplayUrl:f.localReplayUrl,videoUrl:f.videoUrl}},d.annotateLogs({fn:`executeFn`})),yy=iy.fn()((e,t)=>ay(vy(e,t)).pipe(d.tapError(e=>d.gen(function*(){let t=yield*Z_,n=e instanceof Error?e.constructor.name:`UnknownError`;yield*t.capture(`run:failed`,{plan_id:`direct`,error_tag:n})}).pipe(d.catchCause(()=>d.void))),d.provide(K.layer)));iy.fn(d.fnUntraced(function*(e,t){let n=yield*nm,r=yield*tm,i=yield*Z_,a=yield*$p,o=Date.now(),s=`http://localhost:${hy()}`,c;e.replayHost&&(c=`${(yield*cy({replayHost:e.replayHost,liveViewUrl:s})).url}/replay?live=true`,yield*d.logInfo(`Replay viewer available`,{replayUrl:c}),yield*d.sync(()=>e.onReplayUrl?.(c)));let l={...e.options,liveViewUrl:s};yield*i.capture(`run:started`,{plan_id:`direct`});let u=yield*r.execute(l).pipe(E.tap(t=>d.gen(function*(){e.onUpdate(t),yield*fy(s,dy(t))})),E.runLast,d.map(t=>(t._tag===`Some`?t.value:new er({...e.options,id:``,changesFor:e.options.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.options.instruction,baseUrl:void 0,isHeadless:e.options.isHeadless,requiresCookies:e.options.requiresCookies,testCoverage:v.none(),title:e.options.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),f=gy(u.events);if(c){let e=c.split(`/replay`)[0];yield*d.tryPromise(()=>fetch(`${s}/latest.json`).then(async t=>{if(!t.ok)return;let n=await t.json();await fetch(`${e}/latest.json`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)})})).pipe(d.catchCause(()=>d.void)),yield*fy(e,dy(u))}let p=yield*n.report(u),m=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`passed`).length,h=p.steps.filter(e=>p.stepStatuses.get(e.id)?.status===`failed`).length;return yield*i.capture(`run:completed`,{plan_id:u.id??`direct`,passed:m,failed:h,step_count:u.steps.length,file_count:0,duration_ms:Date.now()-o}),p.status===`passed`&&(yield*a.saveTestedFingerprint()),{executedPlan:u,report:p,replayUrl:c??f.localReplayUrl,localReplayUrl:f.localReplayUrl,videoUrl:f.videoUrl}},d.annotateLogs({fn:`executeAtomFn`})));const by=e=>{if(typeof e==`string`)try{let t=JSON.parse(e);if(y.isObject(t))return t}catch{return{}}return y.isObject(e)?e:{}},xy=e=>e.replace(/\s+/g,` `).trim(),Sy=e=>{let t=e.match(/^mcp__.+__(.+)$/);return t?t[1]:e},Cy=(e,t)=>{let n=Sy(e),r=typeof t==`string`?t:JSON.stringify(t??{}),i=by(t),a=_.value(n).pipe(_.when(`open`,()=>i.url?`"${i.url}"`:``),_.when(`screenshot`,()=>{let e=i.mode??`screenshot`;return e===`screenshot`?``:e}),_.when(`playwright`,()=>Be(xy(i.code??r),100)),_.when(`console_logs`,()=>i.type?`type: "${i.type}"`:``),_.when(`network_requests`,()=>{let e=[];return i.method&&e.push(i.method),i.url&&e.push(`"${i.url}"`),e.join(`, `)}),_.when(`performance_metrics`,()=>``),_.when(`close`,()=>``),_.orElse(()=>wy(i))),o=(i.code??r).trim();return{name:n,args:a,multilineArgs:n===`playwright`&&o.includes(`
|
|
41
|
+
`)?o:void 0}},wy=e=>{let t=Object.values(e).filter(e=>typeof e==`string`&&e.length>0);return t.length===0?``:Be(xy(t.join(`, `)),100)},Ty=e=>e>=1e3?`${(e/1e3).toFixed(1)}k`:`${e}`,Ey=(e,t,n=e.length)=>{let r=[];for(let i=t;i<n;i++){let t=e[i];if(t._tag===`ToolCall`&&r.push({tool:Cy(t.toolName,t.input),isRunning:!1,resultTokens:void 0}),t._tag===`ToolProgress`&&r.length>0){let e=r[r.length-1];r[r.length-1]={...e,resultTokens:Math.round(t.outputSize/4)}}if(t._tag===`ToolResult`&&r.length>0){let e=r[r.length-1];r[r.length-1]={...e,resultTokens:Math.round(t.result.length/4)}}}return r},Dy=(e,t)=>{if(e.length===0)return e;let n=t.at(-1)?._tag===`ToolResult`,r=[...e];return r[r.length-1]={...r[r.length-1],isRunning:!n},r},Oy=(e,t=!1)=>{let n=-1;for(let t=e.length-1;t>=0;t--)if(e[t]._tag===`StepStarted`){n=t;break}if(n===-1)return[];let r=Dy(Ey(e,n+1),e);return t?r:r.slice(-5)},ky=(e,t=!1)=>{let n=Dy(Ey(e,0),e);return t?n:n.slice(-5)},Ay=(e,t)=>{let n=-1,r=0;for(let i=0;i<e.length;i++)if(e[i]._tag===`StepStarted`&&(n++,n===t&&(r=i+1),n===t+1))return[r,i];return[r,e.length]},jy=(e,t)=>{let[n,r]=Ay(e,t);return Ey(e,n,r)},My=e=>{let t=ae(15);if(t[0]!==`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`){for(let e=0;e<15;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`}let{display:n,indent:r}=e,i=It(),a;t[1]!==i.TEXT||t[2]!==n.tool.name?(a=B(j,{color:i.TEXT,children:n.tool.name}),t[1]=i.TEXT,t[2]=n.tool.name,t[3]=a):a=t[3];let o;t[4]===n.isRunning?o=t[5]:(o=n.isRunning&&V(j,{children:[` `,B(ze,{type:`line`})]}),t[4]=n.isRunning,t[5]=o);let s;t[6]===n.resultTokens?s=t[7]:(s=n.resultTokens!==void 0&&` ${H.arrowDown} ${Ty(n.resultTokens)} tokens`,t[6]=n.resultTokens,t[7]=s);let c;return t[8]!==i.DIM||t[9]!==n.tool.args||t[10]!==r||t[11]!==a||t[12]!==o||t[13]!==s?(c=V(j,{color:i.DIM,wrap:`truncate`,children:[r,H.lineVertical,` `,a,`(`,n.tool.args,`)`,o,s]}),t[8]=i.DIM,t[9]=n.tool.args,t[10]=r,t[11]=a,t[12]=o,t[13]=s,t[14]=c):c=t[14],c},Ny=e=>{if(!v.isNone(e.startedAt))return(v.isSome(e.endedAt)?l.toEpochMillis(e.endedAt.value):Date.now())-l.toEpochMillis(e.startedAt.value)},Py=(e,t,n,r)=>{let i=[];for(let a=0;a<e.length;a++){let o=e[a],s=`${n}-t${a}`;if(o.tool.multilineArgs){let e=o.tool.multilineArgs.split(`
|
|
42
|
+
`);i.push(V(j,{color:r.DIM,wrap:`truncate`,children:[t,H.lineVertical,` `,B(j,{color:r.TEXT,children:o.tool.name}),`(`,o.isRunning&&V(j,{children:[` `,B(ze,{type:`line`})]}),o.resultTokens!==void 0&&` ${H.arrowDown} ${Ty(o.resultTokens)} tokens`]},`${s}-h`));for(let n=0;n<e.length;n++)i.push(V(j,{color:r.DIM,children:[t,H.lineVertical,` `,` `,B(j,{color:r.TEXT,children:e[n]})]},`${s}-${n}`));i.push(V(j,{color:r.DIM,children:[t,H.lineVertical,` )`]},`${s}-c`))}else i.push(V(j,{color:r.DIM,wrap:`truncate`,children:[t,H.lineVertical,` `,B(j,{color:r.TEXT,children:o.tool.name}),`(`,o.tool.args,`)`,o.isRunning&&V(j,{children:[` `,B(ze,{type:`line`})]}),o.resultTokens!==void 0&&` ${H.arrowDown} ${Ty(o.resultTokens)} tokens`]},s))}return i},Fy=t=>{let n=ae(113);if(n[0]!==`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`){for(let e=0;e<113;e+=1)n[e]=Symbol.for(`react.memo_cache_sentinel`);n[0]=`1d0983dd3879f9a5a019acea17cc4fd75140d170e89f34badca2fe82be71c373`}let{changesFor:r,instruction:i,savedFlow:a,requiresCookies:o,baseUrls:s}=t,c=o===void 0?!1:o,l=eh(Iy),u=It(),[,d]=Nt(),f=ev(Ly),p=ev(Ry),m=ev(zy),h=ev(By),g;n[1]===Symbol.for(`react.memo_cache_sentinel`)?(g={mode:`promiseExit`},n[1]=g):g=n[1];let[_,y]=ot(yy,g),b=ct(_y),[x,S]=R(void 0),C;n[2]===_?C=n[3]:(C=rt.isWaiting(_),n[2]=_,n[3]=C);let w=C,T;n[4]===_?T=n[5]:(T=rt.isSuccess(_),n[4]=_,n[5]=T);let E=T,D=E?_.value.report:void 0,[O,ee]=R(void 0),[te,M]=R(void 0),[N,re]=R(0),[ie,P]=R(!1),F=Iv(Vy),oe=Iv(Hy),I=Iv(Uy),ce;n[6]===N?ce=n[7]:(ce=Lv(N),n[6]=N,n[7]=ce);let le=ce,ue=O?.steps?O.steps.length:0,z;if(n[8]!==u||n[9]!==le||n[10]!==O||n[11]!==F||n[12]!==w){if(z=[],F&&O){let e=O.steps??[];if(e.length===0&&w){let e=ky(O.events,!0);z.push(...Py(e,` `,`planning`,u))}for(let t=0;t<e.length;t++){let n=e[t],r=v.isSome(n.summary)?n.summary.value:n.title,i=Ny(n),a=i===void 0?void 0:Lv(i),o=`${t+1}.`;if(n.status===`active`){z.push(V(k,{children:[V(j,{color:u.DIM,children:[` `,o,` `]}),B(qm,{}),B(j,{children:` `}),B(Fv,{text:`${n.title} ${le}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]},`step-${t}`));let e=Oy(O.events,!0);z.push(...Py(e,` `,`s${t}`,u))}else if(n.status===`passed`){z.push(V(j,{children:[V(j,{color:u.DIM,children:[` `,o]}),V(j,{color:u.GREEN,children:[` `,H.tick,` `,Be(r,100)]}),a&&V(j,{color:u.DIM,children:[` `,a]})]},`step-${t}`));let e=jy(O.events,t);z.push(...Py(e,` `,`s${t}`,u))}else if(n.status===`failed`){z.push(V(j,{children:[V(j,{color:u.DIM,children:[` `,o]}),V(j,{color:u.RED,children:[` `,H.cross,` `,Be(r,100)]}),a&&V(j,{color:u.DIM,children:[` `,a]})]},`step-${t}`));let e=jy(O.events,t);z.push(...Py(e,` `,`s${t}`,u))}else n.status===`skipped`?z.push(V(j,{children:[V(j,{color:u.DIM,children:[` `,o]}),V(j,{color:u.YELLOW,children:[` `,H.arrowRight,` `,Be(r,100)]}),a&&V(j,{color:u.DIM,children:[` `,a]})]},`step-${t}`)):z.push(V(j,{color:u.DIM,children:[` `,o,` `,H.circle,` `,n.title]},`step-${t}`))}}n[8]=u,n[9]=le,n[10]=O,n[11]=F,n[12]=w,n[13]=z}else z=n[13];let de=Math.max(1,d-6),fe;n[14]!==z.length||n[15]!==de?(fe={itemCount:z.length,visibleCount:de},n[14]=z.length,n[15]=de,n[16]=fe):fe=n[16];let U=Ym(fe),W=L(!1),me,he;n[17]!==F||n[18]!==z.length||n[19]!==U?(me=()=>{F&&!W.current&&z.length>0&&U.setHighlightedIndex(z.length-1),W.current=F},he=[F,z.length,U],n[17]=F,n[18]=z.length,n[19]=U,n[20]=me,n[21]=he):(me=n[20],he=n[21]),se(me,he);let ge,_e;n[22]!==f||n[23]!==s||n[24]!==p||n[25]!==r||n[26]!==i||n[27]!==m||n[28]!==c||n[29]!==a||n[30]!==y?(_e=()=>{M(Date.now());let e=s&&s.length>0?s.join(`, `):void 0,t=s?s.map(Wy).join(` `):void 0;return y({options:{changesFor:r,instruction:t?`${i} ${t}`:i,isHeadless:!p,requiresCookies:c,savedFlow:a,baseUrl:e},agentBackend:f,replayHost:m,onUpdate:ee,onReplayUrl:S}),()=>{y(it.Interrupt)}},ge=[y,f,p,r,i,a,c,s,m],n[22]=f,n[23]=s,n[24]=p,n[25]=r,n[26]=i,n[27]=m,n[28]=c,n[29]=a,n[30]=y,n[31]=ge,n[32]=_e):(ge=n[31],_e=n[32]),se(_e,ge);let ve=E?_.value.replayUrl:void 0,ye=E?_.value.localReplayUrl:void 0,be=E?_.value.videoUrl:void 0,G,xe;n[33]!==O||n[34]!==E||n[35]!==ye||n[36]!==ve||n[37]!==D||n[38]!==l||n[39]!==be?(G=()=>{E&&O&&D&&(Iv.getState().setExecutedPlan(O),l(Qm.Results({report:D,replayUrl:ve,localReplayUrl:ye,videoUrl:be})))},xe=[E,O,D,ve,ye,be,l],n[33]=O,n[34]=E,n[35]=ye,n[36]=ve,n[37]=D,n[38]=l,n[39]=be,n[40]=G,n[41]=xe):(G=n[40],xe=n[41]),se(G,xe);let Se;n[42]===l?Se=n[43]:(Se=()=>{Iv.getState().setExecutedPlan(void 0),l(Qm.Main())},n[42]=l,n[43]=Se);let K=Se,Ce,q;n[44]!==w||n[45]!==te?(Ce=()=>{if(te===void 0||!w)return;let e=setInterval(()=>{re(Date.now()-te)},1e3);return()=>clearInterval(e)},q=[te,w],n[44]=w,n[45]=te,n[46]=Ce,n[47]=q):(Ce=n[46],q=n[47]),se(Ce,q);let we;n[48]!==O||n[49]!==_||n[50]!==F||n[51]!==U||n[52]!==K||n[53]!==w||n[54]!==x||n[55]!==ye||n[56]!==ve||n[57]!==D||n[58]!==oe||n[59]!==l||n[60]!==ie||n[61]!==I||n[62]!==h||n[63]!==be?(we=(t,n)=>{let r=t.toLowerCase();if(ie){if(n.return||r===`y`){P(!1),nv(`run:cancelled`),K();return}(n.escape||r===`n`)&&P(!1);return}if(r===`o`&&!n.ctrl&&!n.meta&&x){let{exec:t}=e(`node:child_process`);t(`open "${x.replace(/"/g,`\\"`)}"`),nv(`live_preview:opened`);return}if(n.ctrl&&t===`o`){I();return}if(n.ctrl&&t===`n`){h();return}if(F){if(U.handleNavigation(t,n))return;if(n.escape){oe(!1);return}return}if(n.escape){if(rt.isFailure(_)){K();return}if(w){P(!0);return}if(O&&D){Iv.getState().setExecutedPlan(O),l(Qm.Results({report:D,replayUrl:ve,localReplayUrl:ye,videoUrl:be}));return}K()}},n[48]=O,n[49]=_,n[50]=F,n[51]=U,n[52]=K,n[53]=w,n[54]=x,n[55]=ye,n[56]=ve,n[57]=D,n[58]=oe,n[59]=l,n[60]=ie,n[61]=I,n[62]=h,n[63]=be,n[64]=we):we=n[64],ne(we);let Te;n[65]!==z||n[66]!==U.scrollOffset||n[67]!==de?(Te=z.slice(U.scrollOffset,U.scrollOffset+de),n[65]=z,n[66]=U.scrollOffset,n[67]=de,n[68]=Te):Te=n[68];let Ee=Te,De;n[69]===b?De=n[70]:(De=B(A,{items:[...b],children:Gy}),n[69]=b,n[70]=De);let Oe;n[71]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=B(av,{}),n[71]=Oe):Oe=n[71];let ke;n[72]===u.DIM?ke=n[73]:(ke=B(j,{color:u.DIM,children:H.pointerSmall}),n[72]=u.DIM,n[73]=ke);let Ae;n[74]!==u.TEXT||n[75]!==i?(Ae=B(j,{color:u.TEXT,children:i}),n[74]=u.TEXT,n[75]=i,n[76]=Ae):Ae=n[76];let je;n[77]!==ke||n[78]!==Ae?(je=V(k,{children:[Oe,V(j,{wrap:`truncate`,children:[` `,ke,` `,Ae]})]}),n[77]=ke,n[78]=Ae,n[79]=je):je=n[79];let Me;n[80]!==u.DIM||n[81]!==u.PRIMARY||n[82]!==w||n[83]!==x?(Me=x&&w&&B(k,{marginTop:0,children:V(j,{color:u.DIM,children:[` `,`Press `,B(j,{color:u.PRIMARY,children:`o`}),` to open live preview`]})}),n[80]=u.DIM,n[81]=u.PRIMARY,n[82]=w,n[83]=x,n[84]=Me):Me=n[84];let Ne;n[85]!==u.DIM||n[86]!==u.GREEN||n[87]!==u.RED||n[88]!==u.YELLOW||n[89]!==le||n[90]!==O||n[91]!==F||n[92]!==w||n[93]!==ue||n[94]!==Ee?(Ne=F?B(k,{flexDirection:`column`,marginTop:1,children:Ee}):V(pe,{children:[ue===0&&w&&(()=>{let e=O?ky(O.events,!1):[];return V(k,{marginTop:1,flexDirection:`column`,children:[V(k,{children:[B(qm,{}),B(j,{children:` `}),B(Fv,{text:`Starting${H.ellipsis} ${le}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]}),e.map(Ky)]})})(),B(k,{flexDirection:`column`,marginTop:1,children:(O?.steps??[]).map((e,t)=>{let n=v.isSome(e.summary)?e.summary.value:e.title,r=Ny(e),i=r===void 0?void 0:Lv(r),a=`${t+1}.`;if(e.status===`active`){let t=O?Oy(O.events,!1):[];return V(k,{flexDirection:`column`,children:[V(k,{children:[V(j,{color:u.DIM,children:[` `,a,` `]}),B(qm,{}),B(j,{children:` `}),B(Fv,{text:`${e.title} ${le}`,baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight})]}),t.map(qy)]},e.id)}return e.status===`passed`?V(j,{children:[V(j,{color:u.DIM,children:[` `,a]}),V(j,{color:u.GREEN,children:[` `,H.tick,` `,Be(n,100)]}),i&&V(j,{color:u.DIM,children:[` `,i]})]},e.id):e.status===`failed`?V(j,{children:[V(j,{color:u.DIM,children:[` `,a]}),V(j,{color:u.RED,children:[` `,H.cross,` `,Be(n,100)]}),i&&V(j,{color:u.DIM,children:[` `,i]})]},e.id):e.status===`skipped`?V(j,{children:[V(j,{color:u.DIM,children:[` `,a]}),V(j,{color:u.YELLOW,children:[` `,H.arrowRight,` `,Be(n,100)]}),i&&V(j,{color:u.DIM,children:[` `,i]})]},e.id):V(j,{color:u.DIM,children:[` `,a,` `,H.circle,` `,e.title]},e.id)})})]}),n[85]=u.DIM,n[86]=u.GREEN,n[87]=u.RED,n[88]=u.YELLOW,n[89]=le,n[90]=O,n[91]=F,n[92]=w,n[93]=ue,n[94]=Ee,n[95]=Ne):Ne=n[95];let Pe;n[96]!==u.PRIMARY||n[97]!==u.YELLOW||n[98]!==ie?(Pe=ie&&B(k,{marginTop:1,children:V(j,{color:u.YELLOW,children:[`Stop run? `,B(j,{color:u.PRIMARY,children:`enter`}),` to stop,`,` `,B(j,{color:u.PRIMARY,children:`esc`}),` to dismiss`]})}),n[96]=u.PRIMARY,n[97]=u.YELLOW,n[98]=ie,n[99]=Pe):Pe=n[99];let Fe;n[100]!==je||n[101]!==Me||n[102]!==Ne||n[103]!==Pe?(Fe=V(k,{flexDirection:`column`,width:`100%`,paddingY:1,paddingX:1,children:[je,Me,Ne,Pe]}),n[100]=je,n[101]=Me,n[102]=Ne,n[103]=Pe,n[104]=Fe):Fe=n[104];let Ie;n[105]===_?Ie=n[106]:(Ie=rt.builder(_).onError(Jy).onDefect(Yy).orNull(),n[105]=_,n[106]=Ie);let Le;n[107]!==Fe||n[108]!==Ie?(Le=V(k,{flexDirection:`column`,width:`100%`,children:[Fe,Ie]}),n[107]=Fe,n[108]=Ie,n[109]=Le):Le=n[109];let Re;return n[110]!==De||n[111]!==Le?(Re=V(pe,{children:[De,Le]}),n[110]=De,n[111]=Le,n[112]=Re):Re=n[112],Re};function Iy(e){return e.setScreen}function Ly(e){return e.agentBackend}function Ry(e){return e.browserHeaded}function zy(e){return e.replayHost}function By(e){return e.toggleNotifications}function Vy(e){return e.expanded}function Hy(e){return e.setExpanded}function Uy(e){return e.toggleExpanded}function Wy(e){return`[url: ${e}]`}function Gy(e){return B(k,{paddingX:1,children:B($v,{src:e,alt:e})},e)}function Ky(e,t){return B(My,{display:e,indent:` `},t)}function qy(e,t){return B(My,{display:e,indent:` `},t)}function Jy(e){return B(ey,{type:`error`,error:e})}function Yy(e){return B(ey,{type:`defect`,error:{_tag:`Defect`,message:s.pretty(s.fail(e))}})}const Xy=e=>{try{return le.execSync(`pbcopy`,{input:e,stdio:[`pipe`,`ignore`,`ignore`]}),!0}catch{return!1}},Zy=(e,t)=>d.runPromise(gm.use(n=>n.addComment(process.cwd(),e,t)).pipe(d.provide(gm.layer))),Qy=()=>ie({mutationFn:({pullRequest:e,body:t})=>Zy(e,t)}),$y=iy.fn(d.fnUntraced(function*(e,t){return yield*(yield*pm).save(e.plan)},d.annotateLogs({fn:`saveFlowFn`}),d.provide(K.layer))),eb=e=>{if(!(v.isNone(e.startedAt)||v.isNone(e.endedAt)))return l.toEpochMillis(e.endedAt.value)-l.toEpochMillis(e.startedAt.value)},tb=e=>{let t=0;for(let n of e){let e=eb(n);e!==void 0&&(t+=e)}return t},nb=e=>{let t=ae(141);if(t[0]!==`b7e547f8ebc01ced52659efc05613f9ccf6a352b61760b052762a2223144f2e9`){for(let e=0;e<141;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`b7e547f8ebc01ced52659efc05613f9ccf6a352b61760b052762a2223144f2e9`}let{report:n,replayUrl:r,localReplayUrl:i,videoUrl:a}=e,o=It(),s=eh(rb),[c,l]=R(void 0),u=Qy(),d;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(d={mode:`promiseExit`},t[1]=d):d=t[1];let[f,p]=ot($y,d),m=f.waiting,h;t[2]===f?h=t[3]:(h=rt.isSuccess(f),t[2]=f,t[3]=h);let g=h,_;t[4]!==u||t[5]!==n.pullRequest||t[6]!==n.toPlainText?(_=()=>{v.isSome(n.pullRequest)&&(nv(`results:posted_to_pr`),u.mutate({pullRequest:n.pullRequest.value,body:n.toPlainText}))},t[4]=u,t[5]=n.pullRequest,t[6]=n.toPlainText,t[7]=_):_=t[7];let y=_,b;t[8]!==o.GREEN||t[9]!==o.RED||t[10]!==n.toPlainText?(b=()=>{Xy(n.toPlainText)?(nv(`results:copied_to_clipboard`),l({text:`${H.tick} Copied to clipboard`,color:o.GREEN})):l({text:`${H.cross} Failed to copy to clipboard`,color:o.RED})},t[8]=o.GREEN,t[9]=o.RED,t[10]=n.toPlainText,t[11]=b):b=t[11];let x=b,S;t[12]!==n||t[13]!==m||t[14]!==g||t[15]!==p?(S=async()=>{m||g||(nv(`flow:saved`,{step_count:n.steps.length}),await p({plan:n}))},t[12]=n,t[13]=m,t[14]=g,t[15]=p,t[16]=S):S=t[16];let C=S,w;t[17]!==n.changesFor||t[18]!==n.instruction||t[19]!==s?(w=()=>{nv(`results:restarted`),Iv.getState().setExecutedPlan(void 0),s($m({changesFor:n.changesFor,instruction:n.instruction}))},t[17]=n.changesFor,t[18]=n.instruction,t[19]=s,t[20]=w):w=t[20];let T=w,E;t[21]!==x||t[22]!==y||t[23]!==T||t[24]!==C?(E=e=>{let t=e.toLowerCase();t===`y`&&x(),t===`p`&&y(),t===`s`&&C(),t===`r`&&T()},t[21]=x,t[22]=y,t[23]=T,t[24]=C,t[25]=E):E=t[25],ne(E);let D=n.status===`passed`,O=D?o.GREEN:o.RED,A=D?H.tick:H.cross,ee=D?`Passed`:`Failed`,te,M,N,re,ie,P,F,oe,I,se,ce;if(t[26]!==o.DIM||t[27]!==o.GREEN||t[28]!==o.RED||t[29]!==o.TEXT||t[30]!==o.YELLOW||t[31]!==i||t[32]!==r||t[33]!==n.instruction||t[34]!==n.stepStatuses||t[35]!==n.steps||t[36]!==O||t[37]!==A||t[38]!==ee){let e=tb(n.steps);M=r??i,N=!!r&&!!i&&r!==i&&i!==void 0,te=k,se=`column`,ce=`100%`,re=1,ie=1;let a;t[50]===Symbol.for(`react.memo_cache_sentinel`)?(a=B(av,{}),t[50]=a):a=t[50];let s;t[51]===o.DIM?s=t[52]:(s=B(j,{color:o.DIM,children:H.pointerSmall}),t[51]=o.DIM,t[52]=s);let c;t[53]!==o.TEXT||t[54]!==n.instruction?(c=B(j,{color:o.TEXT,children:n.instruction}),t[53]=o.TEXT,t[54]=n.instruction,t[55]=c):c=t[55],t[56]!==s||t[57]!==c?(P=V(k,{children:[a,V(j,{wrap:`truncate`,children:[` `,s,` `,c]})]}),t[56]=s,t[57]=c,t[58]=P):P=t[58];let l;t[59]!==O||t[60]!==A||t[61]!==ee?(l=V(j,{color:O,bold:!0,children:[A,` `,ee]}),t[59]=O,t[60]=A,t[61]=ee,t[62]=l):l=t[62];let u=n.steps.length===1?``:`s`,d;t[63]!==o.DIM||t[64]!==n.steps.length||t[65]!==u?(d=V(j,{color:o.DIM,children:[` `,n.steps.length,` step`,u]}),t[63]=o.DIM,t[64]=n.steps.length,t[65]=u,t[66]=d):d=t[66],t[67]!==l||t[68]!==d?(F=V(k,{marginTop:1,children:[l,d]}),t[67]=l,t[68]=d,t[69]=F):F=t[69];let f;if(t[70]!==o.DIM||t[71]!==o.GREEN||t[72]!==o.RED||t[73]!==o.YELLOW||t[74]!==n.stepStatuses||t[75]!==n.steps){let e;t[77]!==o.DIM||t[78]!==o.GREEN||t[79]!==o.RED||t[80]!==o.YELLOW||t[81]!==n.stepStatuses?(e=(e,t)=>{let r=eb(e),i=r===void 0?void 0:Lv(r),a=n.stepStatuses.get(e.id),s=a?.status===`failed`,c=a?.status===`skipped`,l=s?o.RED:c?o.YELLOW:o.GREEN,u=s?H.cross:c?H.arrowRight:H.tick,d=`${t+1}.`;return V(k,{flexDirection:`column`,children:[V(j,{children:[V(j,{color:o.DIM,children:[` `,d]}),V(j,{color:l,children:[` `,u,` `,e.title]}),i&&V(j,{color:o.DIM,children:[` `,i]})]}),(s||c)&&a?.summary&&V(j,{color:o.DIM,children:[` `,a.summary]})]},e.id)},t[77]=o.DIM,t[78]=o.GREEN,t[79]=o.RED,t[80]=o.YELLOW,t[81]=n.stepStatuses,t[82]=e):e=t[82],f=n.steps.map(e),t[70]=o.DIM,t[71]=o.GREEN,t[72]=o.RED,t[73]=o.YELLOW,t[74]=n.stepStatuses,t[75]=n.steps,t[76]=f}else f=t[76];t[83]===f?oe=t[84]:(oe=B(k,{flexDirection:`column`,marginTop:1,children:f}),t[83]=f,t[84]=oe),I=e>0&&B(k,{marginTop:1,children:V(j,{color:o.DIM,children:[`Worked for `,Lv(e)]})}),t[26]=o.DIM,t[27]=o.GREEN,t[28]=o.RED,t[29]=o.TEXT,t[30]=o.YELLOW,t[31]=i,t[32]=r,t[33]=n.instruction,t[34]=n.stepStatuses,t[35]=n.steps,t[36]=O,t[37]=A,t[38]=ee,t[39]=te,t[40]=M,t[41]=N,t[42]=re,t[43]=ie,t[44]=P,t[45]=F,t[46]=oe,t[47]=I,t[48]=se,t[49]=ce}else te=t[39],M=t[40],N=t[41],re=t[42],ie=t[43],P=t[44],F=t[45],oe=t[46],I=t[47],se=t[48],ce=t[49];let L;t[85]===c?L=t[86]:(L=c&&B(k,{marginTop:1,children:B(j,{color:c.color,children:c.text})}),t[85]=c,t[86]=L);let le;t[87]!==o.DIM||t[88]!==u.isPending?(le=u.isPending&&B(k,{marginTop:1,children:V(j,{color:o.DIM,children:[`Posting to PR`,H.ellipsis]})}),t[87]=o.DIM,t[88]=u.isPending,t[89]=le):le=t[89];let ue;t[90]!==o.GREEN||t[91]!==u.isSuccess?(ue=u.isSuccess&&B(k,{marginTop:1,children:V(j,{color:o.GREEN,children:[H.tick,` Posted to PR`]})}),t[90]=o.GREEN,t[91]=u.isSuccess,t[92]=ue):ue=t[92];let z;t[93]!==o.RED||t[94]!==u.isError?(z=u.isError&&B(k,{marginTop:1,children:V(j,{color:o.RED,children:[H.cross,` Failed to post to PR`]})}),t[93]=o.RED,t[94]=u.isError,t[95]=z):z=t[95];let de;t[96]!==o.DIM||t[97]!==m?(de=m&&B(k,{marginTop:1,children:V(j,{color:o.DIM,children:[`Saving flow`,H.ellipsis]})}),t[96]=o.DIM,t[97]=m,t[98]=de):de=t[98];let fe;t[99]!==o.GREEN||t[100]!==g?(fe=g&&B(k,{marginTop:1,children:V(j,{color:o.GREEN,children:[H.tick,` Flow saved`]})}),t[99]=o.GREEN,t[100]=g,t[101]=fe):fe=t[101];let pe;t[102]!==o.RED||t[103]!==f?(pe=rt.isFailure(f)&&B(k,{marginTop:1,children:V(j,{color:o.RED,children:[H.cross,` Failed to save flow`]})}),t[102]=o.RED,t[103]=f,t[104]=pe):pe=t[104];let U;t[105]!==o.DIM||t[106]!==o.PRIMARY||t[107]!==M?(U=M&&B(k,{flexDirection:`column`,paddingX:1,marginTop:1,children:V(j,{color:o.DIM,children:[`Replay:`,` `,B(j,{color:o.PRIMARY,bold:!0,children:M})]})}),t[105]=o.DIM,t[106]=o.PRIMARY,t[107]=M,t[108]=U):U=t[108];let W;t[109]!==o.DIM||t[110]!==o.PRIMARY||t[111]!==i||t[112]!==N?(W=N&&B(k,{flexDirection:`column`,paddingX:1,children:V(j,{color:o.DIM,children:[`Local Replay:`,` `,B(j,{color:o.PRIMARY,bold:!0,children:i})]})}),t[109]=o.DIM,t[110]=o.PRIMARY,t[111]=i,t[112]=N,t[113]=W):W=t[113];let me;t[114]!==o.DIM||t[115]!==o.PRIMARY||t[116]!==a?(me=a&&B(k,{flexDirection:`column`,paddingX:1,children:V(j,{color:o.DIM,children:[`Video:`,` `,B(j,{color:o.PRIMARY,bold:!0,children:a})]})}),t[114]=o.DIM,t[115]=o.PRIMARY,t[116]=a,t[117]=me):me=t[117];let he;t[118]===n.screenshotPaths?he=t[119]:(he=n.screenshotPaths.map(ib),t[118]=n.screenshotPaths,t[119]=he);let ge;return t[120]!==te||t[121]!==re||t[122]!==ie||t[123]!==P||t[124]!==F||t[125]!==oe||t[126]!==I||t[127]!==L||t[128]!==le||t[129]!==ue||t[130]!==z||t[131]!==de||t[132]!==fe||t[133]!==pe||t[134]!==U||t[135]!==W||t[136]!==me||t[137]!==he||t[138]!==se||t[139]!==ce?(ge=V(te,{flexDirection:se,width:ce,paddingY:re,paddingX:ie,children:[P,F,oe,I,L,le,ue,z,de,fe,pe,U,W,me,he]}),t[120]=te,t[121]=re,t[122]=ie,t[123]=P,t[124]=F,t[125]=oe,t[126]=I,t[127]=L,t[128]=le,t[129]=ue,t[130]=z,t[131]=de,t[132]=fe,t[133]=pe,t[134]=U,t[135]=W,t[136]=me,t[137]=he,t[138]=se,t[139]=ce,t[140]=ge):ge=t[140],ge};function rb(e){return e.setScreen}function ib(e){return B(k,{marginTop:1,children:B($v,{src:e,alt:`Screenshot: ${e}`})},e)}const ab=h.mergeAll(pm.layer,$p.withRepoRoot(process.cwd())),ob=()=>P({queryKey:[`saved-flows`],queryFn:()=>d.gen(function*(){return yield*(yield*pm).list()}).pipe(d.provide(ab),d.provide(K.layer),d.catchTag(`FindRepoRootError`,()=>d.succeed([])),d.runPromise)}),sb=new hn({isGitRepo:!1,currentBranch:`HEAD`,mainBranch:void 0,isOnMain:!1,hasChangesFromMain:!1,hasUnstagedChanges:!1,hasBranchCommits:!1,branchCommitCount:0,fileStats:[],workingTreeFileStats:[],fingerprint:void 0,savedFingerprint:void 0}),cb=()=>P({queryKey:[`git-state`],queryFn:async()=>{let e=await d.runPromiseExit(d.gen(function*(){return yield*(yield*$p).getState()}).pipe(d.provide($p.withRepoRoot(process.cwd())),d.catchTag(`FindRepoRootError`,()=>d.succeed(sb)),d.timeoutOrElse({duration:1e4,onTimeout:()=>d.succeed(sb)}),d.provide(K.layer)));return f.isSuccess(e)?e.value:sb}}),lb=e=>Array.isArray(e.flow?.steps)?e.flow.steps:[],ub=(e,t)=>{let n=vn.makeUnsafe({_tag:`Changes`,mainBranch:t}),r=lb(e),i={title:e.flow.title,userInstruction:e.flow.userInstruction,steps:r},a=e.environment.cookies;nv(`flow:reused`,{slug:e.slug,step_count:r.length}),eh.getState().setScreen($m({changesFor:n,instruction:e.flow.userInstruction,savedFlow:i,requiresCookies:a}))},db=()=>{let e=ae(11);if(e[0]!==`53939b05c229418d7d52eba403172d78da52d4f06481f5625a9cf002fc443ae8`){for(let t=0;t<11;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`53939b05c229418d7d52eba403172d78da52d4f06481f5625a9cf002fc443ae8`}let t=It(),[n]=Nt(),r=eh(fb),{data:i}=cb(),{data:a,isLoading:o}=ob(),s=a===void 0?[]:a,{highlightedIndex:c,setHighlightedIndex:l,scrollOffset:u,handleNavigation:d}=Ym({itemCount:s.length,visibleCount:15}),f=Math.min(40,Math.floor(n*.35)),p=Math.max(20,n-f-8),m=s.slice(u,u+15);ne((e,t)=>{if(!d(e,t)){if(t.return){let e=s[c];e&&ub(e,i?.mainBranch??`main`)}t.escape&&r(Qm.Main())}});let h=k,g=`${s.length} flow${s.length===1?``:`s`}`,_;e[1]===g?_=e[2]:(_=B(k,{paddingX:1,children:B(nh,{title:`Saved flows`,subtitle:g})}),e[1]=g,e[2]=_);let v;e[3]===o?v=e[4]:(v=o&&B(k,{marginTop:1,paddingX:1,children:B(qm,{message:`Loading saved flows...`})}),e[3]=o,e[4]=v);let y=!o&&s.length===0&&B(k,{marginTop:1,paddingX:1,flexDirection:`column`,children:V(j,{color:t.DIM,children:[`No saved flows yet. Run a test and press `,B(j,{color:t.PRIMARY,children:`s`}),` on the results screen to save a flow.`]})}),b=!o&&s.length>0&&B(k,{marginTop:1,flexDirection:`column`,height:15,overflow:`hidden`,paddingX:1,children:m.map((e,n)=>{let r=n+u,a=r===c,o=lb(e).length;return V(zt,{onClick:()=>{l(r),ub(e,i?.mainBranch??`main`)},children:[B(j,{color:a?t.PRIMARY:t.DIM,children:a?`${H.pointer} `:` `}),B(j,{color:a?t.PRIMARY:t.TEXT,bold:a,children:Jm(Be(e.title,f-1),f)}),B(j,{color:t.DIM,children:Jm(`${o} step${o===1?``:`s`}`,10)}),B(j,{color:t.DIM,children:Be(e.description,p)})]},e.slug)})}),x;return e[5]!==h||e[6]!==_||e[7]!==v||e[8]!==y||e[9]!==b?(x=V(h,{flexDirection:`column`,width:`100%`,paddingY:1,children:[_,v,y,b]}),e[5]=h,e[6]=_,e[7]=v,e[8]=y,e[9]=b,e[10]=x):x=e[10],x};function fb(e){return e.setScreen}const pb=e=>{let t=ae(7);if(t[0]!==`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`){for(let e=0;e<7;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`}let{status:n}=e,r=It();if(n===`open`){let e;return t[1]===r.GREEN?e=t[2]:(e=V(j,{color:r.GREEN,children:[H.bullet,` `]}),t[1]=r.GREEN,t[2]=e),e}if(n===`merged`){let e;return t[3]===r.PURPLE?e=t[4]:(e=V(j,{color:r.PURPLE,children:[H.bullet,` `]}),t[3]=r.PURPLE,t[4]=e),e}if(n===`draft`){let e;return t[5]===r.DIM?e=t[6]:(e=V(j,{color:r.DIM,children:[H.bullet,` `]}),t[5]=r.DIM,t[6]=e),e}return null},mb=e=>{let t=ae(30);if(t[0]!==`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`){for(let e=0;e<30;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`4fad32b1608f5dc4d90407ad58143bc83cfcba6f2b87af31eb3b6ad187111fee`}let{options:n,selectedIndex:r,isLoading:i,gitState:a}=e,o=It(),s;bb0:{if(n.length<=8){s=0;break bb0}let e=n.length-8;s=Math.min(e,Math.max(0,r-4))}let c=s,l,u,d,f;if(t[1]!==o||t[2]!==a||t[3]!==i||t[4]!==n||t[5]!==c||t[6]!==r){f=Symbol.for(`react.early_return_sentinel`);bb1:{let e=n.slice(c,c+8);if(n.length===0&&!i){let e;t[11]===o.DIM?e=t[12]:(e=B(k,{flexDirection:`column`,children:B(j,{color:o.DIM,children:`No matching results`})}),t[11]=o.DIM,t[12]=e),f=e;break bb1}l=k,u=`column`;let s;t[13]!==o||t[14]!==a||t[15]!==c||t[16]!==r?(s=(e,t)=>{let n=t+c===r,i=Hm(e,a),s=Um(e,a),l=e._tag===`PullRequest`||e._tag===`Branch`?e.branch.prNumber:null,u=e._tag===`PullRequest`||e._tag===`Branch`?e.branch.prStatus:null;return V(j,{wrap:`truncate`,children:[B(j,{color:n?o.PRIMARY:o.DIM,children:n?`${H.pointer} `:` `}),e._tag===`WorkingTree`?V(j,{color:o.GREEN,children:[H.bullet,` `]}):null,u?B(pb,{status:u}):null,B(j,{color:n?o.PRIMARY:o.TEXT,bold:n,children:i}),l?V(j,{children:[` `,V(j,{color:u===`open`?o.GREEN:u===`merged`?o.PURPLE:o.DIM,children:[`#`,l]}),u?V(j,{color:o.DIM,children:[` `,u]}):null]}):null,s&&!l?V(j,{color:o.DIM,children:[` `,s]}):null]},Yn(e))},t[13]=o,t[14]=a,t[15]=c,t[16]=r,t[17]=s):s=t[17],d=e.map(s)}t[1]=o,t[2]=a,t[3]=i,t[4]=n,t[5]=c,t[6]=r,t[7]=l,t[8]=u,t[9]=d,t[10]=f}else l=t[7],u=t[8],d=t[9],f=t[10];if(f!==Symbol.for(`react.early_return_sentinel`))return f;let p;t[18]!==o||t[19]!==i?(p=i?B(k,{children:V(j,{color:o.DIM,children:[` Loading PRs and branches`,H.ellipsis]})}):null,t[18]=o,t[19]=i,t[20]=p):p=t[20];let m;t[21]!==o||t[22]!==n.length?(m=n.length>8?B(k,{children:V(j,{color:o.DIM,children:[` `,n.length-8,` more `,H.arrowUp,`/`,H.arrowDown]})}):null,t[21]=o,t[22]=n.length,t[23]=m):m=t[23];let h;return t[24]!==l||t[25]!==u||t[26]!==d||t[27]!==p||t[28]!==m?(h=V(l,{flexDirection:u,children:[d,p,m]}),t[24]=l,t[25]=u,t[26]=d,t[27]=p,t[28]=m,t[29]=h):h=t[29],h},hb=({gitState:e,onSelect:t})=>{let[n,r]=R(!1),[i,a]=R(``),[o,s]=R(0),{data:c=[]}=P({queryKey:[`local-context-options`,e?.currentBranch],queryFn:()=>zm(e),enabled:!!e}),{data:l=[],isLoading:u}=P({queryKey:[`remote-context-options`,e?.currentBranch],queryFn:()=>Vm(e),enabled:n&&!!e}),d=ce(()=>[...c,...l],[c,l]),f=ce(()=>Gm(d,i,e),[d,i,e]);se(()=>{s(0)},[i]);let p=oe(()=>{r(!0),a(``),s(0)},[]),m=oe(()=>{r(!1),a(``)},[]);return{pickerOpen:n,pickerQuery:i,pickerIndex:o,filteredOptions:f,localOptions:c,remoteLoading:u,openPicker:p,closePicker:m,handleContextSelect:oe(e=>{t(e),m()},[t,m]),setPickerQuery:a,setPickerIndex:s,createInputChangeHandler:(e,t)=>r=>{let i=At(r),o=e.current;if(i.length>o.length&&i[i.length-1]===`@`&&(o.length===0||i[i.length-2]===` `)){t(i.slice(0,-1)),p();return}if(n){i.length-o.length<0?(m(),t(i)):a(e=>{let n=i.slice(o.length);return n.includes(` `)?(m(),t(i),``):e+n});return}t(i)}}},gb=e=>{let t=new Set;return e.filter(e=>t.has(e.path)?!1:(t.add(e.path),!0))},_b=e=>P({queryKey:[`test-coverage`,e?.fingerprint],queryFn:async()=>{if(!e?.isGitRepo||!e.hasChangesFromMain&&!e.hasUnstagedChanges)return;let t=e.mainBranch??`main`,n=await d.runPromiseExit(d.gen(function*(){let e=yield*$p,n=yield*Lm,r=yield*e.getChangedFiles(vn.makeUnsafe({_tag:`WorkingTree`})),i=yield*e.getChangedFiles(vn.makeUnsafe({_tag:`Changes`,mainBranch:t})),a=gb([...r,...i]);if(a.length!==0)return yield*n.analyze(a)}).pipe(d.provide($p.withRepoRoot(process.cwd())),d.provide(Lm.layer),d.timeoutOrElse({duration:15e3,onTimeout:()=>d.succeed(void 0)}),d.provide(K.layer)));if(f.isSuccess(n))return n.value},enabled:!!(e?.isGitRepo&&(e.hasChangesFromMain||e.hasUnstagedChanges)),staleTime:3e4}),vb=[`Test the main user flow end to end`,`Smoke test the homepage and key pages`,`Check authentication and protected routes`],yb=[`Verify my recent changes work as expected`,`Check for regressions in related features`,`Test the main user flow end to end`],bb=[`Test the changes on this branch`,`Smoke test this branch end to end`,`Check for regressions on this branch`],xb=[`Test the changes in this pull request`,`Check for regressions introduced by this PR`,`Verify the PR works end to end`],Sb=[`Test the changes from this commit`,`Check if this commit introduces regressions`,`Verify this commit works as expected`],Cb=(e,t)=>{if(!e)return vb;switch(e._tag){case`WorkingTree`:return yb;case`Branch`:return bb;case`PullRequest`:return xb;case`Commit`:return Sb;default:return vb}},wb=e=>e>=70?Ft.GREEN:e>=40?Ft.YELLOW:Ft.RED,Tb=e=>e>=70?`#0a2b0a`:e>=40?`#332b00`:`#331510`,Eb=e=>`Use Expect to test your changes.`,Db=e=>{let t=Math.round(e/100*10),n=10-t;return{filled:`█`.repeat(t),empty:`░`.repeat(n)}},Ob=({gitState:e})=>{let t=It(),[n]=Nt(),r=ev(e=>e.instructionHistory),i=eh(e=>e.setScreen),[a,o]=R(void 0),[s,c]=R(``),[l,u]=R(0),[d,f]=R(0),[p,m]=R(!1),[h,g]=R(void 0),[_,v]=R(-1),[y,b]=R(``),x=dv(e=>e.cookiesEnabled),S=dv(e=>e.toggleCookies),{data:C}=_b(e),w=()=>{if(r.length===0)return;let e=_+1;e>=r.length||(_===-1&&b(s),v(e),c(r[e]),u(e=>e+1))},T=()=>{if(_<=-1)return;let e=_-1;v(e),c(e===-1?y:r[e]),u(e=>e+1)},E=hb({gitState:e??null,onSelect:e=>{o(e),nv(`context:selected`,{context_type:{WorkingTree:`working_tree`,Branch:`branch`,PullRequest:`pull_request`,Commit:`commit`}[e._tag]})}}),D=E.localOptions.find(e=>e._tag===`WorkingTree`)??void 0,O=a??D??null,A=Cb(O,e??null);se(()=>{f(0)},[O,e]);let ee=t=>{let n=(t??s).trim();if(!n){g(`Describe what you want the browser agent to test.`);return}if(!e)return;let r=e.mainBranch??`main`,a;O?._tag===`Commit`?a=vn.makeUnsafe({_tag:`Commit`,hash:O.hash}):O?._tag===`Branch`||O?._tag===`PullRequest`?(O.branch.name&&(mm(process.cwd(),O.branch.name),th.invalidateQueries({queryKey:[`git-state`]})),a=vn.makeUnsafe({_tag:`Branch`,mainBranch:r})):a=vn.makeUnsafe({_tag:`Changes`,mainBranch:r}),ev.getState().rememberInstruction(n),x||Zm(n)?i($m({changesFor:a,instruction:n,requiresCookies:x})):i(Qm.CookieSyncConfirm({changesFor:a,instruction:n}))},te=L(s);te.current=s;let M=E.createInputChangeHandler(te,e=>{c(e),h&&g(void 0)}),N=!s.includes(`
|
|
43
|
+
`),re=s===``&&!E.pickerOpen&&A.length>0,ie=re&&!p&&n>=80,P=A[d%A.length];return ne((e,t)=>{if(E.pickerOpen){if(t.escape){E.closePicker();return}if(t.downArrow||t.ctrl&&e===`n`){E.setPickerIndex(Math.min(E.filteredOptions.length-1,E.pickerIndex+1));return}if(t.upArrow||t.ctrl&&e===`p`){E.setPickerIndex(Math.max(0,E.pickerIndex-1));return}if(t.return||t.tab){let e=E.filteredOptions[E.pickerIndex];e&&E.handleContextSelect(e);return}if(t.backspace||t.delete){E.pickerQuery.length===0?E.closePicker():E.setPickerQuery(E.pickerQuery.slice(0,-1));return}e&&!t.ctrl&&!t.meta&&E.setPickerQuery(E.pickerQuery+e);return}if(N&&t.upArrow){w();return}if(N&&t.downArrow){T();return}if(t.ctrl&&e===`k`){S(),nv(`cookies:toggled`,{enabled:!x});return}if(t.tab&&!t.shift&&re&&P){c(P),u(e=>e+1),nv(`suggestion:accepted`);return}if(!(t.tab&&t.shift)&&re){if(t.rightArrow){f(e=>(e+1)%A.length),m(!0);return}if(t.leftArrow){f(e=>(e-1+A.length)%A.length),m(!0);return}}},{isActive:!0}),V(k,{flexDirection:`column`,width:`100%`,paddingY:1,children:[B(k,{flexDirection:`column`,marginBottom:1,paddingX:1,children:B(av,{})}),(e?.hasUntestedChanges||C&&C.totalCount>0)&&!(C&&C.totalCount>0&&C.percent>=90)&&V(k,{paddingX:1,paddingY:1,marginBottom:1,backgroundColor:C&&C.totalCount>0?Tb(C.percent):t.BANNER_BG,width:`100%`,flexDirection:`column`,gap:0,children:[(()=>{if(C&&C.totalCount>0)return V(k,{children:[V(j,{color:wb(C.percent),bold:!0,children:[H.warning,` Untested changes`]}),B(j,{children:` `}),B(j,{color:wb(C.percent),children:Db(C.percent).filled}),B(j,{color:t.DIM,children:Db(C.percent).empty}),V(j,{color:wb(C.percent),children:[` `,C.percent,`% test coverage`]})]});if(!e)return null;let n=e.workingTreeFileStats,r=n.reduce((e,t)=>e+t.added,0),i=n.reduce((e,t)=>e+t.removed,0);return V(k,{children:[V(j,{color:t.YELLOW,bold:!0,children:[H.warning,` Untested changes detected`]}),n.length>0&&V(pe,{children:[V(j,{color:t.DIM,children:[` `,n.length,` file`,n.length===1?``:`s`,` `]}),r>0&&V(j,{color:t.GREEN,children:[`+`,r]}),r>0&&i>0&&B(j,{color:t.DIM,children:` `}),i>0&&V(j,{color:t.RED,children:[`-`,i]})]})]})})(),B(j,{color:t.DIM,children:C&&C.totalCount>0?Eb(C.percent):`Describe what to test and hit enter to verify your changes.`})]}),V(k,{flexDirection:`column`,width:`100%`,children:[V(k,{paddingX:1,children:[!e&&B(qm,{message:`loading context`}),e&&e.isGitRepo&&O&&B(zt,{fullWidth:!1,onClick:()=>{E.pickerOpen?E.closePicker():E.openPicker()},children:V(j,{color:t.DIM,children:[H.bullet,` `,V(j,{color:t.PRIMARY,children:[`@`,Wm(O,e)]}),Um(O,e)&&` (${Um(O,e)})`]})})]}),B(zt,{children:B(k,{flexDirection:`column`,marginTop:1,backgroundColor:t.INPUT_BG,width:`100%`,paddingX:1,paddingY:1,children:V(k,{children:[B(j,{color:t.PRIMARY,children:`❯ `}),B(k,{flexGrow:1,children:B(Gt,{focus:!E.pickerOpen,multiline:!0,placeholder:P?`${P} [tab]`:``,value:s,onSubmit:ee,onUpArrowAtTop:N?void 0:w,onDownArrowAtBottom:N?void 0:T,onChange:M},l)}),ie?B(j,{color:t.DIM,children:` ←→ cycle test suggestions`}):null]})})}),e?.isGitRepo&&E.pickerOpen&&V(Lt,{color:t.BORDER,children:[V(k,{marginBottom:0,children:[B(j,{color:t.DIM,children:`@ `}),B(j,{color:t.PRIMARY,children:E.pickerQuery}),B(j,{color:t.DIM,children:E.pickerQuery?``:`type to filter`})]}),B(mb,{options:E.filteredOptions,selectedIndex:E.pickerIndex,isLoading:E.remoteLoading,gitState:e})]}),e?.isGitRepo&&!E.pickerOpen&&B(k,{marginTop:1,paddingX:1,children:V(j,{color:t.DIM,children:[B(j,{color:t.PRIMARY,children:`@`}),` add context`]})})]}),B(ty,{message:h})]})},kb=e=>{let t=ae(10);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<10;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segment:n,mutedColor:r}=e,i=n.color??r,a;t[1]!==n.label||t[2]!==i?(a=V(j,{color:i,children:[n.label,` `]}),t[1]=n.label,t[2]=i,t[3]=a):a=t[3];let o=n.color??r,s;t[4]!==n.key||t[5]!==o?(s=V(j,{color:o,children:[`[`,n.key,`]`]}),t[4]=n.key,t[5]=o,t[6]=s):s=t[6];let c;return t[7]!==a||t[8]!==s?(c=V(pe,{children:[a,s]}),t[7]=a,t[8]=s,t[9]=c):c=t[9],c},Ab=e=>{let t=ae(12);if(t[0]!==`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`){for(let e=0;e<12;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e8c3ad7624de558f1292f5717cd6dbce82fb6c0767dc4ab19348dc7a7975d8f5`}let{segments:n,color:r,mutedColor:i}=e,a;t[1]===r?a=t[2]:(a=B(j,{color:r,children:` `}),t[1]=r,t[2]=a);let o;if(t[3]!==i||t[4]!==n){let e;t[6]!==i||t[7]!==n.length?(e=(e,t)=>V(k,{children:[e.onClick?B(zt,{fullWidth:!1,onClick:e.onClick,children:B(kb,{segment:e,mutedColor:i})}):B(kb,{segment:e,mutedColor:i}),t<n.length-1&&B(j,{color:i,children:` `})]},e.key+e.label),t[6]=i,t[7]=n.length,t[8]=e):e=t[8],o=n.map(e),t[3]=i,t[4]=n,t[5]=o}else o=t[5];let s;return t[9]!==a||t[10]!==o?(s=V(k,{children:[a,o]}),t[9]=a,t[10]=o,t[11]=s):s=t[11],s},jb=w.Struct({version:w.String}),Mb=(e,t)=>{let n=e.split(`.`).map(Number),r=t.split(`.`).map(Number);for(let e=0;e<3;e++){if((n[e]??0)>(r[e]??0))return!0;if((n[e]??0)<(r[e]??0))return!1}return!1},Nb=d.gen(function*(){let e=yield*d.tryPromise({try:()=>fetch(`https://registry.npmjs.org/${St}/latest`).then(e=>e.json()),catch:e=>Error(`npm registry fetch failed: ${e}`)});return(yield*d.try({try:()=>w.decodeUnknownSync(jb)(e),catch:e=>Error(`npm response decode failed: ${e}`)})).version}).pipe(d.timeoutOrElse({duration:5e3,onTimeout:()=>d.succeed(void 0)})),Pb=()=>{let{data:e}=P({queryKey:[`update-check`],queryFn:async()=>{let e=await d.runPromiseExit(Nb);if(f.isSuccess(e))return e.value},staleTime:36e5,retry:!1,refetchOnWindowFocus:!1});return{latestVersion:e,updateAvailable:e!==void 0&&Mb(e,`0.0.15`)}},Fb=(e,t)=>{let n=ae(87);if(n[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let e=0;e<87;e+=1)n[e]=Symbol.for(`react.memo_cache_sentinel`);n[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let r=It(),i=eh(Rb),a=dv(zb),o=dv(Bb),s=ev(Vb),c=ev(Hb),l=Iv(Ub);switch(e._tag){case`Main`:{let e=a?`cookies on`:`cookies off`,r;n[1]!==e||n[2]!==o?(r={key:`ctrl+k`,label:e,cta:!0,onClick:o},n[1]=e,n[2]=o,n[3]=r):r=n[3];let s;n[4]===i?s=n[5]:(s={key:`ctrl+r`,label:`saved flows`,cta:!0,onClick:()=>i(Qm.SavedFlowPicker())},n[4]=i,n[5]=s);let c;if(n[6]!==t?.isGitRepo||n[7]!==i||n[8]!==r||n[9]!==s){if(c=[r,s],t?.isGitRepo){let e;n[11]===i?e=n[12]:(e={key:`ctrl+p`,label:`pick pr`,cta:!0,onClick:()=>i(Qm.SelectPr())},n[11]=i,n[12]=e),c.push(e)}n[6]=t?.isGitRepo,n[7]=i,n[8]=r,n[9]=s,n[10]=c}else c=n[10];return c}case`SelectPr`:{let e,t,a;n[13]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`←→`,label:`filter`},a={key:`/`,label:`search`},n[13]=e,n[14]=t,n[15]=a):(e=n[13],t=n[14],a=n[15]);let o;n[16]===i?o=n[17]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Qm.Main())},n[16]=i,n[17]=o);let s;n[18]===r.PRIMARY?s=n[19]:(s={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[18]=r.PRIMARY,n[19]=s);let c;return n[20]!==o||n[21]!==s?(c=[e,t,a,o,s],n[20]=o,n[21]=s,n[22]=c):c=n[22],c}case`SavedFlowPicker`:{let e;n[23]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},n[23]=e):e=n[23];let t;n[24]===i?t=n[25]:(t={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Qm.Main())},n[24]=i,n[25]=t);let a;n[26]===r.PRIMARY?a=n[27]:(a={key:`enter`,label:`select`,color:r.PRIMARY,cta:!0},n[26]=r.PRIMARY,n[27]=a);let o;return n[28]!==t||n[29]!==a?(o=[e,t,a],n[28]=t,n[29]=a,n[30]=o):o=n[30],o}case`CookieSyncConfirm`:{let t;n[31]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`↑↓`,label:`nav`},n[31]=t):t=n[31];let a;n[32]===i?a=n[33]:(a={key:`esc`,label:`back`,onClick:()=>i(Qm.Main())},n[32]=i,n[33]=a);let o;n[34]!==e.changesFor||n[35]!==e.instruction||n[36]!==e.savedFlow||n[37]!==i?(o={key:`c`,label:`enable sync`,cta:!0,onClick:()=>{i($m({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!0}))}},n[34]=e.changesFor,n[35]=e.instruction,n[36]=e.savedFlow,n[37]=i,n[38]=o):o=n[38];let s;n[39]!==e.changesFor||n[40]!==e.instruction||n[41]!==e.savedFlow||n[42]!==i?(s=()=>{i($m({changesFor:e.changesFor,instruction:e.instruction,savedFlow:e.savedFlow,requiresCookies:!1}))},n[39]=e.changesFor,n[40]=e.instruction,n[41]=e.savedFlow,n[42]=i,n[43]=s):s=n[43];let c;n[44]!==r.PRIMARY||n[45]!==s?(c={key:`a`,label:`run anyway`,color:r.PRIMARY,cta:!0,onClick:s},n[44]=r.PRIMARY,n[45]=s,n[46]=c):c=n[46];let l;return n[47]!==a||n[48]!==o||n[49]!==c?(l=[t,a,o,c],n[47]=a,n[48]=o,n[49]=c,n[50]=l):l=n[50],l}case`PortPicker`:{let e,t,a;n[51]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`↑↓`,label:`nav`},t={key:`space`,label:`toggle`},a={key:`/`,label:`custom port`},n[51]=e,n[52]=t,n[53]=a):(e=n[51],t=n[52],a=n[53]);let o;n[54]===i?o=n[55]:(o={key:`esc`,label:`back`,cta:!0,onClick:()=>i(Qm.Main())},n[54]=i,n[55]=o);let s;n[56]===r.PRIMARY?s=n[57]:(s={key:`enter`,label:`confirm`,color:r.PRIMARY,cta:!0},n[56]=r.PRIMARY,n[57]=s);let c;return n[58]!==o||n[59]!==s?(c=[e,t,a,o,s],n[58]=o,n[59]=s,n[60]=c):c=n[60],c}case`Testing`:{let e=s===!0?`notify on`:`notify off`,t=l?`collapse`:`expand`,r;n[61]!==e||n[62]!==c?(r={key:`ctrl+n`,label:e,cta:!0,onClick:c},n[61]=e,n[62]=c,n[63]=r):r=n[63];let i;n[64]===t?i=n[65]:(i={key:`ctrl+o`,label:t,cta:!0},n[64]=t,n[65]=i);let a=l?`collapse`:`cancel`,o;n[66]===a?o=n[67]:(o={key:`esc`,label:a},n[66]=a,n[67]=o);let u;return n[68]!==r||n[69]!==i||n[70]!==o?(u=[r,i,o],n[68]=r,n[69]=i,n[70]=o,n[71]=u):u=n[71],u}case`Results`:{let t;n[72]===Symbol.for(`react.memo_cache_sentinel`)?(t={key:`y`,label:`copy`,cta:!0},n[72]=t):t=n[72];let r;if(n[73]!==e.report.changesFor||n[74]!==e.report.instruction||n[75]!==e.report.pullRequest||n[76]!==i){if(r=[t],v.isSome(e.report.pullRequest)){let e;n[78]===Symbol.for(`react.memo_cache_sentinel`)?(e={key:`p`,label:`post to PR`,cta:!0},n[78]=e):e=n[78],r.push(e)}let a;n[79]===Symbol.for(`react.memo_cache_sentinel`)?(a={key:`s`,label:`save flow`,cta:!0},n[79]=a):a=n[79],r.push(a);let o;n[80]!==e.report.changesFor||n[81]!==e.report.instruction||n[82]!==i?(o={key:`r`,label:`restart`,cta:!0,onClick:()=>{Iv.getState().setExecutedPlan(void 0),i($m({changesFor:e.report.changesFor,instruction:e.report.instruction}))}},n[80]=e.report.changesFor,n[81]=e.report.instruction,n[82]=i,n[83]=o):o=n[83],r.push(o);let s;n[84]===i?s=n[85]:(s={key:`esc`,label:`main menu`,cta:!0,onClick:()=>{Iv.getState().setExecutedPlan(void 0),i(Qm.Main())}},n[84]=i,n[85]=s),r.push(s),n[73]=e.report.changesFor,n[74]=e.report.instruction,n[75]=e.report.pullRequest,n[76]=i,n[77]=r}else r=n[77];return r}default:{let e;return n[86]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],n[86]=e):e=n[86],e}}},Ib=e=>e.length>0?` ${e.map(e=>`${e.label} [${e.key}]`).join(` `)}`:``,Lb=()=>{let e=ae(34);if(e[0]!==`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`){for(let t=0;t<34;t+=1)e[t]=Symbol.for(`react.memo_cache_sentinel`);e[0]=`0545e7691866a2045c1228f27b801065cf39232a2a018c782c9ae2928aa6e0a5`}let[t]=Nt(),{data:n}=cb(),r=eh(Wb),{latestVersion:i,updateAvailable:a}=Pb(),o=Fb(r,n),s,c,l,u,d,f,p,m;if(e[1]!==o||e[2]!==t||e[3]!==i||e[4]!==r._tag||e[5]!==a){let n=a?[...o,{key:`ctrl+u`,label:`v${i} available`,cta:!0,color:J.warning}]:o;u=n.filter(Gb);let h=Ve(Ib(u)),g=qb,_=n.filter(Jb),v=g(_)+h+2>t?_.filter(Yb):_,y=g(v);l=Math.max(0,t-y-h-2),c=k,p=`column`,e[14]!==t||e[15]!==r._tag?(m=r._tag===`Testing`?B(Fv,{text:`─`.repeat(t),baseColor:J.shimmerBase,highlightColor:J.shimmerHighlight,speed:3}):B(j,{color:J.border,children:`─`.repeat(t)}),e[14]=t,e[15]=r._tag,e[16]=m):m=e[16],s=k,d=1,f=v.map(Xb),e[1]=o,e[2]=t,e[3]=i,e[4]=r._tag,e[5]=a,e[6]=s,e[7]=c,e[8]=l,e[9]=u,e[10]=d,e[11]=f,e[12]=p,e[13]=m}else s=e[6],c=e[7],l=e[8],u=e[9],d=e[10],f=e[11],p=e[12],m=e[13];let h;e[17]===l?h=e[18]:(h=` `.repeat(l),e[17]=l,e[18]=h);let g;e[19]===h?g=e[20]:(g=B(j,{children:h}),e[19]=h,e[20]=g);let _;e[21]===u?_=e[22]:(_=u.length>0?B(Ab,{segments:u,color:J.primary,mutedColor:J.textMuted}):null,e[21]=u,e[22]=_);let v;e[23]!==s||e[24]!==d||e[25]!==f||e[26]!==g||e[27]!==_?(v=V(s,{paddingX:d,children:[f,g,_]}),e[23]=s,e[24]=d,e[25]=f,e[26]=g,e[27]=_,e[28]=v):v=e[28];let y;return e[29]!==c||e[30]!==p||e[31]!==m||e[32]!==v?(y=V(c,{flexDirection:p,children:[m,v]}),e[29]=c,e[30]=p,e[31]=m,e[32]=v,e[33]=y):y=e[33],y};function Rb(e){return e.setScreen}function zb(e){return e.cookiesEnabled}function Bb(e){return e.toggleCookies}function Vb(e){return e.notifications}function Hb(e){return e.toggleNotifications}function Ub(e){return e.expanded}function Wb(e){return e.screen}function Gb(e){return!e.cta}function Kb(e){return e.color?` ${e.label} [${e.key}] `:`${e.label} [${e.key}]`}function qb(e){return Ve(e.map(Kb).join(` `))}function Jb(e){return e.cta}function Yb(e){return e.key!==`ctrl+p`}function Xb(e,t){let n=V(j,{children:[t>0?` `:``,e.color?V(j,{backgroundColor:e.color,color:`black`,children:[` `,B(j,{bold:!0,children:e.label}),` `,V(j,{children:[`[`,e.key,`]`]}),` `]}):V(j,{children:[V(j,{color:J.textMuted,children:[e.label,` `]}),V(j,{color:J.textMuted,children:[`[`,e.key,`]`]})]})]},e.key+e.label);return e.onClick?B(zt,{onClick:e.onClick,fullWidth:!1,children:n},e.key+e.label):n}let Zb=null;const Qb=e=>{Zb=e},$b=()=>Zb?.clear(),ex=e=>{let t=ae(34);if(t[0]!==`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`){for(let e=0;e<34;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`e6ac87aa0f631766a38fac7cfbcee5d6c83ce6fd1edd967a6457097df0e89416`}let{agent:n}=e,r=eh(tx),i=eh(nx),a=eh(rx),{data:o}=cb(),s=st(ry),c,l;t[1]!==n||t[2]!==s?(c=()=>{s(v.some(n))},l=[n,s],t[1]=n,t[2]=s,t[3]=c,t[4]=l):(c=t[3],l=t[4]),se(c,l);let u;t[5]!==r._tag||t[6]!==i?(u=()=>{if(r._tag===`CookieSyncConfirm`){i(Qm.Main());return}if(r._tag===`PortPicker`){i(Qm.Main());return}if(r._tag===`Results`){Iv.getState().setExecutedPlan(void 0),i(Qm.Main());return}r._tag!==`Testing`&&i(Qm.Main())},t[5]=r._tag,t[6]=i,t[7]=u):u=t[7];let d=u,{updateAvailable:f}=Pb(),{exit:p}=te(),[,m]=R(0),[,h]=Nt(),g;t[8]!==p||t[9]!==o?.isGitRepo||t[10]!==d||t[11]!==a||t[12]!==r._tag||t[13]!==m||t[14]!==f?(g=(e,t)=>{if(t.ctrl&&e===`l`){$b(),m(ix);return}if(t.ctrl&&e===`u`&&f){p(),process.stdout.write(yt),fe(`npm`,[`install`,`-g`,`${St}@latest`],{stdio:`inherit`});return}t.escape&&r._tag!==`Main`&&d(),t.ctrl&&e===`p`&&r._tag===`Main`&&o?.isGitRepo&&a(Qm.SelectPr()),t.ctrl&&e===`r`&&r._tag===`Main`&&a(Qm.SavedFlowPicker())},t[8]=p,t[9]=o?.isGitRepo,t[10]=d,t[11]=a,t[12]=r._tag,t[13]=m,t[14]=f,t[15]=g):g=t[15],ne(g);let _;t[16]!==o||t[17]!==r._tag||t[18]!==r.baseUrls||t[19]!==r.changesFor||t[20]!==r.instruction||t[21]!==r.localReplayUrl||t[22]!==r.replayUrl||t[23]!==r.report||t[24]!==r.requiresCookies||t[25]!==r.savedFlow||t[26]!==r.videoUrl?(_=()=>{if(!o)return B(Ob,{gitState:void 0});switch(r._tag){case`PortPicker`:return B(Cv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies});case`Testing`:return B(Fy,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow,requiresCookies:r.requiresCookies,baseUrls:r.baseUrls});case`Results`:return B(nb,{report:r.report,replayUrl:r.replayUrl,localReplayUrl:r.localReplayUrl,videoUrl:r.videoUrl});case`SelectPr`:return B(rh,{});case`CookieSyncConfirm`:return B(sv,{changesFor:r.changesFor,instruction:r.instruction,savedFlow:r.savedFlow});case`SavedFlowPicker`:return B(db,{});default:return B(Ob,{gitState:o})}},t[16]=o,t[17]=r._tag,t[18]=r.baseUrls,t[19]=r.changesFor,t[20]=r.instruction,t[21]=r.localReplayUrl,t[22]=r.replayUrl,t[23]=r.report,t[24]=r.requiresCookies,t[25]=r.savedFlow,t[26]=r.videoUrl,t[27]=_):_=t[27];let y=_,b;t[28]===y?b=t[29]:(b=B(k,{flexGrow:1,children:y()}),t[28]=y,t[29]=b);let x;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(x=B(Lb,{}),t[30]=x):x=t[30];let S;return t[31]!==h||t[32]!==b?(S=B(Dt,{children:V(k,{flexDirection:`column`,width:`100%`,height:h,children:[b,x]})}),t[31]=h,t[32]=b,t[33]=S):S=t[33],S};function tx(e){return e.screen}function nx(e){return e.setScreen}function rx(e){return e.navigateTo}function ix(e){return e+1}const ax=()=>{let e=Ne();return e===`darwin`?`afplay /System/Library/Sounds/Glass.aiff`:e===`win32`?`powershell -c (New-Object Media.SoundPlayer 'C:\\Windows\\Media\\chimes.wav').PlaySync()`:`paplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null || aplay /usr/share/sounds/freedesktop/stereo/complete.oga 2>/dev/null`},ox=()=>new Promise(e=>{ue(ax(),()=>e())});var sx=class extends w.ErrorClass(`ExecutionTimeoutError`)({_tag:w.tag(`ExecutionTimeoutError`),timeoutMs:w.Number}){message=`expect execution timed out after ${this.timeoutMs}ms`};const cx=e=>`[${((Date.now()-e)/1e3).toFixed(1)}s]`,lx=e=>e.replace(/\r?\n/g,` `).replace(/::/g,`: :`),ux=e=>d.runPromise(ay(d.gen(function*(){let t=yield*tm,n=yield*nm,r=yield*Z_,i=Date.now();yield*r.capture(`session:started`,{mode:`headless`,skip_planning:!1,browser_headed:e.headed});let a=(yield*c.string(`GITHUB_ACTIONS`).pipe(c.withDefault(``)))!==``,o=e.ci?` [CI mode]`:``;console.log(`expect v${vt}${o}`),v.isSome(e.timeoutMs)&&console.log(`Timeout: ${e.timeoutMs.value}ms`),console.log(`Agent: ${e.agent}`),console.log(`Target: ${yn(e.changesFor)}`),console.log(`Starting browser test...`),a&&console.log(`::group::expect test execution`);let s=Date.now(),l=Date.now(),u=e.ci?setInterval(()=>{let e=Date.now();if(e-l>=6e4){let t=Math.floor((e-s)/6e4);console.log(`${cx(s)} Still running... (${t} minute${t===1?``:`s`} elapsed)`),l=e}},6e4):void 0;yield*r.capture(`run:started`,{plan_id:`direct`});let f=new Set,p=e=>{for(let t of e.events){if(f.has(t.id))continue;f.add(t.id),l=Date.now();let e=cx(s);switch(t._tag){case`RunStarted`:console.log(`${e} Starting ${t.plan.title}`);break;case`StepStarted`:console.log(`${e} ${H.arrowRight} ${t.stepId} ${t.title}`);break;case`StepCompleted`:console.log(`${e} ${H.tick} ${t.stepId} ${t.summary}`);break;case`StepFailed`:console.log(`${e} ${H.cross} ${t.stepId} ${t.message}`),a&&console.log(`::error title=${lx(t.stepId)} failed::${lx(t.message)}`);break;case`StepSkipped`:console.log(`${e} ${H.arrowRight} ${t.stepId} [skipped] ${t.reason}`);break}}},m=t.execute({changesFor:e.changesFor,instruction:e.instruction,isHeadless:!e.headed,requiresCookies:!1}).pipe(E.tap(e=>d.sync(()=>p(e))),E.runLast,d.map(t=>(t._tag===`Some`?t.value:new er({id:``,changesFor:e.changesFor,currentBranch:``,diffPreview:``,fileStats:[],instruction:e.instruction,baseUrl:void 0,isHeadless:!e.headed,requiresCookies:!1,testCoverage:v.none(),title:e.instruction,rationale:`Direct execution`,steps:[],events:[]})).finalizeTextBlock())),h=v.getOrUndefined(e.timeoutMs),g=yield*(h===void 0?m:m.pipe(d.timeoutOrElse({duration:`${h} millis`,onTimeout:()=>d.fail(new sx({timeoutMs:h}))}))).pipe(d.tapError(()=>d.sync(()=>{u&&clearInterval(u),a&&console.log(`::endgroup::`)})),d.catchTag(`ExecutionTimeoutError`,e=>d.sync(()=>{a&&console.log(`::error title=Execution timed out::${lx(e.message)}`),console.error(`\n${e.message}`),process.exit(1)})));u&&clearInterval(u),p(g),a&&console.log(`::endgroup::`);let _=yield*n.report(g),y=_.steps.filter(e=>_.stepStatuses.get(e.id)?.status===`passed`).length,b=_.steps.filter(e=>_.stepStatuses.get(e.id)?.status===`failed`).length;yield*r.capture(`run:completed`,{plan_id:g.id??`direct`,passed:y,failed:b,step_count:g.steps.length,file_count:0,duration_ms:Date.now()-s}),yield*r.capture(`session:ended`,{session_ms:Date.now()-i}),yield*r.flush;let x=_.toPlainText;console.error(`\n${x}`);let S=yield*c.option(c.string(`GITHUB_STEP_SUMMARY`));if(v.isSome(S)){let e=`## expect test results\n\n${_.status===`passed`?`**Result: PASSED**`:`**Result: FAILED**`}\n\n\`\`\`\n${x}\n\`\`\`\n`;yield*d.sync(()=>Ye(S.value,e))}yield*d.promise(()=>ox()),process.exit(_.status===`passed`?0:1)}).pipe(d.provide(ny({verbose:e.verbose,agent:e.agent}))))),dx={error:U.red,warn:U.yellow,info:U.cyan,success:U.green,dim:U.dim},$={error:(...e)=>{console.log(dx.error(e.join(` `)))},warn:(...e)=>{console.log(dx.warn(e.join(` `)))},info:(...e)=>{console.log(dx.info(e.join(` `)))},success:(...e)=>{console.log(dx.success(e.join(` `)))},dim:(...e)=>{console.log(dx.dim(e.join(` `)))},log:(...e)=>{console.log(e.join(` `))},break:()=>{console.log(``)}},fx=()=>{$.break(),$.log(`Cancelled.`),$.break(),process.exit(0)},px=e=>gt(e,{onCancel:fx}),mx=(e,t)=>_t({text:e,isSilent:t?.silent}),hx=[`CI`,`CLAUDECODE`,`CURSOR_AGENT`,`CODEX_CI`,`OPENCODE`,`AMP_HOME`,`AMI`],gx=()=>hx.some(e=>!!process.env[e]),_x=()=>!process.stdin.isTTY,vx={npm:`npm install -g expect-cli@latest`,pnpm:`pnpm add -g expect-cli@latest`,yarn:`yarn global add expect-cli@latest`,bun:`bun add -g expect-cli@latest`,vp:`vp install -g expect-cli@latest`},yx={npm:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,pnpm:`pnpm dlx skills add https://github.com/millionco/expect --skill expect -y`,yarn:`npx -y skills add https://github.com/millionco/expect --skill expect -y`,bun:`bunx skills add https://github.com/millionco/expect --skill expect -y`,vp:`npx -y skills add https://github.com/millionco/expect --skill expect -y`},bx=()=>{if(process.env.VITE_PLUS_CLI_BIN)return`vp`;let e=process.env.npm_config_user_agent;if(e){if(e.startsWith(`pnpm`))return`pnpm`;if(e.startsWith(`yarn`))return`yarn`;if(e.startsWith(`bun`))return`bun`;if(e.startsWith(`npm`))return`npm`}return`npm`},xx=e=>e||gx()||_x(),Sx=e=>new Promise(t=>{ue(e,{timeout:1e4},e=>{t(!e)}).stdin?.end()}),Cx=async(e={})=>{let t=xx(e.yes??!1),n=bx(),r=vx[n];$.break(),$.log(` ${U.red(H.cross)}${U.green(H.tick)} ${U.bold(`Expect`)} ${dx.dim(`v${vt}`)}`),$.dim(` Let agents test your code in a real browser.`),$.break(),Qa().length===0&&($.error(`No supported coding agent found. expect requires one of: Claude Code, Codex, or Cursor.`),$.break(),$.log(` Install one to get started:`),$.log(` ${dx.info(`Claude Code`)} ${dx.dim(`https://docs.anthropic.com/en/docs/claude-code`)}`),$.log(` ${dx.info(`Codex`)} ${dx.dim(`https://github.com/openai/codex`)}`),$.log(` ${dx.info(`Cursor`)} ${dx.dim(`https://cursor.com`)}`),$.break(),process.exit(1));let i=mx(`Installing expect-cli globally...`).start();await Sx(r)?i.succeed(`Installed! ${dx.info(`expect-cli`)} is now available globally.`):(i.fail(`Failed to install globally.`),$.dim(` Run manually: ${dx.info(r)}`)),$.break();let a=t;if(t||(a=(await px({type:`confirm`,name:`installSkill`,message:`Install the ${dx.info(`expect`)} skill for your coding agent?`,initial:!0})).installSkill),a){let e=yx[n],t=mx(`Installing skill...`).start();await Sx(e)?t.succeed(`Skill installed.`):(t.fail(`Failed to install skill.`),$.dim(` Run manually: ${dx.info(e)}`))}$.break(),$.success(`Setup complete! Here's how to get started:`),$.break(),$.log(` 1. ${dx.info(`cd`)} into your project directory`),$.log(` 2. Start your dev server (e.g. ${dx.dim(`npm run dev`)})`),$.log(` 3. Run ${dx.info(`expect-cli`)} to open the interactive test runner`),$.break(),$.log(` Or run headlessly from your coding agent:`),$.break(),$.log(` ${dx.dim(`$`)} ${dx.info(`expect-cli -m "test the login flow" -y`)}`),$.break(),$.log(` Set ${dx.info(`EXPECT_BASE_URL`)} if your app is not on localhost:3000:`),$.break(),$.log(` ${dx.dim(`$`)} ${dx.info(`EXPECT_BASE_URL=http://localhost:5173 expect-cli -m "test the homepage" -y`)}`),$.break()},wx=[`packages/*`,`apps/*`],Tx=e=>xt.some(t=>e.includes(t)),Ex=d.fn(`detectAgent`)(function*(e){let t=yield*m.FileSystem;for(let[n,r]of Object.entries(Ct)){let i=W.join(e,n);if(yield*t.exists(i).pipe(d.catchTag(`PlatformError`,()=>d.succeed(!1))))return r}let n=W.join(e,`package.json`),r=yield*t.readFileString(n).pipe(d.catchTag(`PlatformError`,()=>d.succeed(``)));if(r){let e=yield*d.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})}).pipe(d.catchTag(`JsonParseError`,()=>d.succeed(void 0)));if(e?.packageManager){let t=e.packageManager.split(`@`)[0];if(t)return t}}return`npm`}),Dx=d.fn(`readPackageJson`)(function*(e){let t=yield*m.FileSystem,n=W.join(e,`package.json`),r=yield*t.readFileString(n);return yield*d.try({try:()=>JSON.parse(r),catch:()=>({_tag:`JsonParseError`})})}),Ox=d.fn(`listWorkspaceDirectories`)(function*(e){let t=yield*m.FileSystem,n=[];for(let r of wx){let i=W.join(e,W.dirname(r)),a=yield*t.readDirectory(i).pipe(d.catchTag(`PlatformError`,()=>d.succeed([])));for(let e of a){let r=W.join(i,e);(yield*t.stat(r).pipe(d.catchTag(`PlatformError`,()=>d.succeed(void 0))))?.type===`Directory`&&n.push(r)}}return n}),kx=(e,t,n)=>new Promise(r=>{z(e,[`run`,n],{cwd:t,timeout:12e4,maxBuffer:5*1024*1024},(e,t,i)=>{let a=(t+`
|
|
44
|
+
`+i).trim();r({script:n,passed:!e,output:a})})}),Ax=d.fn(`discoverPackages`)(function*(e){let t=yield*Ox(e),n=[];for(let e of t){let t=yield*Dx(e).pipe(d.catchTag(`PlatformError`,()=>d.succeed(void 0)),d.catchTag(`JsonParseError`,()=>d.succeed(void 0)));if(!t?.scripts)continue;let r=Object.keys(t.scripts).filter(Tx);r.length!==0&&n.push({packageName:t.name??W.basename(e),directory:e,scripts:r})}return n}),jx=async(e,t)=>{let n=d.gen(function*(){let n=yield*Ex(e),r=yield*Ax(e);return yield*d.forEach(r,e=>d.gen(function*(){t.onPackageStart(e.packageName,e.scripts);let r=[];for(let i of e.scripts){let a=yield*d.promise(()=>kx(n,e.directory,i));t.onScriptDone(e.packageName,a),r.push(a)}return{packageName:e.packageName,directory:e.directory,results:r}}),{concurrency:4})});return d.runPromise(n.pipe(d.provide(K.layer)))},Mx=e=>{let t=ae(5);if(t[0]!==`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`){for(let e=0;e<5;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`}let{statusMap:n}=e,r;if(t[1]!==n){let e=Array.from(n.entries()),i,a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=B(j,{bold:!0,children:`expect audit`}),a=B(j,{children:` `}),t[3]=i,t[4]=a):(i=t[3],a=t[4]),r=V(k,{flexDirection:`column`,paddingY:1,children:[i,a,e.map(Bx)]}),t[1]=n,t[2]=r}else r=t[2];return r},Nx=e=>{let t=ae(12);if(t[0]!==`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`){for(let e=0;e<12;e+=1)t[e]=Symbol.for(`react.memo_cache_sentinel`);t[0]=`aef0f8bb7ade6156f95a0a2a02eb67442b17c5cae1cd627958814a31c95c65dd`}let{results:n}=e,r=0,i=0;for(let e of n)for(let t of e.results)t.passed?r++:i++;let a=`${r} passed, ${i} failed`,o=i>0?Ft.RED:Ft.GREEN,s;t[1]!==a||t[2]!==o?(s=B(j,{bold:!0,color:o,children:a}),t[1]=a,t[2]=o,t[3]=s):s=t[3];let c;t[4]===i?c=t[5]:(c=i>0&&V(j,{color:Ft.YELLOW,children:[`Run `,B(j,{bold:!0,children:`expect`}),` to test your changes in a real browser and catch issues before they ship.`]}),t[4]=i,t[5]=c);let l;t[6]===i?l=t[7]:(l=i===0&&V(j,{color:Ft.GREEN,children:[`Looking good! Run `,B(j,{bold:!0,children:`expect`}),` to verify your changes work end-to-end in the browser.`]}),t[6]=i,t[7]=l);let u;return t[8]!==s||t[9]!==c||t[10]!==l?(u=V(k,{flexDirection:`column`,gap:1,children:[s,c,l]}),t[8]=s,t[9]=c,t[10]=l,t[11]=u):u=t[11],u},Px=async()=>{let e=process.cwd(),t={current:new Map},n,r,i=ee(B(()=>{let[e,t]=R(new Map),[i,a]=R();return n=e=>t(new Map(e)),r=a,V(k,{flexDirection:`column`,children:[B(Mx,{statusMap:e}),i&&B(Nx,{results:i})]})},{})),a=await jx(e,{onPackageStart:(e,r)=>{t.current.set(e,{scripts:r,completed:[],done:!1}),n?.(t.current)},onScriptDone:(e,r)=>{let i=t.current.get(e);i&&(i.completed.push(r),i.done=i.completed.length===i.scripts.length),n?.(t.current)}});r?.(a),setTimeout(()=>{i.unmount(),a.reduce((e,t)=>e+t.results.filter(e=>!e.passed).length,0)>0&&process.exit(1)},100)},Fx=async()=>{let e=process.cwd();console.log(``),console.log(U.bold(`expect audit`)),console.log(``);let t=await jx(e,{onPackageStart:(e,t)=>{console.log(`${H.arrowRight} ${U.bold(e)} (${t.join(`, `)})`)},onScriptDone:(e,t)=>{let n=t.passed?U.green(H.tick):U.red(H.cross);if(console.log(` ${n} ${t.script}`),!t.passed){let e=t.output.split(`
|
|
45
45
|
`).slice(-3).join(`
|
|
46
|
-
`);console.log(
|
|
46
|
+
`);console.log(U.dim(` ${e.split(`
|
|
47
47
|
`).join(`
|
|
48
|
-
`)}`))}}}),n=0,r=0;for(let e of t)for(let t of e.results)t.passed?n++:r++;console.log(``);let i=`${n} passed, ${r} failed`,a=r>0?
|
|
48
|
+
`)}`))}}}),n=0,r=0;for(let e of t)for(let t of e.results)t.passed?n++:r++;console.log(``);let i=`${n} passed, ${r} failed`,a=r>0?U.red:U.green;console.log(a(U.bold(i))),r>0?(console.log(``),console.log(U.yellow(`Run ${U.bold(`expect`)} to test your changes in a real browser and catch issues before they ship.`))):(console.log(``),console.log(U.green(`Looking good! Run ${U.bold(`expect`)} to verify your changes work end-to-end in the browser.`))),console.log(``),r>0&&process.exit(1)},Ix=async()=>{gx()||_x()?await Fx():await Px()};function Lx(e){return e.passed}function Rx(e){return V(k,{flexDirection:`column`,children:[V(j,{children:[` `,e.passed?B(j,{color:Ft.GREEN,children:H.tick}):B(j,{color:Ft.RED,children:H.cross}),` `,e.script]}),!e.passed&&V(j,{color:`gray`,children:[` `,e.output.split(`
|
|
49
49
|
`).slice(-3).join(`
|
|
50
|
-
`)]})]},e.script)}function
|
|
50
|
+
`)]})]},e.script)}function zx(e){return V(j,{color:`gray`,children:[` `,B(ze,{type:`dots`}),` `,e]},e)}function Bx(e){let[t,n]=e;return V(k,{flexDirection:`column`,children:[V(k,{children:[n.done&&B(j,{children:n.completed.every(Lx)?B(j,{color:Ft.GREEN,children:H.tick}):B(j,{color:Ft.RED,children:H.cross})}),!n.done&&B(j,{color:`white`,children:B(ze,{type:`dots`})}),V(j,{bold:!0,children:[` `,t]})]}),n.completed.map(Rx),!n.done&&n.scripts.filter(e=>!n.completed.some(t=>t.script===e)).slice(0,1).map(zx)]},t)}const Vx=[`unstaged`,`branch`,`changes`],Hx=new O().name(`expect`).description(`AI-powered browser testing for your changes`).version(vt,`-v, --version`).option(`-m, --message <instruction>`,`natural language instruction for what to test`).option(`-f, --flow <slug>`,`reuse a saved flow by its slug`).option(`-y, --yes`,`run immediately without confirmation`).option(`-a, --agent <provider>`,`agent provider to use (claude or codex)`).option(`-t, --target <target>`,`what to test: unstaged, branch, or changes`,`changes`).option(`--verbose`,`enable verbose logging`).option(`--headed`,`show a visible browser window during tests`).option(`--no-cookies`,`skip system browser cookie extraction`).option(`--ci`,`force CI mode: headless, no cookies, auto-yes, 30-minute timeout`).option(`--timeout <ms>`,`execution timeout in milliseconds`,parseInt).option(`--replay-host <url>`,`website host for live replay viewer`,`https://expect.dev`).addHelpText(`after`,`
|
|
51
51
|
Examples:
|
|
52
52
|
$ expect open interactive TUI
|
|
53
53
|
$ expect -m "test the login flow" -y run immediately
|
|
54
54
|
$ expect --headed -m "smoke test" -y run with a visible browser
|
|
55
55
|
$ expect --target branch test all branch changes
|
|
56
56
|
$ expect --target unstaged test unstaged changes
|
|
57
|
-
$ expect --no-cookies -m "test" -y skip system browser cookie extraction`),
|
|
57
|
+
$ expect --no-cookies -m "test" -y skip system browser cookie extraction`),Ux=`\x1B[?1000l\x1B[?1006l`,Wx=async e=>{let t=Date.now();await rv(),process.stdout.write(`\x1B[?1049h\x1B[2J\x1B[H`),process.on(`exit`,()=>process.stdout.write(Ux+yt));let n=ee(B(at,{initialValues:[[ry,v.some(e)]],children:B(re,{client:th,children:B(ex,{agent:e})})}));Qb(n),await n.waitUntilExit(),await iv(t),process.stdout.write(Ux+yt),process.exit(0)},Gx=async e=>{let t=process.cwd();return d.runPromise(d.gen(function*(){let t=yield*$p,n=yield*t.getMainBranch,r=yield*t.getCurrentBranch;return e===`branch`?{changesFor:vn.makeUnsafe({_tag:`Branch`,mainBranch:n}),currentBranch:r}:e===`changes`?{changesFor:vn.makeUnsafe({_tag:`Changes`,mainBranch:n}),currentBranch:r}:{changesFor:vn.makeUnsafe({_tag:`WorkingTree`}),currentBranch:r}}).pipe(d.provide($p.withRepoRoot(t))))},Kx=(e,t)=>{ev.setState({...e.agent?{agentBackend:e.agent}:{},browserHeaded:e.headed??!1,replayHost:e.replayHost??`https://expect.dev`}),e.message?eh.setState({screen:Qm.Testing({changesFor:t,instruction:e.message})}):eh.setState({screen:Qm.Main()})},qx=async(e,t)=>{let n=t.ci||gx()||_x(),r=t.timeout?v.some(t.timeout):n?v.some(18e5):v.none(),{changesFor:i}=await Gx(e);return ux({changesFor:i,instruction:t.message??`Test all changes from main in the browser and verify they work correctly.`,agent:t.agent??`claude`,verbose:t.verbose??!1,headed:n?!1:t.headed??!1,ci:n,timeoutMs:r})},Jx=async(e,t)=>{let{changesFor:n}=await Gx(e);Kx(t,n),Wx(t.agent??`claude`)};Hx.command(`init`).description(`set up expect for your coding agent`).option(`-y, --yes`,`skip confirmation prompts`).action(async e=>{await Cx(e)}),Hx.command(`audit`).description(`audit your workspace for lint, type, and formatting issues`).action(async()=>{await Ix()}),Hx.action(async()=>{let e=Hx.opts(),t=e.target??`changes`;if(Vx.includes(t)||Hx.error(`Unknown target: ${t}. Use ${Vx.join(`, `)}.`),e.ci||gx()||_x())return qx(t,e);e.message||e.flow||e.yes?await Jx(t,e):(ev.setState({browserHeaded:e.headed??!1,replayHost:e.replayHost??`https://expect.dev`}),Wx(e.agent??`claude`))}),Hx.parse();export{};
|
|
58
58
|
//# sourceMappingURL=index.js.map
|