ripplo 0.7.8 → 0.7.10
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/chunk-QD2O2K32.js +254 -0
- package/dist/daemon-UBO223HG.js +61 -0
- package/dist/index.js +188 -188
- package/package.json +3 -3
- package/dist/chunk-RVAASCBD.js +0 -247
- package/dist/daemon-TX3OBXCA.js +0 -60
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{$a as we,A as D,D as T,I as K,L as F,N as V,O as X,Oa as pe,Pa as fe,Qa as me,Ra as ye,S as Z,Sa as ge,V as Y,X as ee,Xa as w,Ya as x,Za as ke,_a as H,b as d,bb as q,c as W,cb as Se,da as re,db as ve,e as U,f as P,fb as b,g as M,ga as oe,ha as ne,hb as Re,ia as te,ja as A,jb as Pe,la as ie,lb as xe,mb as be,na as ae,nb as he,ob as Ee,pb as Ie,q as B,qa as se,qb as Ce,rb as Le,sa as le,sb as We,t as z,u as G,ub as De,va as de,w as Q,wa as ce,x as J,ya as R,z as m,za as ue}from"./chunk-QD2O2K32.js";import $r from"path";import{createClient as jr}from"graphql-sse";import Or,{AbortError as Nr}from"p-retry";import{graphql as I}from"gql.tada";import{print as _r}from"graphql";import dr from"fs";import He from"net";import{err as qe,ok as cr}from"neverthrow";async function $e({cwd:e,onConnection:o}){M(e);let r=ue(e),n=await Te({onConnection:o,socketPath:r});return n.isOk()||n.error.kind!=="stale-candidate"?n.map(Fe(r)).mapErr(Ae(r)):await ur(r)?qe({kind:"already-running",socketPath:r}):(je(r),(await Te({onConnection:o,socketPath:r})).map(Fe(r)).mapErr(Ae(r)))}function ur(e){return new Promise(o=>{let r=He.connect(e);r.once("connect",()=>{r.destroy(),o(!0)}),r.once("error",()=>{o(!1)})})}async function Te(e){let o=await pr(e);return o.kind==="listening"?cr(o.server):qe(o.error)}function pr({onConnection:e,socketPath:o}){return new Promise(r=>{let n=He.createServer(e);n.once("error",t=>{r({error:t.code==="EADDRINUSE"?{kind:"stale-candidate"}:{kind:"listen-failed",message:t.message},kind:"failed"})}),n.listen(o,()=>{r({kind:"listening",server:n})})})}function Fe(e){return o=>({socketPath:e,close:()=>{o.close(),je(e)}})}function je(e){dr.rmSync(e,{force:!0})}function Ae(e){return o=>o.kind==="stale-candidate"?{kind:"already-running",socketPath:e}:{kind:"bind-failed",message:o.message}}function $(e){return{priority:e,next:()=>null,onResult:()=>{}}}function Oe({config:e,explore:o,exploreConcurrency:r,pool:n}){return fr({appUrl:e.appUrl,cwd:e.cwd,explore:o,exploreConcurrency:r,executeTrail:async(t,i)=>(await n).exploreTrail(t,i)})}function fr({appUrl:e,cwd:o,executeTrail:r,explore:n,exploreConcurrency:t}){let i={notify:()=>{}},a=n?mr({appUrl:e,cwd:o,executeTrail:r,notifyWork:()=>{i.notify()}}):de(),s=De({exploreConcurrency:t,exploreEnabled:n,now:Date.now,probe:yr,setTimer:gr,sources:[$("p0"),$("p1"),a],execute:({job:p,priority:u,signal:c})=>w({headed:!1,workClass:kr(u),task:()=>p.run(c)})});H(()=>{s.notifyQueueChange()}),i.notify=()=>{s.notifyQueueChange()};let l=n?le({onChange:p=>{s.setExplorerHolder(p)}}):null;return{status:()=>({explorer:wr({explore:n,holder:s.explorerHolder()}),exploring:s.explorationActive(),progress:a.status()}),stop:()=>{l?.stop(),s.stop(),H(null),a.stop()}}}function mr({appUrl:e,cwd:o,executeTrail:r,notifyWork:n}){return ce({cwd:o,executeTrail:r,notifyWork:n,loadLockfile:async()=>{let{fingerprint:t,result:i}=await m(o);return i.match(a=>({fingerprint:t,lockfile:a}),()=>null)},probeApp:async()=>await Z(e)==null})}function yr(){let e=ke();return{headedActive:e.headedActive,interactiveActive:e.active,interactiveQueued:e.queued,poolSize:e.poolSize}}function gr(e,o){let r=setTimeout(e,o);return()=>{clearTimeout(r)}}function kr(e){switch(e){case"p0":return"p0-ui";case"p1":return"p1-cli";case"p2":return"p2-cover";case"p3":return"p3-explore"}}function wr({explore:e,holder:o}){return e?o?"holder":"standby":"off"}async function Ne({cwd:e,finding:o}){let r={at:new Date().toISOString(),kind:"resolution",signature:o.signature};await A(R(e),[r]).match(()=>{},n=>{d.warn("explore findings log append failed: %s",n.kind)})}async function _e({cwd:e,finding:o,outcome:r}){let n=r.kind==="clean"?[...r.rows,{at:new Date().toISOString(),kind:"resolution",signature:o.signature}]:r.rows;n.length!==0&&await A(R(e),n).match(()=>{},t=>{d.warn("explore findings log append failed: %s",t.kind)})}function Ue({cwd:e,pool:o}){let r={cwd:e,executeTrail:(n,t)=>w({headed:!1,workClass:"p1-cli",task:async()=>(await o).exploreTrail(n,t)}),loadLockfile:async()=>{let n=await m(e);return n.result.match(t=>({fingerprint:n.fingerprint,lockfile:t}),()=>null)}};return(n,t)=>Sr(r,{findingId:n,signal:t})}async function Sr(e,o){let r=await vr(e.cwd,o.findingId);if("reply"in r)return r.reply;let n=await e.loadLockfile();if(n==null)return{kind:"error",reason:"lockfile-unavailable"};let t=Rr(n,r.finding);if("reply"in t)return t.reply;let i=await e.executeTrail(t.assign,o.signal);return xr({cwd:e.cwd,finding:r.finding,outcome:i})}async function vr(e,o){return te(R(e)).match(r=>{let t=[...ne(r).findings.entries()].find(([a])=>oe(a)===o);if(t==null)return{reply:{kind:"finding-not-found"}};let[,i]=t;return i.resolvedAt!=null?{reply:{kind:"finding-not-found"}}:{finding:i.latest}},()=>({reply:{kind:"unreplayable",reason:"ledger-unreadable"}}))}function Rr(e,o){let r=ae(e.lockfile,{sweep:!1}).find(t=>t.name===o.baseState);if(r==null)return{reply:{kind:"unreplayable",reason:"base-state-missing"}};let n=Pr(e.lockfile,o);return n==null?{reply:{kind:"unreplayable",reason:"action-missing"}}:{assign:{baseStateTest:r.test,lensId:o.lensId,lockfileFingerprint:e.fingerprint,lockfileHash:ie(e.lockfile),maxLength:n.length,shrinkBudget:0,stepRuns:n}}}function Pr(e,o){let n=ee(e).map(a=>`${a.test}#${String(a.index)}`),i=o.trail.map((a,s)=>{let l=n.indexOf(a),p=o.trailParams[s];return l===-1||p==null?null:{idx:l,params:p}}).flatMap(a=>a==null?[]:[a]);return i.length===o.trail.length?i:null}async function xr({cwd:e,finding:o,outcome:r}){return r.kind==="aborted"?{kind:"aborted"}:r.kind==="error"?br({cwd:e,finding:o,reason:r.reason}):(await _e({cwd:e,finding:o,outcome:r}),r.kind==="clean"?{kind:"resolved"}:r.kind==="flaky"?{kind:"flaky"}:hr(o,r))}async function br({cwd:e,finding:o,reason:r}){return r==="empty-trail"?(await Ne({cwd:e,finding:o}),{kind:"unreachable"}):{kind:"error",reason:r??"trail-error"}}function hr(e,o){let r=o.rows.find(t=>t.kind==="finding"),n=r?.kind==="finding"?r.runId:void 0;return r!=null&&r.signature===e.signature?{kind:"still-failing",runId:n}:{kind:"diverged",runId:n}}async function Me({config:e,cwd:o,headed:r,pool:n,runId:t,signal:i,testSlug:a,workClass:s,workflowSlug:l}){let{fingerprint:p,result:u}=await m(o);if(u.isErr())return await b(e,t,`lockfile:${u.error.kind}`),{detail:`lockfile:${u.error.kind}`,kind:"dispatch-error"};let c=Er(u.value,{testSlug:a,workflowSlug:l});if(c==null)return await b(e,t,`no-test:${l}/${a}`),{detail:`no-test:${l}/${a}`,kind:"dispatch-error"};let f=await w({headed:r,workClass:s,task:()=>n.execute({headed:r,lockfileFingerprint:p,runId:t,testRef:c},i)});return!f.serverNotified&&f.outcome.kind==="error"&&await b(e,t,f.outcome.detail),f.outcome}function Er(e,{testSlug:o,workflowSlug:r}){let t=e.workflows.find(i=>J(i.name)===r)?.tests.find(i=>i.slug===o);return t==null?void 0:Y(t)}import{fork as Ir}from"child_process";import Be from"os";import{CancellationTokenSource as ze,ResponseError as Ge}from"vscode-jsonrpc/node";function Qe(e,o){return()=>{let r=Ir(e,["run-worker"],{cwd:o,stdio:["ignore","inherit","inherit","ipc"]});return{connection:We(r),kill:()=>{r.kill("SIGKILL")},onExit:n=>{r.once("exit",n)}}}}function Je(e){let o={closed:!1,lockfileProvider:e.lockfileProvider,nextId:0,size:e.initialSize,spawn:e.spawn,waiters:[],workers:[]};return{close:async()=>{o.closed=!0,await Promise.all([...o.workers].map(r=>j(r,o)))},execute:(r,n)=>Lr(r,n,o),exploreTrail:(r,n)=>Tr(r,n,o),routeSpan:(r,n)=>{let t=o.workers.find(i=>i.runId===r);t?.worker.connection.sendNotification(Ce,{runId:r,span:n})},setSize:r=>{Ar(r,o)}}}var Cr=1e4,Ke=-32800;async function Lr(e,o,r){let n=await Ve(r);if(n.runId=e.runId,!n.alive)return h(n,r),{outcome:{detail:"worker-exit",kind:"error"},serverNotified:!1};let t=new ze,i=()=>{t.cancel()};o.aborted&&t.cancel(),o.addEventListener("abort",i,{once:!0});try{let a=await n.worker.connection.sendRequest(he,e,t.token),s=Pe.safeParse(a);return s.success?s.data:{outcome:{detail:"bad-outcome-frame",kind:"error"},serverNotified:!1}}catch(a){return Dr(a,n)}finally{o.removeEventListener("abort",i),t.dispose(),h(n,r)}}async function Ve(e){let o=e.workers.find(r=>r.alive&&r.runId===void 0);if(o!=null)return o.runId="pending",o;if(e.workers.length<e.size){let r=Wr(e);return r.runId="pending",await r.ready,r}return new Promise(r=>{e.waiters.push(n=>{n.runId="pending",r(n)})})}function Wr(e){let o=e.spawn(),r={resolve:()=>{}},n={alive:!0,id:e.nextId,ready:new Promise(t=>{r.resolve=t,o.connection.onNotification(be,t)}),runId:void 0,worker:o};return e.nextId+=1,o.connection.onRequest(Ee,async t=>{let i=Re.safeParse(t);return i.success?e.lockfileProvider(i.data.fingerprint):{unavailable:"bad-lockfile-request"}}),o.onExit(()=>{n.alive=!1,e.workers=e.workers.filter(t=>t!==n),o.connection.dispose(),r.resolve()}),e.workers.push(n),n}function h(e,o){if(e.runId=void 0,!e.alive||o.closed)return;if(o.workers.length>o.size){j(e,o);return}let r=o.waiters.shift();r?.(e)}async function j(e,o){if(o.workers=o.workers.filter(t=>t!==e),!e.alive)return;let r=new Promise(t=>{e.worker.onExit(t)});await e.worker.connection.sendNotification(Le).catch(()=>{});let n=setTimeout(()=>{e.worker.kill()},Cr);await r,clearTimeout(n)}function Dr(e,o){return e instanceof Ge&&e.code===Ke?{outcome:{detail:"aborted",kind:"error"},serverNotified:!1}:o.alive?{outcome:{detail:e instanceof Error?e.message:String(e),kind:"error"},serverNotified:!1}:{outcome:{detail:"worker-exit",kind:"error"},serverNotified:!1}}async function Tr(e,o,r){let n=await Ve(r);if(n.runId="explore",!n.alive)return h(n,r),{kind:"error",rows:[],trail:[]};let t=new ze,i=()=>{t.cancel()};o.aborted&&t.cancel(),o.addEventListener("abort",i,{once:!0});try{let a=await n.worker.connection.sendRequest(Ie,e,t.token),s=xe.safeParse(a);return s.success?s.data:{kind:"error",rows:[],trail:[]}}catch(a){return Fr(a)}finally{o.removeEventListener("abort",i),t.dispose(),h(n,r)}}function Fr(e){return e instanceof Ge&&e.code===Ke?{kind:"aborted",rows:[],trail:[]}:{kind:"error",reason:`transport:${e instanceof Error?e.message.slice(0,120):"unknown"}`,rows:[],trail:[]}}function Ar(e,o){o.size=e,e>Be.availableParallelism()&&d.warn({cores:Be.availableParallelism(),size:e},"worker pool size exceeds available cores");let r=o.workers.filter(t=>t.alive&&t.runId===void 0),n=o.workers.length-e;r.slice(0,Math.max(0,n)).forEach(t=>{j(t,o)})}import E from"fs";import{graphql as Xe}from"gql.tada";import{print as Ze}from"graphql";var Hr=Xe(`
|
|
3
|
+
subscription HooksPausedWatch($projectId: String!) {
|
|
4
|
+
hooksPausedRequested(projectId: $projectId) {
|
|
5
|
+
paused
|
|
6
|
+
projectId
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
`),qr=Xe(`
|
|
10
|
+
subscription WatchLocalConcurrencyChanged {
|
|
11
|
+
myMaxLocalConcurrentRunsChanged
|
|
12
|
+
}
|
|
13
|
+
`);function Ye({pool:e,sseClient:o}){return o.subscribe({query:Ze(qr)},{complete:()=>{},error:r=>{d.error(r,"localConcurrency subscription error")},next:r=>{let n=r.data?.myMaxLocalConcurrentRunsChanged;n!=null&&(x(n),e.setSize(n))}})}function er({cwd:e,projectId:o,sseClient:r}){return r.subscribe({query:Ze(Hr),variables:{projectId:o}},{complete:()=>{},error:n=>{d.error(n,"hooksPaused subscription error")},next:n=>{let t=n.data?.hooksPausedRequested?.paused;t!=null&&O({cwd:e,paused:t})}})}function O({cwd:e,paused:o}){let r=se(e);if(o&&!E.existsSync(r)){E.writeFileSync(r,"");return}!o&&E.existsSync(r)&&E.unlinkSync(r)}var Ur=6e4,rr=500,Mr=15e3,Br=I(`
|
|
14
|
+
subscription RunRequestedWatch($devSessionId: String!) {
|
|
15
|
+
runRequested(devSessionId: $devSessionId) {
|
|
16
|
+
runId
|
|
17
|
+
testSlug
|
|
18
|
+
workflowId
|
|
19
|
+
workflowSlug
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
`),zr=I(`
|
|
23
|
+
mutation HeartbeatDevSessionWatch($id: String!) {
|
|
24
|
+
heartbeatDevSession(id: $id) {
|
|
25
|
+
__typename
|
|
26
|
+
... on DevSession {
|
|
27
|
+
id
|
|
28
|
+
}
|
|
29
|
+
... on DevSessionEndedError {
|
|
30
|
+
message
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
`),Gr=I(`
|
|
35
|
+
query WatchLocalConcurrency {
|
|
36
|
+
currentUser {
|
|
37
|
+
id
|
|
38
|
+
maxLocalConcurrentRuns
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
`),Qr=I(`
|
|
42
|
+
mutation EndDevSessionWatch($projectId: String!, $cwd: String!) {
|
|
43
|
+
endDevSession(projectId: $projectId, cwd: $cwd) {
|
|
44
|
+
__typename
|
|
45
|
+
... on DevSession {
|
|
46
|
+
id
|
|
47
|
+
}
|
|
48
|
+
... on NoActiveDevSessionError {
|
|
49
|
+
message
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
`);async function In({explore:e,exploreConcurrency:o}){io();let r=oo(process.cwd()),n=r.cwd,t=Xr(n),i=ro(),a=Oe({config:r,explore:e,exploreConcurrency:o,pool:i.pool}),s={handler:()=>{}},l=Yr(),p=ve({config:r,cwd:n,explorationStatus:a.status,ready:l.promise,replayFinding:Ue({cwd:n,pool:i.pool}),onShutdownRequest:()=>{s.handler()}}),u=await eo({cwd:n,ipc:p,releasePid:t}),c=await D(n);c.isErr()&&(process.stderr.write(`ripplo: ${T(c.error)}
|
|
54
|
+
`),process.exit(1));let f=c.value,y=await or(()=>q({config:r,cwd:n,lockfile:f}),{config:r,label:"initial sync"}),C=await so(r);O({cwd:n,paused:y.hooksPaused});let N=we(n);N!=null&&d.info("watching branch %s in %s",N,n);let L=jr({headers:{Authorization:`Bearer ${r.token}`},retryAttempts:1/0,url:`${r.ripploServerUrl}/graphql`}),S=Je({initialSize:C,spawn:Qe(lo(),n),lockfileProvider:async k=>{let g=await m(n);return g.result.isErr()?{unavailable:`daemon-load-failed:${g.result.error.kind}`}:g.fingerprint!==k?{unavailable:"fingerprint-mismatch"}:{lockfileJson:G(Q,g.result.value)}}});i.provide(S);let nr=await re({localDir:$r.join(n,".ripplo",".local"),writePortFile:!0,onRrwebBatch:()=>{},onSpan:k=>{let g=k.attributes["ripplo.run"];g!=null&&S.routeSpan(g,k)}}),_=Vr({claim:p.claim,config:r,cwd:n,initialId:y.devSessionId,pool:S,sseClient:L}),tr=er({cwd:n,projectId:r.projectId,sseClient:L}),ir=Ye({pool:S,sseClient:L}),ar=Kr({config:r,session:_}),sr=to();l.resolve(),process.stdout.write(`${me({devSessionId:y.devSessionId,version:z()})}
|
|
55
|
+
`);let lr=async()=>{ar(),sr(),a.stop(),u.close(),_.stop(),tr(),ir(),await S.close(),await nr.stop().catch(()=>{}),await Promise.race([P({config:r,document:Qr,variables:{cwd:r.cwd,projectId:r.projectId}}).catch(()=>{}),new Promise(k=>setTimeout(k,3e3))]),t()},v=()=>{lr().finally(()=>process.exit(0))};s.handler=v,process.on("SIGINT",v),process.on("SIGTERM",v),process.on("SIGHUP",v),process.on("SIGBREAK",v),await new Promise(()=>{})}function Jr({claim:e,cwd:o,devSessionId:r,onSubscriptionDead:n,pool:t,sseClient:i}){let a=new Set;return i.subscribe({query:_r(Br),variables:{devSessionId:r}},{complete:()=>{},error:s=>{d.warn("runRequested SSE failed: %s; re-registering session",s instanceof Error?s.message:String(s)),n()},next:s=>{let l=s.data?.runRequested;if(l==null)return;if(a.has(l.runId)){d.warn({runId:l.runId,workflowSlug:l.workflowSlug},"duplicate runRequested event; skipping dispatch");return}a.add(l.runId),process.stdout.write(`ripplo: run ${l.workflowSlug}
|
|
56
|
+
`),B(o);let p=F(o).match(c=>c,c=>{d.error({failure:c,runId:l.runId},"failed to load env for run dispatch; skipping")});if(p==null){a.delete(l.runId);return}let u=e(`${l.workflowSlug}/${l.testSlug}`);u?.started(l.runId),Me({config:p,cwd:o,headed:u?.headed??!1,pool:t,runId:l.runId,signal:u==null?new AbortController().signal:Se(u.token),testSlug:l.testSlug,workClass:u==null?"p0-ui":"p1-cli",workflowSlug:l.workflowSlug}).then(c=>{u?.finished(l.runId,c)}).catch(c=>{d.error({err:c,runId:l.runId,workflowSlug:l.workflowSlug},"run execution failed; daemon continuing"),u?.finished(l.runId,{detail:c instanceof Error?c.message:String(c),kind:"error"})}).finally(()=>{a.delete(l.runId)})}},{connecting:s=>{s&&d.warn("runRequested SSE reconnecting")}})}function Kr({config:e,session:o}){let r=async()=>{try{let t=await P({config:e,document:zr,variables:{id:o.getId()}});t.heartbeatDevSession?.__typename==="DevSessionEndedError"&&(d.warn("dev session ended server-side (%s); re-registering",t.heartbeatDevSession.message),await o.reregister())}catch(t){d.warn("heartbeat failed: %s",t instanceof Error?t.message:String(t))}},n=setInterval(()=>{r()},Mr);return()=>{clearInterval(n)}}function Vr({claim:e,config:o,cwd:r,initialId:n,pool:t,sseClient:i}){let a=n,s=null,l=()=>{f()},p=()=>Jr({claim:e,cwd:r,devSessionId:a,onSubscriptionDead:l,pool:t,sseClient:i}),u=p(),c=async()=>{let y=await D(r);if(y.isErr()){d.error("re-register: compile failed: %s",T(y.error));return}let C=await or(()=>q({config:o,cwd:r,lockfile:y.value}),{config:o,label:"re-register sync"});u(),a=C.devSessionId,u=p(),d.info("re-registered dev session as %s",a)},f=()=>(s!=null||(s=c().finally(()=>{s=null})),s);return{reregister:f,getId:()=>a,stop:()=>{u()}}}function Xr(e){try{return X({cwd:e,onCompromised:Zr})}catch(o){throw o instanceof V&&(process.stderr.write(`${ye({cwd:o.cwd,pid:o.pid})}
|
|
57
|
+
`),process.exit(1)),o}}function Zr(){d.error("daemon lock compromised; shutting down"),process.stderr.write(`${ge()}
|
|
58
|
+
`),process.exit(1)}function Yr(){let e={handler:()=>{}};return{promise:new Promise(r=>{e.handler=r}),resolve:()=>{e.handler()}}}async function eo({cwd:e,ipc:o,releasePid:r}){return(await $e({cwd:e,onConnection:o.handleConnection})).match(t=>t,t=>{process.stderr.write(`${pe(t)}
|
|
59
|
+
`),r(),process.exit(1)})}function ro(){let e={provide:()=>{}};return{pool:new Promise(r=>{e.provide=r}),provide:r=>{e.provide(r)}}}function oo(e){return F(e).match(o=>o,o=>{process.stderr.write(`${K(o)}
|
|
60
|
+
`),process.exit(1)})}function or(e,{config:o,label:r}){let n=o.ripploServerUrl.includes("localhost")||o.ripploServerUrl.includes("127.0.0.1");return Or(async()=>{try{return await e()}catch(t){let i=t instanceof Error?t.message:String(t);throw U(t)==="FORBIDDEN"&&(process.stderr.write(`ripplo: ${fe({projectId:o.projectId,serverUrl:o.ripploServerUrl})}
|
|
61
|
+
`),process.exit(1)),no(i)?t:(d.error("%s failed: %s",r,i),new Nr(i))}},{factor:2,maxTimeout:n?2e3:1e4,minTimeout:n?100:1e3,retries:1/0,onFailedAttempt:({attemptNumber:t,error:i})=>{d.warn("%s attempt %d failed \u2014 retrying: %s",r,t,i.message)}})}function no(e){return e.includes("status 502")||e.includes("ECONNREFUSED")||e.includes("Failed to connect")||e.includes("fetch failed")}function to(){W({maxRuns:rr});let e=setInterval(()=>{W({maxRuns:rr})},Ur);return()=>{clearInterval(e)}}function io(){process.on("unhandledRejection",e=>{d.error({err:e},"unhandledRejection in watch; continuing")}),process.on("uncaughtException",e=>{d.error({err:e},"uncaughtException in watch; continuing")})}var ao=4;async function so(e){try{let r=(await P({config:e,document:Gr,variables:void 0})).currentUser?.maxLocalConcurrentRuns;if(r!=null)return x(r),r}catch(o){d.warn({err:o},"failed to fetch local concurrency setting; using default")}return ao}function lo(){let e=process.argv[1];if(e==null)throw new Error("cli entry unavailable");return e}export{In as runDaemon};
|