@neuvybe/jarvis 0.50.5 → 0.50.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -389,7 +389,7 @@ Rules:
389
389
  Output exactly one line of strict JSON and nothing else:
390
390
  {"verdict":"done"|"mid_thought"|"hold_floor","confidence":<number 0..1>}
391
391
  confidence is your certainty in the verdict.
392
- `,ms=class extends Error{status;constructor(e,r){super(e),this.status=r,this.name="TurnEvaluatorError"}},xu=class{key;fetchImpl;timeoutMs;constructor(e,r=fetch,i=Obe){this.key=e,this.fetchImpl=r,this.timeoutMs=i}async evaluate(e,r){let i={model:Ube,max_tokens:Hbe,temperature:0,stop_sequences:Vbe,system:Ybe,messages:[{role:"user",content:qbe(e)},{role:"assistant",content:kJ}]},n;try{n=await this.fetchImpl($be,{method:"POST",headers:{"x-api-key":this.key,"anthropic-version":Pbe,"content-type":"application/json"},body:JSON.stringify(i),signal:AbortSignal.any([r,AbortSignal.timeout(this.timeoutMs)])})}catch(o){throw o instanceof Error&&(o.name==="TimeoutError"||o.name==="AbortError")?o:new ms(qt(o,this.key))}if(!n.ok)throw new ms(`turn evaluator request failed (HTTP ${n.status})`,n.status);let s;try{s=await n.json()}catch{throw new ms("turn evaluator response body was not JSON")}return jbe(s)}}});function jN(t){return t===void 0?AI:{id:AI.id,engineVoice:{...AI.engineVoice,"elevenlabs-flash":{kind:"preset",voiceId:t},"elevenlabs-v3":{kind:"preset",voiceId:t}}}}var Vh,AI,zN=D(()=>{"use strict";Vh="21m00Tcm4TlvDq8ikWAM",AI={id:"jarvis-primary",engineVoice:{"elevenlabs-flash":{kind:"preset",voiceId:Vh},"elevenlabs-v3":{kind:"preset",voiceId:Vh}}}});var dI,TJ=D(()=>{"use strict";Tt();dI=class{turnId;openedAtMs;log;terminal=!1;heldOpen=!1;asideCommit=!1;silenceReason=null;dispatched=!1;acts={};commandStarted=!1;wordlessCuts=0;parkedAtMs=null;decider=null;silenceOnsetAtMs=null;commitAtMs=null;asrFinalAtMs=null;transcriptLength=null;firstDeltaAtMs=null;firstAudioAtMs=null;constructor(e,r,i=ee){this.turnId=e,this.openedAtMs=r,this.log=i}endpointerCommitted(e,r){this.decider===null&&(this.decider=e,this.silenceOnsetAtMs=r)}smartTurnResolved(e,r,i){this.log.debug("smart-turn P(complete)",{turnId:this.turnId,probability:e,inferenceMs:r,outcome:i})}smartTurnDegraded(e,r){this.log.debug("smart-turn DEGRADED to baseline - inference failed; this turn endpoints on baseline timers only",{turnId:this.turnId,inferenceMs:e,error:r instanceof Error?r.message:String(r)})}strongHoldRecognized(e){this.log.debug("lexical STRONG hold recognized - completeness vetoed, silence budget biases long",{turnId:this.turnId,cue:e})}strongHoldClearDebounced(e){this.log.debug("strong hold clear debounced - cue absent from one re-decode partial; veto holds pending a second",{turnId:this.turnId,cue:e})}heldEntered(e){this.heldOpen=!0,this.log.debug("floor-held mode entered - silence budgets escalate, stop cap suspended",{turnId:this.turnId,cue:e})}heldLadderRearmed(e){this.log.debug("held silence budget re-armed at the next ladder step",{turnId:this.turnId,budgetMs:e})}heldExited(e){this.heldOpen=!1,this.log.debug("floor-held mode exited",{turnId:this.turnId,reason:e})}evaluatorFired(e){this.log.debug("semantic evaluator fired - smart-turn resolved in a gated band during a live silence episode",{turnId:this.turnId,band:e})}evaluatorResolved(e,r,i,n){this.log.debug("semantic evaluator resolved",{turnId:this.turnId,verdict:e,confidence:r,latencyMs:i,outcome:n})}evaluatorFailed(e,r){this.log.debug("semantic evaluator failed - no signal; this episode endpoints as armed",{turnId:this.turnId,latencyMs:e,error:r instanceof Error?r.message:String(r)})}committed(e,r){this.commitAtMs===null&&(r==="ptt"&&this.heldOpen&&this.heldExited("ptt"),this.commitAtMs=e,r==="ptt"&&(this.decider??="ptt"))}asrFinalResolved(e,r){this.asrFinalAtMs===null&&(this.asrFinalAtMs=e,this.transcriptLength=r)}firstReasonerDelta(e){this.firstDeltaAtMs??=e}firstTtsAudio(e){this.firstAudioAtMs??=e}markAsideCommit(){this.asideCommit=!0}silence(e){this.silenceReason=e}asideWakeword(){this.log.debug("aside wakeword - the lexical gate opened; the utterance dispatches for the model's judgment",{turnId:this.turnId})}markDispatched(){this.dispatched=!0}actSettled(e){this.acts[e]=(this.acts[e]??0)+1}toolStarted(){this.commandStarted=!0}parked(e){this.parkedAtMs=e,this.log.debug("voice turn parked - audio cut; the reply waits for the barging utterance's first word or its blank verdict",{turnId:this.turnId})}resumed(e,r){this.wordlessCuts+=1;let i=this.parkedAtMs===null?null:e-this.parkedAtMs;this.parkedAtMs=null,this.log.debug("voice turn resumed - the barge carried no words; the reply continues",{turnId:this.turnId,verdict:r,parkedMs:i})}actCounts(){return{...this.acts}}completed(e,r,i=!1){if(this.terminal||(this.terminal=!0,!this.dispatched))return null;let n=this.firstDeltaAtMs===null?"lost":"completed";return i?this.hold(e,n,{},r):(this.summary(e,n,{},r),n)}cancelled(e,r,i=!1,n=!1){if(this.terminal||(this.terminal=!0,!this.dispatched||r==="client_shutdown"))return null;let s=n?"detached":this.firstAudioAtMs!==null||this.commandStarted?"barged":"superseded";return i?this.hold(e,s,{},void 0,n):(this.summary(e,s,{}),s)}failed(e,r,i=!1){return this.terminal||(this.terminal=!0,!this.dispatched)?null:i?this.hold(e,"failed",{reason:r}):(this.summary(e,"failed",{reason:r}),"failed")}hold(e,r,i,n,s=!1){let o=!1;return{fallback:r,commandStarted:this.commandStarted,detachedJob:s,acts:this.actCounts(),emit:(a,c)=>{o||(o=!0,this.summary(e,a,i,n,c))}}}summary(e,r,i,n,s){this.log.debug("voice turn summary",{turnId:this.turnId,outcome:r,...i,decider:this.decider,disposition:"dispatched",...this.asideCommit&&{floor:"aside"},...this.silenceReason!==null&&{silence:this.silenceReason},...Object.keys(this.acts).length>0&&{acts:{...this.acts}},...this.wordlessCuts>0&&{wordlessCuts:this.wordlessCuts},...s!==void 0&&{playedMs:s.playedMs,spokenCharacters:s.spokenCharacters,characters:s.characters},silenceToCommitMs:this.spanMs(this.silenceOnsetAtMs,this.commitAtMs),commitToFinalMs:this.spanMs(this.commitAtMs,this.asrFinalAtMs),finalToFirstDeltaMs:this.spanMs(this.asrFinalAtMs,this.firstDeltaAtMs),firstDeltaToFirstAudioMs:this.spanMs(this.firstDeltaAtMs,this.firstAudioAtMs),totalMs:e-this.openedAtMs,transcriptLength:this.transcriptLength,...n!==void 0&&n.rounds>0&&{toolRounds:n.rounds,toolMs:n.totalMs}})}asideAbsorbed(e){this.terminal||(this.terminal=!0,this.log.debug("voice turn absorbed in the aside - no reply spoken",{turnId:this.turnId,decider:this.decider,disposition:"absorbed",floor:"aside",silenceToCommitMs:this.spanMs(this.silenceOnsetAtMs,this.commitAtMs),commitToFinalMs:this.spanMs(this.commitAtMs,this.asrFinalAtMs),totalMs:e-this.openedAtMs,transcriptLength:this.transcriptLength}))}blank(e){this.terminal||(this.terminal=!0,this.log.debug("voice turn blank - terminated silently (no transcribed speech)",{turnId:this.turnId,decider:this.decider,silenceToCommitMs:this.spanMs(this.silenceOnsetAtMs,this.commitAtMs),commitToFinalMs:this.spanMs(this.commitAtMs,this.asrFinalAtMs),totalMs:e-this.openedAtMs,transcriptLength:this.transcriptLength}))}spanMs(e,r){return e===null||r===null?null:r-e}}});function Zbe(t){return Jbe.test(t)}function MJ(t){return t instanceof Ji?"channel_violation":"turn_failed"}var WN,NJ,RJ,zbe,Wbe,Jbe,hI,LJ=D(()=>{"use strict";cw();nm();HA();TJ();WN=16e3,NJ="pcm_s16le",RJ=WN*2/1e3,zbe="en",Wbe=["Jarvis"],Jbe=/\bjarvis\b/i;hI=class{deps;asrStream;ttsStream=null;reasonAbort=new AbortController;recordStartupFailure;phase="capturing";settled=!1;finalizing=!1;lastFrameAtMs;timeline;speech=[];openSpeech=null;openSeeded=!1;charsPushed=0;audioBytes=0;sawFirstAudio=!1;running=null;dispatched=!1;parked=!1;wakeParked=null;heldDelta=null;loopDone=!1;cutActId=null;cuts=[];portion={acts:0,charsPushed:0,audioBytes:0};partialWordsReported=!1;constructor(e){this.deps=e,this.lastFrameAtMs=e.startMs,this.timeline=new dI(e.turnId,e.clock.now()),e.controller.attachTelemetry?.(this.timeline),e.controller.setPartialStability?.(e.asrEngine.partialStability??"stable"),this.asrStream=e.asrEngine.open({sampleRate:WN,encoding:NJ,language:zbe,biasTerms:Wbe,emitPartials:!0}),this.asrStream.onTranscript(r=>this.handleTranscript(r)),this.asrStream.onError(r=>this.asrFailed(r)),e.controller.onCommit(()=>this.finalize(this.lastFrameAtMs,"controller")),e.emit({type:"state",turnId:e.turnId,state:"processing"})}get turnId(){return this.deps.turnId}isParked(){return this.parked}hasCommitted(){return this.finalizing}pushFrame(e,r){this.phase!=="capturing"||this.settled||(this.lastFrameAtMs=r,this.asrStream.pushAudio(e),this.deps.controller.onAudioFrame(e))}endAudio(e){this.finalize(e,"ptt")}cancel(e){if(this.settled)return;this.settled=!0,this.phase="cancelled",this.deps.controller.dispose(),this.reasonAbort.abort(e==="client_shutdown"?void 0:new ll),this.asrStream.abort();let r=this.ttsStream;this.ttsStream=null,r?.cancel();let i=this.heldDelta;if(this.heldDelta=null,this.releaseParked(),e!=="client_shutdown"){if(this.audioBytes===this.portion.audioBytes)for(let o of this.speech.slice(this.portion.acts))o.preamble!==!0&&this.deps.reasoner.settleSpeech(o.actId,{kind:"unspoken"});i?.type==="act.start"&&i.channel==="speech"&&i.preamble!==!0&&this.deps.reasoner.settleSpeech(i.actId,{kind:"unspoken"})}i?.type==="text"&&this.openSpeech!==null&&!this.openSeeded&&(this.openSpeech.characters+=i.text.length);let n=e!=="client_shutdown"&&this.turnDetached(),s=this.terminalRecord();for(let o of this.cuts)this.trySettleCut(o,!0);this.noteTerminal(this.timeline.cancelled(this.deps.clock.now(),e,s.hold,n),s),this.deps.onComplete()}park(){if(this.settled||this.parked||!this.dispatched)return!1;let e=this.ttsStream;return this.ttsStream=null,e?.cancel(),this.deps.segmenter.flush(),this.cutActId=this.openSpeech?.actId??null,this.cuts.push({from:this.portion.acts,to:this.speech.length,charsPushedFrom:this.portion.charsPushed,audioBytesFrom:this.portion.audioBytes,charsPushed:this.charsPushed,audioBytes:this.audioBytes,openActId:this.cutActId,resumed:!1,settled:!1}),this.loopDone?(this.finishDone(),!0):(this.parked=!0,this.timeline.parked(this.deps.clock.now()),!0)}resume(e){if(!this.parked||this.settled)return;this.parked=!1;let r=this.cuts.at(-1);r!==void 0&&(r.resumed=!0,this.portion={acts:r.to,charsPushed:r.charsPushed,audioBytes:r.audioBytes}),this.timeline.resumed(this.deps.clock.now(),e),this.deps.emit({type:"state",turnId:this.deps.turnId,state:"responding"}),r!==void 0&&this.trySettleCut(r),this.releaseParked()}acceptCutReport(e){if(e.end!=="cut")return!1;let r=this.cuts.find(i=>i.report===void 0&&!i.settled);return r===void 0?!1:(r.report=e,this.trySettleCut(r),!0)}trySettleCut(e,r=!1){if(!(e.settled||e.report===void 0||this.parked||!e.resumed)&&!(!r&&e.openActId!==null&&this.openSpeech?.actId===e.openActId)){e.settled=!0;try{this.deps.onCutSettle?.({turnId:this.deps.turnId,ledger:this.cutLedger(e),report:e.report})}catch{}}}releaseParked(){this.parked=!1;let e=this.wakeParked;this.wakeParked=null,e?.()}untilUnparked(){return this.parked?new Promise(e=>{this.wakeParked=e}):Promise.resolve()}terminalRecord(){let e=this.cuts.at(-1);return e!==void 0&&!e.settled&&!e.resumed?(e.settled=!0,{hold:e.to>e.from,ledger:this.cutLedger(e),...e.report!==void 0&&{report:e.report}}):{hold:this.speech.length>this.portion.acts,ledger:this.portionLedger()}}cutLedger(e){return{acts:this.speech.slice(e.from,e.to).map(r=>({...r})),charsPushed:e.charsPushed-e.charsPushedFrom,audioMs:(e.audioBytes-e.audioBytesFrom)/RJ}}portionLedger(){return{acts:this.speech.slice(this.portion.acts).map(e=>({...e})),charsPushed:this.charsPushed-this.portion.charsPushed,audioMs:(this.audioBytes-this.portion.audioBytes)/RJ}}noteWords(e){if(e==="partial"){if(this.partialWordsReported)return;this.partialWordsReported=!0}try{this.deps.onFirstWords?.(e)}catch{}}turnDetached(){try{return this.deps.turnDetached?.()??!1}catch{return!1}}unwound(){return this.running??Promise.resolve()}handleTranscript(e){this.phase!=="capturing"||this.settled||e.isFinal||(this.deps.emit({type:"transcript.partial",turnId:this.deps.turnId,text:e.text}),this.deps.controller.onPartial(e.text),e.text.trim()!==""&&this.noteWords("partial"))}finalize(e,r){this.phase!=="capturing"||this.finalizing||this.settled||(this.finalizing=!0,this.timeline.committed(this.deps.clock.now(),r),this.deps.controller.dispose(),this.running=this.finalizeAndRespond(e,r))}async finalizeAndRespond(e,r){let i;try{i=await this.asrStream.end()}catch(o){if(this.settled)return;this.asrFailed(o);return}if(this.settled)return;this.timeline.asrFinalResolved(this.deps.clock.now(),i.text.length);let n=this.deps.floor;if(r==="ptt"&&n?.floorState()==="aside"&&this.releaseFloor(n,"explicit"),i.text.trim()===""){this.finishBlank();return}this.noteWords("final"),this.phase="responding";let s=this.buildUserTurn(i.text,e);if(n?.floorState()==="aside")return this.runAside(s,n);if(await this.awaitDispatchGate(),!this.settled){this.emitDispatch(s);try{await this.respond(s.text)}catch(o){if(this.settled)return;this.finishError(MJ(o),o);return}this.settled||this.finishDone()}}async runAside(e,r){if(this.timeline.markAsideCommit(),!Zbe(e.text)){this.finishAsideAbsorbed(e,r);return}if(this.timeline.asideWakeword(),this.releaseFloor(r,"resume"),await this.awaitDispatchGate(),!this.settled){this.emitDispatch(e);try{await this.respond(e.text)}catch(i){if(this.settled)return;this.finishError(MJ(i),i);return}this.settled||this.finishDone()}}releaseFloor(e,r){try{e.onFloorReleased(r)}catch{}}emitDispatch(e){this.dispatched=!0,this.timeline.markDispatched();try{this.deps.onDispatched?.()}catch{}this.deps.emit({type:"turn.final",turnId:this.deps.turnId,turn:e,...this.deps.commandId!==void 0&&{commandId:this.deps.commandId}}),this.deps.emit({type:"state",turnId:this.deps.turnId,state:"responding"})}noteSilence(e){try{this.deps.floor?.onSilence(e)}catch{}}noteOutcome(e){if(e!==null)try{this.deps.onOutcome?.(e,this.timeline.actCounts())}catch{}}noteTerminal(e,r){if(e!==null){if(typeof e=="string"){this.noteOutcome(e);return}if(this.deps.onHeld===void 0){e.emit(e.fallback),this.noteOutcome(e.fallback);return}try{this.deps.onHeld({turnId:this.deps.turnId,held:e,ledger:r.ledger,...r.report!==void 0&&{report:r.report}})}catch{}}}async awaitDispatchGate(){if(this.deps.beforeDispatch!==void 0)try{await this.deps.beforeDispatch()}catch{}}async respond(e){this.recordStartupFailure=this.deps.reasoner.beforeRunFailure(e,this.deps.turnId,this.reasonAbort.signal);let r=!1;if(this.ensureTts(),this.settled)return;let i=this.deps.reasoner.run(e,this.reasonAbort.signal,{register:"voice",turnId:this.deps.turnId});for await(let s of i){if(this.settled||(r||(r=!0,this.timeline.firstReasonerDelta(this.deps.clock.now())),this.parked&&(this.heldDelta=s,await this.untilUnparked(),this.heldDelta=null,this.settled)))return;this.dispatch(s)}if(this.loopDone=!0,this.settled)return;if(this.parked){this.parked=!1;return}for(let s of this.deps.segmenter.flush())this.push(s);let n=this.ttsStream;n!==null&&await n.end()}dispatch(e){if(e.type==="act.start"){e.channel==="speech"&&(this.openSpeech={actId:e.actId,characters:e.characters??0,...e.preamble===!0&&{preamble:!0}},this.openSeeded=e.characters!==void 0,this.speech.push(this.openSpeech)),UA(r=>this.deps.emit(r),this.deps.turnId,e);return}if(e.type==="act.end"){for(let r of this.deps.segmenter.flush())this.push(r);if(this.openSpeech?.actId===e.actId&&(this.openSpeech.characters=e.characters,e.notificationId!==void 0&&(this.openSpeech.notificationId=e.notificationId),this.openSpeech=null),UA(r=>this.deps.emit(r),this.deps.turnId,e),e.preamble!==!0&&this.timeline.actSettled(e.act),e.reason!==void 0&&(this.timeline.silence(e.reason),this.noteSilence(e.reason)),e.actId===this.cutActId){this.cutActId=null;for(let r of this.cuts)this.trySettleCut(r)}return}if(e.type!=="text"){if(e.type==="tool.start"){for(let r of this.deps.segmenter.flush())this.push(r);this.timeline.toolStarted()}Qp(r=>this.deps.emit(r),this.deps.turnId,e);return}if(this.openSpeech!==null&&!this.openSeeded&&(this.openSpeech.characters+=e.text.length),!(this.cutActId!==null&&this.openSpeech?.actId===this.cutActId)){this.deps.emit({type:"response.delta",turnId:this.deps.turnId,text:e.text});for(let r of this.deps.segmenter.push(e.text))this.push(r)}}push(e){let r;try{r=this.ensureTts()}catch(i){throw this.finishError("turn_failed",i),i}this.charsPushed+=e.length,r.pushText(e)}ensureTts(){if(this.ttsStream!==null)return this.ttsStream;let e=this.deps.ttsEngine.speak({voice:this.deps.voice,sampleRate:WN,encoding:NJ});return this.ttsStream=e,e.onAudio(r=>{this.settled||e!==this.ttsStream||(this.audioBytes+=r.byteLength,this.sawFirstAudio||(this.sawFirstAudio=!0,this.timeline.firstTtsAudio(this.deps.clock.now())),this.deps.emit({type:"response.audio",turnId:this.deps.turnId,audio:r}))}),e.onError(r=>{e===this.ttsStream&&this.finishError("turn_failed",r)}),e}finishBlank(){this.settled||(this.settled=!0,this.timeline.blank(this.deps.clock.now()),this.deps.onComplete())}finishAsideAbsorbed(e,r){if(!this.settled){this.settled=!0,this.phase="cancelled",this.timeline.asideAbsorbed(this.deps.clock.now()),this.deps.emit({type:"turn.final",turnId:this.deps.turnId,turn:{...e,disposition:"absorbed"},...this.deps.commandId!==void 0&&{commandId:this.deps.commandId}}),this.deps.onComplete();try{r.onAbsorbed()}catch{}}}finishDone(){if(this.settled)return;this.settled=!0;let e=this.terminalRecord();for(let r of this.cuts)this.trySettleCut(r,!0);this.noteTerminal(this.timeline.completed(this.deps.clock.now(),this.deps.reasoner.lastTurnTools(),e.hold),e),this.deps.emit({type:"response.done",turnId:this.deps.turnId}),this.deps.onComplete()}asrFailed(e){if(this.settled)return;let r=e instanceof Error?e:new Error(String(e));try{this.deps.onAsrFailure?.(r)}catch{}this.finishError(r instanceof fn?"asr_unavailable":"turn_failed",e)}finishError(e,r){if(this.settled)return;this.settled=!0,this.deps.controller.dispose(),this.recordStartupFailure?.(),this.deps.reasoner.noteFailure(this.deps.turnId),this.reasonAbort.abort(new ul);let i=this.ttsStream;this.ttsStream=null,i?.cancel(),this.heldDelta=null,this.releaseParked();let n=this.terminalRecord();for(let s of this.cuts)this.trySettleCut(s,!0);this.noteTerminal(this.timeline.failed(this.deps.clock.now(),e,n.hold),n),this.deps.emit({type:"error",turnId:this.deps.turnId,...this.deps.commandId!==void 0&&{commandId:this.deps.commandId},reason:e,message:r instanceof Error?r.message:String(r)}),this.deps.onComplete()}buildUserTurn(e,r){return{source:"voice",turnId:this.deps.turnId,sessionId:this.deps.sessionId,deviceId:this.deps.deviceId,text:e,startMs:this.deps.startMs,endMs:r,...this.deps.projectId!==void 0&&{projectId:this.deps.projectId}}}}});import{randomUUID as JN}from"node:crypto";import{realpathSync as Xbe}from"node:fs";import{homedir as Kbe}from"node:os";function UJ(t){return`${(t/1e3).toFixed(1)}s`}function rQe(t){return t.length<=48?t:`${t.slice(0,48)}...`}function nQe(t){switch(t.state){case"none":return"not yet announced";case"shown":return"announced (shown)";case"played":return"announced, played in full";case"cut":return`announce cut at ${t.n} of ${t.m}: not fully heard`;case"unplayed":return"announce never played"}}function oQe(t){if(t.role!=="user"&&t.role!=="assistant")return null;if("toolCalls"in t){let e=t.toolCalls.filter(r=>sQe.has(r.name)).map(r=>typeof r.input=="object"&&r.input!==null?r.input.text:void 0).filter(r=>typeof r=="string"&&r.length>0);return e.length>0?{role:"assistant",text:e.join(" ")}:null}return t.content===""?null:{role:t.role,text:t.content}}var FJ,eQe,tQe,fI,iQe,ZN,bu,Gh,gI,sQe,OJ=D(()=>{"use strict";Tt();Gs();FA();cw();Zp();nm();$w();xO();kW();RW();JT();rN();UW();zw();$W();PW();GW();YW();HA();nN();OA();na();MN();PN();GN();qN();zN();Kp();LJ();FJ=250,eQe=4,tQe=1,fI=3e3;iQe=6,ZN=45e3,bu=class extends Error{constructor(e){super(e),this.name="ReasonerUnavailableError"}},Gh=class extends Error{constructor(e){super(e),this.name="VoiceUnavailableError"}},gI=class{deps;sessionId;deviceId;projectId;queue=new WE;closed=!1;closing=null;eventsConsumed=!1;inFlight=!1;reasoner=null;reasonerRoute=null;turnAbort=null;capturing=null;responding=null;parkBound=null;parkedAtMs=0;parkHeldFor=null;voiceTurnFailed=!1;asrUnavailable=null;mintedTurnId=null;voiceEngines=null;clock;newTurnController;newSmartTurnInference;newFrameClassifier;newTurnEvaluator;newSegmenter;smartTurnInference=null;frameClassifier=null;turnEvaluator=void 0;floorState="engaged";floorCounts={noResponse:{addressed_to_other:0,self_talk:0,no_reply_needed:0},asideEntries:0,asideExits:{resume:0,decay:0,explicit:0}};turnCounts={outcomes:{completed:0,superseded:0,barged:0,failed:0,lost:0,detached:0},acts:{}};jobs;notifications=new YE;playouts=new Map;playoutWaiters=[];cutUnwinding=null;asideDecayTimer=null;lastSpeechAtMs=0;cwd;scratch;constructor(e,r,i){this.deps=i,this.sessionId=e,this.deviceId=r.deviceId,this.projectId=r.projectId,this.cwd=r.launchDir??Kbe(),this.scratch=new pu(e,ee),this.clock=i.clock??new Gi,this.jobs=new em({now:()=>this.clock.now(),logger:ee,onDetached:n=>this.jobDetached(n),onSettled:n=>this.jobSettled(n)}),this.newSmartTurnInference=i.createSmartTurnInference??(()=>new Hh),this.newFrameClassifier=i.createFrameClassifier??(()=>new PA(new nc)),this.newTurnEvaluator=i.createTurnEvaluator??(n=>new xu(n)),this.newTurnController=i.createTurnController??(n=>{let s=this.ensureFrameClassifier();return s.reset?.(),new Ph(n,this.ensureSmartTurnInference(),{},this.speechObservingClassifier(s),this.semanticHook())}),this.newSegmenter=i.createSegmenter??(()=>new Nh),this.emit({type:"session.ready"})}async send(e){let{commandId:r}=e;if(this.closed)throw new Sr(r,"closed");if(e.sessionId!==this.sessionId)throw new Sr(r,"invalid","command sessionId does not match session");switch(e.type){case"input.text":this.acceptTextInput(e);return;case"input.audio.frame":this.acceptAudioFrame(e);return;case"input.audio.end":this.endAudioInput(e);return;case"turn.cancel":this.cancelTurn(e);return;case"turn.playout":this.acceptPlayout(e);return;case"session.close":return this.close();case"approval.resolve":throw new Sr(r,"unsupported");default:throw new Sr(r,"invalid")}}events(){if(this.eventsConsumed)throw new Error("CoreSession.events() supports a single consumer in v0.1");return this.eventsConsumed=!0,this.queue.drain()}close(){if(this.closed)return this.closing??Promise.resolve();this.closed=!0;let e=[],r;this.closing=new Promise(i=>{r=()=>{Promise.all(e).then(()=>i())}});try{this.turnAbort?.abort(),this.clearParkBound(),this.responding?.cancel("client_shutdown"),this.capturing?.cancel("client_shutdown");let i=this.jobs.cancelAll("shutdown");i>0&&(ee.debug("background jobs cancelled at shutdown",{count:i}),e.push(this.jobs.drain().catch(()=>{}))),this.asideDecayTimer!==null&&(this.clock.clearTimer(this.asideDecayTimer),this.asideDecayTimer=null);let n=this.smartTurnInference;this.smartTurnInference=null;let s=this.frameClassifier;this.frameClassifier=null;let o=this.turnEvaluator;this.turnEvaluator=null,this.settleHeldAtClose(),this.logFloorSummary(),this.logTurnSummary(),this.scratch.dispose(),this.queue.close(),n&&e.push(n.dispose().catch(()=>{})),s?.dispose&&e.push(s.dispose().catch(()=>{})),o?.dispose&&e.push(o.dispose().catch(()=>{}))}finally{r()}return this.closing}acceptTextInput(e){if(e.text.trim().length===0)throw new Sr(e.commandId,"invalid","input.text requires non-empty text");if(this.inFlight)throw new Sr(e.commandId,"backpressured","a turn is already in progress (one turn at a time in v0.1)");this.inFlight=!0,this.exitAside("explicit");let r=JN();this.emit({type:"turn.accepted",turnId:r,clientTurnId:e.clientTurnId,source:"text",commandId:e.commandId}),this.emit({type:"turn.final",turnId:r,turn:this.toTextUserTurn(r,e),commandId:e.commandId}),this.runTextTurn(r,e)}async runTextTurn(e,r){let i=new AbortController;this.turnAbort=i;let n=!1,s=!1,o={};try{let a=this.ensureReasoner();if(await this.awaitDispatchReady(),this.closed)return;this.emit({type:"state",turnId:e,state:"responding"}),n=!0;for await(let c of a.run(r.text,i.signal,{turnId:e}))s=!0,c.type==="text"?this.emit({type:"response.delta",turnId:e,text:c.text}):c.type==="tool.start"||c.type==="tool.result"?Qp(l=>this.emit(l),e,c):(c.type==="act.end"&&(c.preamble!==!0&&(o[c.act]=(o[c.act]??0)+1),c.reason!==void 0&&this.countSilence(c.reason),c.notificationId!==void 0&&this.notifications.annotate(c.notificationId,{state:"shown"})),UA(l=>this.emit(l),e,c));this.closed||this.recordOutcome(s?"completed":"lost",o),this.emit({type:"response.done",turnId:e})}catch(a){n&&!this.closed&&this.recordOutcome("failed",o);let c=a instanceof bu?"no_text_route":a instanceof Ji?"channel_violation":"turn_failed";this.emit({type:"error",turnId:e,commandId:r.commandId,reason:c,message:a instanceof Error?a.message:String(a)})}finally{this.inFlight=!1,this.turnAbort=null}}acceptAudioFrame(e){if(this.capturing){this.capturing.pushFrame(e.audio,e.atMs);return}if(this.asrUnavailable!==null||this.voiceTurnFailed)return;if(this.inFlight&&this.responding?.isParked()!==!0)throw new Sr(e.commandId,"backpressured","a turn is already in progress (one turn at a time in v0.1)");this.inFlight=!0;let r=JN();this.emit({type:"turn.accepted",turnId:r,clientTurnId:e.clientTurnId,source:"voice",commandId:e.commandId}),this.mintedTurnId=r;let i=this.resolveVoicePipeline(r,e.commandId);if(!i){this.voiceTurnFailed=!0;return}let n=this.floorHook(),s=new hI({turnId:r,sessionId:this.sessionId,deviceId:this.deviceId,...this.projectId!==void 0&&{projectId:this.projectId},commandId:e.commandId,startMs:e.atMs,asrEngine:i.engines.asrEngine,ttsEngine:i.engines.ttsEngine,voice:i.engines.voice,reasoner:i.reasoner,controller:this.newTurnController(this.clock),segmenter:this.newSegmenter(),clock:this.clock,emit:o=>this.emit(o),floor:n,onOutcome:(o,a)=>this.recordOutcome(o,a),onHeld:o=>this.holdTurn(o),onCutSettle:o=>this.settleCut(o),turnDetached:()=>this.jobs.hasRunningJobFrom(r),beforeDispatch:()=>this.awaitDispatchReady(),onDispatched:()=>this.turnDispatched(s),onFirstWords:o=>this.wordsHeard(o),onAsrFailure:o=>this.noteAsrFailure(o),onComplete:()=>this.completeVoiceTurn(s)});this.capturing=s,this.smartTurnInference?.prewarm?.(),this.frameClassifier?.prewarm?.(),s.pushFrame(e.audio,e.atMs)}endAudioInput(e){if(this.voiceTurnFailed){this.resetVoiceFailure();return}if(this.capturing){this.capturing.endAudio(e.atMs);return}this.exitAside("explicit")}cancelTurn(e){let r=e.turnId;if(this.voiceTurnFailed&&(r===void 0||r===this.mintedTurnId)){this.resetVoiceFailure();return}let i=r===void 0?this.capturing??this.responding:this.capturing?.turnId===r?this.capturing:this.responding?.turnId===r?this.responding:null;i!==null&&(e.reason==="barge_in"&&i===this.responding&&(i.isParked()||this.parkTurn(i))||this.abortTurn(i,e.reason))}abortTurn(e,r){if(e===this.responding){this.clearParkBound();let i=e.unwound().then(()=>{this.cutUnwinding===i&&(this.cutUnwinding=null),this.wakePlayoutWaiters()});this.cutUnwinding=i}e.cancel(r)}parkTurn(e){return e.park()?(this.clearParkBound(),e.isParked()&&(this.parkedAtMs=this.clock.now(),this.armParkBound(fI)),!0):!1}armParkBound(e){this.parkBound=this.clock.setTimer(e,()=>{this.parkBound=null,this.parkBoundElapsed()})}parkBoundElapsed(){if(this.responding?.isParked()!==!0)return;let r=this.capturing;if(r?.hasCommitted()===!0&&this.parkHeldFor!==r){this.parkHeldFor=r,this.armParkBound(fI);return}let i=this.clock.now()-Math.max(this.parkedAtMs,this.lastSpeechAtMs);i>=fI?this.resumeParked("no_words"):this.armParkBound(fI-i)}resumeParked(e){if(this.closed)return;let r=this.responding;if(r?.isParked()!==!0)return;let i=this.parkHeldFor;this.clearParkBound(),r.resume(e);let n=this.capturing;e==="no_words"&&n!==null&&(n.hasCommitted()?n===i&&(ee.debug("the barging utterance committed but its final never came - retired, the reply resumes",{turnId:n.turnId}),n.cancel("barge_in")):(ee.debug("the capturing turn the wordless barge opened is retired - no verdict could come",{turnId:n.turnId}),n.cancel("barge_in")))}clearParkBound(){this.parkHeldFor=null,this.parkBound!==null&&(this.clock.clearTimer(this.parkBound),this.parkBound=null)}wordsHeard(e){let r=this.responding;r!==null&&(ee.debug("the barging utterance carries words - the reply in flight yields",{stage:e,parked:r.isParked()}),this.abortTurn(r,"barge_in"))}turnDispatched(e){this.responding!==null&&this.responding!==e&&this.abortTurn(this.responding,"barge_in"),this.capturing===e&&(this.capturing=null),this.responding=e}noteAsrFailure(e){e instanceof fn&&(this.asrUnavailable=e.category,ee.debug("ASR terminally unavailable - voice input latched off for this session",{category:e.category}))}completeVoiceTurn(e){this.dropReportOnly(e.turnId),this.capturing===e?(this.capturing=null,this.resumeParked("blank")):this.responding===e&&(this.responding=null,this.clearParkBound()),this.inFlight=this.capturing!==null||this.responding!==null}dropReportOnly(e){if(e===null)return;let r=this.playouts.get(e);r!==void 0&&r.record===void 0&&this.playouts.delete(e)}resetVoiceFailure(){this.dropReportOnly(this.mintedTurnId),this.voiceTurnFailed=!1,this.mintedTurnId=null}resolveVoicePipeline(e,r){let i;try{i=this.ensureVoiceEngines()}catch(s){return this.emitTurnError(e,r,"no_voice_route",s),null}let n;try{n=this.ensureReasoner()}catch(s){let o=s instanceof bu?"no_text_route":"turn_failed";return this.emitTurnError(e,r,o,s),null}return{engines:i,reasoner:n}}ensureVoiceEngines(){if(this.voiceEngines)return this.voiceEngines;if(!this.deps.voiceRegistry)throw new Gh("voice is not available in this core build");let e=this.deps.configService.resolved(),r=e.routes?.stt,i=e.routes?.tts;if(!r||!i)throw new Gh("no voice route configured - run 'jarvis init' to set routes.stt and routes.tts");let n=!e.secrets?.[r.provider]&&Yr(r.provider),s=!e.secrets?.[i.provider]&&Yr(i.provider);if(n||s){let l=n?r.provider:i.provider;throw new Gh(`no API key for voice provider '${l}' - run 'jarvis init' to add it`)}let o=this.deps.voiceRegistry.asrEngine({provider:r.provider,model:r.model,...r.url!==void 0&&{url:r.url}},e.secrets?.[r.provider]??""),a=this.deps.voiceRegistry.ttsEngine({provider:i.provider,model:i.model},e.secrets?.[i.provider]??""),c=this.deps.voiceIdentity??jN(i.voiceId);return this.voiceEngines={asrEngine:o,ttsEngine:a,voice:c},this.voiceEngines}ensureSmartTurnInference(){return this.smartTurnInference??=this.newSmartTurnInference(),this.smartTurnInference}ensureFrameClassifier(){return this.frameClassifier??=this.newFrameClassifier(),this.frameClassifier}semanticHook(){if(this.turnEvaluator===void 0){let r=this.reasonerRoute;this.turnEvaluator=r?.provider==="anthropic"?this.newTurnEvaluator(r.key):null}return this.turnEvaluator===null?void 0:{evaluator:this.turnEvaluator,recentTurns:()=>{let r=[];for(let i of this.reasoner?.historySnapshot()??[]){let n=oQe(i);n&&r.push(n)}return r.slice(-iQe)}}}floorHook(){return{floorState:()=>this.floorState,onSilence:e=>{this.countSilence(e),e==="addressed_to_other"&&this.enterAside(e)},onAbsorbed:()=>this.noteSpeech(),onFloorReleased:e=>this.exitAside(e)}}enterAside(e){this.floorState!=="aside"&&(this.floorState="aside",this.floorCounts.asideEntries+=1,this.noteSpeech(),this.armAsideDecay(ZN),ee.debug("aside entered - utterances now absorb by default",{reason:e}),this.emit({type:"state",state:"aside"}))}exitAside(e){this.floorState==="aside"&&(this.floorState="engaged",this.floorCounts.asideExits[e]+=1,this.asideDecayTimer!==null&&(this.clock.clearTimer(this.asideDecayTimer),this.asideDecayTimer=null),ee.debug("aside exited",{reason:e}))}countSilence(e){this.floorCounts.noResponse[e]+=1}recordOutcome(e,r){this.turnCounts.outcomes[e]+=1;for(let[i,n]of Object.entries(r))this.turnCounts.acts[i]=(this.turnCounts.acts[i]??0)+n}jobDetached(e){ee.debug("background job detached",{jobId:e.jobId,tool:e.tool,origin:e.origin}),!this.closed&&this.emit({type:"job.detached",...e.turnId!==void 0&&{turnId:e.turnId},jobId:e.jobId,tool:e.tool})}jobSettled(e){this.reasoner?.settleResult(e.record.jobId,e.result,e.isError),ee.debug("background job settled",{jobId:e.record.jobId,tool:e.record.tool,outcome:e.outcome,durationMs:Math.round(e.durationMs)}),!this.closed&&(e.outcome==="ok"?this.notifications.add(`${e.record.tool} job ${e.record.jobId} finished ok in ${UJ(e.durationMs)}`,"normal"):e.outcome==="failed"&&this.notifications.add(`${e.record.tool} job ${e.record.jobId} FAILED after ${UJ(e.durationMs)}`,"high"),this.emit({type:"job.result",...e.record.turnId!==void 0&&{turnId:e.record.turnId},jobId:e.record.jobId,tool:e.record.tool,outcome:e.outcome,durationMs:Math.round(e.durationMs)}))}holdTurn(e){if(this.closed){e.held.emit(e.held.fallback);return}let r=this.playouts.get(e.turnId)??{};r.record=e,e.report!==void 0&&r.report===void 0&&(r.report=e.report),this.playouts.set(e.turnId,r),this.joinPlayout(e.turnId)}acceptPlayout(e){let r={playedMs:e.playedMs,end:e.end},i=this.responding?.turnId===e.turnId?this.responding:this.capturing?.turnId===e.turnId?this.capturing:null;if(i?.acceptCutReport(r)===!0)return;let n=this.playouts.get(e.turnId);if(n===void 0&&i===null){ee.debug("playout report for a turn with no held record - nothing to settle",{end:e.end});return}let s=n??{};s.report===void 0&&(s.report=r,this.playouts.set(e.turnId,s),this.joinPlayout(e.turnId))}joinPlayout(e){let r=this.playouts.get(e);if(r?.record===void 0||r.report===void 0)return;this.playouts.delete(e);let{held:i,ledger:n}=r.record,{end:s}=r.report,{playedMs:o,boundary:a,characters:c}=this.settleReport(n,r.report),l=i.fallback==="failed"?"failed":s==="cut"?i.detachedJob?"detached":o>0||i.commandStarted?"barged":"superseded":i.fallback;i.emit(l,{playedMs:o,spokenCharacters:a,characters:c}),this.recordOutcome(l,i.acts),this.wakePlayoutWaiters()}settleCut(e){let{playedMs:r,boundary:i,characters:n}=this.settleReport(e.ledger,e.report);ee.debug("voice turn cut settled - the audio was cut; the reply continues",{turnId:e.turnId,playedMs:r,spokenCharacters:i,characters:n})}settleReport(e,r){let{end:i}=r,n=Number.isFinite(r.playedMs)&&r.playedMs>0?r.playedMs:0,s=qw(e),a=i==="drained"&&n>0&&n>=e.audioMs-tQe?s:aO(n,e),c=cO(e.acts,a),l=new Set(e.acts.filter(u=>u.preamble===!0).map(u=>u.actId));for(let u of c){if(l.has(u.actId)){this.reasoner?.settleAnnouncement(u.actId,u);continue}this.reasoner?.settleSpeech(u.actId,u)}for(let u of e.acts){if(u.notificationId===void 0)continue;let d=c.find(h=>h.actId===u.actId);d!==void 0&&this.notifications.annotate(u.notificationId,d.kind==="spoken"?{state:"played"}:d.kind==="partial"?{state:"cut",n:d.n,m:d.m}:{state:"unplayed"})}return{playedMs:n,boundary:a,characters:s}}settleHeldAtClose(){for(let e of[...this.playouts.keys()])this.releaseHeld(e);this.playouts.clear(),this.cutUnwinding=null,this.wakePlayoutWaiters()}releaseHeld(e){let r=this.playouts.get(e);this.playouts.delete(e),r?.record!==void 0&&(r.record.held.emit(r.record.held.fallback),this.recordOutcome(r.record.held.fallback,r.record.held.acts))}expireOutstanding(){this.cutUnwinding=null;let e=[];for(let[r,i]of this.playouts)i.record!==void 0&&i.report===void 0&&(i.stale=!0,e.push(r));for(let r of e.slice(0,Math.max(0,e.length-eQe)))this.releaseHeld(r)}awaitDispatchReady(){return this.playoutOutstanding()?new Promise(e=>{let r=!1,i=()=>{r||(r=!0,this.clock.clearTimer(s),this.playoutWaiters=this.playoutWaiters.filter(o=>o!==n),e())},n=()=>{this.playoutOutstanding()||i()},s=this.clock.setTimer(FJ,()=>{ee.debug("dispatch proceeded before the last playout settled",{boundMs:FJ,awaitingReport:[...this.playouts.values()].filter(o=>o.record!==void 0&&o.report===void 0&&o.stale!==!0).length,cutUnwinding:this.cutUnwinding!==null}),this.expireOutstanding(),i()});this.playoutWaiters.push(n)}):Promise.resolve()}playoutOutstanding(){if(this.cutUnwinding!==null)return!0;for(let e of this.playouts.values())if(e.record!==void 0&&e.report===void 0&&e.stale!==!0)return!0;return!1}wakePlayoutWaiters(){for(let e of[...this.playoutWaiters])e()}sessionStateBlock(){let e=this.jobs.list(),r=this.notifications.list();if(e.length===0&&r.length===0)return;let i=["Session state:"];if(e.length>0){i.push(`- Background jobs (${e.length} of ${jw} slots; the [bracketed] value is cancel_job's jobId):`);let n=this.clock.now();for(let s of e){let o=Math.max(0,Math.round((n-s.startedAtMs)/1e3)),a=s.display!==void 0?` "${rQe(s.display)}"`:"",c=s.cancelling?"cancelling":`running, ${o}s`;i.push(` - [${s.jobId}] ${s.tool}${a} - ${c}`)}}if(r.length>0){i.push("- Queued notifications (announce with say_notification - the record then shows whether it played; dismiss_notification discards silently; when unsure whether one was heard, keep it):");for(let n of r)i.push(` - [${n.id}, ${n.priority}] ${n.text} - ${nQe(n.announce)}`)}return i.join(`
392
+ `,ms=class extends Error{status;constructor(e,r){super(e),this.status=r,this.name="TurnEvaluatorError"}},xu=class{key;fetchImpl;timeoutMs;constructor(e,r=fetch,i=Obe){this.key=e,this.fetchImpl=r,this.timeoutMs=i}async evaluate(e,r){let i={model:Ube,max_tokens:Hbe,temperature:0,stop_sequences:Vbe,system:Ybe,messages:[{role:"user",content:qbe(e)},{role:"assistant",content:kJ}]},n;try{n=await this.fetchImpl($be,{method:"POST",headers:{"x-api-key":this.key,"anthropic-version":Pbe,"content-type":"application/json"},body:JSON.stringify(i),signal:AbortSignal.any([r,AbortSignal.timeout(this.timeoutMs)])})}catch(o){throw o instanceof Error&&(o.name==="TimeoutError"||o.name==="AbortError")?o:new ms(qt(o,this.key))}if(!n.ok)throw new ms(`turn evaluator request failed (HTTP ${n.status})`,n.status);let s;try{s=await n.json()}catch{throw new ms("turn evaluator response body was not JSON")}return jbe(s)}}});function jN(t){return t===void 0?AI:{id:AI.id,engineVoice:{...AI.engineVoice,"elevenlabs-flash":{kind:"preset",voiceId:t},"elevenlabs-v3":{kind:"preset",voiceId:t}}}}var Vh,AI,zN=D(()=>{"use strict";Vh="21m00Tcm4TlvDq8ikWAM",AI={id:"jarvis-primary",engineVoice:{"elevenlabs-flash":{kind:"preset",voiceId:Vh},"elevenlabs-v3":{kind:"preset",voiceId:Vh}}}});var dI,TJ=D(()=>{"use strict";Tt();dI=class{turnId;openedAtMs;log;terminal=!1;heldOpen=!1;asideCommit=!1;silenceReason=null;dispatched=!1;acts={};commandStarted=!1;wordlessCuts=0;parkedAtMs=null;decider=null;silenceOnsetAtMs=null;commitAtMs=null;asrFinalAtMs=null;transcriptLength=null;firstDeltaAtMs=null;firstAudioAtMs=null;constructor(e,r,i=ee){this.turnId=e,this.openedAtMs=r,this.log=i}endpointerCommitted(e,r){this.decider===null&&(this.decider=e,this.silenceOnsetAtMs=r)}smartTurnResolved(e,r,i){this.log.debug("smart-turn P(complete)",{turnId:this.turnId,probability:e,inferenceMs:r,outcome:i})}smartTurnDegraded(e,r){this.log.debug("smart-turn DEGRADED to baseline - inference failed; this turn endpoints on baseline timers only",{turnId:this.turnId,inferenceMs:e,error:r instanceof Error?r.message:String(r)})}strongHoldRecognized(e){this.log.debug("lexical STRONG hold recognized - completeness vetoed, silence budget biases long",{turnId:this.turnId,cue:e})}strongHoldClearDebounced(e){this.log.debug("strong hold clear debounced - cue absent from one re-decode partial; veto holds pending a second",{turnId:this.turnId,cue:e})}heldEntered(e){this.heldOpen=!0,this.log.debug("floor-held mode entered - silence budgets escalate, stop cap suspended",{turnId:this.turnId,cue:e})}heldLadderRearmed(e){this.log.debug("held silence budget re-armed at the next ladder step",{turnId:this.turnId,budgetMs:e})}heldExited(e){this.heldOpen=!1,this.log.debug("floor-held mode exited",{turnId:this.turnId,reason:e})}evaluatorFired(e){this.log.debug("semantic evaluator fired - smart-turn resolved in a gated band during a live silence episode",{turnId:this.turnId,band:e})}evaluatorResolved(e,r,i,n){this.log.debug("semantic evaluator resolved",{turnId:this.turnId,verdict:e,confidence:r,latencyMs:i,outcome:n})}evaluatorFailed(e,r){this.log.debug("semantic evaluator failed - no signal; this episode endpoints as armed",{turnId:this.turnId,latencyMs:e,error:r instanceof Error?r.message:String(r)})}committed(e,r){this.commitAtMs===null&&(r==="ptt"&&this.heldOpen&&this.heldExited("ptt"),this.commitAtMs=e,r==="ptt"&&(this.decider??="ptt"))}asrFinalResolved(e,r){this.asrFinalAtMs===null&&(this.asrFinalAtMs=e,this.transcriptLength=r)}firstReasonerDelta(e){this.firstDeltaAtMs??=e}firstTtsAudio(e){this.firstAudioAtMs??=e}markAsideCommit(){this.asideCommit=!0}silence(e){this.silenceReason=e}asideWakeword(){this.log.debug("aside wakeword - the lexical gate opened; the utterance dispatches for the model's judgment",{turnId:this.turnId})}markDispatched(){this.dispatched=!0}actSettled(e){this.acts[e]=(this.acts[e]??0)+1}toolStarted(){this.commandStarted=!0}parked(e){this.parkedAtMs=e,this.log.debug("voice turn parked - audio cut; the reply waits for the barging utterance's first word or its blank verdict",{turnId:this.turnId})}resumed(e,r){this.wordlessCuts+=1;let i=this.parkedAtMs===null?null:e-this.parkedAtMs;this.parkedAtMs=null,this.log.debug("voice turn resumed - the barge carried no words; the reply continues",{turnId:this.turnId,verdict:r,parkedMs:i})}actCounts(){return{...this.acts}}completed(e,r,i=!1){if(this.terminal||(this.terminal=!0,!this.dispatched))return null;let n=this.firstDeltaAtMs===null?"lost":"completed";return i?this.hold(e,n,{},r):(this.summary(e,n,{},r),n)}cancelled(e,r,i=!1,n=!1){if(this.terminal||(this.terminal=!0,!this.dispatched||r==="client_shutdown"))return null;let s=n?"detached":this.firstAudioAtMs!==null||this.commandStarted?"barged":"superseded";return i?this.hold(e,s,{},void 0,n):(this.summary(e,s,{}),s)}failed(e,r,i=!1){return this.terminal||(this.terminal=!0,!this.dispatched)?null:i?this.hold(e,"failed",{reason:r}):(this.summary(e,"failed",{reason:r}),"failed")}hold(e,r,i,n,s=!1){let o=!1;return{fallback:r,commandStarted:this.commandStarted,detachedJob:s,acts:this.actCounts(),emit:(a,c)=>{o||(o=!0,this.summary(e,a,i,n,c))}}}summary(e,r,i,n,s){this.log.debug("voice turn summary",{turnId:this.turnId,outcome:r,...i,decider:this.decider,disposition:"dispatched",...this.asideCommit&&{floor:"aside"},...this.silenceReason!==null&&{silence:this.silenceReason},...Object.keys(this.acts).length>0&&{acts:{...this.acts}},...this.wordlessCuts>0&&{wordlessCuts:this.wordlessCuts},...s!==void 0&&{playedMs:s.playedMs,spokenCharacters:s.spokenCharacters,characters:s.characters},silenceToCommitMs:this.spanMs(this.silenceOnsetAtMs,this.commitAtMs),commitToFinalMs:this.spanMs(this.commitAtMs,this.asrFinalAtMs),finalToFirstDeltaMs:this.spanMs(this.asrFinalAtMs,this.firstDeltaAtMs),firstDeltaToFirstAudioMs:this.spanMs(this.firstDeltaAtMs,this.firstAudioAtMs),totalMs:e-this.openedAtMs,transcriptLength:this.transcriptLength,...n!==void 0&&n.rounds>0&&{toolRounds:n.rounds,toolMs:n.totalMs}})}asideAbsorbed(e){this.terminal||(this.terminal=!0,this.log.debug("voice turn absorbed in the aside - no reply spoken",{turnId:this.turnId,decider:this.decider,disposition:"absorbed",floor:"aside",silenceToCommitMs:this.spanMs(this.silenceOnsetAtMs,this.commitAtMs),commitToFinalMs:this.spanMs(this.commitAtMs,this.asrFinalAtMs),totalMs:e-this.openedAtMs,transcriptLength:this.transcriptLength}))}blank(e){this.terminal||(this.terminal=!0,this.log.debug("voice turn blank - terminated silently (no transcribed speech)",{turnId:this.turnId,decider:this.decider,silenceToCommitMs:this.spanMs(this.silenceOnsetAtMs,this.commitAtMs),commitToFinalMs:this.spanMs(this.commitAtMs,this.asrFinalAtMs),totalMs:e-this.openedAtMs,transcriptLength:this.transcriptLength}))}spanMs(e,r){return e===null||r===null?null:r-e}}});function Zbe(t){return Jbe.test(t)}function MJ(t){return t instanceof Ji?"channel_violation":"turn_failed"}var WN,NJ,RJ,zbe,Wbe,Jbe,hI,LJ=D(()=>{"use strict";cw();nm();HA();TJ();WN=16e3,NJ="pcm_s16le",RJ=WN*2/1e3,zbe="en",Wbe=["Jarvis"],Jbe=/\bjarvis\b/i;hI=class{deps;asrStream;ttsStream=null;reasonAbort=new AbortController;recordStartupFailure;phase="capturing";settled=!1;finalizing=!1;lastFrameAtMs;timeline;speech=[];openSpeech=null;openSeeded=!1;charsPushed=0;audioBytes=0;sawFirstAudio=!1;running=null;dispatched=!1;parked=!1;wakeParked=null;heldDelta=null;loopDone=!1;cutActId=null;cuts=[];portion={acts:0,charsPushed:0,audioBytes:0};partialWordsReported=!1;constructor(e){this.deps=e,this.lastFrameAtMs=e.startMs,this.timeline=new dI(e.turnId,e.clock.now()),e.controller.attachTelemetry?.(this.timeline),e.controller.setPartialStability?.(e.asrEngine.partialStability??"stable"),this.asrStream=e.asrEngine.open({sampleRate:WN,encoding:NJ,language:zbe,biasTerms:Wbe,emitPartials:!0}),this.asrStream.onTranscript(r=>this.handleTranscript(r)),this.asrStream.onError(r=>this.asrFailed(r)),e.controller.onCommit(()=>this.finalize(this.lastFrameAtMs,"controller")),e.emit({type:"state",turnId:e.turnId,state:"processing"})}get turnId(){return this.deps.turnId}isParked(){return this.parked}hasCommitted(){return this.finalizing}pushFrame(e,r){this.phase!=="capturing"||this.settled||(this.lastFrameAtMs=r,this.asrStream.pushAudio(e),this.deps.controller.onAudioFrame(e))}endAudio(e){this.finalize(e,"ptt")}cancel(e){if(this.settled)return;this.settled=!0,this.phase="cancelled",this.deps.controller.dispose(),this.reasonAbort.abort(e==="client_shutdown"?void 0:new ll),this.asrStream.abort();let r=this.ttsStream;this.ttsStream=null,r?.cancel();let i=this.heldDelta;if(this.heldDelta=null,this.releaseParked(),e!=="client_shutdown"){if(this.audioBytes===this.portion.audioBytes)for(let o of this.speech.slice(this.portion.acts))o.preamble!==!0&&this.deps.reasoner.settleSpeech(o.actId,{kind:"unspoken"});i?.type==="act.start"&&i.channel==="speech"&&i.preamble!==!0&&this.deps.reasoner.settleSpeech(i.actId,{kind:"unspoken"})}i?.type==="text"&&this.openSpeech!==null&&!this.openSeeded&&(this.openSpeech.characters+=i.text.length);let n=e!=="client_shutdown"&&this.turnDetached(),s=this.terminalRecord();for(let o of this.cuts)this.trySettleCut(o,!0);this.noteTerminal(this.timeline.cancelled(this.deps.clock.now(),e,s.hold,n),s),this.deps.onComplete()}park(){if(this.settled||this.parked||!this.dispatched)return!1;let e=this.ttsStream;return this.ttsStream=null,e?.cancel(),this.deps.segmenter.flush(),this.cutActId=this.openSpeech?.actId??null,this.cuts.push({from:this.portion.acts,to:this.speech.length,charsPushedFrom:this.portion.charsPushed,audioBytesFrom:this.portion.audioBytes,charsPushed:this.charsPushed,audioBytes:this.audioBytes,openActId:this.cutActId,resumed:!1,settled:!1}),this.loopDone?(this.finishDone(),!0):(this.parked=!0,this.timeline.parked(this.deps.clock.now()),!0)}resume(e){if(!this.parked||this.settled)return;this.parked=!1;let r=this.cuts.at(-1);r!==void 0&&(r.resumed=!0,this.portion={acts:r.to,charsPushed:r.charsPushed,audioBytes:r.audioBytes}),this.timeline.resumed(this.deps.clock.now(),e),this.deps.emit({type:"state",turnId:this.deps.turnId,state:"responding"}),r!==void 0&&this.trySettleCut(r),this.releaseParked()}acceptCutReport(e){if(e.end!=="cut")return!1;let r=this.cuts.find(i=>i.report===void 0&&!i.settled);return r===void 0?!1:(r.report=e,this.trySettleCut(r),!0)}trySettleCut(e,r=!1){if(!(e.settled||e.report===void 0||this.parked||!e.resumed)&&!(!r&&e.openActId!==null&&this.openSpeech?.actId===e.openActId)){e.settled=!0;try{this.deps.onCutSettle?.({turnId:this.deps.turnId,ledger:this.cutLedger(e),report:e.report})}catch{}}}releaseParked(){this.parked=!1;let e=this.wakeParked;this.wakeParked=null,e?.()}untilUnparked(){return this.parked?new Promise(e=>{this.wakeParked=e}):Promise.resolve()}terminalRecord(){let e=this.cuts.at(-1);return e!==void 0&&!e.settled&&!e.resumed?(e.settled=!0,{hold:e.to>e.from,ledger:this.cutLedger(e),...e.report!==void 0&&{report:e.report}}):{hold:this.speech.length>this.portion.acts,ledger:this.portionLedger()}}cutLedger(e){return{acts:this.speech.slice(e.from,e.to).map(r=>({...r})),charsPushed:e.charsPushed-e.charsPushedFrom,audioMs:(e.audioBytes-e.audioBytesFrom)/RJ}}portionLedger(){return{acts:this.speech.slice(this.portion.acts).map(e=>({...e})),charsPushed:this.charsPushed-this.portion.charsPushed,audioMs:(this.audioBytes-this.portion.audioBytes)/RJ}}noteWords(e){if(e==="partial"){if(this.partialWordsReported)return;this.partialWordsReported=!0}try{this.deps.onFirstWords?.(e)}catch{}}turnDetached(){try{return this.deps.turnDetached?.()??!1}catch{return!1}}unwound(){return this.running??Promise.resolve()}handleTranscript(e){this.phase!=="capturing"||this.settled||e.isFinal||(this.deps.emit({type:"transcript.partial",turnId:this.deps.turnId,text:e.text}),this.deps.controller.onPartial(e.text),e.text.trim()!==""&&this.noteWords("partial"))}finalize(e,r){this.phase!=="capturing"||this.finalizing||this.settled||(this.finalizing=!0,this.timeline.committed(this.deps.clock.now(),r),this.deps.controller.dispose(),this.running=this.finalizeAndRespond(e,r))}async finalizeAndRespond(e,r){let i;try{i=await this.asrStream.end()}catch(o){if(this.settled)return;this.asrFailed(o);return}if(this.settled)return;this.timeline.asrFinalResolved(this.deps.clock.now(),i.text.length);let n=this.deps.floor;if(r==="ptt"&&n?.floorState()==="aside"&&this.releaseFloor(n,"explicit"),i.text.trim()===""){this.finishBlank();return}this.noteWords("final"),this.phase="responding";let s=this.buildUserTurn(i.text,e);if(n?.floorState()==="aside")return this.runAside(s,n);if(await this.awaitDispatchGate(),!this.settled){this.emitDispatch(s);try{await this.respond(s.text)}catch(o){if(this.settled)return;this.finishError(MJ(o),o);return}this.settled||this.finishDone()}}async runAside(e,r){if(this.timeline.markAsideCommit(),!Zbe(e.text)){this.finishAsideAbsorbed(e,r);return}if(this.timeline.asideWakeword(),this.releaseFloor(r,"resume"),await this.awaitDispatchGate(),!this.settled){this.emitDispatch(e);try{await this.respond(e.text)}catch(i){if(this.settled)return;this.finishError(MJ(i),i);return}this.settled||this.finishDone()}}releaseFloor(e,r){try{e.onFloorReleased(r)}catch{}}emitDispatch(e){this.dispatched=!0,this.timeline.markDispatched();try{this.deps.onDispatched?.()}catch{}this.deps.emit({type:"turn.final",turnId:this.deps.turnId,turn:e,...this.deps.commandId!==void 0&&{commandId:this.deps.commandId}}),this.deps.emit({type:"state",turnId:this.deps.turnId,state:"responding"})}noteSilence(e){try{this.deps.floor?.onSilence(e)}catch{}}noteOutcome(e){if(e!==null)try{this.deps.onOutcome?.(e,this.timeline.actCounts())}catch{}}noteTerminal(e,r){if(e!==null){if(typeof e=="string"){this.noteOutcome(e);return}if(this.deps.onHeld===void 0){e.emit(e.fallback),this.noteOutcome(e.fallback);return}try{this.deps.onHeld({turnId:this.deps.turnId,held:e,ledger:r.ledger,...r.report!==void 0&&{report:r.report}})}catch{}}}async awaitDispatchGate(){if(this.deps.beforeDispatch!==void 0)try{await this.deps.beforeDispatch()}catch{}}async respond(e){this.recordStartupFailure=this.deps.reasoner.beforeRunFailure(e,this.deps.turnId,this.reasonAbort.signal);let r=!1;if(this.ensureTts(),this.settled)return;let i=this.deps.reasoner.run(e,this.reasonAbort.signal,{register:"voice",turnId:this.deps.turnId});for await(let s of i){if(this.settled||(r||(r=!0,this.timeline.firstReasonerDelta(this.deps.clock.now())),this.parked&&(this.heldDelta=s,await this.untilUnparked(),this.heldDelta=null,this.settled)))return;this.dispatch(s)}if(this.loopDone=!0,this.settled)return;if(this.parked){this.parked=!1;return}for(let s of this.deps.segmenter.flush())this.push(s);let n=this.ttsStream;n!==null&&await n.end()}dispatch(e){if(e.type==="act.start"){e.channel==="speech"&&(this.openSpeech={actId:e.actId,characters:e.characters??0,...e.preamble===!0&&{preamble:!0}},this.openSeeded=e.characters!==void 0,this.speech.push(this.openSpeech)),UA(r=>this.deps.emit(r),this.deps.turnId,e);return}if(e.type==="act.end"){for(let r of this.deps.segmenter.flush())this.push(r);if(this.openSpeech?.actId===e.actId&&(this.openSpeech.characters=e.characters,e.notificationId!==void 0&&(this.openSpeech.notificationId=e.notificationId),this.openSpeech=null),UA(r=>this.deps.emit(r),this.deps.turnId,e),e.preamble!==!0&&this.timeline.actSettled(e.act),e.reason!==void 0&&(this.timeline.silence(e.reason),this.noteSilence(e.reason)),e.actId===this.cutActId){this.cutActId=null;for(let r of this.cuts)this.trySettleCut(r)}return}if(e.type!=="text"){if(e.type==="tool.start"){for(let r of this.deps.segmenter.flush())this.push(r);this.timeline.toolStarted()}Qp(r=>this.deps.emit(r),this.deps.turnId,e);return}if(this.openSpeech!==null&&!this.openSeeded&&(this.openSpeech.characters+=e.text.length),!(this.cutActId!==null&&this.openSpeech?.actId===this.cutActId)){this.deps.emit({type:"response.delta",turnId:this.deps.turnId,text:e.text});for(let r of this.deps.segmenter.push(e.text))this.push(r)}}push(e){let r;try{r=this.ensureTts()}catch(i){throw this.finishError("turn_failed",i),i}this.charsPushed+=e.length,r.pushText(e)}ensureTts(){if(this.ttsStream!==null)return this.ttsStream;let e=this.deps.ttsEngine.speak({voice:this.deps.voice,sampleRate:WN,encoding:NJ});return this.ttsStream=e,e.onAudio(r=>{this.settled||e!==this.ttsStream||(this.audioBytes+=r.byteLength,this.sawFirstAudio||(this.sawFirstAudio=!0,this.timeline.firstTtsAudio(this.deps.clock.now())),this.deps.emit({type:"response.audio",turnId:this.deps.turnId,audio:r}))}),e.onError(r=>{e===this.ttsStream&&this.finishError("turn_failed",r)}),e}finishBlank(){this.settled||(this.settled=!0,this.timeline.blank(this.deps.clock.now()),this.deps.onComplete())}finishAsideAbsorbed(e,r){if(!this.settled){this.settled=!0,this.phase="cancelled",this.timeline.asideAbsorbed(this.deps.clock.now()),this.deps.emit({type:"turn.final",turnId:this.deps.turnId,turn:{...e,disposition:"absorbed"},...this.deps.commandId!==void 0&&{commandId:this.deps.commandId}}),this.deps.onComplete();try{r.onAbsorbed()}catch{}}}finishDone(){if(this.settled)return;this.settled=!0;let e=this.terminalRecord();for(let r of this.cuts)this.trySettleCut(r,!0);this.noteTerminal(this.timeline.completed(this.deps.clock.now(),this.deps.reasoner.lastTurnTools(),e.hold),e),this.deps.emit({type:"response.done",turnId:this.deps.turnId}),this.deps.onComplete()}asrFailed(e){if(this.settled)return;let r=e instanceof Error?e:new Error(String(e));try{this.deps.onAsrFailure?.(r)}catch{}this.finishError(r instanceof fn?"asr_unavailable":"turn_failed",e)}finishError(e,r){if(this.settled)return;this.settled=!0,this.deps.controller.dispose(),this.recordStartupFailure?.(),this.deps.reasoner.noteFailure(this.deps.turnId),this.reasonAbort.abort(new ul);let i=this.ttsStream;this.ttsStream=null,i?.cancel(),this.heldDelta=null,this.releaseParked();let n=this.terminalRecord();for(let s of this.cuts)this.trySettleCut(s,!0);this.noteTerminal(this.timeline.failed(this.deps.clock.now(),e,n.hold),n),this.deps.emit({type:"error",turnId:this.deps.turnId,...this.deps.commandId!==void 0&&{commandId:this.deps.commandId},reason:e,message:r instanceof Error?r.message:String(r)}),this.deps.onComplete()}buildUserTurn(e,r){return{source:"voice",turnId:this.deps.turnId,sessionId:this.deps.sessionId,deviceId:this.deps.deviceId,text:e,startMs:this.deps.startMs,endMs:r,...this.deps.projectId!==void 0&&{projectId:this.deps.projectId}}}}});import{randomUUID as JN}from"node:crypto";import{realpathSync as Xbe}from"node:fs";import{homedir as Kbe}from"node:os";function UJ(t){return`${(t/1e3).toFixed(1)}s`}function rQe(t){return t.length<=48?t:`${t.slice(0,48)}...`}function nQe(t){switch(t.state){case"none":return"not yet announced";case"shown":return"announced (shown)";case"played":return"announced, played in full";case"cut":return`announce cut at ${t.n} of ${t.m}: not fully heard`;case"unplayed":return"announce never played"}}function oQe(t){if(t.role!=="user"&&t.role!=="assistant")return null;if("toolCalls"in t){let e=t.toolCalls.filter(r=>sQe.has(r.name)).map(r=>typeof r.input=="object"&&r.input!==null?r.input.text:void 0).filter(r=>typeof r=="string"&&r.length>0);return e.length>0?{role:"assistant",text:e.join(" ")}:null}return t.content===""?null:{role:t.role,text:t.content}}var FJ,eQe,tQe,fI,iQe,ZN,bu,Gh,gI,sQe,OJ=D(()=>{"use strict";Tt();Gs();FA();cw();Zp();nm();$w();xO();kW();RW();JT();rN();UW();zw();$W();PW();GW();YW();HA();nN();OA();na();MN();PN();GN();qN();zN();Kp();LJ();FJ=250,eQe=4,tQe=1,fI=3e3;iQe=6,ZN=45e3,bu=class extends Error{constructor(e){super(e),this.name="ReasonerUnavailableError"}},Gh=class extends Error{constructor(e){super(e),this.name="VoiceUnavailableError"}},gI=class{deps;sessionId;deviceId;projectId;queue=new WE;closed=!1;closing=null;eventsConsumed=!1;inFlight=!1;reasoner=null;reasonerRoute=null;turnAbort=null;capturing=null;responding=null;parkBound=null;parkedAtMs=0;parkHeldFor=null;voiceTurnFailed=!1;asrUnavailable=null;mintedTurnId=null;voiceEngines=null;clock;newTurnController;newSmartTurnInference;newFrameClassifier;newTurnEvaluator;newSegmenter;smartTurnInference=null;frameClassifier=null;turnEvaluator=void 0;floorState="engaged";floorCounts={noResponse:{addressed_to_other:0,self_talk:0,no_reply_needed:0},asideEntries:0,asideExits:{resume:0,decay:0,explicit:0}};turnCounts={outcomes:{completed:0,superseded:0,barged:0,failed:0,lost:0,detached:0},acts:{}};jobs;notifications=new YE;playouts=new Map;playoutWaiters=[];cutUnwinding=null;asideDecayTimer=null;lastSpeechAtMs=0;cwd;scratch;constructor(e,r,i){this.deps=i,this.sessionId=e,this.deviceId=r.deviceId,this.projectId=r.projectId,this.cwd=r.launchDir??Kbe(),this.scratch=new pu(e,ee),this.clock=i.clock??new Gi,this.jobs=new em({now:()=>this.clock.now(),logger:ee,onDetached:n=>this.jobDetached(n),onSettled:n=>this.jobSettled(n)}),this.newSmartTurnInference=i.createSmartTurnInference??(()=>new Hh),this.newFrameClassifier=i.createFrameClassifier??(()=>new PA(new nc)),this.newTurnEvaluator=i.createTurnEvaluator??(n=>new xu(n)),this.newTurnController=i.createTurnController??(n=>{let s=this.ensureFrameClassifier();return new Ph(n,this.ensureSmartTurnInference(),{},this.speechObservingClassifier(s),this.semanticHook())}),this.newSegmenter=i.createSegmenter??(()=>new Nh),this.emit({type:"session.ready"})}async send(e){let{commandId:r}=e;if(this.closed)throw new Sr(r,"closed");if(e.sessionId!==this.sessionId)throw new Sr(r,"invalid","command sessionId does not match session");switch(e.type){case"input.text":this.acceptTextInput(e);return;case"input.audio.frame":this.acceptAudioFrame(e);return;case"input.audio.end":this.endAudioInput(e);return;case"turn.cancel":this.cancelTurn(e);return;case"turn.playout":this.acceptPlayout(e);return;case"session.close":return this.close();case"approval.resolve":throw new Sr(r,"unsupported");default:throw new Sr(r,"invalid")}}events(){if(this.eventsConsumed)throw new Error("CoreSession.events() supports a single consumer in v0.1");return this.eventsConsumed=!0,this.queue.drain()}close(){if(this.closed)return this.closing??Promise.resolve();this.closed=!0;let e=[],r;this.closing=new Promise(i=>{r=()=>{Promise.all(e).then(()=>i())}});try{this.turnAbort?.abort(),this.clearParkBound(),this.responding?.cancel("client_shutdown"),this.capturing?.cancel("client_shutdown");let i=this.jobs.cancelAll("shutdown");i>0&&(ee.debug("background jobs cancelled at shutdown",{count:i}),e.push(this.jobs.drain().catch(()=>{}))),this.asideDecayTimer!==null&&(this.clock.clearTimer(this.asideDecayTimer),this.asideDecayTimer=null);let n=this.smartTurnInference;this.smartTurnInference=null;let s=this.frameClassifier;this.frameClassifier=null;let o=this.turnEvaluator;this.turnEvaluator=null,this.settleHeldAtClose(),this.logFloorSummary(),this.logTurnSummary(),this.scratch.dispose(),this.queue.close(),n&&e.push(n.dispose().catch(()=>{})),s?.dispose&&e.push(s.dispose().catch(()=>{})),o?.dispose&&e.push(o.dispose().catch(()=>{}))}finally{r()}return this.closing}acceptTextInput(e){if(e.text.trim().length===0)throw new Sr(e.commandId,"invalid","input.text requires non-empty text");if(this.inFlight)throw new Sr(e.commandId,"backpressured","a turn is already in progress (one turn at a time in v0.1)");this.inFlight=!0,this.exitAside("explicit");let r=JN();this.emit({type:"turn.accepted",turnId:r,clientTurnId:e.clientTurnId,source:"text",commandId:e.commandId}),this.emit({type:"turn.final",turnId:r,turn:this.toTextUserTurn(r,e),commandId:e.commandId}),this.runTextTurn(r,e)}async runTextTurn(e,r){let i=new AbortController;this.turnAbort=i;let n=!1,s=!1,o={};try{let a=this.ensureReasoner();if(await this.awaitDispatchReady(),this.closed)return;this.emit({type:"state",turnId:e,state:"responding"}),n=!0;for await(let c of a.run(r.text,i.signal,{turnId:e}))s=!0,c.type==="text"?this.emit({type:"response.delta",turnId:e,text:c.text}):c.type==="tool.start"||c.type==="tool.result"?Qp(l=>this.emit(l),e,c):(c.type==="act.end"&&(c.preamble!==!0&&(o[c.act]=(o[c.act]??0)+1),c.reason!==void 0&&this.countSilence(c.reason),c.notificationId!==void 0&&this.notifications.annotate(c.notificationId,{state:"shown"})),UA(l=>this.emit(l),e,c));this.closed||this.recordOutcome(s?"completed":"lost",o),this.emit({type:"response.done",turnId:e})}catch(a){n&&!this.closed&&this.recordOutcome("failed",o);let c=a instanceof bu?"no_text_route":a instanceof Ji?"channel_violation":"turn_failed";this.emit({type:"error",turnId:e,commandId:r.commandId,reason:c,message:a instanceof Error?a.message:String(a)})}finally{this.inFlight=!1,this.turnAbort=null}}acceptAudioFrame(e){if(this.capturing){this.capturing.pushFrame(e.audio,e.atMs);return}if(this.asrUnavailable!==null||this.voiceTurnFailed)return;if(this.inFlight&&this.responding?.isParked()!==!0)throw new Sr(e.commandId,"backpressured","a turn is already in progress (one turn at a time in v0.1)");this.inFlight=!0;let r=JN();this.emit({type:"turn.accepted",turnId:r,clientTurnId:e.clientTurnId,source:"voice",commandId:e.commandId}),this.mintedTurnId=r;let i=this.resolveVoicePipeline(r,e.commandId);if(!i){this.voiceTurnFailed=!0;return}let n=this.floorHook(),s=new hI({turnId:r,sessionId:this.sessionId,deviceId:this.deviceId,...this.projectId!==void 0&&{projectId:this.projectId},commandId:e.commandId,startMs:e.atMs,asrEngine:i.engines.asrEngine,ttsEngine:i.engines.ttsEngine,voice:i.engines.voice,reasoner:i.reasoner,controller:this.newTurnController(this.clock),segmenter:this.newSegmenter(),clock:this.clock,emit:o=>this.emit(o),floor:n,onOutcome:(o,a)=>this.recordOutcome(o,a),onHeld:o=>this.holdTurn(o),onCutSettle:o=>this.settleCut(o),turnDetached:()=>this.jobs.hasRunningJobFrom(r),beforeDispatch:()=>this.awaitDispatchReady(),onDispatched:()=>this.turnDispatched(s),onFirstWords:o=>this.wordsHeard(o),onAsrFailure:o=>this.noteAsrFailure(o),onComplete:()=>this.completeVoiceTurn(s)});this.capturing=s,this.smartTurnInference?.prewarm?.(),this.frameClassifier?.prewarm?.(),s.pushFrame(e.audio,e.atMs)}endAudioInput(e){if(this.voiceTurnFailed){this.resetVoiceFailure();return}if(this.capturing){this.capturing.endAudio(e.atMs);return}this.exitAside("explicit")}cancelTurn(e){let r=e.turnId;if(this.voiceTurnFailed&&(r===void 0||r===this.mintedTurnId)){this.resetVoiceFailure();return}let i=r===void 0?this.capturing??this.responding:this.capturing?.turnId===r?this.capturing:this.responding?.turnId===r?this.responding:null;i!==null&&(e.reason==="barge_in"&&i===this.responding&&(i.isParked()||this.parkTurn(i))||this.abortTurn(i,e.reason))}abortTurn(e,r){if(e===this.responding){this.clearParkBound();let i=e.unwound().then(()=>{this.cutUnwinding===i&&(this.cutUnwinding=null),this.wakePlayoutWaiters()});this.cutUnwinding=i}e.cancel(r)}parkTurn(e){return e.park()?(this.clearParkBound(),e.isParked()&&(this.parkedAtMs=this.clock.now(),this.armParkBound(fI)),!0):!1}armParkBound(e){this.parkBound=this.clock.setTimer(e,()=>{this.parkBound=null,this.parkBoundElapsed()})}parkBoundElapsed(){if(this.responding?.isParked()!==!0)return;let r=this.capturing;if(r?.hasCommitted()===!0&&this.parkHeldFor!==r){this.parkHeldFor=r,this.armParkBound(fI);return}let i=this.clock.now()-Math.max(this.parkedAtMs,this.lastSpeechAtMs);i>=fI?this.resumeParked("no_words"):this.armParkBound(fI-i)}resumeParked(e){if(this.closed)return;let r=this.responding;if(r?.isParked()!==!0)return;let i=this.parkHeldFor;this.clearParkBound(),r.resume(e);let n=this.capturing;e==="no_words"&&n!==null&&(n.hasCommitted()?n===i&&(ee.debug("the barging utterance committed but its final never came - retired, the reply resumes",{turnId:n.turnId}),n.cancel("barge_in")):(ee.debug("the capturing turn the wordless barge opened is retired - no verdict could come",{turnId:n.turnId}),n.cancel("barge_in")))}clearParkBound(){this.parkHeldFor=null,this.parkBound!==null&&(this.clock.clearTimer(this.parkBound),this.parkBound=null)}wordsHeard(e){let r=this.responding;r!==null&&(ee.debug("the barging utterance carries words - the reply in flight yields",{stage:e,parked:r.isParked()}),this.abortTurn(r,"barge_in"))}turnDispatched(e){this.responding!==null&&this.responding!==e&&this.abortTurn(this.responding,"barge_in"),this.capturing===e&&(this.capturing=null),this.responding=e}noteAsrFailure(e){e instanceof fn&&(this.asrUnavailable=e.category,ee.debug("ASR terminally unavailable - voice input latched off for this session",{category:e.category}))}completeVoiceTurn(e){this.dropReportOnly(e.turnId),this.capturing===e?(this.capturing=null,this.resumeParked("blank")):this.responding===e&&(this.responding=null,this.clearParkBound()),this.inFlight=this.capturing!==null||this.responding!==null}dropReportOnly(e){if(e===null)return;let r=this.playouts.get(e);r!==void 0&&r.record===void 0&&this.playouts.delete(e)}resetVoiceFailure(){this.dropReportOnly(this.mintedTurnId),this.voiceTurnFailed=!1,this.mintedTurnId=null}resolveVoicePipeline(e,r){let i;try{i=this.ensureVoiceEngines()}catch(s){return this.emitTurnError(e,r,"no_voice_route",s),null}let n;try{n=this.ensureReasoner()}catch(s){let o=s instanceof bu?"no_text_route":"turn_failed";return this.emitTurnError(e,r,o,s),null}return{engines:i,reasoner:n}}ensureVoiceEngines(){if(this.voiceEngines)return this.voiceEngines;if(!this.deps.voiceRegistry)throw new Gh("voice is not available in this core build");let e=this.deps.configService.resolved(),r=e.routes?.stt,i=e.routes?.tts;if(!r||!i)throw new Gh("no voice route configured - run 'jarvis init' to set routes.stt and routes.tts");let n=!e.secrets?.[r.provider]&&Yr(r.provider),s=!e.secrets?.[i.provider]&&Yr(i.provider);if(n||s){let l=n?r.provider:i.provider;throw new Gh(`no API key for voice provider '${l}' - run 'jarvis init' to add it`)}let o=this.deps.voiceRegistry.asrEngine({provider:r.provider,model:r.model,...r.url!==void 0&&{url:r.url}},e.secrets?.[r.provider]??""),a=this.deps.voiceRegistry.ttsEngine({provider:i.provider,model:i.model},e.secrets?.[i.provider]??""),c=this.deps.voiceIdentity??jN(i.voiceId);return this.voiceEngines={asrEngine:o,ttsEngine:a,voice:c},this.voiceEngines}ensureSmartTurnInference(){return this.smartTurnInference??=this.newSmartTurnInference(),this.smartTurnInference}ensureFrameClassifier(){return this.frameClassifier??=this.newFrameClassifier(),this.frameClassifier}semanticHook(){if(this.turnEvaluator===void 0){let r=this.reasonerRoute;this.turnEvaluator=r?.provider==="anthropic"?this.newTurnEvaluator(r.key):null}return this.turnEvaluator===null?void 0:{evaluator:this.turnEvaluator,recentTurns:()=>{let r=[];for(let i of this.reasoner?.historySnapshot()??[]){let n=oQe(i);n&&r.push(n)}return r.slice(-iQe)}}}floorHook(){return{floorState:()=>this.floorState,onSilence:e=>{this.countSilence(e),e==="addressed_to_other"&&this.enterAside(e)},onAbsorbed:()=>this.noteSpeech(),onFloorReleased:e=>this.exitAside(e)}}enterAside(e){this.floorState!=="aside"&&(this.floorState="aside",this.floorCounts.asideEntries+=1,this.noteSpeech(),this.armAsideDecay(ZN),ee.debug("aside entered - utterances now absorb by default",{reason:e}),this.emit({type:"state",state:"aside"}))}exitAside(e){this.floorState==="aside"&&(this.floorState="engaged",this.floorCounts.asideExits[e]+=1,this.asideDecayTimer!==null&&(this.clock.clearTimer(this.asideDecayTimer),this.asideDecayTimer=null),ee.debug("aside exited",{reason:e}))}countSilence(e){this.floorCounts.noResponse[e]+=1}recordOutcome(e,r){this.turnCounts.outcomes[e]+=1;for(let[i,n]of Object.entries(r))this.turnCounts.acts[i]=(this.turnCounts.acts[i]??0)+n}jobDetached(e){ee.debug("background job detached",{jobId:e.jobId,tool:e.tool,origin:e.origin}),!this.closed&&this.emit({type:"job.detached",...e.turnId!==void 0&&{turnId:e.turnId},jobId:e.jobId,tool:e.tool})}jobSettled(e){this.reasoner?.settleResult(e.record.jobId,e.result,e.isError),ee.debug("background job settled",{jobId:e.record.jobId,tool:e.record.tool,outcome:e.outcome,durationMs:Math.round(e.durationMs)}),!this.closed&&(e.outcome==="ok"?this.notifications.add(`${e.record.tool} job ${e.record.jobId} finished ok in ${UJ(e.durationMs)}`,"normal"):e.outcome==="failed"&&this.notifications.add(`${e.record.tool} job ${e.record.jobId} FAILED after ${UJ(e.durationMs)}`,"high"),this.emit({type:"job.result",...e.record.turnId!==void 0&&{turnId:e.record.turnId},jobId:e.record.jobId,tool:e.record.tool,outcome:e.outcome,durationMs:Math.round(e.durationMs)}))}holdTurn(e){if(this.closed){e.held.emit(e.held.fallback);return}let r=this.playouts.get(e.turnId)??{};r.record=e,e.report!==void 0&&r.report===void 0&&(r.report=e.report),this.playouts.set(e.turnId,r),this.joinPlayout(e.turnId)}acceptPlayout(e){let r={playedMs:e.playedMs,end:e.end},i=this.responding?.turnId===e.turnId?this.responding:this.capturing?.turnId===e.turnId?this.capturing:null;if(i?.acceptCutReport(r)===!0)return;let n=this.playouts.get(e.turnId);if(n===void 0&&i===null){ee.debug("playout report for a turn with no held record - nothing to settle",{end:e.end});return}let s=n??{};s.report===void 0&&(s.report=r,this.playouts.set(e.turnId,s),this.joinPlayout(e.turnId))}joinPlayout(e){let r=this.playouts.get(e);if(r?.record===void 0||r.report===void 0)return;this.playouts.delete(e);let{held:i,ledger:n}=r.record,{end:s}=r.report,{playedMs:o,boundary:a,characters:c}=this.settleReport(n,r.report),l=i.fallback==="failed"?"failed":s==="cut"?i.detachedJob?"detached":o>0||i.commandStarted?"barged":"superseded":i.fallback;i.emit(l,{playedMs:o,spokenCharacters:a,characters:c}),this.recordOutcome(l,i.acts),this.wakePlayoutWaiters()}settleCut(e){let{playedMs:r,boundary:i,characters:n}=this.settleReport(e.ledger,e.report);ee.debug("voice turn cut settled - the audio was cut; the reply continues",{turnId:e.turnId,playedMs:r,spokenCharacters:i,characters:n})}settleReport(e,r){let{end:i}=r,n=Number.isFinite(r.playedMs)&&r.playedMs>0?r.playedMs:0,s=qw(e),a=i==="drained"&&n>0&&n>=e.audioMs-tQe?s:aO(n,e),c=cO(e.acts,a),l=new Set(e.acts.filter(u=>u.preamble===!0).map(u=>u.actId));for(let u of c){if(l.has(u.actId)){this.reasoner?.settleAnnouncement(u.actId,u);continue}this.reasoner?.settleSpeech(u.actId,u)}for(let u of e.acts){if(u.notificationId===void 0)continue;let d=c.find(h=>h.actId===u.actId);d!==void 0&&this.notifications.annotate(u.notificationId,d.kind==="spoken"?{state:"played"}:d.kind==="partial"?{state:"cut",n:d.n,m:d.m}:{state:"unplayed"})}return{playedMs:n,boundary:a,characters:s}}settleHeldAtClose(){for(let e of[...this.playouts.keys()])this.releaseHeld(e);this.playouts.clear(),this.cutUnwinding=null,this.wakePlayoutWaiters()}releaseHeld(e){let r=this.playouts.get(e);this.playouts.delete(e),r?.record!==void 0&&(r.record.held.emit(r.record.held.fallback),this.recordOutcome(r.record.held.fallback,r.record.held.acts))}expireOutstanding(){this.cutUnwinding=null;let e=[];for(let[r,i]of this.playouts)i.record!==void 0&&i.report===void 0&&(i.stale=!0,e.push(r));for(let r of e.slice(0,Math.max(0,e.length-eQe)))this.releaseHeld(r)}awaitDispatchReady(){return this.playoutOutstanding()?new Promise(e=>{let r=!1,i=()=>{r||(r=!0,this.clock.clearTimer(s),this.playoutWaiters=this.playoutWaiters.filter(o=>o!==n),e())},n=()=>{this.playoutOutstanding()||i()},s=this.clock.setTimer(FJ,()=>{ee.debug("dispatch proceeded before the last playout settled",{boundMs:FJ,awaitingReport:[...this.playouts.values()].filter(o=>o.record!==void 0&&o.report===void 0&&o.stale!==!0).length,cutUnwinding:this.cutUnwinding!==null}),this.expireOutstanding(),i()});this.playoutWaiters.push(n)}):Promise.resolve()}playoutOutstanding(){if(this.cutUnwinding!==null)return!0;for(let e of this.playouts.values())if(e.record!==void 0&&e.report===void 0&&e.stale!==!0)return!0;return!1}wakePlayoutWaiters(){for(let e of[...this.playoutWaiters])e()}sessionStateBlock(){let e=this.jobs.list(),r=this.notifications.list();if(e.length===0&&r.length===0)return;let i=["Session state:"];if(e.length>0){i.push(`- Background jobs (${e.length} of ${jw} slots; the [bracketed] value is cancel_job's jobId):`);let n=this.clock.now();for(let s of e){let o=Math.max(0,Math.round((n-s.startedAtMs)/1e3)),a=s.display!==void 0?` "${rQe(s.display)}"`:"",c=s.cancelling?"cancelling":`running, ${o}s`;i.push(` - [${s.jobId}] ${s.tool}${a} - ${c}`)}}if(r.length>0){i.push("- Queued notifications (announce with say_notification - the record then shows whether it played; dismiss_notification discards silently; when unsure whether one was heard, keep it):");for(let n of r)i.push(` - [${n.id}, ${n.priority}] ${n.text} - ${nQe(n.announce)}`)}return i.join(`
393
393
  `)}logTurnSummary(){let{outcomes:e,acts:r}=this.turnCounts;Object.values(e).some(i=>i>0)&&ee.debug("session turn summary",{outcomes:{...e},acts:{...r}})}logFloorSummary(){let{noResponse:e,asideEntries:r,asideExits:i}=this.floorCounts;(r>0||Object.values(e).some(s=>s>0)||Object.values(i).some(s=>s>0))&&ee.debug("session floor summary",{noResponse:{...e},asideEntries:r,asideExits:{...i}})}armAsideDecay(e){this.asideDecayTimer!==null&&this.clock.clearTimer(this.asideDecayTimer),this.asideDecayTimer=this.clock.setTimer(e,()=>this.asideDecayElapsed())}asideDecayElapsed(){if(this.asideDecayTimer=null,this.floorState!=="aside")return;let e=this.clock.now()-this.lastSpeechAtMs;e>=ZN?this.exitAside("decay"):this.armAsideDecay(ZN-e)}noteSpeech(){this.lastSpeechAtMs=this.clock.now()}speechObservingClassifier(e){return{classify:(r,i)=>e.classify(r,n=>{n&&this.noteSpeech(),i(n)})}}ensureReasoner(){if(this.reasoner)return this.reasoner;let e=this.deps.configService.resolved(),r=e.routes?.text;if(!r)throw new bu("no text model is configured - run 'jarvis init' to set routes.text");let i=Yr(r.provider)?e.secrets?.[r.provider]:"";if(!i&&Yr(r.provider))throw new bu(`no API key for text provider '${r.provider}' - run 'jarvis init' to add it`);let n=this.deps.registry.textAdapter({provider:r.provider,model:r.model,...r.url!==void 0&&{url:r.url}},i??"");return this.reasoner=new sd(n,r.model,this.deps.systemPrompt,this.buildTools(e)),this.reasonerRoute={provider:r.provider,key:i??""},this.reasoner}buildTools(e){let r=Yt.dir(),i=r;try{i=Xbe(r)}catch{}let n=new jE(i),s=new VE,o=new GE;o.add(n),o.add(s);let a=new qE;for(let l of cl)a.register(l);a.register(BO),a.register(_W(s,{spill:l=>this.scratch.spill("fetch",l)}));let c=this.registerWebSearch(a,e);return a.register(AO(this.jobs)),a.register(OW(this.notifications)),{registry:a,hooks:o,cwd:this.cwd,logger:ee,guard:n,jobs:this.jobs,sessionState:()=>this.sessionStateBlock(),...c!==void 0&&{searchProvider:c}}}registerWebSearch(e,r){let i=r.routes?.search;if(!i)return;let n=r.secrets?.[i.provider];if(!n){ee.debug("search route configured but no key - web_search unregistered",{provider:i.provider});return}if(this.deps.registry.searchAdapter)try{let s=this.deps.registry.searchAdapter({provider:i.provider},n);return e.register(NW(s,i.provider,{spill:o=>this.scratch.spill("search",o)})),i.provider}catch(s){ee.debug("search adapter could not be built - web_search unregistered",{provider:i.provider,errorName:s instanceof Error?s.name:typeof s});return}}toTextUserTurn(e,r){return{source:"text",turnId:e,sessionId:this.sessionId,deviceId:this.deviceId,text:r.text,atMs:r.atMs,...this.projectId!==void 0&&{projectId:this.projectId}}}emitTurnError(e,r,i,n){this.emit({type:"error",turnId:e,commandId:r,reason:i,message:n instanceof Error?n.message:String(n)}),this.inFlight=this.responding!==null}emit(e){this.queue.push({...e,sessionId:this.sessionId,eventId:JN(),atMs:Date.now()})}},sQe=new Set(cl.filter(t=>t.channel==="speech").map(t=>t.name))});function aQe(t,e,r){let i=new URL(t);i.searchParams.set("model_id",e),i.searchParams.set("audio_format",cQe(r)),i.searchParams.set("commit_strategy","manual"),r.language&&i.searchParams.set("language_code",r.language);for(let n of r.biasTerms??[])i.searchParams.append("keyterms",n);return i.toString()}function cQe(t){return t.encoding==="pcm_s16le"?`pcm_${t.sampleRate}`:"pcm_16000"}var $J,Yh,XN,KN=D(()=>{"use strict";HA();YA();$J="wss://api.elevenlabs.io/v1/speech-to-text/realtime",Yh=class{apiKey;socketFactory;model;endpoint;id="elevenlabs-scribe";constructor(e,r,i,n=$J){this.apiKey=e,this.socketFactory=r,this.model=i,this.endpoint=n}open(e){return new XN(this.apiKey,this.socketFactory,this.model,this.endpoint,e)}},XN=class{opts;socket;opened=!1;aborted=!1;closed=!1;pending=[];committed=[];transcriptCb;errorCb;endPending=null;commitRequested=!1;constructor(e,r,i,n,s){this.opts=s,this.socket=r(aQe(n,i,s),{"xi-api-key":e}),this.socket.onOpen(()=>this.handleOpen()),this.socket.onMessage(o=>this.handleMessage(o)),this.socket.onError(o=>this.handleError(o)),this.socket.onClose(()=>this.handleClose())}pushAudio(e){if(!(this.aborted||this.closed||this.commitRequested)){if(!this.opened){this.pending.push(e);return}this.sendChunk(e,!1)}}onTranscript(e){this.transcriptCb=e}onError(e){this.errorCb=e}end(){return this.aborted?Promise.reject(new Error("ASR stream already aborted")):this.endPending?Promise.reject(new Error("ASR end() already in progress")):new Promise((e,r)=>{this.endPending={resolve:e,reject:r},this.commitRequested=!0,this.opened&&this.sendCommit()})}abort(){if(this.aborted=!0,this.endPending){let{reject:e}=this.endPending;this.endPending=null,e(new Error("ASR stream aborted"))}return this.teardown(),Promise.resolve()}handleOpen(){if(!(this.aborted||this.closed)){this.opened=!0;for(let e of this.pending)this.sendChunk(e,!1);this.pending.length=0,this.commitRequested&&this.sendCommit()}}handleMessage(e){if(this.aborted||this.closed)return;let r=Ws(e);if(!r)return;let i=Xc(r);if(i){let s=zF(i);this.handleError(s!==null?new fn(`stream error (${i})`,s):new Error(`stream error (${i})`));return}let n=r.message_type;if(n==="partial_transcript"){this.opts.emitPartials&&this.transcriptCb?.({text:VA(r.text),isFinal:!1,startMs:0});return}if(n==="committed_transcript"||n==="committed_transcript_with_timestamps"){let s=VA(r.text);s.length>0&&this.committed.push(s),this.endPending&&this.resolveEnd()}}handleError(e){if(this.closed)return;let r=WF("ElevenLabs ASR",e);if(this.endPending){let{reject:i}=this.endPending;this.endPending=null,i(r)}this.errorCb?.(r),this.teardown()}handleClose(){if(this.closed)return;this.closed=!0;let e=new Error("ElevenLabs ASR connection closed unexpectedly");if(this.endPending){let{reject:r}=this.endPending;this.endPending=null,r(e)}this.errorCb?.(e)}resolveEnd(){if(!this.endPending)return;let e={text:this.committed.join(" ").trim(),isFinal:!0,startMs:0};this.transcriptCb?.(e);let{resolve:r}=this.endPending;this.endPending=null,this.teardown(),r(e)}sendChunk(e,r){this.socket.send(JSON.stringify({message_type:"input_audio_chunk",audio_base_64:jF(e),commit:r,sample_rate:this.opts.sampleRate}))}sendCommit(){this.sendChunk(new Uint8Array(0),!0)}teardown(){this.closed||(this.closed=!0,this.socket.close())}}});import{randomUUID as lQe}from"node:crypto";function AQe(t,e){let r=t.engineVoice[e];if(!r)throw new Error(`voice '${t.id}' has no '${e}' engineVoice mapping`);if(r.kind!=="preset")throw new Error(`the ${e} adapter needs a preset voiceId for '${t.id}', got kind '${r.kind}'`);return r.voiceId}function dQe(t,e,r,i){let n=new URL(t.replace("{voice_id}",encodeURIComponent(e)));return n.searchParams.set("model_id",r),n.searchParams.set("output_format",hQe(i)),n.searchParams.set("inactivity_timeout","180"),n.searchParams.set("auto_mode","true"),n.toString()}function hQe(t){return t.encoding==="pcm_s16le"?`pcm_${t.sampleRate}`:"pcm_16000"}var PJ,uQe,qh,eR,tR=D(()=>{"use strict";YA();PJ="wss://api.elevenlabs.io/v1/text-to-speech/{voice_id}/multi-stream-input",uQe={stability:.5,similarity_boost:.75,use_speaker_boost:!0},qh=class{apiKey;socketFactory;model;endpointTemplate;id="elevenlabs-flash";constructor(e,r,i,n=PJ){this.apiKey=e,this.socketFactory=r,this.model=i,this.endpointTemplate=n}speak(e){return new eR(this.apiKey,this.socketFactory,this.model,this.endpointTemplate,this.id,e)}},eR=class{socket;contextId=lQe();opened=!1;cancelled=!1;closed=!1;endRequested=!1;closeContextSent=!1;pending=[];audioCb;errorCb;endPending=null;constructor(e,r,i,n,s,o){let a=AQe(o.voice,s);this.socket=r(dQe(n,a,i,o),{"xi-api-key":e}),this.socket.onOpen(()=>this.handleOpen()),this.socket.onMessage(c=>this.handleMessage(c)),this.socket.onError(c=>this.handleError(c)),this.socket.onClose(()=>this.handleClose())}pushText(e){if(!(this.cancelled||this.closed||this.endRequested)){if(!this.opened){this.pending.push(e);return}this.sendText(e)}}onAudio(e){this.audioCb=e}onError(e){this.errorCb=e}end(){return this.cancelled||this.closed?Promise.resolve():this.endPending?Promise.reject(new Error("TTS end() already in progress")):new Promise((e,r)=>{this.endPending={resolve:e,reject:r},this.endRequested=!0,this.opened&&this.sendEndOfContext()})}cancel(){if(this.cancelled||this.closed)return this.cancelled=!0,Promise.resolve();if(this.cancelled=!0,this.endPending){let{resolve:e}=this.endPending;this.endPending=null,e()}return this.opened&&this.sendCloseContext(),this.teardown(),Promise.resolve()}handleOpen(){if(!(this.cancelled||this.closed)){this.opened=!0,this.sendInit();for(let e of this.pending)this.sendText(e);this.pending.length=0,this.endRequested&&this.sendEndOfContext()}}handleMessage(e){if(this.cancelled||this.closed)return;let r=Ws(e);if(!r)return;let i=Xc(r);if(i){this.handleError(new Error(`stream error (${i})`));return}typeof r.audio=="string"&&r.audio.length>0&&this.audioCb?.(Sp(r.audio)),(r.isFinal===!0||r.is_final===!0)&&this.resolveEnd()}handleError(e){if(this.closed)return;let r=GA("ElevenLabs TTS",e);if(this.endPending){let{reject:i}=this.endPending;this.endPending=null,i(r)}this.errorCb?.(r),this.teardown()}handleClose(){if(this.closed)return;this.closed=!0;let e=new Error("ElevenLabs TTS connection closed unexpectedly");if(this.endPending){let{reject:r}=this.endPending;this.endPending=null,r(e)}this.errorCb?.(e)}resolveEnd(){if(!this.endPending)return;let{resolve:e}=this.endPending;this.endPending=null,this.teardown(),e()}sendInit(){this.socket.send(JSON.stringify({text:" ",voice_settings:uQe,context_id:this.contextId}))}sendText(e){let r=e.endsWith(" ")?e:`${e} `;this.socket.send(JSON.stringify({text:r,context_id:this.contextId}))}sendEndOfContext(){this.sendFlush(),this.sendCloseContext()}sendFlush(){this.socket.send(JSON.stringify({context_id:this.contextId,text:"",flush:!0}))}sendCloseContext(){this.closeContextSent||(this.closeContextSent=!0,this.socket.send(JSON.stringify({context_id:this.contextId,close_context:!0})))}teardown(){this.closed||(this.closed=!0,this.socket.close())}}});function fQe(t){if(t===void 0)return;let e;try{e=new URL(t).protocol}catch{throw new Error("sherpa-onnx ASR route url must be a valid ws:// or wss:// URL")}if(e!=="ws:"&&e!=="wss:")throw new Error(`sherpa-onnx ASR route url must use the ws:// or wss:// scheme (got '${e}//' - this is a WebSocket endpoint, not HTTP)`)}var jh,rR=D(()=>{"use strict";KN();tR();Tp();fw();_p();jp();jh=class{socketFactory;fetchImpl;constructor(e=al,r=fetch){this.socketFactory=e,this.fetchImpl=r}asrEngine(e,r){switch(e.provider){case"elevenlabs":return new Yh(r,this.socketFactory,e.model);case"sherpa-onnx":return fQe(e.url),new qA(this.socketFactory,e.url);case"openai-compat":return new vp(this.fetchImpl,e.url,e.model,r);default:throw new Error(`no stt adapter for provider '${e.provider}'`)}}ttsEngine(e,r){if(e.provider==="elevenlabs")return kp.includes(e.model)?new jA(r,this.socketFactory,e.model):new qh(r,this.socketFactory,e.model);throw new Error(`no tts adapter for provider '${e.provider}'`)}}});import{randomUUID as gQe}from"node:crypto";function iR(t={}){let e=new ea(void 0,t.logLevel);ee.setLevel(e.logLevel),ee.debug("core created",{logLevel:e.logLevel}),pu.sweepStale(ee);let{fetchImpl:r}=t,i={configService:t.configService??new wr,registry:t.registry??new LA(r),voiceRegistry:t.voiceRegistry??new jh(t.voiceSocketFactory,r),createTurnEvaluator:t.createTurnEvaluator??(n=>new xu(n,r)),...t.systemPrompt!==void 0&&{systemPrompt:t.systemPrompt},...t.voiceIdentity!==void 0&&{voiceIdentity:t.voiceIdentity},...t.createTurnController!==void 0&&{createTurnController:t.createTurnController},...t.createSmartTurnInference!==void 0&&{createSmartTurnInference:t.createSmartTurnInference},...t.createFrameClassifier!==void 0&&{createFrameClassifier:t.createFrameClassifier},...t.createSegmenter!==void 0&&{createSegmenter:t.createSegmenter},...t.clock!==void 0&&{clock:t.clock}};return new nR(i)}var pQe,mQe,nR,HJ=D(()=>{"use strict";Tt();WQ();JQ();aw();OJ();rN();qN();rR();pQe="jarvis-core",mQe="0.1.0-dev",nR=class{deps;constructor(e){this.deps=e}describe(){return Promise.resolve({name:pQe,version:mQe})}openSession(e){let r=gQe();return ee.debug("core opened session",{sessionId:r,capabilities:e.clientCapabilities}),Promise.resolve(new gI(r,e,this.deps))}}});import{readFileSync as EQe,writeFileSync as IQe}from"node:fs";function zh(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function BQe(t,e){let r={};if(!zh(t))return r;for(let i of CQe){let n=t[i];if(!Array.isArray(n))continue;let s=[];for(let o of n)!zh(o)||typeof o.id!="string"||s.push(typeof o.label=="string"?{id:o.id,label:o.label}:{id:o.id});(s.length>0||e&&i==="text"&&n.length===0)&&(r[i]=s)}return r}var YJ,qJ,VJ,GJ,yQe,CQe,Es,jJ=D(()=>{"use strict";Gs();Zp();$i();Zc();YJ="model-catalogue.json",qJ=1440*60*1e3,VJ=2,GJ=1,yQe={stt:!0,tts:!0,text:!0,embedding:!0,search:!0},CQe=Object.keys(yQe);Es=class{fetchImpl;timeoutMs=3e3;home;now;ttlMs;providers;fetchFailed=new Set;constructor(e=fetch,r){this.fetchImpl=e,this.home=r?.home??Yt,this.now=r?.now??(()=>Date.now()),this.ttlMs=r?.ttlMs??qJ,this.providers=Jp}async models(e,r,i){let n=this.providers[e],s=n?.defaultModel[r],o=n?.fastModel?.[r],a={source:"prefill",models:s===void 0?[]:[{id:s}],recommended:s,recommendedFast:o};if(!n?.listModels||!n.capabilities.includes(r))return a;let c=this.readCacheEntry(e,i?.url),l=c?.models[r],u=c===void 0?0:Math.max(0,this.now()-c.fetchedAtMs),d=A=>({source:"cache",models:A,recommended:s,recommendedFast:o,cacheAgeMs:u});if(c!==void 0){let A=this.now()-c.fetchedAtMs;if(c.currentCuration&&A>=0&&A<this.ttlMs)return l===void 0?a:d(l)}let h=await this.tryFetch(e,n,i);if(h!==void 0){let A=h[r];return A===void 0?a:{source:"live",models:A,recommended:s,recommendedFast:o}}return l!==void 0?d(l):a}async refresh(e,r){let i=this.providers[e];if(!i?.listModels)return{ok:!1,status:"no-lister"};let n=this.cacheIdentity(e,r?.url);if(n===void 0)return{ok:!1,status:"failed",detail:"invalid Ollama server address"};this.fetchFailed.delete(n);let s=o=>{let a=this.readCacheEntry(e,r?.url);return a===void 0?{ok:!1,status:"failed",detail:o}:{ok:!1,status:"failed",detail:o,cached:{models:a.models,cacheAgeMs:Math.max(0,this.now()-a.fetchedAtMs)}}};if(i.keylessLister!==!0&&r?.key===void 0)return s("no API key available");try{let o=r?.signal??AbortSignal.timeout(this.timeoutMs),a=await i.listModels(r?.key,this.fetchImpl,o,r);return this.writeCacheEntry(e,a,r?.url),{ok:!0,status:"refreshed",models:a}}catch(o){return s(qt(o,r?.key))}}cached(e,r,i){let n=this.readCacheEntry(e,i?.url),s=n?.models[r];if(n===void 0||s===void 0)return;let o=this.now()-n.fetchedAtMs;return{models:s,cacheAgeMs:Math.max(0,o),fresh:n.currentCuration&&o>=0&&o<this.ttlMs}}async tryFetch(e,r,i){if(r.listModels===void 0)return;let n=this.cacheIdentity(e,i?.url);if(!(n===void 0||this.fetchFailed.has(n))&&!(r.keylessLister!==!0&&i?.key===void 0))try{let s=i?.signal??AbortSignal.timeout(this.timeoutMs),o=await r.listModels(i?.key,this.fetchImpl,s,i);return this.writeCacheEntry(e,o,i?.url),o}catch{this.fetchFailed.add(n);return}}cachePath(){return this.home.resolve(YJ)}readCacheFile(){let e;try{e=JSON.parse(EQe(this.cachePath(),"utf8"))}catch{return}if(!(!zh(e)||e.version!==VJ))return zh(e.providers)?e.providers:void 0}readCacheEntry(e,r){let i=this.cacheIdentity(e,r);if(i===void 0)return;let n=this.readCacheFile()?.[i];if(!zh(n))return;let{fetchedAtMs:s}=n;if(typeof s!="number"||!Number.isFinite(s))return;let o=BQe(n.models,e==="ollama-local");if(Object.keys(o).length===0)return;let a=e!=="elevenlabs"||n.curationRevision===GJ;return{fetchedAtMs:s,models:o,currentCuration:a}}writeCacheEntry(e,r,i){try{let n=this.cacheIdentity(e,i);if(n===void 0)return;let s=this.readCacheFile()??{};s[n]={fetchedAtMs:this.now(),models:r,...e==="elevenlabs"?{curationRevision:GJ}:{}},this.home.ensureDir(),IQe(this.cachePath(),`${JSON.stringify({version:VJ,providers:s},null,2)}
394
394
  `)}catch{}}cacheIdentity(e,r){try{return TA(e,r)}catch{return}}}});var Is=D(()=>{"use strict";HJ();JQ();Zp();jJ();aw();ow();Zc();DA();nm();Wc();jc();jp();KN();tR();Tp();_p();rR();zN();$N();PN();GN();na();MN();RN();cI();VN();nN();OA()});var vu=b((WPe,XJ)=>{"use strict";var TQe="2.0.0",NQe=Number.MAX_SAFE_INTEGER||9007199254740991,RQe=16,MQe=250,LQe=["major","premajor","minor","preminor","patch","prepatch","prerelease"];XJ.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:RQe,MAX_SAFE_BUILD_LENGTH:MQe,MAX_SAFE_INTEGER:NQe,RELEASE_TYPES:LQe,SEMVER_SPEC_VERSION:TQe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Zh=b((JPe,KJ)=>{"use strict";var FQe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KJ.exports=FQe});var Su=b((Di,e5)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:aR,MAX_SAFE_BUILD_LENGTH:UQe,MAX_LENGTH:OQe}=vu(),$Qe=Zh();Di=e5.exports={};var PQe=Di.re=[],HQe=Di.safeRe=[],X=Di.src=[],VQe=Di.safeSrc=[],K=Di.t={},GQe=0,cR="[a-zA-Z0-9-]",YQe=[["\\s",1],["\\d",OQe],[cR,UQe]],qQe=t=>{for(let[e,r]of YQe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Be=(t,e,r)=>{let i=qQe(e),n=GQe++;$Qe(t,n,e),K[t]=n,X[n]=e,VQe[n]=i,PQe[n]=new RegExp(e,r?"g":void 0),HQe[n]=new RegExp(i,r?"g":void 0)};Be("NUMERICIDENTIFIER","0|[1-9]\\d*");Be("NUMERICIDENTIFIERLOOSE","\\d+");Be("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${cR}*`);Be("MAINVERSION",`(${X[K.NUMERICIDENTIFIER]})\\.(${X[K.NUMERICIDENTIFIER]})\\.(${X[K.NUMERICIDENTIFIER]})`);Be("MAINVERSIONLOOSE",`(${X[K.NUMERICIDENTIFIERLOOSE]})\\.(${X[K.NUMERICIDENTIFIERLOOSE]})\\.(${X[K.NUMERICIDENTIFIERLOOSE]})`);Be("PRERELEASEIDENTIFIER",`(?:${X[K.NONNUMERICIDENTIFIER]}|${X[K.NUMERICIDENTIFIER]})`);Be("PRERELEASEIDENTIFIERLOOSE",`(?:${X[K.NONNUMERICIDENTIFIER]}|${X[K.NUMERICIDENTIFIERLOOSE]})`);Be("PRERELEASE",`(?:-(${X[K.PRERELEASEIDENTIFIER]}(?:\\.${X[K.PRERELEASEIDENTIFIER]})*))`);Be("PRERELEASELOOSE",`(?:-?(${X[K.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${X[K.PRERELEASEIDENTIFIERLOOSE]})*))`);Be("BUILDIDENTIFIER",`${cR}+`);Be("BUILD",`(?:\\+(${X[K.BUILDIDENTIFIER]}(?:\\.${X[K.BUILDIDENTIFIER]})*))`);Be("FULLPLAIN",`v?${X[K.MAINVERSION]}${X[K.PRERELEASE]}?${X[K.BUILD]}?`);Be("FULL",`^${X[K.FULLPLAIN]}$`);Be("LOOSEPLAIN",`[v=\\s]*${X[K.MAINVERSIONLOOSE]}${X[K.PRERELEASELOOSE]}?${X[K.BUILD]}?`);Be("LOOSE",`^${X[K.LOOSEPLAIN]}$`);Be("GTLT","((?:<|>)?=?)");Be("XRANGEIDENTIFIERLOOSE",`${X[K.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Be("XRANGEIDENTIFIER",`${X[K.NUMERICIDENTIFIER]}|x|X|\\*`);Be("XRANGEPLAIN",`[v=\\s]*(${X[K.XRANGEIDENTIFIER]})(?:\\.(${X[K.XRANGEIDENTIFIER]})(?:\\.(${X[K.XRANGEIDENTIFIER]})(?:${X[K.PRERELEASE]})?${X[K.BUILD]}?)?)?`);Be("XRANGEPLAINLOOSE",`[v=\\s]*(${X[K.XRANGEIDENTIFIERLOOSE]})(?:\\.(${X[K.XRANGEIDENTIFIERLOOSE]})(?:\\.(${X[K.XRANGEIDENTIFIERLOOSE]})(?:${X[K.PRERELEASELOOSE]})?${X[K.BUILD]}?)?)?`);Be("XRANGE",`^${X[K.GTLT]}\\s*${X[K.XRANGEPLAIN]}$`);Be("XRANGELOOSE",`^${X[K.GTLT]}\\s*${X[K.XRANGEPLAINLOOSE]}$`);Be("COERCEPLAIN",`(^|[^\\d])(\\d{1,${aR}})(?:\\.(\\d{1,${aR}}))?(?:\\.(\\d{1,${aR}}))?`);Be("COERCE",`${X[K.COERCEPLAIN]}(?:$|[^\\d])`);Be("COERCEFULL",X[K.COERCEPLAIN]+`(?:${X[K.PRERELEASE]})?(?:${X[K.BUILD]})?(?:$|[^\\d])`);Be("COERCERTL",X[K.COERCE],!0);Be("COERCERTLFULL",X[K.COERCEFULL],!0);Be("LONETILDE","(?:~>?)");Be("TILDETRIM",`(\\s*)${X[K.LONETILDE]}\\s+`,!0);Di.tildeTrimReplace="$1~";Be("TILDE",`^${X[K.LONETILDE]}${X[K.XRANGEPLAIN]}$`);Be("TILDELOOSE",`^${X[K.LONETILDE]}${X[K.XRANGEPLAINLOOSE]}$`);Be("LONECARET","(?:\\^)");Be("CARETTRIM",`(\\s*)${X[K.LONECARET]}\\s+`,!0);Di.caretTrimReplace="$1^";Be("CARET",`^${X[K.LONECARET]}${X[K.XRANGEPLAIN]}$`);Be("CARETLOOSE",`^${X[K.LONECARET]}${X[K.XRANGEPLAINLOOSE]}$`);Be("COMPARATORLOOSE",`^${X[K.GTLT]}\\s*(${X[K.LOOSEPLAIN]})$|^$`);Be("COMPARATOR",`^${X[K.GTLT]}\\s*(${X[K.FULLPLAIN]})$|^$`);Be("COMPARATORTRIM",`(\\s*)${X[K.GTLT]}\\s*(${X[K.LOOSEPLAIN]}|${X[K.XRANGEPLAIN]})`,!0);Di.comparatorTrimReplace="$1$2$3";Be("HYPHENRANGE",`^\\s*(${X[K.XRANGEPLAIN]})\\s+-\\s+(${X[K.XRANGEPLAIN]})\\s*$`);Be("HYPHENRANGELOOSE",`^\\s*(${X[K.XRANGEPLAINLOOSE]})\\s+-\\s+(${X[K.XRANGEPLAINLOOSE]})\\s*$`);Be("STAR","(<|>)?=?\\s*\\*");Be("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Be("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var yI=b((ZPe,t5)=>{"use strict";var jQe=Object.freeze({loose:!0}),zQe=Object.freeze({}),WQe=t=>t?typeof t!="object"?jQe:t:zQe;t5.exports=WQe});var lR=b((XPe,i5)=>{"use strict";var r5=/^[0-9]+$/,n5=(t,e)=>{if(typeof t=="number"&&typeof e=="number")return t===e?0:t<e?-1:1;let r=r5.test(t),i=r5.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:t<e?-1:1},JQe=(t,e)=>n5(e,t);i5.exports={compareIdentifiers:n5,rcompareIdentifiers:JQe}});var Kt=b((KPe,o5)=>{"use strict";var CI=Zh(),{MAX_LENGTH:s5,MAX_SAFE_INTEGER:BI}=vu(),{safeRe:xI,t:bI}=Su(),ZQe=yI(),{compareIdentifiers:uR}=lR(),XQe=(t,e)=>{let r=e.split(".");if(r.length>t.length)return!1;for(let i=0;i<r.length;i++)if(uR(t[i],r[i])!==0)return!1;return!0},AR=class t{constructor(e,r){if(r=ZQe(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>s5)throw new TypeError(`version is longer than ${s5} characters`);CI("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?xI[bI.LOOSE]:xI[bI.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>BI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>BI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>BI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<BI)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(CI("SemVer.compare",this.version,this.options,e),!(e instanceof t)){if(typeof e=="string"&&e===this.version)return 0;e=new t(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof t||(e=new t(e,this.options)),this.major<e.major?-1:this.major>e.major?1:this.minor<e.minor?-1:this.minor>e.minor?1:this.patch<e.patch?-1:this.patch>e.patch?1:0}comparePre(e){if(e instanceof t||(e=new t(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(CI("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return uR(i,n)}while(++r)}compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(CI("build compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return uR(i,n)}while(++r)}inc(e,r,i){if(e.startsWith("pre")){if(!r&&i===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let n=`-${r}`.match(this.options.loose?xI[bI.PRERELEASELOOSE]:xI[bI.PRERELEASE]);if(!n||n[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,i);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,i);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,i),this.inc("pre",r,i);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,i),this.inc("pre",r,i);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let n=Number(i)?1:0;if(this.prerelease.length===0)this.prerelease=[n];else{let s=this.prerelease.length;for(;--s>=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);if(s===-1){if(r===this.prerelease.join(".")&&i===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(n)}}if(r){let s=[r,n];if(i===!1&&(s=[r]),XQe(this.prerelease,r)){let o=this.prerelease[r.split(".").length];isNaN(o)&&(this.prerelease=s)}else this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};o5.exports=AR});var To=b((eHe,c5)=>{"use strict";var a5=Kt(),KQe=(t,e,r=!1)=>{if(t instanceof a5)return t;try{return new a5(t,e)}catch(i){if(!r)return null;throw i}};c5.exports=KQe});var u5=b((tHe,l5)=>{"use strict";var ewe=To(),twe=(t,e)=>{let r=ewe(t,e);return r?r.version:null};l5.exports=twe});var d5=b((rHe,A5)=>{"use strict";var rwe=To(),nwe=(t,e)=>{let r=rwe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};A5.exports=nwe});var g5=b((nHe,f5)=>{"use strict";var h5=Kt(),iwe=(t,e,r,i,n)=>{typeof r=="string"&&(n=i,i=r,r=void 0);try{return new h5(t instanceof h5?t.version:t,r).inc(e,i,n).version}catch{return null}};f5.exports=iwe});var E5=b((iHe,m5)=>{"use strict";var p5=To(),swe=(t,e)=>{let r=p5(t,null,!0),i=p5(e,null,!0),n=r.compare(i);if(n===0)return null;let s=n>0,o=s?r:i,a=s?i:r,c=!!o.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(o)===0)return a.minor&&!a.patch?"minor":"patch"}let u=c?"pre":"";return r.major!==i.major?u+"major":r.minor!==i.minor?u+"minor":r.patch!==i.patch?u+"patch":"prerelease"};m5.exports=swe});var y5=b((sHe,I5)=>{"use strict";var owe=Kt(),awe=(t,e)=>new owe(t,e).major;I5.exports=awe});var B5=b((oHe,C5)=>{"use strict";var cwe=Kt(),lwe=(t,e)=>new cwe(t,e).minor;C5.exports=lwe});var b5=b((aHe,x5)=>{"use strict";var uwe=Kt(),Awe=(t,e)=>new uwe(t,e).patch;x5.exports=Awe});var w5=b((cHe,Q5)=>{"use strict";var dwe=To(),hwe=(t,e)=>{let r=dwe(t,e);return r&&r.prerelease.length?r.prerelease:null};Q5.exports=hwe});var kn=b((lHe,S5)=>{"use strict";var v5=Kt(),fwe=(t,e,r)=>new v5(t,r).compare(new v5(e,r));S5.exports=fwe});var _5=b((uHe,D5)=>{"use strict";var gwe=kn(),pwe=(t,e,r)=>gwe(e,t,r);D5.exports=pwe});var T5=b((AHe,k5)=>{"use strict";var mwe=kn(),Ewe=(t,e)=>mwe(t,e,!0);k5.exports=Ewe});var QI=b((dHe,R5)=>{"use strict";var N5=Kt(),Iwe=(t,e,r)=>{let i=new N5(t,r),n=new N5(e,r);return i.compare(n)||i.compareBuild(n)};R5.exports=Iwe});var L5=b((hHe,M5)=>{"use strict";var ywe=QI(),Cwe=(t,e)=>t.sort((r,i)=>ywe(r,i,e));M5.exports=Cwe});var U5=b((fHe,F5)=>{"use strict";var Bwe=QI(),xwe=(t,e)=>t.sort((r,i)=>Bwe(i,r,e));F5.exports=xwe});var Xh=b((gHe,O5)=>{"use strict";var bwe=kn(),Qwe=(t,e,r)=>bwe(t,e,r)>0;O5.exports=Qwe});var wI=b((pHe,$5)=>{"use strict";var wwe=kn(),vwe=(t,e,r)=>wwe(t,e,r)<0;$5.exports=vwe});var dR=b((mHe,P5)=>{"use strict";var Swe=kn(),Dwe=(t,e,r)=>Swe(t,e,r)===0;P5.exports=Dwe});var hR=b((EHe,H5)=>{"use strict";var _we=kn(),kwe=(t,e,r)=>_we(t,e,r)!==0;H5.exports=kwe});var vI=b((IHe,V5)=>{"use strict";var Twe=kn(),Nwe=(t,e,r)=>Twe(t,e,r)>=0;V5.exports=Nwe});var SI=b((yHe,G5)=>{"use strict";var Rwe=kn(),Mwe=(t,e,r)=>Rwe(t,e,r)<=0;G5.exports=Mwe});var fR=b((CHe,Y5)=>{"use strict";var Lwe=dR(),Fwe=hR(),Uwe=Xh(),Owe=vI(),$we=wI(),Pwe=SI(),Hwe=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Lwe(t,r,i);case"!=":return Fwe(t,r,i);case">":return Uwe(t,r,i);case">=":return Owe(t,r,i);case"<":return $we(t,r,i);case"<=":return Pwe(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};Y5.exports=Hwe});var j5=b((BHe,q5)=>{"use strict";var Vwe=Kt(),Gwe=To(),{safeRe:DI,t:_I}=Su(),Ywe=(t,e)=>{if(t instanceof Vwe)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?DI[_I.COERCEFULL]:DI[_I.COERCE]);else{let c=e.includePrerelease?DI[_I.COERCERTLFULL]:DI[_I.COERCERTL],l;for(;(l=c.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||l.index+l[0].length!==r.index+r[0].length)&&(r=l),c.lastIndex=l.index+l[1].length+l[2].length;c.lastIndex=-1}if(r===null)return null;let i=r[2],n=r[3]||"0",s=r[4]||"0",o=e.includePrerelease&&r[5]?`-${r[5]}`:"",a=e.includePrerelease&&r[6]?`+${r[6]}`:"";return Gwe(`${i}.${n}.${s}${o}${a}`,e)};q5.exports=Ywe});var W5=b((xHe,z5)=>{"use strict";var qwe=To(),jwe=vu(),zwe=Kt(),Wwe=(t,e,r)=>{if(!jwe.RELEASE_TYPES.includes(e))return null;let i=Jwe(t,r);return i&&Zwe(i,e)},Jwe=(t,e)=>{let r=t instanceof zwe?t.version:t;return qwe(r,e)},Zwe=(t,e)=>{if(Xwe(e))return t.version;switch(t.prerelease=[],e){case"major":t.minor=0,t.patch=0;break;case"minor":t.patch=0;break}return t.format()},Xwe=t=>t.startsWith("pre");z5.exports=Wwe});var Z5=b((bHe,J5)=>{"use strict";var gR=class{constructor(){this.max=1e3,this.map=new Map}get(e){let r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}delete(e){return this.map.delete(e)}set(e,r){if(!this.delete(e)&&r!==void 0){if(this.map.size>=this.max){let n=this.map.keys().next().value;this.delete(n)}this.map.set(e,r)}return this}};J5.exports=gR});var Tn=b((QHe,t8)=>{"use strict";var Kwe=/\s+/g,pR=class t{constructor(e,r){if(r=tve(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof mR)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().replace(Kwe," "),this.set=this.raw.split("||").map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!K5(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&uve(n[0])){this.set=[n];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+="||");let r=this.set[e];for(let i=0;i<r.length;i++)i>0&&(this.formatted+=" "),this.formatted+=r[i].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(lve,"");let i=((this.options.includePrerelease&&ave)|(this.options.loose&&cve))+":"+e,n=X5.get(i);if(n)return n;let s=this.options.loose,o=s?yr[er.HYPHENRANGELOOSE]:yr[er.HYPHENRANGE];e=e.replace(o,yve(this.options.includePrerelease)),ut("hyphen replace",e),e=e.replace(yr[er.COMPARATORTRIM],ive),ut("comparator trim",e),e=e.replace(yr[er.TILDETRIM],sve),ut("tilde trim",e),e=e.replace(yr[er.CARETTRIM],ove),ut("caret trim",e);let a=e.split(" ").map(d=>Ave(d,this.options)).join(" ").split(/\s+/).map(d=>Ive(d,this.options));s&&(a=a.filter(d=>(ut("loose invalid filter",d,this.options),!!d.match(yr[er.COMPARATORLOOSE])))),ut("range list",a);let c=new Map,l=a.map(d=>new mR(d,this.options));for(let d of l){if(K5(d))return[d];c.set(d.value,d)}c.size>1&&c.has("")&&c.delete("");let u=[...c.values()];return X5.set(i,u),u}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(i=>e8(i,r)&&e.set.some(n=>e8(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new rve(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(Cve(this.set[r],e,this.options))return!0;return!1}};t8.exports=pR;var eve=Z5(),X5=new eve,tve=yI(),mR=Kh(),ut=Zh(),rve=Kt(),{safeRe:yr,src:nve,t:er,comparatorTrimReplace:ive,tildeTrimReplace:sve,caretTrimReplace:ove}=Su(),{FLAG_INCLUDE_PRERELEASE:ave,FLAG_LOOSE:cve}=vu(),lve=new RegExp(nve[er.BUILD],"g"),K5=t=>t.value==="<0.0.0-0",uve=t=>t.value==="",e8=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Ave=(t,e)=>(t=t.replace(yr[er.BUILD],""),ut("comp",t,e),t=fve(t,e),ut("caret",t),t=dve(t,e),ut("tildes",t),t=pve(t,e),ut("xrange",t),t=Eve(t,e),ut("stars",t),t),Cr=t=>!t||t.toLowerCase()==="x"||t==="*",dve=(t,e)=>t.trim().split(/\s+/).map(r=>hve(r,e)).join(" "),hve=(t,e)=>{let r=e.loose?yr[er.TILDELOOSE]:yr[er.TILDE];return t.replace(r,(i,n,s,o,a)=>{ut("tilde",t,i,n,s,o,a);let c;return Cr(n)?c="":Cr(s)?c=`>=${n}.0.0 <${+n+1}.0.0-0`:Cr(o)?c=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(ut("replaceTilde pr",a),c=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):c=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,ut("tilde return",c),c})},fve=(t,e)=>t.trim().split(/\s+/).map(r=>gve(r,e)).join(" "),gve=(t,e)=>{ut("caret",t,e);let r=e.loose?yr[er.CARETLOOSE]:yr[er.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,c)=>{ut("caret",t,n,s,o,a,c);let l;return Cr(s)?l="":Cr(o)?l=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Cr(a)?s==="0"?l=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:l=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:c?(ut("replaceCaret pr",c),s==="0"?o==="0"?l=`>=${s}.${o}.${a}-${c} <${s}.${o}.${+a+1}-0`:l=`>=${s}.${o}.${a}-${c} <${s}.${+o+1}.0-0`:l=`>=${s}.${o}.${a}-${c} <${+s+1}.0.0-0`):(ut("no pr"),s==="0"?o==="0"?l=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:l=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:l=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),ut("caret return",l),l})},pve=(t,e)=>(ut("replaceXRanges",t,e),t.split(/\s+/).map(r=>mve(r,e)).join(" ")),mve=(t,e)=>{t=t.trim();let r=e.loose?yr[er.XRANGELOOSE]:yr[er.XRANGE];return t.replace(r,(i,n,s,o,a,c)=>{ut("xRange",t,i,n,s,o,a,c);let l=Cr(s),u=l||Cr(o),d=u||Cr(a),h=d;return n==="="&&h&&(n=""),c=e.includePrerelease?"-0":"",l?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&h?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(c="-0"),i=`${n+s}.${o}.${a}${c}`):u?i=`>=${s}.0.0${c} <${+s+1}.0.0-0`:d&&(i=`>=${s}.${o}.0${c} <${s}.${+o+1}.0-0`),ut("xRange return",i),i})},Eve=(t,e)=>(ut("replaceStars",t,e),t.trim().replace(yr[er.STAR],"")),Ive=(t,e)=>(ut("replaceGTE0",t,e),t.trim().replace(yr[e.includePrerelease?er.GTE0PRE:er.GTE0],"")),yve=t=>(e,r,i,n,s,o,a,c,l,u,d,h)=>(Cr(i)?r="":Cr(n)?r=`>=${i}.0.0${t?"-0":""}`:Cr(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Cr(l)?c="":Cr(u)?c=`<${+l+1}.0.0-0`:Cr(d)?c=`<${l}.${+u+1}.0-0`:h?c=`<=${l}.${u}.${d}-${h}`:t?c=`<${l}.${u}.${+d+1}-0`:c=`<=${c}`,`${r} ${c}`.trim()),Cve=(t,e,r)=>{for(let i=0;i<t.length;i++)if(!t[i].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let i=0;i<t.length;i++)if(ut(t[i].semver),t[i].semver!==mR.ANY&&t[i].semver.prerelease.length>0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Kh=b((wHe,a8)=>{"use strict";var ef=Symbol("SemVer ANY"),yR=class t{static get ANY(){return ef}constructor(e,r){if(r=r8(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),IR("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===ef?this.value="":this.value=this.operator+this.semver.version,IR("comp",this)}parse(e){let r=this.options.loose?n8[i8.COMPARATORLOOSE]:n8[i8.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new s8(i[2],this.options.loose):this.semver=ef}toString(){return this.value}test(e){if(IR("Comparator.test",e,this.options.loose),this.semver===ef||e===ef)return!0;if(typeof e=="string")try{e=new s8(e,this.options)}catch{return!1}return ER(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new o8(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new o8(this.value,r).test(e.semver):(r=r8(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||ER(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||ER(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};a8.exports=yR;var r8=yI(),{safeRe:n8,t:i8}=Su(),ER=fR(),IR=Zh(),s8=Kt(),o8=Tn()});var tf=b((vHe,c8)=>{"use strict";var Bve=Tn(),xve=(t,e,r)=>{try{e=new Bve(e,r)}catch{return!1}return e.test(t)};c8.exports=xve});var u8=b((SHe,l8)=>{"use strict";var bve=Tn(),Qve=(t,e)=>new bve(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));l8.exports=Qve});var d8=b((DHe,A8)=>{"use strict";var wve=Kt(),vve=Tn(),Sve=(t,e,r)=>{let i=null,n=null,s=null;try{s=new vve(e,r)}catch{return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new wve(i,r))}),i};A8.exports=Sve});var f8=b((_He,h8)=>{"use strict";var Dve=Kt(),_ve=Tn(),kve=(t,e,r)=>{let i=null,n=null,s=null;try{s=new _ve(e,r)}catch{return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new Dve(i,r))}),i};h8.exports=kve});var m8=b((kHe,p8)=>{"use strict";var CR=Kt(),Tve=Tn(),g8=Xh(),Nve=(t,e)=>{t=new Tve(t,e);let r=new CR("0.0.0");if(t.test(r)||(r=new CR("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i<t.set.length;++i){let n=t.set[i],s=null;n.forEach(o=>{let a=new CR(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||g8(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||g8(r,s))&&(r=s)}return r&&t.test(r)?r:null};p8.exports=Nve});var I8=b((THe,E8)=>{"use strict";var Rve=Tn(),Mve=(t,e)=>{try{return new Rve(t,e).range||"*"}catch{return null}};E8.exports=Mve});var kI=b((NHe,x8)=>{"use strict";var Lve=Kt(),B8=Kh(),{ANY:Fve}=B8,Uve=Tn(),Ove=tf(),y8=Xh(),C8=wI(),$ve=SI(),Pve=vI(),Hve=(t,e,r,i)=>{t=new Lve(t,i),e=new Uve(e,i);let n,s,o,a,c;switch(r){case">":n=y8,s=$ve,o=C8,a=">",c=">=";break;case"<":n=C8,s=Pve,o=y8,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Ove(t,e,i))return!1;for(let l=0;l<e.set.length;++l){let u=e.set[l],d=null,h=null;if(u.forEach(A=>{A.semver===Fve&&(A=new B8(">=0.0.0")),d=d||A,h=h||A,n(A.semver,d.semver,i)?d=A:o(A.semver,h.semver,i)&&(h=A)}),d.operator===a||d.operator===c||(!h.operator||h.operator===a)&&s(t,h.semver))return!1;if(h.operator===c&&o(t,h.semver))return!1}return!0};x8.exports=Hve});var Q8=b((RHe,b8)=>{"use strict";var Vve=kI(),Gve=(t,e,r)=>Vve(t,e,">",r);b8.exports=Gve});var v8=b((MHe,w8)=>{"use strict";var Yve=kI(),qve=(t,e,r)=>Yve(t,e,"<",r);w8.exports=qve});var _8=b((LHe,D8)=>{"use strict";var S8=Tn(),jve=(t,e,r)=>(t=new S8(t,r),e=new S8(e,r),t.intersects(e,r));D8.exports=jve});var T8=b((FHe,k8)=>{"use strict";var zve=tf(),Wve=kn();k8.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,d)=>Wve(u,d,r));for(let u of o)zve(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,d]of i)u===d?a.push(u):!d&&u===o[0]?a.push("*"):d?u===o[0]?a.push(`<=${d}`):a.push(`${u} - ${d}`):a.push(`>=${u}`);let c=a.join(" || "),l=typeof e.raw=="string"?e.raw:String(e);return c.length<l.length?c:e}});var U8=b((UHe,F8)=>{"use strict";var N8=Tn(),bR=Kh(),{ANY:BR}=bR,xR=tf(),QR=kn(),Jve=(t,e,r={})=>{if(t===e)return!0;t=new N8(t,r),e=new N8(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=Xve(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},Zve=[new bR(">=0.0.0-0")],R8=[new bR(">=0.0.0")],Xve=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===BR){if(e.length===1&&e[0].semver===BR)return!0;r.includePrerelease?t=Zve:t=R8}if(e.length===1&&e[0].semver===BR){if(r.includePrerelease)return!0;e=R8}let i=new Set,n,s;for(let A of t)A.operator===">"||A.operator===">="?n=M8(n,A,r):A.operator==="<"||A.operator==="<="?s=L8(s,A,r):i.add(A.semver);if(i.size>1)return null;let o;if(n&&s){if(o=QR(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let A of i){if(n&&!xR(A,String(n),r)||s&&!xR(A,String(s),r))return null;for(let f of e)if(!xR(A,String(f),r))return!1;return!0}let a,c,l,u,d=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,h=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;d&&d.prerelease.length===1&&s.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(let A of e){if(u=u||A.operator===">"||A.operator===">=",l=l||A.operator==="<"||A.operator==="<=",n){if(h&&A.semver.prerelease&&A.semver.prerelease.length&&A.semver.major===h.major&&A.semver.minor===h.minor&&A.semver.patch===h.patch&&(h=!1),A.operator===">"||A.operator===">="){if(a=M8(n,A,r),a===A&&a!==n)return!1}else if(n.operator===">="&&!A.test(n.semver))return!1}if(s){if(d&&A.semver.prerelease&&A.semver.prerelease.length&&A.semver.major===d.major&&A.semver.minor===d.minor&&A.semver.patch===d.patch&&(d=!1),A.operator==="<"||A.operator==="<="){if(c=L8(s,A,r),c===A&&c!==s)return!1}else if(s.operator==="<="&&!A.test(s.semver))return!1}if(!A.operator&&(s||n)&&o!==0)return!1}return!(n&&l&&!s&&o!==0||s&&u&&!n&&o!==0||h||d)},M8=(t,e,r)=>{if(!t)return e;let i=QR(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},L8=(t,e,r)=>{if(!t)return e;let i=QR(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};F8.exports=Jve});var H8=b((OHe,P8)=>{"use strict";var wR=Su(),O8=vu(),Kve=Kt(),$8=lR(),eSe=To(),tSe=u5(),rSe=d5(),nSe=g5(),iSe=E5(),sSe=y5(),oSe=B5(),aSe=b5(),cSe=w5(),lSe=kn(),uSe=_5(),ASe=T5(),dSe=QI(),hSe=L5(),fSe=U5(),gSe=Xh(),pSe=wI(),mSe=dR(),ESe=hR(),ISe=vI(),ySe=SI(),CSe=fR(),BSe=j5(),xSe=W5(),bSe=Kh(),QSe=Tn(),wSe=tf(),vSe=u8(),SSe=d8(),DSe=f8(),_Se=m8(),kSe=I8(),TSe=kI(),NSe=Q8(),RSe=v8(),MSe=_8(),LSe=T8(),FSe=U8();P8.exports={parse:eSe,valid:tSe,clean:rSe,inc:nSe,diff:iSe,major:sSe,minor:oSe,patch:aSe,prerelease:cSe,compare:lSe,rcompare:uSe,compareLoose:ASe,compareBuild:dSe,sort:hSe,rsort:fSe,gt:gSe,lt:pSe,eq:mSe,neq:ESe,gte:ISe,lte:ySe,cmp:CSe,coerce:BSe,truncate:xSe,Comparator:bSe,Range:QSe,satisfies:wSe,toComparators:vSe,maxSatisfying:SSe,minSatisfying:DSe,minVersion:_Se,validRange:kSe,outside:TSe,gtr:NSe,ltr:RSe,intersects:MSe,simplifyRange:LSe,subset:FSe,SemVer:Kve,re:wR.re,src:wR.src,tokens:wR.t,SEMVER_SPEC_VERSION:O8.SEMVER_SPEC_VERSION,RELEASE_TYPES:O8.RELEASE_TYPES,compareIdentifiers:$8.compareIdentifiers,rcompareIdentifiers:$8.rcompareIdentifiers}});var j8=b((zHe,vR)=>{var RI=process||{},Y8=RI.argv||[],NI=RI.env||{},PSe=!(NI.NO_COLOR||Y8.includes("--no-color"))&&(!!NI.FORCE_COLOR||Y8.includes("--color")||RI.platform==="win32"||(RI.stdout||{}).isTTY&&NI.TERM!=="dumb"||!!NI.CI),HSe=(t,e,r=t)=>i=>{let n=""+i,s=n.indexOf(e,t.length);return~s?t+VSe(n,e,r,s)+e:t+n+e},VSe=(t,e,r,i)=>{let n="",s=0;do n+=t.substring(s,i)+r,s=i+e.length,i=t.indexOf(e,s);while(~i);return n+t.substring(s)},q8=(t=PSe)=>{let e=t?HSe:()=>String;return{isColorSupported:t,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};vR.exports=q8();vR.exports.createColors=q8});var NR=b((C4e,dZ)=>{"use strict";var TR={to(t,e){return e?`\x1B[${e+1};${t+1}H`:`\x1B[${t+1}G`},move(t,e){let r="";return t<0?r+=`\x1B[${-t}D`:t>0&&(r+=`\x1B[${t}C`),e<0?r+=`\x1B[${-e}A`:e>0&&(r+=`\x1B[${e}B`),r},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},dDe={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},hDe={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let r=0;r<t;r++)e+=this.line+(r<t-1?TR.up():"");return t&&(e+=TR.left),e}};dZ.exports={cursor:TR,scroll:dDe,erase:hDe,beep:"\x07"}});var Bs,ey=D(()=>{"use strict";Bs=class extends Error{constructor(e){super(e),this.name="AudioUnavailableError"}}});function d7(t,e){if(e<=1)return t;let r=Math.floor(t.length/e),i=new Int16Array(r);for(let n=0;n<r;n++){let s=0,o=n*e;for(let a=0;a<e;a++)s+=t[o+a];i[n]=Math.round(s/e)}return i}var ly,h7=D(()=>{"use strict";ly=class{step;pos=0;prev=0;primed=!1;constructor(e,r){if(e<=0||r<=0)throw new RangeError("resampler rates must be positive");this.step=e/r}process(e){if(e.length===0)return new Int16Array(0);let r=[],i=e.length-1,n=this.primed?this.pos:0;for(;;){let s=Math.floor(n);if(s+1>i)break;let o=s<0?this.prev:e[s],a=e[s+1];r.push(Math.round(o+(a-o)*(n-s))),n+=this.step}return this.prev=e[i],this.primed=!0,this.pos=n-e.length,Int16Array.from(r)}}});function g7(t){return t.byteLength/2/__e}function k_e(t){let e=t.byteLength>>1,r=new DataView(t.buffer,t.byteOffset,t.byteLength),i=new Int16Array(e);for(let n=0;n<e;n++)i[n]=r.getInt16(n*2,!0);return i}var f7,__e,uy,p7=D(()=>{"use strict";Tt();Is();f7=32,__e=16,uy=class{constructor(e,r,i={}){this.vad=e;this.onSpeech=r;this.speechThreshold=i.speechThreshold??.5,this.onsetMs=i.onsetMs??2*f7,this.holdoffMs=i.holdoffMs??300,this.energyThreshold=i.energyThreshold??.01,this.log=i.log??ee}vad;onSpeech;speechThreshold;onsetMs;holdoffMs;energyThreshold;log;inSpeech=!1;speechRunMs=0;silenceRunMs=0;degraded=!1;closed=!1;feed(e){if(!(this.closed||e.byteLength===0)){if(this.degraded){this.applyVerdict(hn(e,this.energyThreshold),g7(e));return}this.vad.process(k_e(e)).then(r=>{if(!this.closed)for(let i of r)this.applyVerdict(i>=this.speechThreshold,f7)},r=>{this.closed||(this.degrade(r),this.applyVerdict(hn(e,this.energyThreshold),g7(e)))})}}close(){this.closed=!0}applyVerdict(e,r){e?(this.silenceRunMs=0,this.speechRunMs+=r,!this.inSpeech&&this.speechRunMs>=this.onsetMs&&(this.inSpeech=!0,this.onSpeech())):(this.speechRunMs=0,this.inSpeech&&(this.silenceRunMs+=r,this.silenceRunMs>=this.holdoffMs&&(this.inSpeech=!1,this.silenceRunMs=0)))}degrade(e){this.degraded||(this.degraded=!0,this.log.debug("barge-in DEGRADED to energy onset - silero vad failed; speech onsets detect on RMS energy for the rest of the capture session",{error:e instanceof Error?e.message:String(e)}))}}});var r2={};An(r2,{DecibriCapture:()=>e2,DecibriPlayback:()=>t2,SILENT_STREAM_TIMEOUT_MS:()=>Ay,hasInputDevice:()=>y7});function dy(){return m7??=import("decibri"),m7}async function y7(){try{let{inputDevices:t}=await dy();return t().length>0}catch(t){return ee.debug("audio module or input enumeration unavailable; treating as no microphone",{error:t}),!1}}async function N_e(){try{let{inputDevices:t}=await dy(),e=t(),r=e.find(i=>i.isDefault)??e[0];if(r&&r.defaultSampleRate>=1e3&&r.maxInputChannels>=1)return{sampleRate:Math.round(r.defaultSampleRate),channels:r.maxInputChannels}}catch(t){ee.debug("could not read default input device; opening at 16k mono",{error:t})}return{sampleRate:Af,channels:hy}}function R_e(t){return Math.max(64,Math.min(65536,Math.round(t/10)))}function M_e(t,e,r){let i=new Uint8Array(t),n=new Int16Array(i.buffer,0,i.byteLength>>1),s=r.process(d7(n,e));return Buffer.from(s.buffer,s.byteOffset,s.byteLength)}function U_e(t){return Buffer.from(t.buffer,t.byteOffset,t.byteLength)}var m7,Af,hy,I7,E7,Ay,T_e,e2,L_e,F_e,t2,n2=D(()=>{"use strict";Tt();Is();ey();h7();p7();m7=null;Af=16e3,hy=1,I7="int16",E7=.01,Ay=3e3,T_e=1e3;e2=class{constructor(e={}){this.deps=e}deps;mic=null;onData=null;onSpeech=null;onErr=null;vad=null;detector=null;watchdog=null;lastChunkAtMs=0;async start(e){if(!await y7())throw new Bs("no audio input device is available");let{sampleRate:r,channels:i}=await N_e(),n=(this.deps.createVad??(()=>new nc))(),s=null;try{await n.load(),s=new uy(n,()=>e.onSpeechStart(),{energyThreshold:E7})}catch(A){ee.debug("silero vad unavailable; barge-in falls back to decibri energy vad",{error:A}),n.dispose().catch(()=>{})}let{Microphone:o}=await dy(),a;try{a=await o.open({sampleRate:r,channels:i,dtype:I7,...s?{vad:!1}:{vad:"energy",vadThreshold:E7},framesPerBuffer:R_e(r)})}catch(A){throw s?.close(),s&&n.dispose().catch(()=>{}),A}this.vad=s?n:null,this.detector=s;let c=r===Af&&i===hy?null:new ly(r,Af);this.onData=c?A=>{this.lastChunkAtMs=Date.now();let f=M_e(A,i,c);f.byteLength>0&&(this.detector?.feed(f),e.onFrame(f,Date.now()))}:A=>{this.lastChunkAtMs=Date.now(),A.byteLength>0&&(this.detector?.feed(A),e.onFrame(A,Date.now()))},this.onSpeech=()=>e.onSpeechStart(),this.onErr=A=>e.onError(A);let l=null,u=new Promise(A=>{l=()=>A(),a.once("data",l)});a.on("data",this.onData),a.on("speech",this.onSpeech),a.on("error",this.onErr),this.mic=a;let d=null,h=await Promise.race([u.then(()=>!0),new Promise(A=>{d=setTimeout(()=>A(!1),Ay)})]);if(d!==null&&clearTimeout(d),!h)throw l!==null&&a.removeListener("data",l),await this.stop(),new Bs("the microphone opened but never delivered audio - treating it as unavailable");this.armWatchdog(e)}armWatchdog(e){this.clearWatchdog(),this.lastChunkAtMs=Date.now(),this.watchdog=setInterval(()=>{Date.now()-this.lastChunkAtMs<Ay||(this.clearWatchdog(),e.onError(new Error(`capture went silent - no audio for ${Ay} ms (decibri delivers no error event on device loss; treating the microphone as lost)`)))},T_e)}clearWatchdog(){this.watchdog!==null&&(clearInterval(this.watchdog),this.watchdog=null)}async stop(){this.clearWatchdog();let e=this.mic;this.mic=null,this.detector?.close(),this.detector=null,e&&(this.onData&&e.removeListener("data",this.onData),this.onSpeech&&e.removeListener("speech",this.onSpeech),this.onErr&&e.removeListener("error",this.onErr),e.on("error",()=>{}),e.stop()),this.onData=null,this.onSpeech=null,this.onErr=null;let r=this.vad;this.vad=null,r&&await r.dispose().catch(()=>{})}},L_e=Af*hy*2/1e3,F_e=250,t2=class{speaker=null;writeChain=Promise.resolve();generation=0;closed=!1;playoutEndAtMs=0;drainWakes=new Set;nativeDrainSpent=!1;playoutTap=null;play(e){if(this.closed)return;let r=this.generation;this.writeChain=this.writeChain.then(async()=>{if(!(this.closed||r!==this.generation))try{let i=await this.ensureSpeaker(r);if(this.closed||r!==this.generation||(await i.writeAsync(U_e(e)),this.closed||r!==this.generation))return;let n=Math.max(this.playoutEndAtMs,Date.now());this.playoutEndAtMs=n+e.byteLength/L_e;try{this.playoutTap?.(e,n)}catch(s){ee.debug("playout tap failed",{error:s})}}catch(i){ee.debug("playback write skipped",{error:i})}})}setPlayoutTap(e){this.playoutTap=e}remainingMs(){return Math.max(0,this.playoutEndAtMs-Date.now())}flush(){this.generation++,this.playoutEndAtMs=0;let e=this.speaker;this.speaker=null,e?.stop();for(let r of[...this.drainWakes])r()}async drained(){await this.writeChain;let e=this.speaker;if(!e)return;if(!this.nativeDrainSpent){this.nativeDrainSpent=!0;let i=Promise.resolve().then(()=>e.drainAsync()).catch(o=>{ee.debug("playback drain interrupted",{error:o})}),n=Math.max(0,this.playoutEndAtMs-Date.now())+F_e,s=this.sleep(n);await Promise.race([i,s.done]),s.wake()}let r=this.playoutEndAtMs-Date.now();r>0&&await this.sleep(r).done}sleep(e){let r;return{done:new Promise(n=>{let s=setTimeout(()=>r(),e);r=()=>{clearTimeout(s),this.drainWakes.delete(r),n()},this.drainWakes.add(r)}),wake:r}}close(){return this.closed=!0,this.flush(),Promise.resolve()}async ensureSpeaker(e){if(this.speaker===null){let{Speaker:r}=await dy();if(this.closed||e!==this.generation)throw new Error("playback cut during the native module load");this.speaker=new r({sampleRate:Af,channels:hy,dtype:I7}),this.nativeDrainSpent=!1}return this.speaker}}});Tt();Is();FA();import{readFileSync as O_e}from"node:fs";import{randomUUID as $_e}from"node:crypto";var Si=class extends Error{constructor(e,r,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,this.exitCode=e,this.nestedError=void 0}},ys=class extends Si{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};var Wh=class{constructor(e,r){switch(this.description=r||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,r){return r===this.defaultValue||!Array.isArray(r)?[e]:(r.push(e),r)}default(e,r){return this.defaultValue=e,this.defaultValueDescription=r,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(r,i)=>{if(!this.argChoices.includes(r))throw new ys(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,i):r},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function pI(t){let e=t.name()+(t.variadic===!0?"...":"");return t.required?"<"+e+">":"["+e+"]"}import{EventEmitter as wQe}from"node:events";import oR from"node:child_process";import Cs from"node:path";import EI from"node:fs";import Ye from"node:process";import{stripVTControlCharacters as vQe}from"node:util";import{stripVTControlCharacters as xQe}from"node:util";var Jh=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let r=e.commands.filter(n=>!n._hidden),i=e._getHelpCommand();return i&&!i._hidden&&r.push(i),this.sortSubcommands&&r.sort((n,s)=>n.name().localeCompare(s.name())),r}compareOptions(e,r){let i=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return i(e).localeCompare(i(r))}visibleOptions(e){let r=e.options.filter(n=>!n.hidden),i=e._getHelpOption();if(i&&!i.hidden){let n=i.short&&e._findOption(i.short),s=i.long&&e._findOption(i.long);!n&&!s?r.push(i):i.long&&!s?r.push(e.createOption(i.long,i.description)):i.short&&!n&&r.push(e.createOption(i.short,i.description))}return this.sortOptions&&r.sort(this.compareOptions),r}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let r=[];for(let i=e.parent;i;i=i.parent){let n=i.options.filter(s=>!s.hidden);r.push(...n)}return this.sortOptions&&r.sort(this.compareOptions),r}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(r=>{r.description=r.description||e._argsDescription[r.name()]||""}),e.registeredArguments.find(r=>r.description)?e.registeredArguments:[]}subcommandTerm(e){let r=e.registeredArguments.map(i=>pI(i)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(r?" "+r:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,r){return r.visibleCommands(e).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleSubcommandTerm(r.subcommandTerm(n)))),0)}longestOptionTermLength(e,r){return r.visibleOptions(e).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(n)))),0)}longestGlobalOptionTermLength(e,r){return r.visibleGlobalOptions(e).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleOptionTerm(r.optionTerm(n)))),0)}longestArgumentTermLength(e,r){return r.visibleArguments(e).reduce((i,n)=>Math.max(i,this.displayWidth(r.styleArgumentTerm(r.argumentTerm(n)))),0)}commandUsage(e){let r=e._name;e._aliases[0]&&(r=r+"|"+e._aliases[0]);let i="";for(let n=e.parent;n;n=n.parent)i=n.name()+" "+i;return i+r+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&r.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&r.push(`env: ${e.envVar}`),r.length>0){let i=`(${r.join(", ")})`;return e.description?`${e.description} ${i}`:i}return e.description}argumentDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),e.defaultValue!==void 0&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),r.length>0){let i=`(${r.join(", ")})`;return e.description?`${e.description} ${i}`:i}return e.description}formatItemList(e,r,i){return r.length===0?[]:[i.styleTitle(e),...r,""]}groupItems(e,r,i){let n=new Map;return e.forEach(s=>{let o=i(s);n.has(o)||n.set(o,[])}),r.forEach(s=>{let o=i(s);n.has(o)||n.set(o,[]),n.get(o).push(s)}),n}formatHelp(e,r){let i=r.padWidth(e,r),n=r.helpWidth??80;function s(d,h){return r.formatItem(d,i,h,r)}let o=[`${r.styleTitle("Usage:")} ${r.styleUsage(r.commandUsage(e))}`,""],a=r.commandDescription(e);a.length>0&&(o=o.concat([r.boxWrap(r.styleCommandDescription(a),n),""]));let c=r.visibleArguments(e).map(d=>s(r.styleArgumentTerm(r.argumentTerm(d)),r.styleArgumentDescription(r.argumentDescription(d))));if(o=o.concat(this.formatItemList("Arguments:",c,r)),this.groupItems(e.options,r.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,h)=>{let A=d.map(f=>s(r.styleOptionTerm(r.optionTerm(f)),r.styleOptionDescription(r.optionDescription(f))));o=o.concat(this.formatItemList(h,A,r))}),r.showGlobalOptions){let d=r.visibleGlobalOptions(e).map(h=>s(r.styleOptionTerm(r.optionTerm(h)),r.styleOptionDescription(r.optionDescription(h))));o=o.concat(this.formatItemList("Global Options:",d,r))}return this.groupItems(e.commands,r.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,h)=>{let A=d.map(f=>s(r.styleSubcommandTerm(r.subcommandTerm(f)),r.styleSubcommandDescription(r.subcommandDescription(f))));o=o.concat(this.formatItemList(h,A,r))}),o.join(`
395
395
  `)}displayWidth(e){return xQe(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r==="[command]"?this.styleSubcommandText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleCommandText(r)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleSubcommandText(r)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,r){return Math.max(r.longestOptionTermLength(e,r),r.longestGlobalOptionTermLength(e,r),r.longestSubcommandTermLength(e,r),r.longestArgumentTermLength(e,r))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,r,i,n){let o=" ".repeat(2);if(!i)return o+e;let a=e.padEnd(r+e.length-n.displayWidth(e)),c=2,u=(this.helpWidth??80)-r-c-2,d;return u<this.minWidthToWrap||n.preformatted(i)?d=i:d=n.boxWrap(i,u).replace(/\n/g,`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuvybe/jarvis",
3
- "version": "0.50.5",
3
+ "version": "0.50.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {