diff --git a/argus_skill/life/supervisor/_constants.py b/argus_skill/life/supervisor/_constants.py index 8cbc5362..05f34101 100644 --- a/argus_skill/life/supervisor/_constants.py +++ b/argus_skill/life/supervisor/_constants.py @@ -36,6 +36,7 @@ STALL_ESCALATION_AFTER_NO_PROGRESS_MISSIONS = 3 REPLAN_FILTER_REJECTION_LIMIT = 3 MANAGER_FEEDBACK_REPLAN_LIMIT = 3 +MANAGER_FEEDBACK_INSTRUCTION_VERSION = 2 FULL_PAPER_GATE_DESCRIPTION = ( "the L2 reviewer's full pipeline checklist (research → submission)" ) @@ -84,5 +85,6 @@ def consecutive_replan_escalation_threshold() -> int: "STALL_ESCALATION_AFTER_NO_PROGRESS_MISSIONS", "REPLAN_FILTER_REJECTION_LIMIT", "MANAGER_FEEDBACK_REPLAN_LIMIT", + "MANAGER_FEEDBACK_INSTRUCTION_VERSION", "FULL_PAPER_GATE_DESCRIPTION", ] diff --git a/argus_skill/life/supervisor/_core.py b/argus_skill/life/supervisor/_core.py index c7dfac2f..e4935648 100644 --- a/argus_skill/life/supervisor/_core.py +++ b/argus_skill/life/supervisor/_core.py @@ -993,7 +993,7 @@ def _maybe_skip_inapplicable_final_submission_item( """ if self._planner_scope_from_item(item) != _PLANNER_SCOPE_FINAL_SUBMISSION: return None - if self._effective_final_certification_gate(self._artifact_root()): + if self._final_submission_scope_is_applicable(self._artifact_root()): return None reason = ( diff --git a/argus_skill/life/supervisor/_planning_context.py b/argus_skill/life/supervisor/_planning_context.py index 861339b8..31a3fc2e 100644 --- a/argus_skill/life/supervisor/_planning_context.py +++ b/argus_skill/life/supervisor/_planning_context.py @@ -15,6 +15,8 @@ from ...core.planner_verdict import PlannerVerdictStatus from ..memory import BacklogItem from ._constants import ( + MANAGER_FEEDBACK_INSTRUCTION_VERSION, + MANAGER_FEEDBACK_REPLAN_LIMIT, PLAN_AWAITING, PLAN_RETRY, PLANNER_SCOPE_BOUNDED, @@ -24,6 +26,7 @@ VERIFICATION_PROBE_COOLDOWN_SECONDS, ) from ._helpers import _operator_only_external_blocker_wait_reason_for_project +from ._planning_cycle_helpers import _research_target_certification_required log = logging.getLogger(__name__) @@ -43,14 +46,16 @@ def _emit_planner_verdict( def _planner_task_tags(self, task: Any) -> list[str]: scope = self._normalize_planner_scope(getattr(task, "scope", "")) - if scope == PLANNER_SCOPE_FINAL_SUBMISSION and not self._effective_final_certification_gate( - self._artifact_root() + if ( + scope == PLANNER_SCOPE_FINAL_SUBMISSION + and not self._final_submission_scope_is_applicable( + self._artifact_root() + ) ): - # ``final_submission`` is a paper-only transport scope. A Planner - # may still choose it for another vertical's terminal review task, - # but persisting that tag makes ``tick()`` retire the task as stale - # and re-plan it forever. Normalize at the enqueue boundary; the - # old skip path remains as migration support for persisted rows. + # ``final_submission`` is reserved for an active authoritative + # completion gate. Persisting it elsewhere makes ``tick()`` retire + # the task as stale and re-plan it forever. Normalize at the enqueue + # boundary; the old skip path remains for persisted rows. scope = PLANNER_SCOPE_BOUNDED tags = ["planner", f"scope:{scope}"] if scope == PLANNER_SCOPE_BOUNDED: @@ -374,6 +379,18 @@ def _effective_final_certification_gate(self, workdir: object) -> bool: vertical, project_root=workdir ).completion_gate == "certified" + def _final_submission_scope_is_applicable(self, workdir: object) -> bool: + """Keep final-review transport for either supported completion gate. + + A finite campaign may disable the legacy paper gate while still having + a persisted research-quality target. That target has the same need for + authoritative final Reviewer evidence, so its certification task must + not be normalized to ``bounded``. + """ + return self._effective_final_certification_gate( + workdir + ) or _research_target_certification_required(workdir) + def _final_submission_signature(self) -> str: from ..terminal_state import build_project_state_signature @@ -777,6 +794,7 @@ def _persist_manager_planner_feedback( return self._write_manager_planner_feedback( { "version": 1, + "instruction_version": MANAGER_FEEDBACK_INSTRUCTION_VERSION, "active": True, "objective_fingerprint": self._planner_waiting_objective_fingerprint(), "stage": stage, @@ -789,6 +807,38 @@ def _persist_manager_planner_feedback( } ) + def _migrate_manager_planner_feedback_instruction( + self, + state: dict[str, Any], + ) -> dict[str, Any]: + """Give persisted feedback one retry when its routing contract changes.""" + diagnostic = str(state.get("diagnostic") or "") + try: + instruction_version = int(state.get("instruction_version") or 1) + except (TypeError, ValueError): + instruction_version = 1 + if ( + diagnostic != "research_target_incomplete" + or instruction_version >= MANAGER_FEEDBACK_INSTRUCTION_VERSION + ): + return state + + migrated = dict(state) + migrated["instruction_version"] = MANAGER_FEEDBACK_INSTRUCTION_VERSION + migrated["attempts"] = min( + max(1, int(state.get("attempts") or 1)), + max(1, MANAGER_FEEDBACK_REPLAN_LIMIT - 1), + ) + migrated["updated_at"] = time.time() + if not self._write_manager_planner_feedback(migrated): + return state + self._reset_idle_backoff() + self._emit_status( + "migrated Manager→Planner research certification routing; " + "allowing one bounded retry" + ) + return migrated + def _clear_manager_planner_feedback(self) -> None: state = self._load_manager_planner_feedback() if state is None: @@ -807,7 +857,10 @@ def _manager_planner_feedback_runtime_note(self) -> str: "next executable certification task with " "`TASK_SCOPE=final_submission`, so its successful Reviewer verdict can " "be recorded as project-final evidence." - if diagnostic == "final_certification_missing" + if diagnostic in { + "final_certification_missing", + "research_target_incomplete", + } else ( "You decide which tasks, if any, are appropriate; the harness does " "not prescribe a repair or delivery task." diff --git a/argus_skill/life/supervisor/_planning_cycle_enqueue.py b/argus_skill/life/supervisor/_planning_cycle_enqueue.py index 24b4344c..b3a58eb0 100644 --- a/argus_skill/life/supervisor/_planning_cycle_enqueue.py +++ b/argus_skill/life/supervisor/_planning_cycle_enqueue.py @@ -302,7 +302,9 @@ def _pc_build_pending_items(self, state: _PlanCycleState) -> Any | None: ) if ( canonical_scope == PLANNER_SCOPE_FINAL_SUBMISSION - and not self._effective_final_certification_gate(self._artifact_root()) + and not self._final_submission_scope_is_applicable( + self._artifact_root() + ) ): canonical_scope = PLANNER_SCOPE_BOUNDED canonical_acceptance = str( diff --git a/argus_skill/life/supervisor/_planning_cycle_helpers.py b/argus_skill/life/supervisor/_planning_cycle_helpers.py index 685564ae..e93486ff 100644 --- a/argus_skill/life/supervisor/_planning_cycle_helpers.py +++ b/argus_skill/life/supervisor/_planning_cycle_helpers.py @@ -122,6 +122,28 @@ def _research_project_done_issue( return f"missing_{target_level}_reviewer_certification" +def _research_target_certification_required(project_root: object) -> bool: + """Whether the persisted research target needs final Reviewer evidence.""" + from ...core.research_contract import ( + research_target_contract, + resolve_research_target_level, + ) + from ...skills.vertical_select import resolve_checklist_vertical + from ...verticals._base import load_vertical_contract + + vertical = resolve_checklist_vertical(project_root) + if vertical is None: + return False + contract = research_target_contract( + supported_levels=load_vertical_contract( + vertical, + project_root=project_root, + ).research_target_levels, + selected_level=resolve_research_target_level(project_root), + ) + return contract.required and contract.selected_level is not None + + def _staged_goal_completion_issue(project_root: object) -> str: """Require the ordinary Reviewer/Manager final-stage certificate.""" from ...skills.stage_machine import current_stage diff --git a/argus_skill/life/supervisor/_planning_cycle_intake.py b/argus_skill/life/supervisor/_planning_cycle_intake.py index f88909e8..ccf5b755 100644 --- a/argus_skill/life/supervisor/_planning_cycle_intake.py +++ b/argus_skill/life/supervisor/_planning_cycle_intake.py @@ -87,6 +87,9 @@ def _pc_intake_gate(self, state: _PlanCycleState) -> Any | None: if revision_request is None: feedback = self._load_manager_planner_feedback() if feedback is not None: + feedback = self._migrate_manager_planner_feedback_instruction( + feedback + ) recorded_signature = str( feedback.get("evidence_signature") or "" ) diff --git a/argus_skill/manager/_vertical_ops.py b/argus_skill/manager/_vertical_ops.py index d44525b6..e0cedd42 100644 --- a/argus_skill/manager/_vertical_ops.py +++ b/argus_skill/manager/_vertical_ops.py @@ -542,6 +542,17 @@ def _commit_vertical_decision_locked( restore_paths = [pipeline_state] if adapted: restore_paths.extend((domain_path, index_path)) + refresh_research_target_epoch = bool( + force_stage_reset + or adapted + or ( + old_vertical + and vertical_select.vertical_reached_own_terminal_stage( + self.project_root, + old_vertical, + ) + ) + ) with _restore_files_on_error(restore_paths): if adapted: revise_data_domain_stages( @@ -558,6 +569,7 @@ def _commit_vertical_decision_locked( research_target_level=decision.research_target_level or None, workflow_mode=decision.workflow_mode, target_venue=decision.target_venue or None, + refresh_research_target_epoch=refresh_research_target_epoch, ) vertical_select.reset_stage_for_new_intent( self.project_root, diff --git a/argus_skill/release_manifest.json b/argus_skill/release_manifest.json index cc2964ab..c7e13c49 100644 --- a/argus_skill/release_manifest.json +++ b/argus_skill/release_manifest.json @@ -1,6 +1,6 @@ { "package_version": "0.1.1", - "release_id": "0.1.1+e49bd9f10086a3df", + "release_id": "0.1.1+3832b4a22f9a3a53", "schema_version": 1, - "source_digest": "e49bd9f10086a3df711c1be3594b60b70d593a0430c71f0e8f3488d29fe7644c" + "source_digest": "3832b4a22f9a3a538ed021364ae82755fe67aee3d76cb175ee67dcbe040a3933" } diff --git a/argus_skill/skills/vertical_select.py b/argus_skill/skills/vertical_select.py index 4b9ba5d1..ac3edcca 100644 --- a/argus_skill/skills/vertical_select.py +++ b/argus_skill/skills/vertical_select.py @@ -489,6 +489,7 @@ def persist_vertical( research_target_level: str | None = None, workflow_mode: str | None = None, target_venue: str | None = None, + refresh_research_target_epoch: bool = False, ) -> None: """Persist the chosen ``vertical`` into ``research/PIPELINE_STATE.json``. @@ -498,6 +499,7 @@ def persist_vertical( persisting the Manager's decision is load-bearing, not best-effort. A target-capable vertical may carry ``research_target_level``; vertical, target, and target revision timestamp are then committed by the same atomic replace. + A confirmed replacement intent can explicitly start a new evidence epoch. STAGE AUTHORITY — the harness must NOT control ``current_stage``; only the reviewer agent moves it (advance via its verdict, or roll back via @@ -530,6 +532,7 @@ def persist_vertical( f"PIPELINE_STATE.json at {path} is not a JSON object" ) + previous_vertical = str(payload.get("vertical") or "").strip().lower() payload["vertical"] = vert if domain is not None: from ..domains import require_domain @@ -571,8 +574,28 @@ def persist_vertical( raise ValueError( f"invalid research target level: {research_target_level!r}" ) + previous_target = normalize_research_target_level( + payload.get("research_target_level") + ) + try: + previous_target_set_at = float( + payload.get("research_target_set_at") or 0.0 + ) + except (TypeError, ValueError): + previous_target_set_at = 0.0 payload["research_target_level"] = normalized_target - payload["research_target_set_at"] = time.time() + # Reclassification commonly reasserts the same Manager decision after + # every mission. Refreshing this timestamp would make certification + # evidence from the just-finished mission look stale and can wedge the + # completion gate forever. Start a new evidence epoch only for a + # replacement intent, a changed vertical/target, or legacy state. + if ( + refresh_research_target_epoch + or previous_vertical != vert + or previous_target != normalized_target + or previous_target_set_at <= 0.0 + ): + payload["research_target_set_at"] = time.time() else: from ..verticals._base import load_vertical, vertical_research_target_levels diff --git a/frontend/core/src/release.generated.ts b/frontend/core/src/release.generated.ts index 6ed5b934..f1223293 100644 --- a/frontend/core/src/release.generated.ts +++ b/frontend/core/src/release.generated.ts @@ -1,3 +1,3 @@ // Generated by argus_skill.release_tools.generate_manifest. Do not edit. -export const RELEASE_ID = "0.1.1+e49bd9f10086a3df"; -export const RELEASE_SOURCE_DIGEST = "e49bd9f10086a3df711c1be3594b60b70d593a0430c71f0e8f3488d29fe7644c"; +export const RELEASE_ID = "0.1.1+3832b4a22f9a3a53"; +export const RELEASE_SOURCE_DIGEST = "3832b4a22f9a3a538ed021364ae82755fe67aee3d76cb175ee67dcbe040a3933"; diff --git a/frontend/tui/bundle/argus.mjs b/frontend/tui/bundle/argus.mjs index 2c7990c4..cfc4a651 100644 --- a/frontend/tui/bundle/argus.mjs +++ b/frontend/tui/bundle/argus.mjs @@ -121,7 +121,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(n.setEncoding("utf8"),t){this.rawModeEnabledCount===0&&(n.ref(),n.setRawMode(!0),n.addListener("readable",this.handleReadable)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(n.setRawMode(!1),n.removeListener("readable",this.handleReadable),n.unref())};handleReadable=()=>{let t;for(;(t=this.props.stdin.read())!==null;)this.handleInput(t),this.internal_eventEmitter.emit("input",t)};handleInput=t=>{t===""&&this.props.exitOnCtrlC&&this.handleExit(),t===BR&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(t===hR&&this.focusNext(),t===CR&&this.focusPrevious())};handleExit=t=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(t)};enableFocus=()=>{this.setState({isFocusEnabled:!0})};disableFocus=()=>{this.setState({isFocusEnabled:!1})};focus=t=>{this.setState(n=>n.focusables.some(s=>s?.id===t)?{activeFocusId:t}:n)};focusNext=()=>{this.setState(t=>{let n=t.focusables.find(s=>s.isActive)?.id;return{activeFocusId:this.findNextFocusable(t)??n}})};focusPrevious=()=>{this.setState(t=>{let n=t.focusables.findLast(s=>s.isActive)?.id;return{activeFocusId:this.findPreviousFocusable(t)??n}})};addFocusable=(t,{autoFocus:n})=>{this.setState(i=>{let s=i.activeFocusId;return!s&&n&&(s=t),{activeFocusId:s,focusables:[...i.focusables,{id:t,isActive:!0}]}})};removeFocusable=t=>{this.setState(n=>({activeFocusId:n.activeFocusId===t?void 0:n.activeFocusId,focusables:n.focusables.filter(i=>i.id!==t)}))};activateFocusable=t=>{this.setState(n=>({focusables:n.focusables.map(i=>i.id!==t?i:{id:t,isActive:!0})}))};deactivateFocusable=t=>{this.setState(n=>({activeFocusId:n.activeFocusId===t?void 0:n.activeFocusId,focusables:n.focusables.map(i=>i.id!==t?i:{id:t,isActive:!1})}))};findNextFocusable=t=>{let n=t.focusables.findIndex(i=>i.id===t.activeFocusId);for(let i=n+1;i{let n=t.focusables.findIndex(i=>i.id===t.activeFocusId);for(let i=n-1;i>=0;i--){let s=t.focusables[i];if(s?.isActive)return s.id}}};var JD=()=>{},pf=class{options;log;throttledLog;isUnmounted;lastOutput;container;rootNode;fullStaticOutput;exitPromise;restoreConsole;unsubscribeResize;constructor(t){AE(this),this.options=t,this.rootNode=ed("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.rootNode.onRender=t.debug?this.onRender:Tg(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=DD.create(t.stdout),this.throttledLog=t.debug?this.log:Tg(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=Ma.createContainer(this.rootNode,0,null,!1,null,"id",()=>{},null),this.unsubscribeExit=(0,YD.default)(this.unmount,{alwaysLast:!1}),DR.env.DEV==="true"&&Ma.injectIntoDevTools({bundleType:0,version:"16.13.1",rendererPackageName:"ink"}),t.patchConsole&&this.patchConsole(),wa||(t.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{t.stdout.off("resize",this.resized)})}resized=()=>{this.calculateLayout(),this.onRender()};resolveExitPromise=()=>{};rejectExitPromise=()=>{};unsubscribeExit=()=>{};calculateLayout=()=>{let t=this.options.stdout.columns||80;this.rootNode.yogaNode.setWidth(t),this.rootNode.yogaNode.calculateLayout(void 0,void 0,it.DIRECTION_LTR)};onRender=()=>{if(this.isUnmounted)return;let{output:t,outputHeight:n,staticOutput:i}=gD(this.rootNode),s=i&&i!==` `;if(this.options.debug){s&&(this.fullStaticOutput+=i),this.options.stdout.write(this.fullStaticOutput+t);return}if(wa){s&&this.options.stdout.write(i),this.lastOutput=t;return}if(s&&(this.fullStaticOutput+=i),n>=this.options.stdout.rows){this.options.stdout.write(Fo.clearTerminal+this.fullStaticOutput+t),this.lastOutput=t;return}s&&(this.log.clear(),this.options.stdout.write(i),this.log(t)),!s&&t!==this.lastOutput&&this.throttledLog(t),this.lastOutput=t};render(t){let n=jD.default.createElement(df,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},t);Ma.updateContainer(n,this.container,null,JD)}writeToStdout(t){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(t+this.fullStaticOutput+this.lastOutput);return}if(wa){this.options.stdout.write(t);return}this.log.clear(),this.options.stdout.write(t),this.log(this.lastOutput)}}writeToStderr(t){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(t),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(wa){this.options.stderr.write(t);return}this.log.clear(),this.options.stderr.write(t),this.log(this.lastOutput)}}unmount(t){this.isUnmounted||(this.calculateLayout(),this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),wa?this.options.stdout.write(this.lastOutput+` `):this.options.debug||this.log.done(),this.isUnmounted=!0,Ma.updateContainer(null,this.container,null,JD),hu.delete(this.options.stdout),t instanceof Error?this.rejectExitPromise(t):this.resolveExitPromise())}async waitUntilExit(){return this.exitPromise||=new Promise((t,n)=>{this.resolveExitPromise=t,this.rejectExitPromise=n}),this.exitPromise}clear(){!wa&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=xh((t,n)=>{t==="stdout"&&this.writeToStdout(n),t==="stderr"&&(n.startsWith("The above error occurred")||this.writeToStderr(n))}))}};var QR=(e,t)=>{let n={stdout:Td.stdout,stdin:Td.stdin,stderr:Td.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0,...vR(t)},i=SR(n.stdout,()=>new pf(n));return i.render(e),{rerender:i.render,unmount(){i.unmount()},waitUntilExit:i.waitUntilExit,cleanup:()=>hu.delete(n.stdout),clear:i.clear}},Rm=QR,vR=(e={})=>e instanceof yR?{stdout:e,stdin:Td.stdin}:e,SR=(e,t)=>{let n=hu.get(e);return n||(n=t(),hu.set(e,n)),n};var Xs=Oe(Yt(),1);function Ef(e){let{items:t,children:n,style:i}=e,[s,a]=(0,Xs.useState)(0),u=(0,Xs.useMemo)(()=>t.slice(s),[t,s]);(0,Xs.useLayoutEffect)(()=>{a(t.length)},[t.length]);let E=u.map((C,D)=>n(C,s+D)),I=(0,Xs.useMemo)(()=>({position:"absolute",flexDirection:"column",...i}),[i]);return Xs.default.createElement("ink-box",{internal_static:!0,style:I},E)}var wR=Oe(Yt(),1);var _R=Oe(Yt(),1);var RR=Oe(Yt(),1);var Fm=Oe(Yt(),1);import{Buffer as FR}from"node:buffer";var bR=/^(?:\x1b)([a-zA-Z0-9])$/,kR=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,VD={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},zD=[...Object.values(VD),"backspace"],xR=e=>["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e),NR=e=>["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e),TR=(e="")=>{let t;FR.isBuffer(e)?e[0]>127&&e[1]===void 0?(e[0]-=128,e="\x1B"+String(e)):e=String(e):e!==void 0&&typeof e!="string"?e=String(e):e||(e="");let n={name:"",ctrl:!1,meta:!1,shift:!1,option:!1,sequence:e,raw:e};if(n.sequence=n.sequence||e||n.name,e==="\r")n.raw=void 0,n.name="return";else if(e===` -`)n.name="enter";else if(e===" ")n.name="tab";else if(e==="\b"||e==="\x1B\b")n.name="backspace",n.meta=e.charAt(0)==="\x1B";else if(e==="\x7F"||e==="\x1B\x7F")n.name="delete",n.meta=e.charAt(0)==="\x1B";else if(e==="\x1B"||e==="\x1B\x1B")n.name="escape",n.meta=e.length===2;else if(e===" "||e==="\x1B ")n.name="space",n.meta=e.length===2;else if(e.length===1&&e<="")n.name=String.fromCharCode(e.charCodeAt(0)+97-1),n.ctrl=!0;else if(e.length===1&&e>="0"&&e<="9")n.name="number";else if(e.length===1&&e>="a"&&e<="z")n.name=e;else if(e.length===1&&e>="A"&&e<="Z")n.name=e.toLowerCase(),n.shift=!0;else if(t=bR.exec(e))n.meta=!0,n.shift=/^[A-Z]$/.test(t[1]);else if(t=kR.exec(e)){let i=[...e];i[0]==="\x1B"&&i[1]==="\x1B"&&(n.option=!0);let s=[t[1],t[2],t[4],t[6]].filter(Boolean).join(""),a=(t[3]||t[5]||1)-1;n.ctrl=!!(a&4),n.meta=!!(a&10),n.shift=!!(a&1),n.code=s,n.name=VD[s],n.shift=xR(s)||n.shift,n.ctrl=NR(s)||n.ctrl}return n},qD=TR;var $D=Oe(Yt(),1);var OR=()=>(0,$D.useContext)(Fd),Od=OR;var LR=(e,t={})=>{let{stdin:n,setRawMode:i,internal_exitOnCtrlC:s,internal_eventEmitter:a}=Od();(0,Fm.useEffect)(()=>{if(t.isActive!==!1)return i(!0),()=>{i(!1)}},[t.isActive,i]),(0,Fm.useEffect)(()=>{if(t.isActive===!1)return;let u=E=>{let I=qD(E),C={upArrow:I.name==="up",downArrow:I.name==="down",leftArrow:I.name==="left",rightArrow:I.name==="right",pageDown:I.name==="pagedown",pageUp:I.name==="pageup",return:I.name==="return",escape:I.name==="escape",ctrl:I.ctrl,shift:I.shift,tab:I.name==="tab",backspace:I.name==="backspace",delete:I.name==="delete",meta:I.meta||I.name==="escape"||I.option},D=I.ctrl?I.name:I.sequence;zD.includes(I.name)&&(D=""),D.startsWith("\x1B")&&(D=D.slice(1)),D.length===1&&typeof D[0]=="string"&&/[A-Z]/.test(D[0])&&(C.shift=!0),(!(D==="c"&&C.ctrl)||!s)&&Ma.batchedUpdates(()=>{e(D,C)})};return a?.on("input",u),()=>{a?.removeListener("input",u)}},[t.isActive,n,s,e])},Zs=LR;var XD=Oe(Yt(),1);var MR=()=>(0,XD.useContext)(Rd),Pa=MR;var ZD=Oe(Yt(),1);var PR=()=>(0,ZD.useContext)(bd),eA=PR;var UR=Oe(Yt(),1);var bm=Oe(Yt(),1);var GR=Oe(Yt(),1);sm();import{randomUUID as Tm}from"node:crypto";import{homedir as jR}from"node:os";import{posix as YR,win32 as Om}from"node:path";var km=class extends Error{status;method;path;constructor(t,n,i,s){super(t),this.name="ApiError",this.status=n,this.method=i,this.path=s}};function HR(e){let t=e.replace(/\s+/g," ").trim();if(!t)return"";try{let n=JSON.parse(e);for(let i of["detail","error","message"]){let s=n[i];if(typeof s=="string"&&s.trim())return s.trim();if(Array.isArray(s)){let a=s.map(u=>u&&typeof u=="object"?String(u.msg??""):"").filter(Boolean);if(a.length)return a.join("; ")}}}catch{}return t.startsWith("typeof y=="string"):[],u=xm(i?.major),E=xm(i?.minor);if(!n||!i||!s)return{compatible:!1,reason:"malformed /api/meta response"};if(typeof s.source_root!="string"||xm(s.pid)===null||typeof s.package_version!="string"||typeof s.release_id!="string")return{compatible:!1,reason:"malformed /api/meta runtime identity"};if(n.service!==KR)return{compatible:!1,reason:`unexpected service ${String(n.service||"unknown")}`};let I=e;if(i.name!==Cu.name||u!==Cu.major)return{compatible:!1,reason:`protocol ${String(i.name||"unknown")}/${String(u)} is incompatible with client ${Cu.name}/${Cu.major}`,meta:I};if(E===null||E!a.includes(y));if(C.length>0)return{compatible:!1,reason:`missing capabilities: ${C.join(", ")}`,meta:I};if(s.source_root_matches_config===!1)return{compatible:!1,reason:`backend loaded source ${String(s.source_root)} but ARGUS_SKILL_SOURCE_ROOT points to ${String(s.configured_source_root)}`,meta:I};if(s.release_id!==t.releaseId)return{compatible:!1,reason:`backend release ${String(s.release_id)} does not match client release ${t.releaseId}`,meta:I};if(t.sourceDigest){if(typeof s.runtime_source_digest!="string"||!s.runtime_source_digest)return{compatible:!1,reason:"backend process does not report the source digest required by this local checkout",meta:I};if(s.runtime_source_digest!==t.sourceDigest)return{compatible:!1,reason:`backend process source ${String(s.runtime_source_digest).slice(0,16)} does not match local source ${t.sourceDigest.slice(0,16)}`,meta:I}}return{compatible:!0,reason:"",warning:s.release_matches_source===!1?"backend source differs from its prebuilt release artifacts; pull a complete published revision and reinstall":void 0,meta:I}}function ty(e,t){let n=Nm(e);if(!n.compatible||!n.meta)throw new Error(`incompatible Argus API: ${n.reason}`);return n.warning&&t?.(n.warning),n.meta}function ry(e){let t=mf(e),n=mf(t?.daemon);if(!t||t.schema_version!==Md)throw new Error(`incompatible snapshot schema: expected ${Md}, got ${String(t?.schema_version??"missing")}`);if(!n)throw new Error("invalid snapshot: daemon section is missing");let s=["global_daily_cap_usd","read_status","read_error","protocol_compatible","protocol_error"].filter(E=>!Object.hasOwn(n,E));if(s.length>0)throw new Error(`invalid snapshot: daemon fields missing: ${s.join(", ")}`);let u=["spend_usd","spend_status","usage_summary","request_usage","cost_control","daemon_commands","observability","mission_view","partial","diagnostics"].filter(E=>!Object.hasOwn(t,E));if(u.length>0)throw new Error(`invalid snapshot: fields missing: ${u.join(", ")}`);if(!Array.isArray(t.diagnostics))throw new Error("invalid snapshot: diagnostics must be an array");return e}function VR(e,t=jR()){let n=E=>E.includes("\\")||/^[A-Za-z]:[\\/]/.test(E),i=n(e)?Om:YR,s=i.resolve(e),a=E=>i===Om?E.toLowerCase():E,u=n(t)===(i===Om)?a(i.resolve(t)):"";if(!(a(s)===u||a(s)===a(i.parse(s).root)))return s}function Lm(e){let t=e.item?.title||"new mission";return e.daemon?.admission_required?`\u2192 queued: choose one running session to park before starting ${t}`:e.daemon&&e.daemon.rc!==0?`\u2192 queued but not running: ${e.daemon.error||"background executor failed to start"}`:`\u2192 dispatched to the team: ${t}`}function ny(e){let t=[],n;for(;(n=e.indexOf(` +`)n.name="enter";else if(e===" ")n.name="tab";else if(e==="\b"||e==="\x1B\b")n.name="backspace",n.meta=e.charAt(0)==="\x1B";else if(e==="\x7F"||e==="\x1B\x7F")n.name="delete",n.meta=e.charAt(0)==="\x1B";else if(e==="\x1B"||e==="\x1B\x1B")n.name="escape",n.meta=e.length===2;else if(e===" "||e==="\x1B ")n.name="space",n.meta=e.length===2;else if(e.length===1&&e<="")n.name=String.fromCharCode(e.charCodeAt(0)+97-1),n.ctrl=!0;else if(e.length===1&&e>="0"&&e<="9")n.name="number";else if(e.length===1&&e>="a"&&e<="z")n.name=e;else if(e.length===1&&e>="A"&&e<="Z")n.name=e.toLowerCase(),n.shift=!0;else if(t=bR.exec(e))n.meta=!0,n.shift=/^[A-Z]$/.test(t[1]);else if(t=kR.exec(e)){let i=[...e];i[0]==="\x1B"&&i[1]==="\x1B"&&(n.option=!0);let s=[t[1],t[2],t[4],t[6]].filter(Boolean).join(""),a=(t[3]||t[5]||1)-1;n.ctrl=!!(a&4),n.meta=!!(a&10),n.shift=!!(a&1),n.code=s,n.name=VD[s],n.shift=xR(s)||n.shift,n.ctrl=NR(s)||n.ctrl}return n},qD=TR;var $D=Oe(Yt(),1);var OR=()=>(0,$D.useContext)(Fd),Od=OR;var LR=(e,t={})=>{let{stdin:n,setRawMode:i,internal_exitOnCtrlC:s,internal_eventEmitter:a}=Od();(0,Fm.useEffect)(()=>{if(t.isActive!==!1)return i(!0),()=>{i(!1)}},[t.isActive,i]),(0,Fm.useEffect)(()=>{if(t.isActive===!1)return;let u=E=>{let I=qD(E),C={upArrow:I.name==="up",downArrow:I.name==="down",leftArrow:I.name==="left",rightArrow:I.name==="right",pageDown:I.name==="pagedown",pageUp:I.name==="pageup",return:I.name==="return",escape:I.name==="escape",ctrl:I.ctrl,shift:I.shift,tab:I.name==="tab",backspace:I.name==="backspace",delete:I.name==="delete",meta:I.meta||I.name==="escape"||I.option},D=I.ctrl?I.name:I.sequence;zD.includes(I.name)&&(D=""),D.startsWith("\x1B")&&(D=D.slice(1)),D.length===1&&typeof D[0]=="string"&&/[A-Z]/.test(D[0])&&(C.shift=!0),(!(D==="c"&&C.ctrl)||!s)&&Ma.batchedUpdates(()=>{e(D,C)})};return a?.on("input",u),()=>{a?.removeListener("input",u)}},[t.isActive,n,s,e])},Zs=LR;var XD=Oe(Yt(),1);var MR=()=>(0,XD.useContext)(Rd),Pa=MR;var ZD=Oe(Yt(),1);var PR=()=>(0,ZD.useContext)(bd),eA=PR;var UR=Oe(Yt(),1);var bm=Oe(Yt(),1);var GR=Oe(Yt(),1);sm();import{randomUUID as Tm}from"node:crypto";import{homedir as jR}from"node:os";import{posix as YR,win32 as Om}from"node:path";var km=class extends Error{status;method;path;constructor(t,n,i,s){super(t),this.name="ApiError",this.status=n,this.method=i,this.path=s}};function HR(e){let t=e.replace(/\s+/g," ").trim();if(!t)return"";try{let n=JSON.parse(e);for(let i of["detail","error","message"]){let s=n[i];if(typeof s=="string"&&s.trim())return s.trim();if(Array.isArray(s)){let a=s.map(u=>u&&typeof u=="object"?String(u.msg??""):"").filter(Boolean);if(a.length)return a.join("; ")}}}catch{}return t.startsWith("typeof y=="string"):[],u=xm(i?.major),E=xm(i?.minor);if(!n||!i||!s)return{compatible:!1,reason:"malformed /api/meta response"};if(typeof s.source_root!="string"||xm(s.pid)===null||typeof s.package_version!="string"||typeof s.release_id!="string")return{compatible:!1,reason:"malformed /api/meta runtime identity"};if(n.service!==KR)return{compatible:!1,reason:`unexpected service ${String(n.service||"unknown")}`};let I=e;if(i.name!==Cu.name||u!==Cu.major)return{compatible:!1,reason:`protocol ${String(i.name||"unknown")}/${String(u)} is incompatible with client ${Cu.name}/${Cu.major}`,meta:I};if(E===null||E!a.includes(y));if(C.length>0)return{compatible:!1,reason:`missing capabilities: ${C.join(", ")}`,meta:I};if(s.source_root_matches_config===!1)return{compatible:!1,reason:`backend loaded source ${String(s.source_root)} but ARGUS_SKILL_SOURCE_ROOT points to ${String(s.configured_source_root)}`,meta:I};if(s.release_id!==t.releaseId)return{compatible:!1,reason:`backend release ${String(s.release_id)} does not match client release ${t.releaseId}`,meta:I};if(t.sourceDigest){if(typeof s.runtime_source_digest!="string"||!s.runtime_source_digest)return{compatible:!1,reason:"backend process does not report the source digest required by this local checkout",meta:I};if(s.runtime_source_digest!==t.sourceDigest)return{compatible:!1,reason:`backend process source ${String(s.runtime_source_digest).slice(0,16)} does not match local source ${t.sourceDigest.slice(0,16)}`,meta:I}}return{compatible:!0,reason:"",warning:s.release_matches_source===!1?"backend source differs from its prebuilt release artifacts; pull a complete published revision and reinstall":void 0,meta:I}}function ty(e,t){let n=Nm(e);if(!n.compatible||!n.meta)throw new Error(`incompatible Argus API: ${n.reason}`);return n.warning&&t?.(n.warning),n.meta}function ry(e){let t=mf(e),n=mf(t?.daemon);if(!t||t.schema_version!==Md)throw new Error(`incompatible snapshot schema: expected ${Md}, got ${String(t?.schema_version??"missing")}`);if(!n)throw new Error("invalid snapshot: daemon section is missing");let s=["global_daily_cap_usd","read_status","read_error","protocol_compatible","protocol_error"].filter(E=>!Object.hasOwn(n,E));if(s.length>0)throw new Error(`invalid snapshot: daemon fields missing: ${s.join(", ")}`);let u=["spend_usd","spend_status","usage_summary","request_usage","cost_control","daemon_commands","observability","mission_view","partial","diagnostics"].filter(E=>!Object.hasOwn(t,E));if(u.length>0)throw new Error(`invalid snapshot: fields missing: ${u.join(", ")}`);if(!Array.isArray(t.diagnostics))throw new Error("invalid snapshot: diagnostics must be an array");return e}function VR(e,t=jR()){let n=E=>E.includes("\\")||/^[A-Za-z]:[\\/]/.test(E),i=n(e)?Om:YR,s=i.resolve(e),a=E=>i===Om?E.toLowerCase():E,u=n(t)===(i===Om)?a(i.resolve(t)):"";if(!(a(s)===u||a(s)===a(i.parse(s).root)))return s}function Lm(e){let t=e.item?.title||"new mission";return e.daemon?.admission_required?`\u2192 queued: choose one running session to park before starting ${t}`:e.daemon&&e.daemon.rc!==0?`\u2192 queued but not running: ${e.daemon.error||"background executor failed to start"}`:`\u2192 dispatched to the team: ${t}`}function ny(e){let t=[],n;for(;(n=e.indexOf(` `))>=0;){let i=e.slice(0,n);e=e.slice(n+2);for(let s of i.split(` `)){let a=s.trim();if(a.startsWith("data:"))try{t.push(JSON.parse(a.slice(5).trim()))}catch{}}}return{frames:t,rest:e}}var tA=class{httpBase;wsBase;project;token;onCompatibilityWarning;metaPromise;constructor(t){this.httpBase=`http://${t.host}:${t.port}`,this.wsBase=`ws://${t.host}:${t.port}`,this.project=t.project,this.token=t.token,this.onCompatibilityWarning=t.onCompatibilityWarning}authHeaders(){return this.token?{Authorization:`Bearer ${this.token}`}:{}}p(t){return`${this.httpBase}/api/projects/${encodeURIComponent(this.project)}${t}`}meta(){if(!this.metaPromise){let t=(async()=>{let n="/api/meta",i=await fetch(`${this.httpBase}${n}`,{headers:this.authHeaders()});if(i.status===404)throw new Error("incompatible Argus API: service does not expose /api/meta");return await Io(i,"GET",n),ty(await i.json(),this.onCompatibilityWarning)})();this.metaPromise=t,t.catch(()=>{this.metaPromise===t&&(this.metaPromise=void 0)})}return this.metaPromise}async listProjects(){await this.meta();let t=await fetch(`${this.httpBase}/api/projects`,{headers:this.authHeaders()});return await Io(t,"GET","/api/projects"),(await t.json()).projects}async createDaemon(t="",n="",i=process.cwd(),s,a=Tm()){let u="/api/daemons",E=VR(i),I={objective:t,name:n,launch_cwd:i,command_id:a,expected_revision:s};E&&(I.workdir=E);let C=JSON.stringify(I),D=()=>fetch(`${this.httpBase}${u}`,{method:"POST",headers:{"Content-Type":"application/json",Connection:"close",...this.authHeaders()},body:C}),y=await D();return y.status===400&&/Invalid HTTP request received/i.test(await y.clone().text())&&(y=await D()),await Io(y,"POST",u),await y.json()}async replaceDaemon(t,n=!1,i,s=Tm()){return await this.post("/daemon/replace",{victim_sid:t,resume_continuous:n,command_id:s,expected_revision:i})}async scheduleDaemonUpgrade(t,n,i=Tm()){let s=`/api/projects/${encodeURIComponent(t)}/daemon/upgrade-schedule`,a=await fetch(`${this.httpBase}${s}`,{method:"POST",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({command_id:i,expected_revision:n})});return await Io(a,"POST",s),await a.json()}async setProjectLaunchCwd(t,n){let i=`/api/projects/${encodeURIComponent(t)}/launch-cwd`,s=await fetch(`${this.httpBase}${i}`,{method:"POST",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({launch_cwd:n})});await Io(s,"POST",i)}async setProjectWorkdir(t,n){let i=`/api/projects/${encodeURIComponent(t)}/workdir`,s=await fetch(`${this.httpBase}${i}`,{method:"POST",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({workdir:n})});await Io(s,"POST",i)}async renameProject(t){let n=this.p(""),i=await fetch(n,{method:"PATCH",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({name:t})});return await Io(i,"PATCH",n),await i.json()}async snapshot(t=1){await this.meta();let n=await fetch(this.p(`/snapshot?compact=true&events_limit=${t}`));return await Io(n,"GET","/snapshot"),ry(await n.json())}async postTask(t){let n=await fetch(this.p("/tasks"),{method:"POST",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({text:t})});return await Io(n,"POST","/tasks"),(await n.json()).item}async postNudge(t){let n=await fetch(this.p("/nudge"),{method:"POST",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({text:t})});await Io(n,"POST","/nudge")}async message(t,n){let i=await fetch(this.p("/message"),{method:"POST",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({text:t}),signal:n});return await Io(i,"POST","/message"),await i.json()}async messageStream(t,n,i){let s=await fetch(this.p("/message/stream"),{method:"POST",headers:{"Content-Type":"application/json",...this.authHeaders()},body:JSON.stringify({text:t}),signal:i});if(await Io(s,"POST","/message/stream"),!s.body)throw new Error("Manager stream returned no response body");let a=C=>{if(!i?.aborted)if(C.type==="phase"){let D=Number(C.quiet_s??0);n.onPhase?.(String(C.label??""),String(C.role??"manager"),{heartbeat:C.heartbeat===!0,quietS:Number.isFinite(D)?D:0,kind:String(C.kind??""),detail:String(C.detail??"")})}else C.type==="delta"?n.onDelta?.(String(C.text??""),String(C.message_id??""),String(C.fragment_mode??"auto")):C.type==="done"?n.onDone?.(C.result??{}):C.type==="error"&&n.onError?.(new Error(String(C.error??"stream error")))},u=s.body.getReader(),E=new TextDecoder,I="";for(;;){let{done:C,value:D}=await u.read();if(C)break;I+=E.decode(D,{stream:!0});let y=ny(I);I=y.rest,y.frames.forEach(a)}i?.aborted||ny(I+` diff --git a/frontend/web/dist/assets/ResearchWorkbenchPanel-8CpqXjyA.js b/frontend/web/dist/assets/ResearchWorkbenchPanel-BcyzHdZs.js similarity index 99% rename from frontend/web/dist/assets/ResearchWorkbenchPanel-8CpqXjyA.js rename to frontend/web/dist/assets/ResearchWorkbenchPanel-BcyzHdZs.js index 627c9b77..9ff186b7 100644 --- a/frontend/web/dist/assets/ResearchWorkbenchPanel-8CpqXjyA.js +++ b/frontend/web/dist/assets/ResearchWorkbenchPanel-BcyzHdZs.js @@ -1,4 +1,4 @@ -import{r as m,j as e,u as B,a as Ds,b as es}from"./query-BpxuCIcN.js";import{u as ks,_ as Ls}from"./index-D8zZIqsp.js";import{M as Os,r as Us}from"./markdown-B5ILJD_j.js";import"./icons-BHmFHwhB.js";/** +import{r as m,j as e,u as B,a as Ds,b as es}from"./query-BpxuCIcN.js";import{u as ks,_ as Ls}from"./index-t2mdIFDn.js";import{M as Os,r as Us}from"./markdown-B5ILJD_j.js";import"./icons-BHmFHwhB.js";/** * @license lucide-react v0.468.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/web/dist/assets/index-D8zZIqsp.js b/frontend/web/dist/assets/index-t2mdIFDn.js similarity index 99% rename from frontend/web/dist/assets/index-D8zZIqsp.js rename to frontend/web/dist/assets/index-t2mdIFDn.js index ebb1d446..1265ef63 100644 --- a/frontend/web/dist/assets/index-D8zZIqsp.js +++ b/frontend/web/dist/assets/index-t2mdIFDn.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ResearchWorkbenchPanel-8CpqXjyA.js","assets/query-BpxuCIcN.js","assets/markdown-B5ILJD_j.js","assets/icons-BHmFHwhB.js","assets/ResearchWorkbenchPanel-NWoY4oQk.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ResearchWorkbenchPanel-BcyzHdZs.js","assets/query-BpxuCIcN.js","assets/markdown-B5ILJD_j.js","assets/icons-BHmFHwhB.js","assets/ResearchWorkbenchPanel-NWoY4oQk.css"])))=>i.map(i=>d[i]); import{r as y,u as kt,a as nd,b as Rt,j as a,Q as bf,R as jf,d as Nf}from"./query-BpxuCIcN.js";import{F as pe,f as _f,a as rd,b as sd,c as id,d as ad,e as ld,g as Sf,h as od,i as Ef,j as Cf,k as Tf,l as ka,m as Pf,n as vc,o as kc,p as wc,q as Ja,r as Rf,s as bc,t as Lf,u as Df,v as Mf,w as Af,x as If}from"./icons-BHmFHwhB.js";import{M as Of,r as $f}from"./markdown-B5ILJD_j.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var Xa={},cd={exports:{}},ut={},ud={exports:{}},dd={};/** * @license React * scheduler.production.min.js @@ -22,7 +22,7 @@ import{r as y,u as kt,a as nd,b as Rt,j as a,Q as bf,R as jf,d as Nf}from"./quer `+s[l].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=l&&0<=o);break}}}finally{ba=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Hr(e):""}function Qf(e){switch(e.tag){case 5:return Hr(e.type);case 16:return Hr("Lazy");case 13:return Hr("Suspense");case 19:return Hr("SuspenseList");case 0:case 2:case 15:return e=ja(e.type,!1),e;case 11:return e=ja(e.type.render,!1),e;case 1:return e=ja(e.type,!0),e;default:return""}}function rl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case nr:return"Fragment";case tr:return"Portal";case el:return"Profiler";case io:return"StrictMode";case tl:return"Suspense";case nl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case fd:return(e.displayName||"Context")+".Consumer";case pd:return(e._context.displayName||"Context")+".Provider";case ao:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case lo:return t=e.displayName||null,t!==null?t:rl(e.type)||"Memo";case en:t=e._payload,e=e._init;try{return rl(e(t))}catch{}}return null}function qf(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return rl(t);case 8:return t===io?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function hn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function gd(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Kf(e){var t=gd(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(l){r=""+l,i.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Os(e){e._valueTracker||(e._valueTracker=Kf(e))}function xd(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=gd(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function mi(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function sl(e,t){var n=t.checked;return ve({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Sc(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=hn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function yd(e,t){t=t.checked,t!=null&&so(e,"checked",t,!1)}function il(e,t){yd(e,t);var n=hn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?al(e,t.type,n):t.hasOwnProperty("defaultValue")&&al(e,t.type,hn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ec(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function al(e,t,n){(t!=="number"||mi(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Qr=Array.isArray;function pr(e,t,n,r){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=$s.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function os(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Jr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Vf=["Webkit","ms","Moz","O"];Object.keys(Jr).forEach(function(e){Vf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Jr[t]=Jr[e]})});function bd(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Jr.hasOwnProperty(e)&&Jr[e]?(""+t).trim():t+"px"}function jd(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,s=bd(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,s):e[n]=s}}var Gf=ve({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function cl(e,t){if(t){if(Gf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(R(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(R(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(R(61))}if(t.style!=null&&typeof t.style!="object")throw Error(R(62))}}function ul(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var dl=null;function oo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ml=null,fr=null,hr=null;function Pc(e){if(e=Ss(e)){if(typeof ml!="function")throw Error(R(280));var t=e.stateNode;t&&(t=Ki(t),ml(e.stateNode,e.type,t))}}function Nd(e){fr?hr?hr.push(e):hr=[e]:fr=e}function _d(){if(fr){var e=fr,t=hr;if(hr=fr=null,Pc(e),t)for(e=0;e>>=0,e===0?32:31-(ah(e)/lh|0)|0}var Fs=64,zs=4194304;function qr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function gi(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,s=e.suspendedLanes,i=e.pingedLanes,l=n&268435455;if(l!==0){var o=l&~s;o!==0?r=qr(o):(i&=l,i!==0&&(r=qr(i)))}else l=n&~s,l!==0?r=qr(l):i!==0&&(r=qr(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&s)&&(s=r&-r,i=t&-t,s>=i||s===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Ns(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-St(t),e[t]=n}function dh(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Zr),Fc=" ",zc=!1;function Qd(e,t){switch(e){case"keyup":return Fh.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var rr=!1;function Uh(e,t){switch(e){case"compositionend":return qd(t);case"keypress":return t.which!==32?null:(zc=!0,Fc);case"textInput":return e=t.data,e===Fc&&zc?null:e;default:return null}}function Bh(e,t){if(rr)return e==="compositionend"||!xo&&Qd(e,t)?(e=Wd(),ni=fo=sn=null,rr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Hc(n)}}function Yd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Yd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jd(){for(var e=window,t=mi();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=mi(e.document)}return t}function yo(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Jh(e){var t=Jd(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Yd(n.ownerDocument.documentElement,n)){if(r!==null&&yo(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,i=Math.min(r.start,s);r=r.end===void 0?i:Math.min(r.end,s),!e.extend&&i>r&&(s=r,r=i,i=s),s=Qc(n,i);var l=Qc(n,r);s&&l&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,sr=null,yl=null,ts=null,vl=!1;function qc(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;vl||sr==null||sr!==mi(r)||(r=sr,"selectionStart"in r&&yo(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ts&&fs(ts,r)||(ts=r,r=vi(yl,"onSelect"),0lr||(e.current=_l[lr],_l[lr]=null,lr--)}function le(e,t){lr++,_l[lr]=e.current,e.current=t}var gn={},We=kn(gn),et=kn(!1),$n=gn;function kr(e,t){var n=e.type.contextTypes;if(!n)return gn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var s={},i;for(i in n)s[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function tt(e){return e=e.childContextTypes,e!=null}function wi(){ue(et),ue(We)}function Zc(e,t,n){if(We.current!==gn)throw Error(R(168));le(We,t),le(et,n)}function am(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var s in r)if(!(s in t))throw Error(R(108,qf(e)||"Unknown",s));return ve({},n,r)}function bi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||gn,$n=We.current,le(We,e),le(et,et.current),!0}function eu(e,t,n){var r=e.stateNode;if(!r)throw Error(R(169));n?(e=am(e,t,$n),r.__reactInternalMemoizedMergedChildContext=e,ue(et),ue(We),le(We,e)):ue(et),le(et,n)}var Ut=null,Vi=!1,Oa=!1;function lm(e){Ut===null?Ut=[e]:Ut.push(e)}function cg(e){Vi=!0,lm(e)}function wn(){if(!Oa&&Ut!==null){Oa=!0;var e=0,t=se;try{var n=Ut;for(se=1;e>=l,s-=l,Wt=1<<32-St(t)+s|n<S?(C=N,N=null):C=N.sibling;var _=f(h,N,x[S],m);if(_===null){N===null&&(N=C);break}e&&N&&_.alternate===null&&t(h,N),p=i(_,p,S),T===null?j=_:T.sibling=_,T=_,N=C}if(S===x.length)return n(h,N),fe&&Tn(h,S),j;if(N===null){for(;SS?(C=N,N=null):C=N.sibling;var D=f(h,N,_.value,m);if(D===null){N===null&&(N=C);break}e&&N&&D.alternate===null&&t(h,N),p=i(D,p,S),T===null?j=D:T.sibling=D,T=D,N=C}if(_.done)return n(h,N),fe&&Tn(h,S),j;if(N===null){for(;!_.done;S++,_=x.next())_=g(h,_.value,m),_!==null&&(p=i(_,p,S),T===null?j=_:T.sibling=_,T=_);return fe&&Tn(h,S),j}for(N=r(h,N);!_.done;S++,_=x.next())_=w(N,h,S,_.value,m),_!==null&&(e&&_.alternate!==null&&N.delete(_.key===null?S:_.key),p=i(_,p,S),T===null?j=_:T.sibling=_,T=_);return e&&N.forEach(function(O){return t(h,O)}),fe&&Tn(h,S),j}function b(h,p,x,m){if(typeof x=="object"&&x!==null&&x.type===nr&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case Is:e:{for(var j=x.key,T=p;T!==null;){if(T.key===j){if(j=x.type,j===nr){if(T.tag===7){n(h,T.sibling),p=s(T,x.props.children),p.return=h,h=p;break e}}else if(T.elementType===j||typeof j=="object"&&j!==null&&j.$$typeof===en&&ru(j)===T.type){n(h,T.sibling),p=s(T,x.props),p.ref=$r(h,T,x),p.return=h,h=p;break e}n(h,T);break}else t(h,T);T=T.sibling}x.type===nr?(p=On(x.props.children,h.mode,m,x.key),p.return=h,h=p):(m=ui(x.type,x.key,x.props,null,h.mode,m),m.ref=$r(h,p,x),m.return=h,h=m)}return l(h);case tr:e:{for(T=x.key;p!==null;){if(p.key===T)if(p.tag===4&&p.stateNode.containerInfo===x.containerInfo&&p.stateNode.implementation===x.implementation){n(h,p.sibling),p=s(p,x.children||[]),p.return=h,h=p;break e}else{n(h,p);break}else t(h,p);p=p.sibling}p=Qa(x,h.mode,m),p.return=h,h=p}return l(h);case en:return T=x._init,b(h,p,T(x._payload),m)}if(Qr(x))return v(h,p,x,m);if(Dr(x))return k(h,p,x,m);Ks(h,x)}return typeof x=="string"&&x!==""||typeof x=="number"?(x=""+x,p!==null&&p.tag===6?(n(h,p.sibling),p=s(p,x),p.return=h,h=p):(n(h,p),p=Ha(x,h.mode,m),p.return=h,h=p),l(h)):n(h,p)}return b}var br=dm(!0),mm=dm(!1),_i=kn(null),Si=null,ur=null,bo=null;function jo(){bo=ur=Si=null}function No(e){var t=_i.current;ue(_i),e._currentValue=t}function Cl(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function xr(e,t){Si=e,bo=ur=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ze=!0),e.firstContext=null)}function yt(e){var t=e._currentValue;if(bo!==e)if(e={context:e,memoizedValue:t,next:null},ur===null){if(Si===null)throw Error(R(308));ur=e,Si.dependencies={lanes:0,firstContext:e}}else ur=ur.next=e;return t}var Dn=null;function _o(e){Dn===null?Dn=[e]:Dn.push(e)}function pm(e,t,n,r){var s=t.interleaved;return s===null?(n.next=n,_o(t)):(n.next=s.next,s.next=n),t.interleaved=n,Gt(e,r)}function Gt(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var tn=!1;function So(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function fm(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Qt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function dn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Z&2){var s=r.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),r.pending=t,Gt(e,n)}return s=r.interleaved,s===null?(t.next=t,_o(r)):(t.next=s.next,s.next=t),r.interleaved=t,Gt(e,n)}function si(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,uo(e,n)}}function su(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var s=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?s=i=l:i=i.next=l,n=n.next}while(n!==null);i===null?s=i=t:i=i.next=t}else s=i=t;n={baseState:r.baseState,firstBaseUpdate:s,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ei(e,t,n,r){var s=e.updateQueue;tn=!1;var i=s.firstBaseUpdate,l=s.lastBaseUpdate,o=s.shared.pending;if(o!==null){s.shared.pending=null;var c=o,u=c.next;c.next=null,l===null?i=u:l.next=u,l=c;var d=e.alternate;d!==null&&(d=d.updateQueue,o=d.lastBaseUpdate,o!==l&&(o===null?d.firstBaseUpdate=u:o.next=u,d.lastBaseUpdate=c))}if(i!==null){var g=s.baseState;l=0,d=u=c=null,o=i;do{var f=o.lane,w=o.eventTime;if((r&f)===f){d!==null&&(d=d.next={eventTime:w,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var v=e,k=o;switch(f=t,w=n,k.tag){case 1:if(v=k.payload,typeof v=="function"){g=v.call(w,g,f);break e}g=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=k.payload,f=typeof v=="function"?v.call(w,g,f):v,f==null)break e;g=ve({},g,f);break e;case 2:tn=!0}}o.callback!==null&&o.lane!==0&&(e.flags|=64,f=s.effects,f===null?s.effects=[o]:f.push(o))}else w={eventTime:w,lane:f,tag:o.tag,payload:o.payload,callback:o.callback,next:null},d===null?(u=d=w,c=g):d=d.next=w,l|=f;if(o=o.next,o===null){if(o=s.shared.pending,o===null)break;f=o,o=f.next,f.next=null,s.lastBaseUpdate=f,s.shared.pending=null}}while(!0);if(d===null&&(c=g),s.baseState=c,s.firstBaseUpdate=u,s.lastBaseUpdate=d,t=s.shared.interleaved,t!==null){s=t;do l|=s.lane,s=s.next;while(s!==t)}else i===null&&(s.shared.lanes=0);Un|=l,e.lanes=l,e.memoizedState=g}}function iu(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Fa.transition;Fa.transition={};try{e(!1),t()}finally{se=n,Fa.transition=r}}function Rm(){return vt().memoizedState}function pg(e,t,n){var r=pn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Lm(e))Dm(t,n);else if(n=pm(e,t,n,r),n!==null){var s=Ke();Et(n,e,r,s),Mm(n,t,r)}}function fg(e,t,n){var r=pn(e),s={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Lm(e))Dm(t,s);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var l=t.lastRenderedState,o=i(l,n);if(s.hasEagerState=!0,s.eagerState=o,Ct(o,l)){var c=t.interleaved;c===null?(s.next=s,_o(t)):(s.next=c.next,c.next=s),t.interleaved=s;return}}catch{}finally{}n=pm(e,t,s,r),n!==null&&(s=Ke(),Et(n,e,r,s),Mm(n,t,r))}}function Lm(e){var t=e.alternate;return e===ye||t!==null&&t===ye}function Dm(e,t){ns=Ti=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Mm(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,uo(e,n)}}var Pi={readContext:yt,useCallback:ze,useContext:ze,useEffect:ze,useImperativeHandle:ze,useInsertionEffect:ze,useLayoutEffect:ze,useMemo:ze,useReducer:ze,useRef:ze,useState:ze,useDebugValue:ze,useDeferredValue:ze,useTransition:ze,useMutableSource:ze,useSyncExternalStore:ze,useId:ze,unstable_isNewReconciler:!1},hg={readContext:yt,useCallback:function(e,t){return Mt().memoizedState=[e,t===void 0?null:t],e},useContext:yt,useEffect:lu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,ai(4194308,4,Sm.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ai(4194308,4,e,t)},useInsertionEffect:function(e,t){return ai(4,2,e,t)},useMemo:function(e,t){var n=Mt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Mt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=pg.bind(null,ye,e),[r.memoizedState,e]},useRef:function(e){var t=Mt();return e={current:e},t.memoizedState=e},useState:au,useDebugValue:Mo,useDeferredValue:function(e){return Mt().memoizedState=e},useTransition:function(){var e=au(!1),t=e[0];return e=mg.bind(null,e[1]),Mt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ye,s=Mt();if(fe){if(n===void 0)throw Error(R(407));n=n()}else{if(n=t(),Pe===null)throw Error(R(349));zn&30||ym(r,t,n)}s.memoizedState=n;var i={value:n,getSnapshot:t};return s.queue=i,lu(km.bind(null,r,i,e),[e]),r.flags|=2048,bs(9,vm.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Mt(),t=Pe.identifierPrefix;if(fe){var n=Ht,r=Wt;n=(r&~(1<<32-St(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ks++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[It]=t,e[xs]=r,Hm(e,t,!1,!1),t.stateNode=e;e:{switch(l=ul(n,r),n){case"dialog":oe("cancel",e),oe("close",e),s=r;break;case"iframe":case"object":case"embed":oe("load",e),s=r;break;case"video":case"audio":for(s=0;s_r&&(t.flags|=128,r=!0,Fr(i,!1),t.lanes=4194304)}else{if(!r)if(e=Ci(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Fr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!fe)return Ue(t),null}else 2*je()-i.renderingStartTime>_r&&n!==1073741824&&(t.flags|=128,r=!0,Fr(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(n=i.last,n!==null?n.sibling=l:t.child=l,i.last=l)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=je(),t.sibling=null,n=xe.current,le(xe,r?n&1|2:n&1),t):(Ue(t),null);case 22:case 23:return zo(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?at&1073741824&&(Ue(t),t.subtreeFlags&6&&(t.flags|=8192)):Ue(t),null;case 24:return null;case 25:return null}throw Error(R(156,t.tag))}function jg(e,t){switch(ko(t),t.tag){case 1:return tt(t.type)&&wi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return jr(),ue(et),ue(We),To(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Co(t),null;case 13:if(ue(xe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(R(340));wr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ue(xe),null;case 4:return jr(),null;case 10:return No(t.type._context),null;case 22:case 23:return zo(),null;case 24:return null;default:return null}}var Gs=!1,Be=!1,Ng=typeof WeakSet=="function"?WeakSet:Set,z=null;function dr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ke(e,t,r)}else n.current=null}function Ol(e,t,n){try{n()}catch(r){ke(e,t,r)}}var yu=!1;function _g(e,t){if(kl=xi,e=Jd(),yo(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var s=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var l=0,o=-1,c=-1,u=0,d=0,g=e,f=null;t:for(;;){for(var w;g!==n||s!==0&&g.nodeType!==3||(o=l+s),g!==i||r!==0&&g.nodeType!==3||(c=l+r),g.nodeType===3&&(l+=g.nodeValue.length),(w=g.firstChild)!==null;)f=g,g=w;for(;;){if(g===e)break t;if(f===n&&++u===s&&(o=l),f===i&&++d===r&&(c=l),(w=g.nextSibling)!==null)break;g=f,f=g.parentNode}g=w}n=o===-1||c===-1?null:{start:o,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(wl={focusedElem:e,selectionRange:n},xi=!1,z=t;z!==null;)if(t=z,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,z=e;else for(;z!==null;){t=z;try{var v=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var k=v.memoizedProps,b=v.memoizedState,h=t.stateNode,p=h.getSnapshotBeforeUpdate(t.elementType===t.type?k:bt(t.type,k),b);h.__reactInternalSnapshotBeforeUpdate=p}break;case 3:var x=t.stateNode.containerInfo;x.nodeType===1?x.textContent="":x.nodeType===9&&x.documentElement&&x.removeChild(x.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(R(163))}}catch(m){ke(t,t.return,m)}if(e=t.sibling,e!==null){e.return=t.return,z=e;break}z=t.return}return v=yu,yu=!1,v}function rs(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var s=r=r.next;do{if((s.tag&e)===e){var i=s.destroy;s.destroy=void 0,i!==void 0&&Ol(t,n,i)}s=s.next}while(s!==r)}}function Ji(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function $l(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Km(e){var t=e.alternate;t!==null&&(e.alternate=null,Km(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[It],delete t[xs],delete t[Nl],delete t[lg],delete t[og])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Vm(e){return e.tag===5||e.tag===3||e.tag===4}function vu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Vm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ki));else if(r!==4&&(e=e.child,e!==null))for(Fl(e,t,n),e=e.sibling;e!==null;)Fl(e,t,n),e=e.sibling}function zl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(zl(e,t,n),e=e.sibling;e!==null;)zl(e,t,n),e=e.sibling}var Me=null,jt=!1;function Zt(e,t,n){for(n=n.child;n!==null;)Gm(e,t,n),n=n.sibling}function Gm(e,t,n){if(Ot&&typeof Ot.onCommitFiberUnmount=="function")try{Ot.onCommitFiberUnmount(Wi,n)}catch{}switch(n.tag){case 5:Be||dr(n,t);case 6:var r=Me,s=jt;Me=null,Zt(e,t,n),Me=r,jt=s,Me!==null&&(jt?(e=Me,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Me.removeChild(n.stateNode));break;case 18:Me!==null&&(jt?(e=Me,n=n.stateNode,e.nodeType===8?Ia(e.parentNode,n):e.nodeType===1&&Ia(e,n),ms(e)):Ia(Me,n.stateNode));break;case 4:r=Me,s=jt,Me=n.stateNode.containerInfo,jt=!0,Zt(e,t,n),Me=r,jt=s;break;case 0:case 11:case 14:case 15:if(!Be&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){s=r=r.next;do{var i=s,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&Ol(n,t,l),s=s.next}while(s!==r)}Zt(e,t,n);break;case 1:if(!Be&&(dr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(o){ke(n,t,o)}Zt(e,t,n);break;case 21:Zt(e,t,n);break;case 22:n.mode&1?(Be=(r=Be)||n.memoizedState!==null,Zt(e,t,n),Be=r):Zt(e,t,n);break;default:Zt(e,t,n)}}function ku(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Ng),t.forEach(function(r){var s=Mg.bind(null,e,r);n.has(r)||(n.add(r),r.then(s,s))})}}function wt(e,t){var n=t.deletions;if(n!==null)for(var r=0;rs&&(s=l),r&=~i}if(r=s,r=je()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Eg(r/1960))-r,10e?16:e,an===null)var r=!1;else{if(e=an,an=null,Di=0,Z&6)throw Error(R(331));var s=Z;for(Z|=4,z=e.current;z!==null;){var i=z,l=i.child;if(z.flags&16){var o=i.deletions;if(o!==null){for(var c=0;cje()-$o?In(e,0):Oo|=n),nt(e,t)}function rp(e,t){t===0&&(e.mode&1?(t=zs,zs<<=1,!(zs&130023424)&&(zs=4194304)):t=1);var n=Ke();e=Gt(e,t),e!==null&&(Ns(e,t,n),nt(e,n))}function Dg(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),rp(e,n)}function Mg(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(R(314))}r!==null&&r.delete(t),rp(e,n)}var sp;sp=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||et.current)Ze=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Ze=!1,wg(e,t,n);Ze=!!(e.flags&131072)}else Ze=!1,fe&&t.flags&1048576&&om(t,Ni,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;li(e,t),e=t.pendingProps;var s=kr(t,We.current);xr(t,n),s=Ro(null,t,r,e,s,n);var i=Lo();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,tt(r)?(i=!0,bi(t)):i=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,So(t),s.updater=Yi,t.stateNode=s,s._reactInternals=t,Pl(t,r,e,n),t=Dl(null,t,r,!0,i,n)):(t.tag=0,fe&&i&&vo(t),qe(null,t,s,n),t=t.child),t;case 16:r=t.elementType;e:{switch(li(e,t),e=t.pendingProps,s=r._init,r=s(r._payload),t.type=r,s=t.tag=Ig(r),e=bt(r,e),s){case 0:t=Ll(null,t,r,e,n);break e;case 1:t=hu(null,t,r,e,n);break e;case 11:t=pu(null,t,r,e,n);break e;case 14:t=fu(null,t,r,bt(r.type,e),n);break e}throw Error(R(306,r,""))}return t;case 0:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),Ll(e,t,r,s,n);case 1:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),hu(e,t,r,s,n);case 3:e:{if(Um(t),e===null)throw Error(R(387));r=t.pendingProps,i=t.memoizedState,s=i.element,fm(e,t),Ei(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){s=Nr(Error(R(423)),t),t=gu(e,t,r,n,s);break e}else if(r!==s){s=Nr(Error(R(424)),t),t=gu(e,t,r,n,s);break e}else for(lt=un(t.stateNode.containerInfo.firstChild),ot=t,fe=!0,Nt=null,n=mm(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(wr(),r===s){t=Yt(e,t,n);break e}qe(e,t,r,n)}t=t.child}return t;case 5:return hm(t),e===null&&El(t),r=t.type,s=t.pendingProps,i=e!==null?e.memoizedProps:null,l=s.children,bl(r,s)?l=null:i!==null&&bl(r,i)&&(t.flags|=32),zm(e,t),qe(e,t,l,n),t.child;case 6:return e===null&&El(t),null;case 13:return Bm(e,t,n);case 4:return Eo(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=br(t,null,r,n):qe(e,t,r,n),t.child;case 11:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),pu(e,t,r,s,n);case 7:return qe(e,t,t.pendingProps,n),t.child;case 8:return qe(e,t,t.pendingProps.children,n),t.child;case 12:return qe(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,s=t.pendingProps,i=t.memoizedProps,l=s.value,le(_i,r._currentValue),r._currentValue=l,i!==null)if(Ct(i.value,l)){if(i.children===s.children&&!et.current){t=Yt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var o=i.dependencies;if(o!==null){l=i.child;for(var c=o.firstContext;c!==null;){if(c.context===r){if(i.tag===1){c=Qt(-1,n&-n),c.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=n,c=i.alternate,c!==null&&(c.lanes|=n),Cl(i.return,n,t),o.lanes|=n;break}c=c.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error(R(341));l.lanes|=n,o=l.alternate,o!==null&&(o.lanes|=n),Cl(l,n,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}qe(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,r=t.pendingProps.children,xr(t,n),s=yt(s),r=r(s),t.flags|=1,qe(e,t,r,n),t.child;case 14:return r=t.type,s=bt(r,t.pendingProps),s=bt(r.type,s),fu(e,t,r,s,n);case 15:return $m(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),li(e,t),t.tag=1,tt(r)?(e=!0,bi(t)):e=!1,xr(t,n),Am(t,r,s),Pl(t,r,s,n),Dl(null,t,r,!0,e,n);case 19:return Wm(e,t,n);case 22:return Fm(e,t,n)}throw Error(R(156,t.tag))};function ip(e,t){return Ld(e,t)}function Ag(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function gt(e,t,n,r){return new Ag(e,t,n,r)}function Bo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ig(e){if(typeof e=="function")return Bo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ao)return 11;if(e===lo)return 14}return 2}function fn(e,t){var n=e.alternate;return n===null?(n=gt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ui(e,t,n,r,s,i){var l=2;if(r=e,typeof e=="function")Bo(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case nr:return On(n.children,s,i,t);case io:l=8,s|=8;break;case el:return e=gt(12,n,t,s|2),e.elementType=el,e.lanes=i,e;case tl:return e=gt(13,n,t,s),e.elementType=tl,e.lanes=i,e;case nl:return e=gt(19,n,t,s),e.elementType=nl,e.lanes=i,e;case hd:return Zi(n,s,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case pd:l=10;break e;case fd:l=9;break e;case ao:l=11;break e;case lo:l=14;break e;case en:l=16,r=null;break e}throw Error(R(130,e==null?e:typeof e,""))}return t=gt(l,n,t,s),t.elementType=e,t.type=r,t.lanes=i,t}function On(e,t,n,r){return e=gt(7,e,r,t),e.lanes=n,e}function Zi(e,t,n,r){return e=gt(22,e,r,t),e.elementType=hd,e.lanes=n,e.stateNode={isHidden:!1},e}function Ha(e,t,n){return e=gt(6,e,null,t),e.lanes=n,e}function Qa(e,t,n){return t=gt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Og(e,t,n,r,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=_a(0),this.expirationTimes=_a(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=_a(0),this.identifierPrefix=r,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Wo(e,t,n,r,s,i,l,o,c){return e=new Og(e,t,n,o,c),t===1?(t=1,i===!0&&(t|=8)):t=0,i=gt(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},So(i),e}function $g(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(cp)}catch(e){console.error(e)}}cp(),cd.exports=ut;var Wg=cd.exports,Cu=Wg;Xa.createRoot=Cu.createRoot,Xa.hydrateRoot=Cu.hydrateRoot;const Hg="modulepreload",Qg=function(e){return"/"+e},Tu={},up=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),o=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));s=Promise.allSettled(n.map(c=>{if(c=Qg(c),c in Tu)return;Tu[c]=!0;const u=c.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${d}`))return;const g=document.createElement("link");if(g.rel=u?"stylesheet":Hg,u||(g.as="script"),g.crossOrigin="",g.href=c,o&&g.setAttribute("nonce",o),document.head.appendChild(g),u)return new Promise((f,w)=>{g.addEventListener("load",f),g.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(l){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=l,window.dispatchEvent(o),!o.defaultPrevented)throw l}return s.then(l=>{for(const o of l||[])o.status==="rejected"&&i(o.reason);return t().catch(i)})};class qg extends Error{constructor(t,n,r,s){super(t),this.name="ApiError",this.status=n,this.method=r,this.path=s}}function Kg(e){const t=e.replace(/\s+/g," ").trim();if(!t)return"";try{const n=JSON.parse(e);for(const r of["detail","error","message"]){const s=n[r];if(typeof s=="string"&&s.trim())return s.trim();if(Array.isArray(s)){const i=s.map(l=>l&&typeof l=="object"?String(l.msg??""):"").filter(Boolean);if(i.length)return i.join("; ")}}}catch{}return t.startsWith("typeof g=="string"):[],l=qa(r==null?void 0:r.major),o=qa(r==null?void 0:r.minor);if(!n||!r||!s)return{compatible:!1,reason:"malformed /api/meta response"};if(typeof s.source_root!="string"||qa(s.pid)===null||typeof s.package_version!="string"||typeof s.release_id!="string")return{compatible:!1,reason:"malformed /api/meta runtime identity"};if(n.service!==Yg)return{compatible:!1,reason:`unexpected service ${String(n.service||"unknown")}`};const c=e;if(r.name!==Yn.name||l!==Yn.major)return{compatible:!1,reason:`protocol ${String(r.name||"unknown")}/${String(l)} is incompatible with client ${Yn.name}/${Yn.major}`,meta:c};if(o===null||o!i.includes(g));if(u.length>0)return{compatible:!1,reason:`missing capabilities: ${u.join(", ")}`,meta:c};if(s.source_root_matches_config===!1)return{compatible:!1,reason:`backend loaded source ${String(s.source_root)} but ARGUS_SKILL_SOURCE_ROOT points to ${String(s.configured_source_root)}`,meta:c};if(s.release_id!==t.releaseId)return{compatible:!1,reason:`backend release ${String(s.release_id)} does not match client release ${t.releaseId}`,meta:c};if(t.sourceDigest){if(typeof s.runtime_source_digest!="string"||!s.runtime_source_digest)return{compatible:!1,reason:"backend process does not report the source digest required by this local checkout",meta:c};if(s.runtime_source_digest!==t.sourceDigest)return{compatible:!1,reason:`backend process source ${String(s.runtime_source_digest).slice(0,16)} does not match local source ${t.sourceDigest.slice(0,16)}`,meta:c}}return{compatible:!0,reason:"",warning:s.release_matches_source===!1?"backend source differs from its prebuilt release artifacts; pull a complete published revision and reinstall":void 0,meta:c}}function Zg(e,t){const n=Xg(e);if(!n.compatible||!n.meta)throw new Error(`incompatible Argus API: ${n.reason}`);return n.warning&&(t==null||t(n.warning)),n.meta}function ex(e){const t=as(e),n=as(t==null?void 0:t.daemon);if(!t||t.schema_version!==Ii)throw new Error(`incompatible snapshot schema: expected ${Ii}, got ${String((t==null?void 0:t.schema_version)??"missing")}`);if(!n)throw new Error("invalid snapshot: daemon section is missing");const s=["global_daily_cap_usd","read_status","read_error","protocol_compatible","protocol_error"].filter(o=>!Object.hasOwn(n,o));if(s.length>0)throw new Error(`invalid snapshot: daemon fields missing: ${s.join(", ")}`);const l=["spend_usd","spend_status","usage_summary","request_usage","cost_control","daemon_commands","observability","mission_view","partial","diagnostics"].filter(o=>!Object.hasOwn(t,o));if(l.length>0)throw new Error(`invalid snapshot: fields missing: ${l.join(", ")}`);if(!Array.isArray(t.diagnostics))throw new Error("invalid snapshot: diagnostics must be an array");return e}const dp="argus_web_token";let Ql=null;function tx(){let e;try{e=new URLSearchParams(window.location.search)}catch{return}const t=e.get("token");if(t){Ql=t;try{localStorage.setItem(dp,t)}catch{}try{e.delete("token");const n=e.toString();window.history.replaceState(null,"",`${window.location.pathname}${n?`?${n}`:""}${window.location.hash}`)}catch{}}}const mp=()=>{if(Ql)return Ql;try{return new URLSearchParams(window.location.search).get("token")||localStorage.getItem(dp)}catch{return null}};function yn(){const e=mp();return e?{Authorization:`Bearer ${e}`}:{}}async function De(e,t){const n=await fetch(e,{headers:yn(),signal:t});return await xn(n,"GET",e),await n.json()}async function me(e,t,n){const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...yn()},body:t===void 0?void 0:JSON.stringify(t),signal:n});return await xn(r,"POST",e),await r.json()}async function nx(e,t,n){const r=await fetch(e,{method:"POST",headers:yn(),body:t,signal:n});return await xn(r,"POST",e),await r.json()}function Ur(e){const t=e&&typeof e=="object"?e:{},n=String(t.command_status??"");if(Number(t.rc??0)!==0||n==="failed"||n==="rejected")throw new Error(String(t.error||`daemon command ${n||"failed"}`));return e}async function Pu(e,t,n){const r=await fetch(t,{method:e,headers:{"Content-Type":"application/json",...yn()},body:n===void 0?void 0:JSON.stringify(n)});return await xn(r,e,t),await r.json()}async function rx(e,t){const n=await fetch(e,{headers:yn(),signal:t});return await xn(n,"GET",e),n.blob()}const Q=(e,t="")=>`/api/projects/${encodeURIComponent(e)}${t}`,Br=()=>{var e,t;return((t=(e=globalThis.crypto)==null?void 0:e.randomUUID)==null?void 0:t.call(e))??`${Date.now()}-${Math.random()}`};let Wr;function Xs(e){return!!(e&&typeof e=="object"&&"aborted"in e&&typeof e.aborted=="boolean")}function Ru(e,t){return t!=null&&t.length?{text:e,attachments:t}:{text:e}}function Jn(){if(!Wr){const e=(async()=>{const t="/api/meta",n=await fetch(t,{headers:yn()});if(n.status===404)throw new Error("incompatible Argus API: service does not expose /api/meta");return await xn(n,"GET",t),Zg(await n.json(),r=>console.warn(`Argus API compatibility warning: ${r}`))})();Wr=e,e.catch(()=>{Wr===e&&(Wr=void 0)})}return Wr}function Lu(e){const t=[];let n;for(;(n=e.indexOf(` +`+i.stack}return{value:e,source:t,stack:s,digest:null}}function Ba(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Rl(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var yg=typeof WeakMap=="function"?WeakMap:Map;function Im(e,t,n){n=Qt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Li||(Li=!0,Ul=r),Rl(e,t)},n}function Om(e,t,n){n=Qt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var s=t.value;n.payload=function(){return r(s)},n.callback=function(){Rl(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(n.callback=function(){Rl(e,t),typeof r!="function"&&(mn===null?mn=new Set([this]):mn.add(this));var l=t.stack;this.componentDidCatch(t.value,{componentStack:l!==null?l:""})}),n}function uu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new yg;var s=new Set;r.set(t,s)}else s=r.get(t),s===void 0&&(s=new Set,r.set(t,s));s.has(n)||(s.add(n),e=Lg.bind(null,e,t,n),t.then(e,e))}function du(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function mu(e,t,n,r,s){return e.mode&1?(e.flags|=65536,e.lanes=s,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Qt(-1,1),t.tag=2,dn(n,t,1))),n.lanes|=1),e)}var vg=Jt.ReactCurrentOwner,Ze=!1;function qe(e,t,n,r){t.child=e===null?mm(t,null,n,r):br(t,e.child,n,r)}function pu(e,t,n,r,s){n=n.render;var i=t.ref;return xr(t,s),r=Ro(e,t,n,r,i,s),n=Lo(),e!==null&&!Ze?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,Yt(e,t,s)):(fe&&n&&vo(t),t.flags|=1,qe(e,t,r,s),t.child)}function fu(e,t,n,r,s){if(e===null){var i=n.type;return typeof i=="function"&&!Bo(i)&&i.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=i,$m(e,t,i,r,s)):(e=ui(n.type,null,r,t,t.mode,s),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!(e.lanes&s)){var l=i.memoizedProps;if(n=n.compare,n=n!==null?n:fs,n(l,r)&&e.ref===t.ref)return Yt(e,t,s)}return t.flags|=1,e=fn(i,r),e.ref=t.ref,e.return=t,t.child=e}function $m(e,t,n,r,s){if(e!==null){var i=e.memoizedProps;if(fs(i,r)&&e.ref===t.ref)if(Ze=!1,t.pendingProps=r=i,(e.lanes&s)!==0)e.flags&131072&&(Ze=!0);else return t.lanes=e.lanes,Yt(e,t,s)}return Ll(e,t,n,r,s)}function Fm(e,t,n){var r=t.pendingProps,s=r.children,i=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},le(mr,at),at|=n;else{if(!(n&1073741824))return e=i!==null?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,le(mr,at),at|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=i!==null?i.baseLanes:n,le(mr,at),at|=r}else i!==null?(r=i.baseLanes|n,t.memoizedState=null):r=n,le(mr,at),at|=r;return qe(e,t,s,n),t.child}function zm(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Ll(e,t,n,r,s){var i=tt(n)?$n:We.current;return i=kr(t,i),xr(t,s),n=Ro(e,t,n,r,i,s),r=Lo(),e!==null&&!Ze?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s,Yt(e,t,s)):(fe&&r&&vo(t),t.flags|=1,qe(e,t,n,s),t.child)}function hu(e,t,n,r,s){if(tt(n)){var i=!0;bi(t)}else i=!1;if(xr(t,s),t.stateNode===null)li(e,t),Am(t,n,r),Pl(t,n,r,s),r=!0;else if(e===null){var l=t.stateNode,o=t.memoizedProps;l.props=o;var c=l.context,u=n.contextType;typeof u=="object"&&u!==null?u=yt(u):(u=tt(n)?$n:We.current,u=kr(t,u));var d=n.getDerivedStateFromProps,g=typeof d=="function"||typeof l.getSnapshotBeforeUpdate=="function";g||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==r||c!==u)&&cu(t,l,r,u),tn=!1;var f=t.memoizedState;l.state=f,Ei(t,r,l,s),c=t.memoizedState,o!==r||f!==c||et.current||tn?(typeof d=="function"&&(Tl(t,n,d,r),c=t.memoizedState),(o=tn||ou(t,n,o,r,f,c,u))?(g||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(t.flags|=4194308)):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=c),l.props=r,l.state=c,l.context=u,r=o):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{l=t.stateNode,fm(e,t),o=t.memoizedProps,u=t.type===t.elementType?o:bt(t.type,o),l.props=u,g=t.pendingProps,f=l.context,c=n.contextType,typeof c=="object"&&c!==null?c=yt(c):(c=tt(n)?$n:We.current,c=kr(t,c));var w=n.getDerivedStateFromProps;(d=typeof w=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(o!==g||f!==c)&&cu(t,l,r,c),tn=!1,f=t.memoizedState,l.state=f,Ei(t,r,l,s);var v=t.memoizedState;o!==g||f!==v||et.current||tn?(typeof w=="function"&&(Tl(t,n,w,r),v=t.memoizedState),(u=tn||ou(t,n,u,r,f,v,c)||!1)?(d||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(r,v,c),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(r,v,c)),typeof l.componentDidUpdate=="function"&&(t.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=v),l.props=r,l.state=v,l.context=c,r=u):(typeof l.componentDidUpdate!="function"||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||o===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return Dl(e,t,n,r,i,s)}function Dl(e,t,n,r,s,i){zm(e,t);var l=(t.flags&128)!==0;if(!r&&!l)return s&&eu(t,n,!1),Yt(e,t,i);r=t.stateNode,vg.current=t;var o=l&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&l?(t.child=br(t,e.child,null,i),t.child=br(t,null,o,i)):qe(e,t,o,i),t.memoizedState=r.state,s&&eu(t,n,!0),t.child}function Um(e){var t=e.stateNode;t.pendingContext?Zc(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Zc(e,t.context,!1),Eo(e,t.containerInfo)}function gu(e,t,n,r,s){return wr(),wo(s),t.flags|=256,qe(e,t,n,r),t.child}var Ml={dehydrated:null,treeContext:null,retryLane:0};function Al(e){return{baseLanes:e,cachePool:null,transitions:null}}function Bm(e,t,n){var r=t.pendingProps,s=xe.current,i=!1,l=(t.flags&128)!==0,o;if((o=l)||(o=e!==null&&e.memoizedState===null?!1:(s&2)!==0),o?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(s|=1),le(xe,s&1),e===null)return El(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(l=r.children,e=r.fallback,i?(r=t.mode,i=t.child,l={mode:"hidden",children:l},!(r&1)&&i!==null?(i.childLanes=0,i.pendingProps=l):i=Zi(l,r,0,null),e=On(e,r,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=Al(n),t.memoizedState=Ml,e):Ao(t,l));if(s=e.memoizedState,s!==null&&(o=s.dehydrated,o!==null))return kg(e,t,l,r,o,s,n);if(i){i=r.fallback,l=t.mode,s=e.child,o=s.sibling;var c={mode:"hidden",children:r.children};return!(l&1)&&t.child!==s?(r=t.child,r.childLanes=0,r.pendingProps=c,t.deletions=null):(r=fn(s,c),r.subtreeFlags=s.subtreeFlags&14680064),o!==null?i=fn(o,i):(i=On(i,l,n,null),i.flags|=2),i.return=t,r.return=t,r.sibling=i,t.child=r,r=i,i=t.child,l=e.child.memoizedState,l=l===null?Al(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},i.memoizedState=l,i.childLanes=e.childLanes&~n,t.memoizedState=Ml,r}return i=e.child,e=i.sibling,r=fn(i,{mode:"visible",children:r.children}),!(t.mode&1)&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function Ao(e,t){return t=Zi({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function Vs(e,t,n,r){return r!==null&&wo(r),br(t,e.child,null,n),e=Ao(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function kg(e,t,n,r,s,i,l){if(n)return t.flags&256?(t.flags&=-257,r=Ba(Error(R(422))),Vs(e,t,l,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=r.fallback,s=t.mode,r=Zi({mode:"visible",children:r.children},s,0,null),i=On(i,s,l,null),i.flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,t.mode&1&&br(t,e.child,null,l),t.child.memoizedState=Al(l),t.memoizedState=Ml,i);if(!(t.mode&1))return Vs(e,t,l,null);if(s.data==="$!"){if(r=s.nextSibling&&s.nextSibling.dataset,r)var o=r.dgst;return r=o,i=Error(R(419)),r=Ba(i,r,void 0),Vs(e,t,l,r)}if(o=(l&e.childLanes)!==0,Ze||o){if(r=Pe,r!==null){switch(l&-l){case 4:s=2;break;case 16:s=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:s=32;break;case 536870912:s=268435456;break;default:s=0}s=s&(r.suspendedLanes|l)?0:s,s!==0&&s!==i.retryLane&&(i.retryLane=s,Gt(e,s),Et(r,e,s,-1))}return Uo(),r=Ba(Error(R(421))),Vs(e,t,l,r)}return s.data==="$?"?(t.flags|=128,t.child=e.child,t=Dg.bind(null,e),s._reactRetry=t,null):(e=i.treeContext,lt=un(s.nextSibling),ot=t,fe=!0,Nt=null,e!==null&&(ft[ht++]=Wt,ft[ht++]=Ht,ft[ht++]=Fn,Wt=e.id,Ht=e.overflow,Fn=t),t=Ao(t,r.children),t.flags|=4096,t)}function xu(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Cl(e.return,t,n)}function Wa(e,t,n,r,s){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:s}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=s)}function Wm(e,t,n){var r=t.pendingProps,s=r.revealOrder,i=r.tail;if(qe(e,t,r.children,n),r=xe.current,r&2)r=r&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&xu(e,n,t);else if(e.tag===19)xu(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(le(xe,r),!(t.mode&1))t.memoizedState=null;else switch(s){case"forwards":for(n=t.child,s=null;n!==null;)e=n.alternate,e!==null&&Ci(e)===null&&(s=n),n=n.sibling;n=s,n===null?(s=t.child,t.child=null):(s=n.sibling,n.sibling=null),Wa(t,!1,s,n,i);break;case"backwards":for(n=null,s=t.child,t.child=null;s!==null;){if(e=s.alternate,e!==null&&Ci(e)===null){t.child=s;break}e=s.sibling,s.sibling=n,n=s,s=e}Wa(t,!0,n,null,i);break;case"together":Wa(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function li(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Yt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Un|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(R(153));if(t.child!==null){for(e=t.child,n=fn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=fn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function wg(e,t,n){switch(t.tag){case 3:Um(t),wr();break;case 5:hm(t);break;case 1:tt(t.type)&&bi(t);break;case 4:Eo(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,s=t.memoizedProps.value;le(_i,r._currentValue),r._currentValue=s;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(le(xe,xe.current&1),t.flags|=128,null):n&t.child.childLanes?Bm(e,t,n):(le(xe,xe.current&1),e=Yt(e,t,n),e!==null?e.sibling:null);le(xe,xe.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return Wm(e,t,n);t.flags|=128}if(s=t.memoizedState,s!==null&&(s.rendering=null,s.tail=null,s.lastEffect=null),le(xe,xe.current),r)break;return null;case 22:case 23:return t.lanes=0,Fm(e,t,n)}return Yt(e,t,n)}var Hm,Il,Qm,qm;Hm=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};Il=function(){};Qm=function(e,t,n,r){var s=e.memoizedProps;if(s!==r){e=t.stateNode,Mn($t.current);var i=null;switch(n){case"input":s=sl(e,s),r=sl(e,r),i=[];break;case"select":s=ve({},s,{value:void 0}),r=ve({},r,{value:void 0}),i=[];break;case"textarea":s=ll(e,s),r=ll(e,r),i=[];break;default:typeof s.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=ki)}cl(n,r);var l;n=null;for(u in s)if(!r.hasOwnProperty(u)&&s.hasOwnProperty(u)&&s[u]!=null)if(u==="style"){var o=s[u];for(l in o)o.hasOwnProperty(l)&&(n||(n={}),n[l]="")}else u!=="dangerouslySetInnerHTML"&&u!=="children"&&u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&u!=="autoFocus"&&(ls.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(o=s!=null?s[u]:void 0,r.hasOwnProperty(u)&&c!==o&&(c!=null||o!=null))if(u==="style")if(o){for(l in o)!o.hasOwnProperty(l)||c&&c.hasOwnProperty(l)||(n||(n={}),n[l]="");for(l in c)c.hasOwnProperty(l)&&o[l]!==c[l]&&(n||(n={}),n[l]=c[l])}else n||(i||(i=[]),i.push(u,n)),n=c;else u==="dangerouslySetInnerHTML"?(c=c?c.__html:void 0,o=o?o.__html:void 0,c!=null&&o!==c&&(i=i||[]).push(u,c)):u==="children"?typeof c!="string"&&typeof c!="number"||(i=i||[]).push(u,""+c):u!=="suppressContentEditableWarning"&&u!=="suppressHydrationWarning"&&(ls.hasOwnProperty(u)?(c!=null&&u==="onScroll"&&oe("scroll",e),i||o===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}};qm=function(e,t,n,r){n!==r&&(t.flags|=4)};function Fr(e,t){if(!fe)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Ue(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var s=e.child;s!==null;)n|=s.lanes|s.childLanes,r|=s.subtreeFlags&14680064,r|=s.flags&14680064,s.return=e,s=s.sibling;else for(s=e.child;s!==null;)n|=s.lanes|s.childLanes,r|=s.subtreeFlags,r|=s.flags,s.return=e,s=s.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function bg(e,t,n){var r=t.pendingProps;switch(ko(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ue(t),null;case 1:return tt(t.type)&&wi(),Ue(t),null;case 3:return r=t.stateNode,jr(),ue(et),ue(We),To(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(qs(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Nt!==null&&(Hl(Nt),Nt=null))),Il(e,t),Ue(t),null;case 5:Co(t);var s=Mn(vs.current);if(n=t.type,e!==null&&t.stateNode!=null)Qm(e,t,n,r,s),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(R(166));return Ue(t),null}if(e=Mn($t.current),qs(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[It]=t,r[xs]=i,e=(t.mode&1)!==0,n){case"dialog":oe("cancel",r),oe("close",r);break;case"iframe":case"object":case"embed":oe("load",r);break;case"video":case"audio":for(s=0;s<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[It]=t,e[xs]=r,Hm(e,t,!1,!1),t.stateNode=e;e:{switch(l=ul(n,r),n){case"dialog":oe("cancel",e),oe("close",e),s=r;break;case"iframe":case"object":case"embed":oe("load",e),s=r;break;case"video":case"audio":for(s=0;s_r&&(t.flags|=128,r=!0,Fr(i,!1),t.lanes=4194304)}else{if(!r)if(e=Ci(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Fr(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!fe)return Ue(t),null}else 2*je()-i.renderingStartTime>_r&&n!==1073741824&&(t.flags|=128,r=!0,Fr(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(n=i.last,n!==null?n.sibling=l:t.child=l,i.last=l)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=je(),t.sibling=null,n=xe.current,le(xe,r?n&1|2:n&1),t):(Ue(t),null);case 22:case 23:return zo(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?at&1073741824&&(Ue(t),t.subtreeFlags&6&&(t.flags|=8192)):Ue(t),null;case 24:return null;case 25:return null}throw Error(R(156,t.tag))}function jg(e,t){switch(ko(t),t.tag){case 1:return tt(t.type)&&wi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return jr(),ue(et),ue(We),To(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Co(t),null;case 13:if(ue(xe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(R(340));wr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ue(xe),null;case 4:return jr(),null;case 10:return No(t.type._context),null;case 22:case 23:return zo(),null;case 24:return null;default:return null}}var Gs=!1,Be=!1,Ng=typeof WeakSet=="function"?WeakSet:Set,z=null;function dr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ke(e,t,r)}else n.current=null}function Ol(e,t,n){try{n()}catch(r){ke(e,t,r)}}var yu=!1;function _g(e,t){if(kl=xi,e=Jd(),yo(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var s=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var l=0,o=-1,c=-1,u=0,d=0,g=e,f=null;t:for(;;){for(var w;g!==n||s!==0&&g.nodeType!==3||(o=l+s),g!==i||r!==0&&g.nodeType!==3||(c=l+r),g.nodeType===3&&(l+=g.nodeValue.length),(w=g.firstChild)!==null;)f=g,g=w;for(;;){if(g===e)break t;if(f===n&&++u===s&&(o=l),f===i&&++d===r&&(c=l),(w=g.nextSibling)!==null)break;g=f,f=g.parentNode}g=w}n=o===-1||c===-1?null:{start:o,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(wl={focusedElem:e,selectionRange:n},xi=!1,z=t;z!==null;)if(t=z,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,z=e;else for(;z!==null;){t=z;try{var v=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var k=v.memoizedProps,b=v.memoizedState,h=t.stateNode,p=h.getSnapshotBeforeUpdate(t.elementType===t.type?k:bt(t.type,k),b);h.__reactInternalSnapshotBeforeUpdate=p}break;case 3:var x=t.stateNode.containerInfo;x.nodeType===1?x.textContent="":x.nodeType===9&&x.documentElement&&x.removeChild(x.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(R(163))}}catch(m){ke(t,t.return,m)}if(e=t.sibling,e!==null){e.return=t.return,z=e;break}z=t.return}return v=yu,yu=!1,v}function rs(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var s=r=r.next;do{if((s.tag&e)===e){var i=s.destroy;s.destroy=void 0,i!==void 0&&Ol(t,n,i)}s=s.next}while(s!==r)}}function Ji(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function $l(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Km(e){var t=e.alternate;t!==null&&(e.alternate=null,Km(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[It],delete t[xs],delete t[Nl],delete t[lg],delete t[og])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Vm(e){return e.tag===5||e.tag===3||e.tag===4}function vu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Vm(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ki));else if(r!==4&&(e=e.child,e!==null))for(Fl(e,t,n),e=e.sibling;e!==null;)Fl(e,t,n),e=e.sibling}function zl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(zl(e,t,n),e=e.sibling;e!==null;)zl(e,t,n),e=e.sibling}var Me=null,jt=!1;function Zt(e,t,n){for(n=n.child;n!==null;)Gm(e,t,n),n=n.sibling}function Gm(e,t,n){if(Ot&&typeof Ot.onCommitFiberUnmount=="function")try{Ot.onCommitFiberUnmount(Wi,n)}catch{}switch(n.tag){case 5:Be||dr(n,t);case 6:var r=Me,s=jt;Me=null,Zt(e,t,n),Me=r,jt=s,Me!==null&&(jt?(e=Me,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Me.removeChild(n.stateNode));break;case 18:Me!==null&&(jt?(e=Me,n=n.stateNode,e.nodeType===8?Ia(e.parentNode,n):e.nodeType===1&&Ia(e,n),ms(e)):Ia(Me,n.stateNode));break;case 4:r=Me,s=jt,Me=n.stateNode.containerInfo,jt=!0,Zt(e,t,n),Me=r,jt=s;break;case 0:case 11:case 14:case 15:if(!Be&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){s=r=r.next;do{var i=s,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&Ol(n,t,l),s=s.next}while(s!==r)}Zt(e,t,n);break;case 1:if(!Be&&(dr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(o){ke(n,t,o)}Zt(e,t,n);break;case 21:Zt(e,t,n);break;case 22:n.mode&1?(Be=(r=Be)||n.memoizedState!==null,Zt(e,t,n),Be=r):Zt(e,t,n);break;default:Zt(e,t,n)}}function ku(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Ng),t.forEach(function(r){var s=Mg.bind(null,e,r);n.has(r)||(n.add(r),r.then(s,s))})}}function wt(e,t){var n=t.deletions;if(n!==null)for(var r=0;rs&&(s=l),r&=~i}if(r=s,r=je()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Eg(r/1960))-r,10e?16:e,an===null)var r=!1;else{if(e=an,an=null,Di=0,Z&6)throw Error(R(331));var s=Z;for(Z|=4,z=e.current;z!==null;){var i=z,l=i.child;if(z.flags&16){var o=i.deletions;if(o!==null){for(var c=0;cje()-$o?In(e,0):Oo|=n),nt(e,t)}function rp(e,t){t===0&&(e.mode&1?(t=zs,zs<<=1,!(zs&130023424)&&(zs=4194304)):t=1);var n=Ke();e=Gt(e,t),e!==null&&(Ns(e,t,n),nt(e,n))}function Dg(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),rp(e,n)}function Mg(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(R(314))}r!==null&&r.delete(t),rp(e,n)}var sp;sp=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||et.current)Ze=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Ze=!1,wg(e,t,n);Ze=!!(e.flags&131072)}else Ze=!1,fe&&t.flags&1048576&&om(t,Ni,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;li(e,t),e=t.pendingProps;var s=kr(t,We.current);xr(t,n),s=Ro(null,t,r,e,s,n);var i=Lo();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,tt(r)?(i=!0,bi(t)):i=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,So(t),s.updater=Yi,t.stateNode=s,s._reactInternals=t,Pl(t,r,e,n),t=Dl(null,t,r,!0,i,n)):(t.tag=0,fe&&i&&vo(t),qe(null,t,s,n),t=t.child),t;case 16:r=t.elementType;e:{switch(li(e,t),e=t.pendingProps,s=r._init,r=s(r._payload),t.type=r,s=t.tag=Ig(r),e=bt(r,e),s){case 0:t=Ll(null,t,r,e,n);break e;case 1:t=hu(null,t,r,e,n);break e;case 11:t=pu(null,t,r,e,n);break e;case 14:t=fu(null,t,r,bt(r.type,e),n);break e}throw Error(R(306,r,""))}return t;case 0:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),Ll(e,t,r,s,n);case 1:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),hu(e,t,r,s,n);case 3:e:{if(Um(t),e===null)throw Error(R(387));r=t.pendingProps,i=t.memoizedState,s=i.element,fm(e,t),Ei(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){s=Nr(Error(R(423)),t),t=gu(e,t,r,n,s);break e}else if(r!==s){s=Nr(Error(R(424)),t),t=gu(e,t,r,n,s);break e}else for(lt=un(t.stateNode.containerInfo.firstChild),ot=t,fe=!0,Nt=null,n=mm(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(wr(),r===s){t=Yt(e,t,n);break e}qe(e,t,r,n)}t=t.child}return t;case 5:return hm(t),e===null&&El(t),r=t.type,s=t.pendingProps,i=e!==null?e.memoizedProps:null,l=s.children,bl(r,s)?l=null:i!==null&&bl(r,i)&&(t.flags|=32),zm(e,t),qe(e,t,l,n),t.child;case 6:return e===null&&El(t),null;case 13:return Bm(e,t,n);case 4:return Eo(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=br(t,null,r,n):qe(e,t,r,n),t.child;case 11:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),pu(e,t,r,s,n);case 7:return qe(e,t,t.pendingProps,n),t.child;case 8:return qe(e,t,t.pendingProps.children,n),t.child;case 12:return qe(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,s=t.pendingProps,i=t.memoizedProps,l=s.value,le(_i,r._currentValue),r._currentValue=l,i!==null)if(Ct(i.value,l)){if(i.children===s.children&&!et.current){t=Yt(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var o=i.dependencies;if(o!==null){l=i.child;for(var c=o.firstContext;c!==null;){if(c.context===r){if(i.tag===1){c=Qt(-1,n&-n),c.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=n,c=i.alternate,c!==null&&(c.lanes|=n),Cl(i.return,n,t),o.lanes|=n;break}c=c.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error(R(341));l.lanes|=n,o=l.alternate,o!==null&&(o.lanes|=n),Cl(l,n,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}qe(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,r=t.pendingProps.children,xr(t,n),s=yt(s),r=r(s),t.flags|=1,qe(e,t,r,n),t.child;case 14:return r=t.type,s=bt(r,t.pendingProps),s=bt(r.type,s),fu(e,t,r,s,n);case 15:return $m(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,s=t.pendingProps,s=t.elementType===r?s:bt(r,s),li(e,t),t.tag=1,tt(r)?(e=!0,bi(t)):e=!1,xr(t,n),Am(t,r,s),Pl(t,r,s,n),Dl(null,t,r,!0,e,n);case 19:return Wm(e,t,n);case 22:return Fm(e,t,n)}throw Error(R(156,t.tag))};function ip(e,t){return Ld(e,t)}function Ag(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function gt(e,t,n,r){return new Ag(e,t,n,r)}function Bo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ig(e){if(typeof e=="function")return Bo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ao)return 11;if(e===lo)return 14}return 2}function fn(e,t){var n=e.alternate;return n===null?(n=gt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ui(e,t,n,r,s,i){var l=2;if(r=e,typeof e=="function")Bo(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case nr:return On(n.children,s,i,t);case io:l=8,s|=8;break;case el:return e=gt(12,n,t,s|2),e.elementType=el,e.lanes=i,e;case tl:return e=gt(13,n,t,s),e.elementType=tl,e.lanes=i,e;case nl:return e=gt(19,n,t,s),e.elementType=nl,e.lanes=i,e;case hd:return Zi(n,s,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case pd:l=10;break e;case fd:l=9;break e;case ao:l=11;break e;case lo:l=14;break e;case en:l=16,r=null;break e}throw Error(R(130,e==null?e:typeof e,""))}return t=gt(l,n,t,s),t.elementType=e,t.type=r,t.lanes=i,t}function On(e,t,n,r){return e=gt(7,e,r,t),e.lanes=n,e}function Zi(e,t,n,r){return e=gt(22,e,r,t),e.elementType=hd,e.lanes=n,e.stateNode={isHidden:!1},e}function Ha(e,t,n){return e=gt(6,e,null,t),e.lanes=n,e}function Qa(e,t,n){return t=gt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Og(e,t,n,r,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=_a(0),this.expirationTimes=_a(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=_a(0),this.identifierPrefix=r,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function Wo(e,t,n,r,s,i,l,o,c){return e=new Og(e,t,n,o,c),t===1?(t=1,i===!0&&(t|=8)):t=0,i=gt(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},So(i),e}function $g(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(cp)}catch(e){console.error(e)}}cp(),cd.exports=ut;var Wg=cd.exports,Cu=Wg;Xa.createRoot=Cu.createRoot,Xa.hydrateRoot=Cu.hydrateRoot;const Hg="modulepreload",Qg=function(e){return"/"+e},Tu={},up=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),o=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));s=Promise.allSettled(n.map(c=>{if(c=Qg(c),c in Tu)return;Tu[c]=!0;const u=c.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${d}`))return;const g=document.createElement("link");if(g.rel=u?"stylesheet":Hg,u||(g.as="script"),g.crossOrigin="",g.href=c,o&&g.setAttribute("nonce",o),document.head.appendChild(g),u)return new Promise((f,w)=>{g.addEventListener("load",f),g.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(l){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=l,window.dispatchEvent(o),!o.defaultPrevented)throw l}return s.then(l=>{for(const o of l||[])o.status==="rejected"&&i(o.reason);return t().catch(i)})};class qg extends Error{constructor(t,n,r,s){super(t),this.name="ApiError",this.status=n,this.method=r,this.path=s}}function Kg(e){const t=e.replace(/\s+/g," ").trim();if(!t)return"";try{const n=JSON.parse(e);for(const r of["detail","error","message"]){const s=n[r];if(typeof s=="string"&&s.trim())return s.trim();if(Array.isArray(s)){const i=s.map(l=>l&&typeof l=="object"?String(l.msg??""):"").filter(Boolean);if(i.length)return i.join("; ")}}}catch{}return t.startsWith("typeof g=="string"):[],l=qa(r==null?void 0:r.major),o=qa(r==null?void 0:r.minor);if(!n||!r||!s)return{compatible:!1,reason:"malformed /api/meta response"};if(typeof s.source_root!="string"||qa(s.pid)===null||typeof s.package_version!="string"||typeof s.release_id!="string")return{compatible:!1,reason:"malformed /api/meta runtime identity"};if(n.service!==Yg)return{compatible:!1,reason:`unexpected service ${String(n.service||"unknown")}`};const c=e;if(r.name!==Yn.name||l!==Yn.major)return{compatible:!1,reason:`protocol ${String(r.name||"unknown")}/${String(l)} is incompatible with client ${Yn.name}/${Yn.major}`,meta:c};if(o===null||o!i.includes(g));if(u.length>0)return{compatible:!1,reason:`missing capabilities: ${u.join(", ")}`,meta:c};if(s.source_root_matches_config===!1)return{compatible:!1,reason:`backend loaded source ${String(s.source_root)} but ARGUS_SKILL_SOURCE_ROOT points to ${String(s.configured_source_root)}`,meta:c};if(s.release_id!==t.releaseId)return{compatible:!1,reason:`backend release ${String(s.release_id)} does not match client release ${t.releaseId}`,meta:c};if(t.sourceDigest){if(typeof s.runtime_source_digest!="string"||!s.runtime_source_digest)return{compatible:!1,reason:"backend process does not report the source digest required by this local checkout",meta:c};if(s.runtime_source_digest!==t.sourceDigest)return{compatible:!1,reason:`backend process source ${String(s.runtime_source_digest).slice(0,16)} does not match local source ${t.sourceDigest.slice(0,16)}`,meta:c}}return{compatible:!0,reason:"",warning:s.release_matches_source===!1?"backend source differs from its prebuilt release artifacts; pull a complete published revision and reinstall":void 0,meta:c}}function Zg(e,t){const n=Xg(e);if(!n.compatible||!n.meta)throw new Error(`incompatible Argus API: ${n.reason}`);return n.warning&&(t==null||t(n.warning)),n.meta}function ex(e){const t=as(e),n=as(t==null?void 0:t.daemon);if(!t||t.schema_version!==Ii)throw new Error(`incompatible snapshot schema: expected ${Ii}, got ${String((t==null?void 0:t.schema_version)??"missing")}`);if(!n)throw new Error("invalid snapshot: daemon section is missing");const s=["global_daily_cap_usd","read_status","read_error","protocol_compatible","protocol_error"].filter(o=>!Object.hasOwn(n,o));if(s.length>0)throw new Error(`invalid snapshot: daemon fields missing: ${s.join(", ")}`);const l=["spend_usd","spend_status","usage_summary","request_usage","cost_control","daemon_commands","observability","mission_view","partial","diagnostics"].filter(o=>!Object.hasOwn(t,o));if(l.length>0)throw new Error(`invalid snapshot: fields missing: ${l.join(", ")}`);if(!Array.isArray(t.diagnostics))throw new Error("invalid snapshot: diagnostics must be an array");return e}const dp="argus_web_token";let Ql=null;function tx(){let e;try{e=new URLSearchParams(window.location.search)}catch{return}const t=e.get("token");if(t){Ql=t;try{localStorage.setItem(dp,t)}catch{}try{e.delete("token");const n=e.toString();window.history.replaceState(null,"",`${window.location.pathname}${n?`?${n}`:""}${window.location.hash}`)}catch{}}}const mp=()=>{if(Ql)return Ql;try{return new URLSearchParams(window.location.search).get("token")||localStorage.getItem(dp)}catch{return null}};function yn(){const e=mp();return e?{Authorization:`Bearer ${e}`}:{}}async function De(e,t){const n=await fetch(e,{headers:yn(),signal:t});return await xn(n,"GET",e),await n.json()}async function me(e,t,n){const r=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...yn()},body:t===void 0?void 0:JSON.stringify(t),signal:n});return await xn(r,"POST",e),await r.json()}async function nx(e,t,n){const r=await fetch(e,{method:"POST",headers:yn(),body:t,signal:n});return await xn(r,"POST",e),await r.json()}function Ur(e){const t=e&&typeof e=="object"?e:{},n=String(t.command_status??"");if(Number(t.rc??0)!==0||n==="failed"||n==="rejected")throw new Error(String(t.error||`daemon command ${n||"failed"}`));return e}async function Pu(e,t,n){const r=await fetch(t,{method:e,headers:{"Content-Type":"application/json",...yn()},body:n===void 0?void 0:JSON.stringify(n)});return await xn(r,e,t),await r.json()}async function rx(e,t){const n=await fetch(e,{headers:yn(),signal:t});return await xn(n,"GET",e),n.blob()}const Q=(e,t="")=>`/api/projects/${encodeURIComponent(e)}${t}`,Br=()=>{var e,t;return((t=(e=globalThis.crypto)==null?void 0:e.randomUUID)==null?void 0:t.call(e))??`${Date.now()}-${Math.random()}`};let Wr;function Xs(e){return!!(e&&typeof e=="object"&&"aborted"in e&&typeof e.aborted=="boolean")}function Ru(e,t){return t!=null&&t.length?{text:e,attachments:t}:{text:e}}function Jn(){if(!Wr){const e=(async()=>{const t="/api/meta",n=await fetch(t,{headers:yn()});if(n.status===404)throw new Error("incompatible Argus API: service does not expose /api/meta");return await xn(n,"GET",t),Zg(await n.json(),r=>console.warn(`Argus API compatibility warning: ${r}`))})();Wr=e,e.catch(()=>{Wr===e&&(Wr=void 0)})}return Wr}function Lu(e){const t=[];let n;for(;(n=e.indexOf(` `))>=0;){const r=e.slice(0,n);e=e.slice(n+2);for(const s of r.split(` `)){const i=s.trim();if(i.startsWith("data:"))try{t.push(JSON.parse(i.slice(5).trim()))}catch{}}}return{frames:t,rest:e}}const U={meta:Jn,projectIndex:async()=>(await Jn(),De("/api/projects")),listProjects:async()=>(await Jn(),De("/api/projects").then(e=>e.projects)),projectCosts:async e=>(await Jn(),De("/api/projects/costs",e)),createDaemon:async(e,t="",n="",r)=>{const s="/api/daemons",i={objective:e,name:t,workdir:n,command_id:Br(),expected_revision:r},l=()=>fetch(s,{method:"POST",headers:{"Content-Type":"application/json",...yn()},body:JSON.stringify(i),cache:"no-store"});let o=await l();o.status===400&&/Invalid HTTP request received/i.test(await o.clone().text())&&(o=await l()),await xn(o,"POST",s);const c=await o.json();return Ur(c)},updateProject:(e,t)=>Pu("PATCH",Q(e),{name:t}),deleteProject:e=>Pu("DELETE",Q(e)),snapshot:async(e,t)=>{await Jn();const n=await De(Q(e,"/snapshot?compact=true&events_limit=1"),t);return ex(n)},status:(e,t)=>De(Q(e,"/status"),t),journal:(e,t=20,n)=>De(Q(e,`/journal?n=${t}`),n).then(r=>r.journal),doctor:(e,t)=>De(Q(e,"/doctor"),t),config:(e,t)=>De(Q(e,"/config"),t),identity:(e,t)=>De(Q(e,"/identity"),t).then(n=>n.identity),transcript:(e,t=30,n)=>De(Q(e,`/transcript?n=${t}`),n).then(r=>r.turns),events:(e,t=80,n)=>De(Q(e,`/events?limit=${t}&view=ui`),n).then(r=>r.events),backlogItem:(e,t,n)=>De(Q(e,`/backlog/${encodeURIComponent(t)}`),n).then(r=>r.item),artifacts:(e,t)=>De(Q(e,"/artifacts"),t).then(n=>n.artifacts),artifact:(e,t,n)=>{const r=new URLSearchParams({path:t});return De(Q(e,`/artifact?${r}`),n)},artifactBlob:(e,t,n=!1,r)=>{const s=new URLSearchParams({path:t});return n&&s.set("download","true"),rx(Q(e,`/artifact/raw?${s}`),r)},gitDiff:(e,t)=>De(Q(e,"/git-diff"),t),metrics:e=>De("/api/metrics",e),trash:(e="",t=100,n=0,r)=>{const s=new URLSearchParams({query:e,limit:String(t),offset:String(n)});return De(`/api/trash?${s}`,r)},restoreTrash:e=>me(`/api/trash/${encodeURIComponent(e)}/restore`),addTask:(e,t)=>me(Q(e,"/tasks"),{text:t}).then(n=>n.item),abortMission:(e,t)=>me(Q(e,"/mission/abort"),{reason:t}),answerPending:(e,t,n)=>me(Q(e,`/backlog/${encodeURIComponent(t)}/answer`),{text:n}),resolveDecision:(e,t,n,r)=>me(Q(e,`/decisions/${encodeURIComponent(t)}/resolve`),{option_id:n,note:r}),uploadAttachments:async(e,t,n)=>{await Jn();const r=new FormData;return t.forEach(s=>r.append("files",s,s.name)),nx(Q(e,"/attachments"),r,n)},message:(e,t,n)=>{const r=Xs(n)?n:n==null?void 0:n.signal,s=Xs(n)||n==null?void 0:n.attachments;return me(Q(e,"/message"),Ru(t,s),r)},messageStream:async(e,t,n,r)=>{const s=Xs(r)?r:r==null?void 0:r.signal,i=Xs(r)||r==null?void 0:r.attachments,l=await fetch(Q(e,"/message/stream"),{method:"POST",headers:{"Content-Type":"application/json",...yn()},body:JSON.stringify(Ru(t,i)),signal:s});if(await xn(l,"POST",Q(e,"/message/stream")),!l.body)throw new Error("Manager stream returned no response body");let o=!1;const c=f=>{var w,v,k,b;if(!(s!=null&&s.aborted))if(f.type==="phase"){const h=Number(f.quiet_s??0);(w=n.onPhase)==null||w.call(n,String(f.label??""),String(f.role??"manager"),{heartbeat:f.heartbeat===!0,quietS:Number.isFinite(h)?h:0,kind:String(f.kind??""),detail:String(f.detail??"")})}else f.type==="delta"?(v=n.onDelta)==null||v.call(n,String(f.text??""),String(f.message_id??""),String(f.fragment_mode??"auto")):f.type==="done"?(o=!0,(k=n.onDone)==null||k.call(n,f.result??{})):f.type==="error"&&(o=!0,(b=n.onError)==null||b.call(n,new Error(String(f.error??"stream error"))))},u=l.body.getReader(),d=new TextDecoder;let g="";for(;;){const{done:f,value:w}=await u.read();if(f)break;g+=d.decode(w,{stream:!0});const v=Lu(g);g=v.rest,v.frames.forEach(c)}if(!(s!=null&&s.aborted)&&(Lu(g+` @@ -49,4 +49,4 @@ Next action: ${c}`:l,i)}else if([F.SKILL_CREATED,F.SKILL_UPDATED].includes(n)){c … content truncated`:""]}):a.jsx("div",{className:"mt-2 text-[10px] text-ink-faint",children:r("mission.skillUnavailable")})]},String(m.id)))})]}):null,e.learned_wiki_pages.some(m=>m.status!=="retired")?a.jsxs("div",{className:"mt-4 border-t border-line/50 pt-3",children:[a.jsx("div",{className:"text-[10px] uppercase tracking-[0.12em] text-blue-sky",children:r("mission.knowledgeRetained")}),a.jsx("div",{className:"mt-2 flex flex-wrap gap-1.5",children:e.learned_wiki_pages.filter(m=>m.status!=="retired").slice(-6).map(m=>a.jsx("span",{className:"rounded border border-blue/35 bg-blue/5 px-2 py-1 text-[10px] text-blue-sky",children:String(m.title||m.id)},String(m.id)))})]}):null,e.storage.project_skill_dir||e.storage.global_skill_dir||e.storage.wiki_paths.length||e.storage.skill_history_compressed||e.storage.wiki_retired_compressed?a.jsxs("div",{className:"mt-4 border-t border-line/50 pt-3",children:[a.jsx("div",{className:"text-[10px] uppercase tracking-[0.12em] text-ink-faint",children:r("mission.selfEvolution")}),a.jsxs("div",{className:"mt-2 space-y-1 font-mono text-[10px] text-ink-dim",children:[e.storage.project_skill_dir?a.jsxs("div",{className:"break-all",children:["project skills (",e.storage.project_skill_count,") · ",e.storage.project_skill_dir]}):null,e.storage.global_skill_dir?a.jsxs("div",{className:"break-all",children:["global skills (",e.storage.global_skill_count,") · ",e.storage.global_skill_dir]}):null,e.storage.wiki_paths.map(m=>a.jsxs("div",{className:"break-all",children:["project wiki · ",m]},m)),e.storage.skill_history_compressed||e.storage.wiki_retired_compressed?a.jsxs("div",{children:["cold history · skill ",e.storage.skill_history_compressed," · wiki ",e.storage.wiki_retired_compressed," · ",At(e.storage.skill_history_bytes_saved+e.storage.wiki_retired_bytes_saved)," saved"]}):null]})]}):null]})]}),a.jsxs("section",{className:"px-5 py-4",children:[a.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[a.jsx("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-ink-faint",children:r("mission.replay")}),e.timeline.length>1?a.jsxs(a.Fragment,{children:[a.jsx("input",{type:"range",min:0,max:e.timeline.length-1,value:u,onChange:m=>d(Number(m.target.value)),"aria-label":r("mission.replayTimeline"),className:"h-1 min-w-32 flex-1 accent-blue"}),a.jsxs("span",{className:"font-mono text-[10px] text-ink-faint",children:[u+1,"/",e.timeline.length]})]}):null]}),a.jsxs("div",{className:"mt-3 space-y-3",children:[b.map(m=>a.jsxs("div",{className:"grid grid-cols-[44px_10px_minmax(0,1fr)] gap-2 text-xs",children:[a.jsx("time",{className:"font-mono text-[10px] text-ink-faint",children:new Date(m.ts*1e3).toISOString().slice(11,16)}),a.jsx("span",{className:`mt-1 h-2 w-2 rounded-full ${m.tone==="error"?"bg-err":m.tone==="success"||m.tone==="metric"||m.tone==="skill"?"bg-ok":"bg-blue"}`}),a.jsxs("div",{className:"min-w-0",children:[a.jsx("span",{className:"font-medium text-ink",children:m.title}),m.detail?a.jsxs("span",{className:"text-ink-dim",children:[" · ",m.detail]}):null]})]},m.id)),e.timeline.length?null:a.jsx("div",{className:"py-10 text-center text-xs text-ink-faint",children:r("mission.waitingEvents")})]}),e.artifacts.length?a.jsx("div",{className:"mt-5 flex flex-wrap gap-2 border-t border-line/50 pt-4",children:e.artifacts.slice(-8).map(m=>{const j=String(m.path||"");return a.jsx("button",{type:"button",disabled:!j||!t,onClick:()=>j&&(t==null?void 0:t(j)),className:"rounded border border-line px-2 py-1 font-mono text-[10px] text-blue-sky hover:border-blue-sky/50 disabled:text-ink-faint",children:String(m.title||j)},String(m.id||j))})}):null,n!=null&&n.available&&(n.status||n.diff)?a.jsxs("details",{className:"mt-5 border-t border-line/50 pt-4",children:[a.jsxs("summary",{className:"cursor-pointer text-[10px] font-semibold uppercase tracking-[0.14em] text-ink-faint hover:text-ink",children:["Git changes",n.branch?` · ${n.branch}`:""]}),n.stat?a.jsx("pre",{className:"mt-3 overflow-x-auto whitespace-pre-wrap font-mono text-[10px] leading-5 text-ink-dim",children:n.stat}):null,n.diff?a.jsxs("pre",{className:"mt-3 max-h-80 overflow-auto whitespace-pre font-mono text-[10px] leading-5 text-ink-dim scroll-thin",children:[n.diff,n.truncated?` … diff truncated`:""]}):null]}):null]})]})}const Xu=e=>e instanceof Error?e.message:String(e||"Unknown error");async function Zu(e){const t=await e,n=t&&typeof t=="object"?t:{},r=String(n.command_status??"");if(Number(n.rc??0)!==0||r==="failed"||r==="rejected")throw new Error(String(n.error||`daemon command ${r||"failed"}`));return t}function o0({open:e,sid:t,snap:n,onClose:r,onChanged:s,onRestored:i}){var Ge,Re,rt;const{t:l}=ee(),[o,c]=y.useState("task"),[u,d]=y.useState(""),[g,f]=y.useState(n.session.workdir??n.session.cwd??""),[w,v]=y.useState("ls"),[k,b]=y.useState(""),[h,p]=y.useState(""),[x,m]=y.useState(null),[j,T]=y.useState([]),[N,S]=y.useState(0),[C,_]=y.useState(""),[D,O]=y.useState(""),[V,q]=y.useState("work");y.useEffect(()=>{e&&(f(n.session.workdir??n.session.cwd??""),Promise.all([U.metrics(),U.trash()]).then(([M,ie])=>{m(M),T(ie.entries),S(ie.total)},M=>b(Xu(M))))},[e,n.session.cwd,n.session.workdir]);const Y=async(M,ie,he)=>{if(!D){O(M),b("");try{const Oe=await ie();he!==null&&b(he||JSON.stringify(Oe,null,2)),s()}catch(Oe){b(Xu(Oe))}finally{O("")}}},H=async()=>{const M=u.trim();if(!M)return;if(o==="plan"){await Y("quick",async()=>{const he=await U.previewPlan(t,M);return b([...he.steps.map((Oe,jn)=>`${jn+1}. ${Oe.title}${Oe.detail?` — ${Oe.detail}`:""}`),...he.notes.map(Oe=>`Note: ${Oe}`),...he.error?[`Error: ${he.error}`]:[]].join(` `)),he},null);return}await Y("quick",o==="task"?()=>U.addTask(t,M):o==="nudge"?()=>U.nudge(t,M):()=>U.note(t,M),`${o} submitted.`),d("")},J=async M=>{await Y(`restore:${M.trash_id}`,async()=>{const ie=await U.restoreTrash(M.trash_id);return T(he=>he.filter(Oe=>Oe.trash_id!==M.trash_id)),S(he=>Math.max(0,he-1)),await i(ie.sid),ie},`Restored ${M.label}.`)},E=n.daemon.alive&&n.daemon.protocol_compatible===!1,I=n.daemon.alive&&n.daemon.control_available===!1,L=((Ge=n.daemon_admission)==null?void 0:Ge.running_daemons)??[],K=o==="task"?ka:o==="nudge"?kc:o==="note"?wc:Ja,te=async()=>{await Y("trash-search",async()=>{const M=await U.trash(C);return T(M.entries),S(M.total),M},null)};return a.jsxs(mt,{open:e,onClose:()=>!D&&r(),label:l("operations.title"),width:"max-w-5xl",children:[a.jsx(bn,{title:l("operations.title"),sub:n.session.display_name||t}),a.jsx("div",{className:"flex gap-1 border-b border-line bg-panel px-4 py-2",children:[["work",l("operations.work"),ka],["runtime",l("operations.runtime"),od],["system",l("operations.system"),Pf],["recovery",l("operations.recovery"),vc]].map(([M,ie,he])=>a.jsx("button",{type:"button",onClick:()=>{q(M),b("")},title:ie,"aria-label":ie,className:`flex h-8 w-9 items-center justify-center rounded-md text-xs ${V===M?"bg-blue-deep text-white":"text-ink-faint hover:bg-bg hover:text-ink"}`,children:a.jsx(pe,{icon:he})},M))}),a.jsxs("div",{className:"grid max-h-[76vh] gap-3 overflow-y-auto bg-bg p-3 scroll-thin lg:grid-cols-2",children:[V==="work"?a.jsxs("section",{className:"rounded-lg border border-line bg-panel p-4 lg:col-span-2",children:[a.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-ink-dim",children:l("operations.workInput")}),a.jsx("p",{className:"mt-1 text-xs text-ink-faint",children:l("operations.workHint")}),a.jsx("div",{className:"mt-3 flex gap-1",children:[["task",ka],["nudge",kc],["note",wc],["plan",Ja]].map(([M,ie])=>a.jsx("button",{type:"button",onClick:()=>c(M),title:M,"aria-label":M,className:`flex h-8 w-9 items-center justify-center rounded text-xs capitalize ${o===M?"bg-blue-deep text-white":"bg-bg text-ink-dim"}`,children:a.jsx(pe,{icon:ie})},M))}),a.jsx("textarea",{value:u,onChange:M=>d(M.target.value),rows:5,placeholder:o==="plan"?l("operations.planPlaceholder"):l("operations.actionPlaceholder",{action:o}),className:"mt-3 w-full resize-y rounded border border-line bg-bg p-3 text-sm text-ink outline-none focus:border-blue"}),a.jsx("button",{type:"button",onClick:()=>void H(),disabled:!!D||!u.trim(),title:o==="plan"?l("operations.previewPlan"):l("operations.submitAction",{action:o}),"aria-label":o==="plan"?l("operations.previewPlan"):l("operations.submitAction",{action:o}),className:"mt-2 flex h-9 w-9 items-center justify-center rounded bg-blue-deep text-xs font-medium text-white disabled:opacity-40",children:D==="quick"?"…":a.jsx(pe,{icon:K})})]}):null,V==="runtime"?a.jsxs("section",{className:"rounded-lg border border-line bg-panel p-4 lg:col-span-2",children:[a.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-ink-dim",children:l("operations.runtime")}),a.jsx("p",{className:"mt-1 text-xs text-ink-faint",children:l("operations.runtimeHint")}),a.jsx("label",{className:"mt-3 block text-[10px] uppercase tracking-wide text-ink-faint",children:l("operations.workdir")}),a.jsxs("div",{className:"mt-1 flex gap-2",children:[a.jsx("input",{value:g,onChange:M=>f(M.target.value),className:"h-9 min-w-0 flex-1 rounded border border-line bg-bg px-2 font-mono text-xs text-ink outline-none focus:border-blue"}),a.jsx("button",{type:"button",onClick:()=>void Y("cwd",()=>U.setWorkdir(t,g),l("operations.workdirUpdated")),disabled:!!D||!g.trim(),title:l("operations.applyWorkdir"),"aria-label":l("operations.applyWorkdir"),className:"flex h-9 w-9 items-center justify-center rounded border border-blue/50 text-xs text-blue disabled:opacity-40",children:a.jsx(pe,{icon:id})})]}),a.jsxs("div",{className:"mt-4 flex flex-wrap gap-2",children:[a.jsx("button",{type:"button",onClick:()=>void Y("reset",()=>U.resetManager(t),"Manager context reset."),disabled:!!D,title:l("operations.resetManager"),"aria-label":l("operations.resetManager"),className:"flex h-9 w-9 items-center justify-center rounded border border-line text-xs text-ink-dim disabled:opacity-40",children:a.jsx(pe,{icon:Rf})}),a.jsx("button",{type:"button",onClick:()=>void Y("upgrade",()=>{var M;return Zu(U.upgradeDaemon(t,(M=n.daemon_commands)==null?void 0:M.revision))},"Current-release daemon started after safely draining active work."),disabled:!!D||I,title:I?"Externally supervised daemon cannot be restarted from this Web host":E?"Upgrade incompatible daemon":"Restart on current release","aria-label":I?"Externally supervised daemon":E?"Upgrade incompatible daemon":"Restart on current release",className:`flex h-9 w-9 items-center justify-center rounded border text-xs disabled:opacity-40 ${E?"border-err/60 bg-err/10 text-err":"border-line text-ink-dim"}`,children:a.jsx(pe,{icon:bc})})]}),n.daemon.protocol_error?a.jsx("p",{className:"mt-2 text-xs text-err",children:n.daemon.protocol_error}):null,L.length?a.jsxs("div",{className:"mt-4",children:[a.jsx("div",{className:"text-[10px] uppercase tracking-wide text-ink-faint",children:l("operations.replaceSlot")}),a.jsx("div",{className:"mt-2 space-y-1",children:L.map(M=>a.jsxs("button",{type:"button",disabled:!!D,onClick:()=>void Y(`replace:${M.id}`,()=>{var ie,he;return Zu(U.replaceDaemon(t,M.id,!!((ie=n.continuous)!=null&&ie.enabled),(he=n.daemon_commands)==null?void 0:he.revision))},`Parked ${M.label||M.id} and started this session.`),title:`Replace ${M.label||M.id}`,"aria-label":`Replace ${M.label||M.id}`,className:"flex w-full items-center justify-between rounded border border-line bg-bg px-2 py-1.5 text-left text-xs text-ink-dim disabled:opacity-40",children:[a.jsx("span",{className:"truncate",children:M.label||M.id}),a.jsx(pe,{icon:bc,className:"ml-2 text-warn"})]},M.id))})]}):null]}):null,V==="system"?a.jsxs("section",{className:"rounded-lg border border-line bg-panel p-4",children:[a.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-ink-dim",children:l("operations.skills")}),a.jsxs("div",{className:"mt-3 flex gap-2",children:[a.jsx("input",{value:w,onChange:M=>v(M.target.value),className:"h-9 min-w-0 flex-1 rounded border border-line bg-bg px-2 font-mono text-xs text-ink outline-none focus:border-blue",placeholder:"ls, stats, show NAME…"}),a.jsx("button",{type:"button",disabled:!!D,onClick:()=>void Y("skills",async()=>{const M=await U.skills(t,w);return p(M),M},null),title:l("operations.runSkill"),"aria-label":l("operations.runSkill"),className:"flex h-9 w-9 items-center justify-center rounded border border-blue/50 text-xs text-blue disabled:opacity-40",children:a.jsx(pe,{icon:rd})})]}),h?a.jsx("pre",{className:"mt-3 max-h-48 overflow-auto whitespace-pre-wrap rounded bg-bg p-3 font-mono text-xs text-ink-dim scroll-thin",children:h}):null]}):null,V==="system"?a.jsxs("section",{className:"rounded-lg border border-line bg-panel p-4",children:[a.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-ink-dim",children:l("operations.metrics")}),a.jsxs("div",{className:"mt-3 flex items-center gap-3",children:[a.jsx("span",{className:`rounded px-2 py-1 text-xs font-semibold ${((Re=x==null?void 0:x.slo)==null?void 0:Re.status)==="healthy"?"bg-ok/10 text-ok":"bg-warn/10 text-warn"}`,children:((rt=x==null?void 0:x.slo)==null?void 0:rt.status)??"loading"}),a.jsxs("span",{className:"text-xs text-ink-faint",children:["event validation failures: ",(x==null?void 0:x.event_validation_failures)??"—"]})]}),x?a.jsx("pre",{className:"mt-3 max-h-48 overflow-auto whitespace-pre-wrap rounded bg-bg p-3 font-mono text-[10px] text-ink-dim scroll-thin",children:JSON.stringify({web:x.web,provider:x.provider,cost_control:x.cost_control},null,2)}):null]}):null,V==="recovery"?a.jsxs("section",{className:"rounded-lg border border-line bg-panel p-4 lg:col-span-2",children:[a.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[a.jsxs("h3",{className:"mr-auto text-xs font-semibold uppercase tracking-wide text-ink-dim",children:[l("operations.trash")," · ",N]}),a.jsx("input",{value:C,onChange:M=>_(M.target.value),onKeyDown:M=>{!Rs(M)&&M.key==="Enter"&&te()},placeholder:l("operations.searchTrash"),className:"h-8 min-w-52 rounded border border-line bg-bg px-2 text-xs text-ink outline-none focus:border-blue"}),a.jsx("button",{type:"button",disabled:!!D,onClick:()=>void te(),title:l("operations.searchTrash"),"aria-label":l("operations.searchTrash"),className:"flex h-8 w-8 items-center justify-center rounded border border-blue/50 text-xs text-blue disabled:opacity-40",children:a.jsx(pe,{icon:Lf})})]}),j.length?a.jsx("div",{className:"mt-3 grid gap-2 sm:grid-cols-2",children:j.map(M=>a.jsxs("div",{className:"flex items-center gap-3 rounded border border-line bg-bg p-2",children:[a.jsxs("div",{className:"min-w-0 flex-1",children:[a.jsx("div",{className:"truncate text-xs text-ink",children:M.label}),a.jsx("div",{className:"truncate font-mono text-[10px] text-ink-faint",children:M.trash_path})]}),a.jsx("button",{type:"button",disabled:!!D,onClick:()=>void J(M),title:`Restore ${M.label}`,"aria-label":`Restore ${M.label}`,className:"flex h-8 w-8 items-center justify-center rounded border border-blue/50 text-xs text-blue disabled:opacity-40",children:a.jsx(pe,{icon:vc})})]},M.trash_id))}):a.jsx("p",{className:"mt-3 text-xs text-ink-faint",children:l("operations.trashEmpty")}),N>j.length?a.jsxs("p",{className:"mt-2 text-[10px] text-ink-faint",children:["Showing the newest ",j.length," matches. Narrow the search to find older sessions."]}):null]}):null,k?a.jsx("pre",{className:"rounded-lg border border-line bg-panel p-3 font-mono text-xs whitespace-pre-wrap text-ink-dim lg:col-span-2",children:k}):null]})]})}const c0=["API","Protocol","Workspace"];function u0(){const{t:e}=ee(),t=y.useRef(null);return Ps(t,(n,r)=>{if(r){n.set("[data-handshake-line], [data-handshake-node]",{opacity:1,scale:1,clearProps:"transform"});return}n.to("[data-handshake-mark]",{scale:1.055,duration:.75,ease:"sine.inOut",repeat:-1,yoyo:!0,transformOrigin:"50% 50%"}),n.timeline({repeat:-1,repeatDelay:.25}).fromTo("[data-handshake-line]",{scaleX:0,opacity:.25,transformOrigin:"0% 50%"},{scaleX:1,opacity:.8,duration:.9,ease:"power2.inOut"}).fromTo("[data-handshake-node]",{autoAlpha:.25,scale:.72},{autoAlpha:1,scale:1,duration:.28,stagger:.16,ease:"back.out(1.8)"},.12).to("[data-handshake-node]",{autoAlpha:.35,duration:.3,stagger:.08},"+=0.35")}),a.jsxs("div",{ref:t,role:"status","aria-label":e("handshake.connecting"),className:"w-full max-w-xl px-6 text-center",children:[a.jsx("div",{"data-handshake-mark":!0,className:"handshake-mark glass-card mx-auto flex h-16 w-16 items-center justify-center rounded-3xl text-blue shadow-glow sm:h-20 sm:w-20",children:a.jsx(aa,{size:48,className:"text-blue"})}),a.jsxs("div",{className:"relative mx-auto mt-8 h-10 max-w-sm sm:max-w-md",children:[a.jsx("div",{className:"absolute left-[10%] right-[10%] top-3 h-px bg-line/80"}),a.jsx("div",{"data-handshake-line":!0,className:"handshake-line absolute left-[10%] right-[10%] top-3 h-px"}),a.jsx("div",{className:"relative flex justify-between",children:c0.map(n=>a.jsxs("div",{className:"flex w-20 flex-col items-center gap-2.5",children:[a.jsx("span",{"data-handshake-node":!0,className:"handshake-node h-6 w-6 rounded-full border ring-4 ring-bg",children:a.jsx("span",{className:"m-auto mt-[7px] block h-2 w-2 rounded-full bg-blue"})}),a.jsx("span",{className:"text-xs font-medium text-ink-faint",children:n})]},n))})]}),a.jsx("p",{className:"mt-9 text-base font-medium text-ink-dim",children:"Connecting to Argus"}),a.jsx("p",{className:"mt-1.5 text-sm text-ink-faint",children:"Negotiating protocol and restoring your workspace…"})]})}function d0({loading:e,hasProjects:t,error:n,onRetry:r,onNew:s,onChoose:i,canCreate:l}){const{t:o}=ee();return a.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-4 text-center",children:[e?a.jsx(u0,{}):a.jsxs(a.Fragment,{children:[a.jsx(Fi,{size:32,tag:Gy}),a.jsx("p",{className:`max-w-md text-sm leading-relaxed ${n?"text-err":"text-ink-faint"}`,children:n||o(t?"landing.selectOrCreate":"landing.noSessions")})]}),!e&&a.jsxs("div",{className:"flex flex-wrap justify-center gap-2",children:[n?a.jsx(qt,{onClick:r,variant:"danger",children:o("common.retry")}):null,t?a.jsx(qt,{onClick:i,children:o("landing.select")}):l?a.jsx(qt,{onClick:s,variant:"primary",children:o("landing.new")}):null]})]})}function m0({active:e,onSelect:t,onOpenSessions:n}){const{t:r}=ee(),s=[{id:"mission",label:r("mobile.mission"),icon:Ja},{id:"activity",label:r("mobile.activity"),icon:Df},{id:"workbench",label:r("mobile.workbench"),icon:Mf},{id:"preview",label:r("mobile.preview"),icon:Af}];return a.jsxs("nav",{"aria-label":r("mobile.views"),className:"mobile-tabbar glass-panel glass-panel--raised fixed inset-x-0 bottom-0 z-40 flex items-stretch border-t border-line/60 lg:hidden",children:[n?a.jsxs("button",{type:"button",onClick:n,"aria-label":r("topbar.openSessions"),className:"flex min-h-[3.25rem] flex-1 flex-col items-center justify-center gap-0.5 text-ink-faint active:bg-panel-raised",children:[a.jsx(pe,{icon:If,className:"h-4 w-4"}),a.jsx("span",{className:"text-[10px] leading-none",children:r("mobile.sessions")})]}):null,s.map(i=>{const l=i.id===e;return a.jsxs("button",{type:"button",onClick:()=>t(i.id),"aria-current":l?"page":void 0,className:`flex min-h-[3.25rem] flex-1 flex-col items-center justify-center gap-0.5 active:bg-panel-raised ${l?"text-blue":"text-ink-faint"}`,children:[a.jsx(pe,{icon:i.icon,className:"h-4 w-4"}),a.jsx("span",{className:"text-[10px] leading-none",children:i.label})]},i.id)})]})}function p0(){y.useEffect(()=>{const e=window.visualViewport,t=document.documentElement;if(!e)return;let n=null;const r=()=>{n!=null&&window.cancelAnimationFrame(n),n=window.requestAnimationFrame(()=>{const s=window.innerHeight-e.height-e.offsetTop,i=s>24?Math.round(s):0;t.style.setProperty("--keyboard-inset",`${i}px`)})};return r(),e.addEventListener("resize",r),e.addEventListener("scroll",r),()=>{n!=null&&window.cancelAnimationFrame(n),e.removeEventListener("resize",r),e.removeEventListener("scroll",r),t.style.removeProperty("--keyboard-inset")}},[])}async function f0(e,t){const n=wx(e.trim());if(!n)return{kind:"not-command"};if(!n.cmd){const r=bx(n.name);return{kind:"error",message:r?`Unknown command ${n.name}. Did you mean ${r}?`:`Unknown command ${n.name}. Use /help for the full list.`}}if(n.cmd.id==="ask")return{kind:"not-command"};if(yp(n.cmd)&&!n.rest)return{kind:"error",message:`Usage: ${n.cmd.name}${n.cmd.arg?` ${n.cmd.arg}`:""}`};try{await t[n.cmd.id](n.rest)}catch(r){return{kind:"error",message:r instanceof Error?r.message:String(r??"Command failed")}}return{kind:"handled"}}function h0({activeSid:e,activityEventsRef:t,notify:n,onClearEvents:r,onDispose:s,onOpenConfig:i,onOpenDoctor:l,onOpenHelp:o,onOpenIdentity:c,onOpenInspector:u,onOpenNewDaemon:d,onOpenOperations:g,onOpenSidebar:f,onReconnectEvents:w,onRenameProject:v,onRewriteDraft:k,onSelectProject:b,onSetArtifactPath:h,onSetEventFilter:p,onSetEventQuery:x,onSetTaskItemId:m,onSetWorkspaceView:j,onShowArtifacts:T,onStopIteration:N,onStopWaiting:S,refetchSnapshot:C}){return{status:async()=>u(),roles:async()=>g(),journal:async()=>u(),backlog:async()=>j("mission"),item:async _=>{_&&m(_)},artifacts:async()=>T(),artifact:async _=>{_&&h(_)},events:async _=>{j("activity");const{filter:D,query:O}=kx(_);p(D),x(O)},find:async _=>{j("activity"),p("all"),x(_)},run:async()=>j("activity"),clear:async()=>{j("activity"),p("all"),x(""),r(t.current.length)},cancel:async()=>S(),task:async _=>{e&&(await U.addTask(e,_),C(),n("success","Task queued."))},rewrite:async _=>{const D=_.trim();if(!D){n("info","Type your prompt in the composer and press Rewrite, or use /rewrite .");return}k(D)},plan:async _=>{if(!e)return;const D=await U.previewPlan(e,_);D.error?n("error",D.error):n("info",D.steps.map(O=>O.title).join(` -`)||"Plan preview ready.")},nudge:async _=>{e&&(await U.nudge(e,_),n("success","Guidance injected."))},abort:async _=>{e&&(await U.abortMission(e,_||"operator abort"),n("info","Abort requested."))},note:async _=>{e&&(await U.note(e,_),n("success","Note appended to timeline."))},done:async _=>{_&&s(_,"done")},skip:async _=>{_&&s(_,"rm")},stop:async _=>{_&&N(_)},new:async()=>d(),daemons:async()=>f(),resume:async _=>{_&&_!=="list"?b(_):f()},attach:async _=>{_&&b(_)},rename:async _=>{!e||!_||await v(_)},doctor:async()=>l(),backend:async _=>{if(!e||!_){i();return}await U.setConfig(e,"runner_backend",_),n("success",`Backend set to ${_}.`)},config:async _=>{if(!e||!_){i();return}const D=_.indexOf("=");D>0?(await U.setConfig(e,_.slice(0,D).trim(),_.slice(D+1).trim()),n("success","Config updated.")):i()},identity:async()=>c(),reset:async()=>{e&&(await U.resetManager(e),n("success","Manager context reset."))},skills:async _=>{if(!e)return;const D=await U.skills(e,_||"ls");n("info",D.slice(0,400))},reconnect:async()=>w(),help:async()=>o(),quit:async()=>n("info","Background work continues; close this browser tab when ready.")}}function g0(e){return e.kind!=="error"?null:(typeof e.reply=="string"?e.reply.trim():"")||"Manager could not handle this message."}function x0(e,t){e.kind==="task"&&t.dispatchTask(e);const n=g0(e);n&&t.notifyError(n),t.refetchTranscript()}const y0={skipFirst:0,reconnectKey:0};function v0(e,t){return t.kind==="clear"?{...e,skipFirst:Math.max(0,t.offset)}:t.kind==="reconnect"?{skipFirst:0,reconnectKey:e.reconnectKey+1}:{...e,skipFirst:0}}const Yr="local_request_id";function k0(e,t,n,r=Date.now()){return{type:"ui.operator",agent_layer:"operator",text:n,ts:r/1e3,event_id:`local-${e}-${t}-operator`,message_id:`local-${t}-operator`,[Yr]:t}}function w0(e,t,n,r,s,i=Date.now(),l="auto"){const o=r.trim();if(!o)return e;const c=e.findIndex(k=>k.type==="ui.argus"&&Number(k[Yr])===n),u=s.endsWith("-argus")?`${s.slice(0,-6)}-operator`:"",d=u?e.map(k=>k.type==="ui.operator"&&Number(k[Yr])===n?{...k,message_id:u}:k):e,g=d.find(k=>k.type==="ui.operator"&&Number(k[Yr])===n),f=g?Math.max(0,i-Number(g.ts??i/1e3)*1e3):0;if(c<0)return[...d,{type:"ui.argus",agent_layer:"manager",text:o,ts:i/1e3,event_id:`local-${t}-${n}-argus`,message_id:s||`local-${n}-argus`,fragment_mode:l,response_latency_ms:f,[Yr]:n}];const w=d[c],v=[...d];return v[c]={...w,text:xp(String(w.text??""),o,l),message_id:s||w.message_id,fragment_mode:l},v}function b0(e,t,n){const r=new Map;e.forEach(d=>{const g=String(d.type??"");if(g!=="ui.operator"&&g!=="ui.argus")return;const f=`${g}\0${String(d.text??"")}`;r.set(f,(r.get(f)??0)+1)});const s=t.map(d=>({type:d.role==="operator"?"ui.operator":"ui.argus",agent_layer:d.role==="operator"?"operator":"manager",text:d.text,ts:d.ts,message_id:`transcript-${d.ts}-${d.role}`})),i=new Array(s.length).fill(!0);for(let d=s.length-1;d>=0;d-=1){const g=s[d],f=`${String(g.type)}\0${String(g.text??"")}`,w=r.get(f)??0;w>0&&(i[d]=!1,r.set(f,w-1))}const l=[...s.filter((d,g)=>i[g]),...e],o=new Array(l.length).fill(!0),c=new Set,u=n.filter(d=>{const g=String(d.message_id??"");let f=g?l.findIndex((v,k)=>!c.has(k)&&String(v.message_id??"")===g):-1;const w=Number(d.ts??0);return f<0&&(f=l.findIndex((v,k)=>{if(c.has(k)||v.type!==d.type||v.text!==d.text)return!1;const b=Number(v.ts??0);return Math.abs(b-w)<=5})),f>=0&&(c.add(f),o[f]=!1),!0});return[...l.filter((d,g)=>o[g]),...u].sort((d,g)=>Number(d.ts??0)-Number(g.ts??0))}function j0(e,t){if(!t.length)return e;const n=new Map(t.map(r=>[r.id,r]));return e.map(r=>{const s=n.get(r.id);return s?{...r,spend_usd:s.spend_usd,known_cost_usd:s.known_cost_usd,spend_status:s.spend_status,usage_calls:s.usage_calls,premium_requests:s.premium_requests,cost_updated_at:s.updated_at}:r})}async function N0(e,t,n,r=""){const s=await e.createDaemon("",t,r),i=n.trim();return{created:s,startCampaign:i?()=>e.setContinuous(s.sid,!0,i):null}}const ed=e=>e instanceof Error?e.message:String(e||"Unknown error");function _0({localCwd:e,notify:t,onFocusComposer:n,queryClient:r,refetchProjects:s,selectProject:i}){const[l,o]=y.useState(!1),c=y.useRef(!1);return{createDaemon:async(d,g,f)=>{if(c.current)return!1;c.current=!0,o(!0);try{const{created:w,startCampaign:v}=await N0(U,d,g,f),k=String(w.workdir||f||"");return r.setQueryData(["projects"],b=>({local_cwd:(b==null?void 0:b.local_cwd)??e,projects:[{id:w.sid,label:d||w.sid,display_name:d,objective:"",launch_cwd:k,workdir:k,last_active:Date.now()/1e3,daemon_alive:!1,daemon_pid:null,uptime_seconds:null},...((b==null?void 0:b.projects)??[]).filter(h=>h.id!==w.sid)]})),i(w.sid),s(),window.setTimeout(n,0),t(v?"info":"success",v?"Session created and selected. Campaign is starting in the background.":"Session created and selected."),v&&v().then(()=>{r.invalidateQueries({queryKey:["snapshot",w.sid]}),s(),t("success","Campaign started.")}).catch(b=>{t("error",`Session was created, but the campaign could not start: ${ed(b)}`)}),!0}catch(w){return t("error",`Could not create session: ${ed(w)}`),!1}finally{c.current=!1,o(!1)}},creatingDaemon:l}}const Cn=e=>e instanceof Error?e.message:String(e||"Unknown error");function S0({actions:e,activeSid:t,clearProjectSelection:n,continuous:r,currentSnapshotSid:s,notify:i,refetchProjects:l,selectProject:o,setDaemonManageOpen:c}){const[u,d]=y.useState(null),g=e.startDaemon.isPending||e.stopDaemon.isPending||e.updateProject.isPending||e.deleteProject.isPending,f=y.useCallback(N=>({onSuccess:()=>i("success",N),onError:S=>i("error",Cn(S))}),[i]),w=y.useCallback(()=>e.startDaemon.mutate(void 0,f("Daemon start requested.")),[f,e.startDaemon]),v=y.useCallback(()=>e.stopDaemon.mutate(!0,f("Daemon is draining and will stop safely.")),[f,e.stopDaemon]),k=y.useCallback(async()=>{try{return await e.startDaemon.mutateAsync(),i("success","Daemon resumed."),!0}catch(N){return i("error",Cn(N)),!1}},[e.startDaemon,i]),b=y.useCallback(async()=>{try{return await e.stopDaemon.mutateAsync(!0),i("success","Daemon paused safely."),!0}catch(N){return i("error",Cn(N)),!1}},[e.stopDaemon,i]),h=y.useCallback(async N=>{if(!t)return!1;try{return await e.updateProject.mutateAsync({sid:t,name:N}),i("success","Session name updated."),!0}catch(S){return i("error",Cn(S)),!1}},[e.updateProject,t,i]),p=y.useCallback(async()=>{var N;if(!t)return!1;try{const S=await e.deleteProject.mutateAsync();c(!1),n("replace");const C=await l(),_=Vo(((N=C.data)==null?void 0:N.projects)??[])[0];return _&&o(_.id,"replace"),i("success",S.workdir_preserved?`Session moved to recoverable trash. Files remain in ${S.workdir}.`:"Session moved to recoverable trash."),!0}catch(S){return i("error",Cn(S)),!1}},[e.deleteProject,t,n,i,l,o,c]),x=y.useCallback(N=>{if(c(!1),N===t&&s===N){d(null),c(!0);return}d(N),o(N)},[t,s,o,c]);y.useEffect(()=>{!u||t!==u||s!==u||(d(null),c(!0))},[t,s,u,c]);const m=y.useCallback((N,S)=>e.disposeBacklog.mutate({id:N,op:S},{onSuccess:()=>i("success",S==="done"?"Work marked done.":"Work removed."),onError:C=>i("error",Cn(C))}),[e.disposeBacklog,i]),j=y.useCallback(N=>e.stopBacklog.mutate(N,{onSuccess:()=>i("success","Iteration stopped."),onError:S=>i("error",Cn(S))}),[e.stopBacklog,i]),T=y.useCallback(()=>{if(!r)return;const N=!r.enabled;e.setContinuous.mutate({enabled:N,objective:r.objective},f(N?"Continuous campaign enabled.":"Continuous campaign stopped."))},[f,e.setContinuous,r]);return{daemonBusy:g,manageDeleteProject:p,managePauseDaemon:b,manageRenameProject:h,manageStartDaemon:k,requestDispose:m,requestManageSession:x,requestStartDaemon:w,requestStopDaemon:v,requestStopIteration:j,toggleContinuous:T}}function E0({focusComposer:e,openHelp:t,toggleKiosk:n,togglePalette:r,toggleReasoning:s,toggleSidebarCollapse:i}){y.useEffect(()=>{const l=o=>{const c=o.target,u=(c==null?void 0:c.tagName)==="INPUT"||(c==null?void 0:c.tagName)==="TEXTAREA",d=o.metaKey||o.ctrlKey;d&&o.key.toLowerCase()==="k"?(o.preventDefault(),r()):d&&o.key.toLowerCase()==="t"?(o.preventDefault(),s()):d&&o.key==="."?(o.preventDefault(),n()):d&&o.key.toLowerCase()==="b"?(o.preventDefault(),i()):d&&o.key.toLowerCase()==="j"?(o.preventDefault(),e()):!u&&o.key==="?"?(o.preventDefault(),t()):!u&&o.key==="/"&&(o.preventDefault(),e())};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[e,t,n,r,s,i])}const C0=e=>e instanceof Error?e.message:String(e||"Unknown error");function T0({activeSid:e,backlog:t,notify:n,pendingQuestions:r,refetchSnapshot:s}){const[i,l]=y.useState(!1),[o,c]=y.useState(!1),u=y.useRef(""),d=y.useMemo(()=>{const f=(t??[]).map(w=>({...w,operator_decision:w.operator_decision}));return fp(r??[],f)[0]??null},[t,r]);return y.useEffect(()=>{if(!d||!e){l(!1);return}const f=`${e}:${d.id}`;u.current!==f&&(u.current=f,l(!0))},[e,d]),{answerPendingReply:async(f,w)=>{if(!(!e||!d||o)){c(!0);try{const v=d.legacy?await U.answerPending(e,d.item_id,w):await U.resolveDecision(e,d.id,f,w);if(v.resolved===!1){n("info",String(v.reply||"Manager needs a more specific answer."));return}l(!1),await s(),v.daemon&&Number(v.daemon.rc??0)!==0?n("error",`Answer queued, but the daemon did not start: ${v.daemon.error||"operator action required"}`):n("success",String(v.reply||"Manager delivered your answer to the team."))}catch(v){await s(),n("error",`Could not send answer: ${C0(v)}`)}finally{c(!1)}}},pendingReply:d,pendingReplyBusy:o,pendingReplyOpen:i,setPendingReplyOpen:l}}const to="argus.browser.project.v1";function P0(){try{return window.sessionStorage.getItem(to)}catch{return null}}function td(e){try{e?window.sessionStorage.setItem(to,e):window.sessionStorage.removeItem(to)}catch{}}function ei(e,t){const n=new URL(window.location.href);e?n.searchParams.set("project",e):n.searchParams.delete("project");const r=t==="push"?"pushState":"replaceState";window.history[r](window.history.state,"",n.toString())}function R0({cancelActiveMessage:e,notify:t,projects:n,projectsError:r,projectsReady:s,queryClient:i,setArtifactPath:l,setSidebarOpen:o,setTaskItemId:c}){const u=new URLSearchParams(window.location.search),[d,g]=y.useState(u.get("project")||P0()),f=y.useRef(d),w=y.useRef(!1);f.current=d;const v=y.useCallback(x=>{x!==f.current&&(e(),l(null),c(null)),f.current=x,g(x),td(x)},[e,l,c]),k=y.useCallback((x,m="push")=>{const j=new URLSearchParams(window.location.search).get("project");v(x),j!==x&&ei(x,m)},[v]),b=y.useCallback((x="replace")=>{const m=new URLSearchParams(window.location.search).get("project");v(null),m!=null&&ei(null,x)},[v]),h=y.useCallback(x=>{i.prefetchQuery({queryKey:["snapshot",x],queryFn:({signal:m})=>U.snapshot(x,m),staleTime:3e3})},[i]);y.useEffect(()=>{if(!s)return;const x=w.current,m=Sx(n,f.current,x);if(x)return;if(w.current=!0,m.id!==f.current?v(m.id):td(m.id),new URLSearchParams(window.location.search).get("project")!==m.id&&ei(m.id,"replace"),m.recovered){const T=n.find(N=>N.id===m.id);t("info",T?`Project “${m.requested}” was not found. Switched to ${T.label||T.id}.`:`Project “${m.requested}” was not found. Create a daemon to continue.`)}},[v,t,n,s]),y.useEffect(()=>{const x=()=>{const m=new URLSearchParams(window.location.search).get("project");if(o(!1),!m){v(null);return}if(!s){v(m);return}const j=kp(n,m);if(v(j.id),j.recovered){ei(j.id,"replace");const T=n.find(N=>N.id===j.id);t("info",T?`Project “${j.requested}” was not found. Switched to ${T.label||T.id}.`:`Project “${j.requested}” was not found. Create a daemon to continue.`)}};return window.addEventListener("popstate",x),()=>window.removeEventListener("popstate",x)},[v,t,n,s,o]);const p=s?d&&n.some(x=>x.id===d)?d:null:r?d:null;return{activateProject:v,activeSid:p,clearProjectSelection:b,prefetchProject:h,selectProject:k,sid:d,sidRef:f}}function Ya(e,t){const n=localStorage.getItem(e);return n==null?t:n==="true"}function L0(){const e=new URLSearchParams(window.location.search),[t,n]=y.useState(e.get("kiosk")==="1"),[r,s]=y.useState(()=>Ya("argus.reasoning.visible.v1",!1)),[i,l]=y.useState(()=>{const O=localStorage.getItem("argus.workspace.view");return O==="mission"||O==="workbench"?O:"activity"}),[o,c]=y.useState("activity"),[u,d]=y.useState(()=>Ya("argus.preview.expanded.v5",!0)),[g,f]=y.useState(()=>{const O=Number(localStorage.getItem("argus.sidebar.width.v2")||256);return Number.isFinite(O)?Math.max(220,Math.min(400,O)):256}),[w,v]=y.useState(()=>{const O=Number(localStorage.getItem("argus.preview.width.v2")||440);return Number.isFinite(O)?Math.max(320,Math.min(600,O)):440}),[k,b]=y.useState(!1),[h,p]=y.useState(()=>Ya("argus.sidebar.expanded.v4",!0)),[x,m]=y.useState(()=>{const O=localStorage.getItem("argus.theme");return O==="light"||O==="dark"?O:null}),[j,T]=y.useState(()=>window.matchMedia("(prefers-color-scheme: dark)").matches),N=x??(j?"dark":"light"),S=y.useRef(null),C=y.useRef(null);y.useEffect(()=>{localStorage.setItem("argus.sidebar.expanded.v4",String(h)),localStorage.setItem("argus.preview.expanded.v5",String(u)),localStorage.setItem("argus.sidebar.width.v2",String(g)),localStorage.setItem("argus.preview.width.v2",String(w))},[h,g,u,w]),y.useEffect(()=>{localStorage.setItem("argus.workspace.view",i)},[i]),y.useEffect(()=>{localStorage.setItem("argus.reasoning.visible.v1",String(r))},[r]),y.useEffect(()=>{const O=window.matchMedia("(prefers-color-scheme: dark)"),V=()=>T(O.matches);return V(),O.addEventListener("change",V),()=>O.removeEventListener("change",V)},[]),y.useEffect(()=>{document.documentElement.dataset.theme=N},[N]),y.useEffect(()=>{const O=()=>{document.documentElement.dataset.pageVisible=String(!document.hidden)};return O(),document.addEventListener("visibilitychange",O),()=>document.removeEventListener("visibilitychange",O)},[]);const _=y.useCallback(()=>{const O=N==="light"?"dark":"light";m(O),localStorage.setItem("argus.theme",O)},[N]),D=y.useCallback((O,V)=>{const q=S.current;if(!q)return;V.preventDefault();const Y=q.getBoundingClientRect();document.body.style.cursor="col-resize",document.body.style.userSelect="none";const H=E=>{C.current!=null&&window.cancelAnimationFrame(C.current),C.current=window.requestAnimationFrame(()=>{if(O==="left"){const I=u?w+8:56,L=Math.max(220,Math.min(400,Y.width-I-360-8));f(Math.max(220,Math.min(L,E.clientX-Y.left)))}else{const I=h?g+8:56,L=Math.max(320,Math.min(600,Y.width-I-360-8));v(Math.max(320,Math.min(L,Y.right-E.clientX)))}})},J=()=>{C.current!=null&&window.cancelAnimationFrame(C.current),C.current=null,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",H),window.removeEventListener("pointerup",J),window.removeEventListener("pointercancel",J)};window.addEventListener("pointermove",H),window.addEventListener("pointerup",J,{once:!0}),window.addEventListener("pointercancel",J,{once:!0})},[h,g,u,w]);return y.useEffect(()=>{const O=()=>{if(window.innerWidth<1024||!S.current)return;const V=S.current.clientWidth,q=h?g:56,Y=u?w:56,H=(h?8:0)+(u?8:0),J=Math.max(540,V-360-H);if(q+Y<=J)return;let E=u?Math.max(320,Math.min(w,J-q)):Y;const I=h?Math.max(220,Math.min(g,J-E)):q;I+E>J&&u&&(E=Math.max(320,J-I)),h&&f(I),u&&v(E)};return O(),window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[h,g,u,w]),{cycleTheme:_,kiosk:t,leftPanelOpen:h,leftWidth:g,mobileView:o,resizeSidebar:D,rightPanelOpen:u,rightWidth:w,setKiosk:n,setLeftPanelOpen:p,setLeftWidth:f,setMobileView:c,setRightPanelOpen:d,setRightWidth:v,setShowReasoning:s,setSidebarOpen:b,setWorkspaceView:l,shellRef:S,showReasoning:r,sidebarOpen:k,themeMode:N,workspaceView:i}}let D0=0;const M0=y.lazy(async()=>({default:(await up(()=>import("./ResearchWorkbenchPanel-8CpqXjyA.js"),__vite__mapDeps([0,1,2,3,4]))).ResearchWorkbenchPanel}));function A0(){var mc,pc,fc,hc;const{locale:e,t}=ee(),n=nd(),r=ky(),s=wy(),i=y.useMemo(()=>{var B,ge;return Vo(j0(((B=r.data)==null?void 0:B.projects)??[],((ge=s.data)==null?void 0:ge.projects)??[]))},[(mc=s.data)==null?void 0:mc.projects,(pc=r.data)==null?void 0:pc.projects]),l=((fc=r.data)==null?void 0:fc.local_cwd)??"",[o,c]=y.useState("none"),{cycleTheme:u,kiosk:d,leftPanelOpen:g,leftWidth:f,mobileView:w,resizeSidebar:v,rightPanelOpen:k,rightWidth:b,setKiosk:h,setLeftPanelOpen:p,setLeftWidth:x,setMobileView:m,setRightPanelOpen:j,setRightWidth:T,setShowReasoning:N,setSidebarOpen:S,setWorkspaceView:C,shellRef:_,showReasoning:D,sidebarOpen:O,themeMode:V,workspaceView:q}=L0(),[Y,H]=y.useState(()=>q==="mission"?"mission":"activity"),[J,E]=y.useState(q==="workbench");y.useEffect(()=>{if(q==="workbench"){E(!0);return}H(q)},[q]),p0();const[I,L]=y.useState(0),[K,te]=y.useState(""),[Ge,Re]=y.useState(!1),[rt,M]=y.useState(0),[ie,he]=y.useState(!1),[Oe,jn]=y.useState([]),[la,Nn]=y.useState(""),[oa,A]=y.useState(!1),[re,Le]=y.useState(0),[de,_n]=y.useState([]),[Qn,qn]=y.useState(0),[Kp,Tr]=y.useState(null),[Vp,Ls]=y.useState(null),[Gp,Pr]=y.useState(!1),[Yp,Ds]=y.useState(!1),Tt=y.useRef(null),ca=y.useRef(0),[Jp,ec]=y.useState(null),[tc,ua]=y.useReducer(v0,y0),[Xp,nc]=y.useState("all"),[Zp,rc]=y.useState(""),ef=y.useCallback(()=>ec(null),[]),we=y.useCallback((B,ge)=>{ec({id:++D0,tone:B,message:ge})},[]),da=y.useCallback(()=>{var ge;const B=!!Tt.current;return ca.current+=1,(ge=Tt.current)==null||ge.controller.abort(),Tt.current=null,he(!1),Nn(""),A(!1),Le(0),_n([]),qn(0),B},[]),Rr=y.useCallback(()=>{da()&&we("info","Stopped waiting for this reply. Server-side work may still finish in the project timeline.")},[da,we]),{activeSid:X,clearProjectSelection:tf,prefetchProject:nf,selectProject:Sn,sidRef:ma}=R0({cancelActiveMessage:da,notify:we,projects:i,projectsError:r.isError,projectsReady:r.isSuccess,queryClient:n,setArtifactPath:Tr,setSidebarOpen:S,setTaskItemId:Ls});y.useEffect(()=>()=>{var B;ca.current+=1,(B=Tt.current)==null||B.controller.abort(),Tt.current=null},[]);const sc=y.useCallback(B=>{const ge=(B||"").trim(),st=ma.current;!ge||!st||Ge||(Re(!0),U.rewritePrompt(st,ge).then($e=>{if(Re(!1),$e.error||!$e.rewritten.trim()){we("error",`Rewrite failed: ${$e.error||"empty rewrite"} — your prompt is unchanged`);return}te($e.rewritten),L(He=>He+1);const ae=$e.questions.length?` Manager asks: ${$e.questions.join(" · ")}`:"";we("success",`Prompt rewritten — review it, then send.${ae}`)},$e=>{Re(!1),we("error",`Rewrite failed: ${er($e)} — your prompt is unchanged`)}))},[we,Ge,ma]),{createDaemon:rf,creatingDaemon:ic}=_0({localCwd:l,notify:we,onFocusComposer:()=>L(B=>B+1),queryClient:n,refetchProjects:r.refetch,selectProject:Sn}),Ye=by(X),W=Ye.data,pt=(W==null?void 0:W.session.id)===X?X:null,Kn=W==null?void 0:W.continuous,Ms=Ey(pt,!0),sf=Cy(pt,Y==="mission"),{events:Xt,connected:pa}=Iy(pt,tc.reconnectKey),ac=y.useMemo(()=>Dy(Xt),[Xt]),lc=y.useMemo(()=>Ay(Xt),[Xt]);y.useEffect(()=>{!pt||!ac||n.invalidateQueries({queryKey:["artifacts",pt],exact:!0})},[ac,pt,n]),y.useEffect(()=>{!pt||!lc||n.invalidateQueries({queryKey:["snapshot",pt],exact:!0})},[pt,n,lc]);const af=y.useMemo(()=>Yx(Xt),[Xt]),fa=_p(pt,Y==="activity",120),lf=jy(X,20,o==="inspector"),{answerPendingReply:of,pendingReply:cf,pendingReplyBusy:uf,pendingReplyOpen:df,setPendingReplyOpen:oc}=T0({activeSid:X,backlog:W==null?void 0:W.backlog,notify:we,pendingQuestions:W==null?void 0:W.pending_questions,refetchSnapshot:Ye.refetch}),Vn=y.useMemo(()=>b0(Xt,fa.data??[],Oe),[Xt,Oe,fa.data]),Ft=y.useMemo(()=>W?Hx(W,Vn,Ms.data??[]):null,[Vn,Ms.data,W]),cc=y.useRef(Vn);cc.current=Vn,y.useEffect(()=>{nc("all"),rc(""),jn([]),ua({kind:"reset"})},[pt]);const En=Py(X,(hc=W==null?void 0:W.daemon_commands)==null?void 0:hc.revision),{daemonBusy:ha,manageDeleteProject:mf,managePauseDaemon:pf,manageRenameProject:ff,manageStartDaemon:hf,requestDispose:Lr,requestManageSession:gf,requestStartDaemon:ga,requestStopDaemon:xa,requestStopIteration:As,toggleContinuous:xf}=S0({actions:En,activeSid:X,clearProjectSelection:tf,continuous:Kn,currentSnapshotSid:W==null?void 0:W.session.id,notify:we,refetchProjects:r.refetch,selectProject:Sn,setDaemonManageOpen:Ds}),uc=y.useCallback(async B=>{if(!X)return;const ge=await En.updateProject.mutateAsync({sid:X,name:B});we("success",`Renamed to "${ge.name}".`)},[En.updateProject,X,we]),yf=y.useMemo(()=>h0({activeSid:X,activityEventsRef:cc,notify:we,onClearEvents:B=>ua({kind:"clear",offset:B}),onDispose:Lr,onOpenConfig:()=>c("config"),onOpenDoctor:()=>c("doctor"),onOpenHelp:()=>c("help"),onOpenIdentity:()=>c("identity"),onOpenInspector:()=>c("inspector"),onOpenNewDaemon:()=>Pr(!0),onOpenOperations:()=>c("operations"),onOpenSidebar:()=>S(!0),onReconnectEvents:()=>ua({kind:"reconnect"}),onRenameProject:uc,onRewriteDraft:sc,onSelectProject:Sn,onSetArtifactPath:Tr,onSetEventFilter:nc,onSetEventQuery:rc,onSetTaskItemId:Ls,onSetWorkspaceView:C,onShowArtifacts:()=>j(!0),onStopIteration:As,onStopWaiting:Rr,refetchSnapshot:Ye.refetch}),[X,we,uc,Lr,As,Sn,Ye.refetch,Rr,C]);E0({focusComposer:()=>L(B=>B+1),openHelp:()=>c("help"),toggleKiosk:()=>h(B=>!B),togglePalette:()=>c(B=>B==="palette"?"none":"palette"),toggleReasoning:()=>N(B=>!B),toggleSidebarCollapse:()=>p(B=>!B)});const ya=async(B,ge=[])=>{const st=X;if(!st||Tt.current)return!1;if(!ge.length){const ne=await f0(B,yf);if(ne.kind==="handled")return!0;if(ne.kind==="error")return we("error",ne.message),!1}const $e=++ca.current,ae=new AbortController;Tt.current={id:$e,sid:st,controller:ae};const He=()=>{const ne=Tt.current;return!!(ne&&ne.id===$e&&ne.sid===st&&ma.current===st&&!ae.signal.aborted)},gc=()=>{var ne;((ne=Tt.current)==null?void 0:ne.id)===$e&&(Tt.current=null,he(!1),Nn(""),A(!1),Le(0),qn(0),_n([]))};he(!0),Nn(ge.length?t("chat.uploadingAttachments"):""),A(!1),Le(0),_n([]),qn(Date.now());let xc=[];if(ge.length)try{const ne=await U.uploadAttachments(st,ge,ae.signal);if(!He())return!1;xc=ne.attachments.map(Ee=>({attachment_id:Ee.attachment_id}))}catch(ne){return He()&&(we("error",t("chat.attachmentUploadFailed",{error:er(ne)})),gc()),!1}jn(ne=>[...ne,k0(st,$e,B)]);const yc=(ne,Ee="",it="auto")=>{!He()||typeof ne!="string"||!ne.trim()||jn(Fe=>w0(Fe,st,$e,ne,Ee,Date.now(),it))},kf=ne=>{var Fe;if(!He())return;const Ee=ne.daemon&&typeof ne.daemon=="object"?ne.daemon:null,it=typeof ne.reply=="string"?ne.reply:null;Ee!=null&&Ee.admission_required?we("error",it||`Task queued, but all daemon slots are busy: ${String(Ee.error||"operator action required")}`):Ee&&Number(Ee.rc??0)!==0?we("error",it||`Task queued, but executor did not start: ${String(Ee.error||"unknown error")}`):it&&we("success",it),(Fe=Ye.refetch)==null||Fe.call(Ye)},wf=ne=>{He()&&x0(ne,{dispatchTask:kf,notifyError:Ee=>we("error",Ee),refetchTranscript:()=>{fa.refetch()}})};return(async()=>{let ne=!1,Ee=null,it=[];try{try{await U.messageStream(st,B,{onPhase:(Fe,va,Pt)=>{He()&&(Nn(Fe),A(Pt.heartbeat),Le(Pt.quietS),it=ry(it,{label:Fe,role:va,kind:Pt.kind,detail:Pt.detail,heartbeat:Pt.heartbeat,quietS:Pt.quietS}),_n(it))},onDelta:(Fe,va,Pt)=>{He()&&(ne=!0,it=sy(it),_n(it),Nn(""),A(!1),Le(0),yc(Fe,va,Pt==="append"||Pt==="snapshot"?Pt:"auto"))},onDone:Fe=>{He()&&(yc(Fe.reply,"","snapshot"),wf(Fe))},onError:Fe=>{He()&&(Ee=Fe)}},{signal:ae.signal,attachments:xc})}catch(Fe){He()&&(Ee=Fe)}if(!He())return;Ee&&we("error",Vy(Ee,ne))}finally{gc()}})(),!0},dc=y.useRef(ya);dc.current=ya;const vf=y.useMemo(()=>{const B=yv(Ts,ae=>{dc.current(ae)},ae=>{te(ae),L(He=>He+1)},e),ge=[...d?[]:[{id:"new",label:t("palette.newDaemon"),hint:"+",group:t("palette.view"),run:()=>Pr(!0)}],{id:"transcript",label:t("palette.openTranscript"),hint:"/transcript",group:t("palette.view"),run:()=>c("transcript")},{id:"inspector",label:t("palette.openProject"),hint:t("palette.projectHint"),group:t("palette.view"),run:()=>c("inspector")},{id:"operations",label:t("palette.openOperations"),hint:t("palette.operationsHint"),group:t("palette.view"),run:()=>c("operations")},{id:"help",label:t("help.title"),hint:"?",group:t("palette.view"),run:()=>c("help")},{id:"reasoning",label:t(D?"palette.hideReasoning":"palette.showReasoning"),hint:"⌘T",group:t("palette.view"),run:()=>N(ae=>!ae)},{id:"kiosk",label:t(d?"palette.exitKiosk":"palette.enterKiosk"),hint:"⌘.",group:t("palette.view"),run:()=>h(ae=>!ae)}],st=d?[]:[{id:"message",label:t("palette.messageArgus"),hint:"/",group:t("palette.action"),run:()=>L(ae=>ae+1)},...ie?[{id:"cancel-message",label:t("palette.stopWaiting"),hint:"Esc",group:t("palette.action"),run:Rr}]:[],...Kn?[{id:"continuous",label:Kn.enabled?t("palette.stopContinuous"):t("palette.startContinuous"),group:t("palette.action"),run:xf}]:[],...(W==null?void 0:W.daemon.control_available)===!1?[]:[W!=null&&W.daemon.alive?{id:"stop",label:t("palette.stopDaemon"),group:t("palette.action"),run:xa}:{id:"start",label:t("palette.startDaemon"),group:t("palette.action"),run:ga}]],$e=i.map(ae=>({id:`p-${ae.id}`,label:ae.label||ae.id,hint:ae.daemon_alive?`● ${t("common.live")}`:"○",keywords:`${ae.id} ${ae.display_name??""} ${ae.objective} ${ae.daemon_alive?"live running":"stopped idle"}`,group:t("palette.project"),run:()=>Sn(ae.id)}));return[...ge,...st,...B,...$e]},[i,W==null?void 0:W.daemon.alive,d,D,Kn==null?void 0:Kn.enabled,ie,Rr,e,t]);return a.jsxs("div",{ref:_,className:"workbench-shell ambient-canvas flex h-screen h-[100dvh] w-screen max-w-full overflow-hidden text-ink",children:[!d&&O?a.jsx("button",{type:"button","aria-label":t("common.closeSessions"),onClick:()=>S(!1),className:"fixed inset-0 z-30 bg-black/40 lg:hidden"}):null,d?null:a.jsx(Gv,{projects:i,activeId:X,localCwd:l,onSelect:B=>{Sn(B),S(!1)},onPrefetch:nf,onManage:gf,onOpenPanel:B=>c(B),onNew:()=>Pr(!0),loading:r.isLoading,creating:ic,error:r.isError?er(r.error):void 0,onRetry:()=>void r.refetch(),mobileOpen:O,collapsed:!g,onToggleCollapse:()=>p(B=>!B),themeMode:V,onCycleTheme:u,expandedWidth:f}),!d&&g?a.jsx(Ju,{label:t("common.resizeSessions"),value:f,min:220,max:400,onPointerDown:B=>v("left",B),onReset:()=>x(256),onNudge:B=>x(ge=>Math.max(220,Math.min(400,ge+B)))}):null,a.jsx("main",{className:"flex min-w-0 flex-1 overflow-x-hidden",children:W?a.jsxs(a.Fragment,{children:[a.jsxs("section",{className:`${w==="activity"?"flex":"hidden"} glass-panel glass-panel--main h-full min-w-0 flex-1 flex-col lg:flex`,children:[a.jsx(Uu,{snap:W,streamOk:pa,onStart:ga,onStop:xa,onManage:()=>Ds(!0),busy:ha,snapshotStale:Ye.isError,readOnly:d,missionView:Ft}),a.jsxs("div",{className:"flex h-10 shrink-0 items-center gap-1 border-b border-line/60 px-3",children:[a.jsxs("div",{className:"workspace-tabs","data-active":q,children:[a.jsx("span",{className:"workspace-tab-indicator","aria-hidden":"true"}),a.jsx("button",{type:"button",onClick:()=>C("mission"),className:"workspace-tab","data-selected":q==="mission",children:t("mobile.mission")}),a.jsx("button",{type:"button",onClick:()=>C("activity"),className:"workspace-tab","data-selected":q==="activity",children:t("mobile.activity")}),a.jsx("button",{type:"button",onClick:()=>C("workbench"),className:"workspace-tab","data-selected":q==="workbench",children:t("mobile.workbench")})]}),q==="mission"?a.jsx("span",{className:"ml-auto hidden max-w-72 truncate text-[10px] text-ink-faint sm:block",children:Ft!=null&&Ft.active_role?t("mission.roleActive",{role:Ft.active_role}):t("mission.overview")}):a.jsx("span",{className:"ml-auto"}),d?null:a.jsx("button",{type:"button",onClick:()=>c("operations"),className:"rounded border border-line/60 px-2 py-1 text-[10px] text-ink-faint hover:border-blue/50 hover:text-blue",children:t("mission.operations")})]}),a.jsxs("div",{className:`${q==="workbench"?"hidden":"flex"} min-h-0 flex-1 flex-col`,children:[a.jsx(Lv,{alert:af}),Y==="mission"&&Ft?a.jsx(l0,{view:Ft,gitDiff:sf.data,onOpenArtifact:Tr}):a.jsx(av,{events:Vn,connected:pa,showReasoning:D,onToggleReasoning:()=>N(B=>!B),embedded:!0,filter:Xp,query:Zp,skipFirst:tc.skipFirst}),d?null:a.jsx("div",{className:"composer-dock shrink-0 px-4 pt-3",children:a.jsxs("div",{className:"mx-auto w-full max-w-full lg:max-w-[61.8vw]",children:[a.jsx(Pv,{questions:W.pending_questions??[],backlog:W.backlog,onAnswer:()=>oc(!0)}),a.jsx(xv,{value:K,onChange:te,onSend:ya,onCancel:Rr,disabled:!X,pending:ie,focusSignal:I,embedded:!0,phase:la,heartbeat:oa,quietS:re,steps:de,startedAt:Qn,onRewrite:sc,rewriting:Ge,slashSelection:rt,onSlashSelectionChange:M},X||"no-session")]})})]}),J&&X?a.jsx("div",{className:`${q==="workbench"?"flex":"hidden"} min-h-0 flex-1`,children:a.jsx(y.Suspense,{fallback:a.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center text-xs text-ink-faint",children:t("common.loading")}),children:a.jsx(M0,{sid:X,active:q==="workbench"})})}):null]}),k?a.jsx(Ju,{label:t("common.resizePreview"),value:b,min:320,max:600,onPointerDown:B=>v("right",B),onReset:()=>T(440),onNudge:B=>T(ge=>Math.max(320,Math.min(600,ge-B)))}):null,a.jsxs("aside",{style:{"--preview-width":`${b}px`},className:`${w==="preview"?"flex":"hidden"} relative min-w-0 flex-1 flex-col overflow-hidden border-l border-line/60 bg-panel transition-[width] duration-[250ms] ease-panel lg:flex lg:flex-none ${k?"lg:w-[var(--preview-width)]":"lg:w-14"}`,children:[a.jsx("div",{className:"lg:hidden",children:a.jsx(Uu,{snap:W,streamOk:pa,onStart:ga,onStop:xa,onManage:()=>Ds(!0),busy:ha,snapshotStale:Ye.isError,readOnly:d,missionView:Ft})}),a.jsx(Hv,{sid:pt,artifacts:Ms.data,error:Ms.isError,onExpand:Tr,className:`min-h-0 flex-1 mobile-scroll-region ${k?"lg:flex":"lg:hidden"}`,embedded:!0,onCollapse:()=>j(!1),missionView:Ft,activityEvents:Vn}),k?null:a.jsx("div",{className:"hidden h-12 items-center justify-center border-b border-line/50 text-ink-faint lg:flex",children:a.jsx("button",{type:"button",onClick:()=>j(!0),"aria-label":t("common.expandPreview"),title:t("common.expandPreview"),className:"flex h-8 w-8 items-center justify-center rounded-md border border-line/50 bg-bg/40 hover:border-blue/50 hover:text-ink",children:a.jsx(pe,{icon:ld,className:"h-3.5 w-3.5"})})})]})]}):a.jsx(d0,{loading:r.isLoading||!!(X&&Ye.isLoading),hasProjects:i.length>0,error:r.isError&&i.length===0?er(r.error):Ye.isError&&!W?er(Ye.error):void 0,onRetry:()=>{r.refetch(),X&&Ye.refetch()},onNew:()=>Pr(!0),onChoose:()=>S(!0),canCreate:!d})}),a.jsx(kv,{open:o==="palette",onClose:()=>c("none"),items:vf}),a.jsx(bv,{open:o==="help",onClose:()=>c("none")}),X&&a.jsx(Sv,{sid:X,open:o==="doctor",onClose:()=>c("none")}),X&&a.jsx(Ev,{sid:X,open:o==="config",onClose:()=>c("none")}),X&&a.jsx(Cv,{sid:X,open:o==="identity",onClose:()=>c("none")}),X&&a.jsx(Tv,{sid:X,open:o==="transcript",onClose:()=>c("none")}),X&&W?a.jsx(t0,{open:o==="inspector",snap:W,journal:lf.data??[],busy:En.disposeBacklog.isPending||En.stopBacklog.isPending,onClose:()=>c("none"),onDispose:Lr,onStop:As,onInspect:Ls}):null,X&&W?a.jsx(o0,{open:o==="operations",sid:X,snap:W,onClose:()=>c("none"),onChanged:()=>{Ye.refetch(),r.refetch()},onRestored:async B=>{await r.refetch(),Sn(B)}}):null,a.jsx(Av,{sid:X,path:Kp,onClose:()=>Tr(null)}),a.jsx(n0,{sid:X,itemId:Vp,onClose:()=>Ls(null),onDone:B=>Lr(B,"done"),onSkip:B=>Lr(B,"rm"),onStop:As,busy:En.disposeBacklog.isPending||En.stopBacklog.isPending,readOnly:d}),a.jsx(qv,{open:Gp,busy:ic,onClose:()=>Pr(!1),onCreate:rf}),a.jsx(Rv,{reply:cf,open:df,busy:uf,onClose:()=>oc(!1),onSubmit:of}),X&&W?a.jsx(Kv,{open:Yp,sid:X,name:W.session.display_name||"",alive:W.daemon.alive,controlAvailable:W.daemon.control_available!==!1,busy:ha,onClose:()=>Ds(!1),onRename:ff,onStart:hf,onPause:pf,onDelete:mf}):null,a.jsx(Qv,{notice:Jp,onClose:ef}),W&&!d?a.jsx(m0,{active:w==="preview"?"preview":q,onSelect:B=>{if(B==="preview"){m("preview");return}m("activity"),C(B)},onOpenSessions:()=>S(!0)}):null]})}const I0=180;function O0({onDone:e}){const{t}=ee(),n=y.useRef(!1),r=y.useCallback(()=>{n.current||(n.current=!0,e())},[e]);return y.useEffect(()=>{const s=window.setTimeout(r,I0+150),i=()=>r();return window.addEventListener("keydown",i,{once:!0}),()=>{window.clearTimeout(s),window.removeEventListener("keydown",i)}},[r]),a.jsxs("div",{role:"status","aria-label":t("splash.starting"),onClick:r,onAnimationEnd:s=>{s.currentTarget===s.target&&r()},className:"argus-web-splash",children:[a.jsx("div",{className:"argus-web-splash-logo argus-web-splash-logo-full","aria-hidden":"true",children:a.jsx(Fi,{size:72})}),a.jsx("div",{className:"argus-web-splash-logo argus-web-splash-logo-compact","aria-hidden":"true",children:a.jsx(aa,{size:112})})]})}tx();const $0=new bf({defaultOptions:{queries:{staleTime:3e3,retry:1,refetchOnWindowFocus:!1}}});function F0(){const[e,t]=y.useState(!0);return a.jsxs(a.Fragment,{children:[a.jsx(A0,{}),e?a.jsx(O0,{onDone:()=>t(!1)}):null]})}Xa.createRoot(document.getElementById("root")).render(a.jsx(jf.StrictMode,{children:a.jsx(Nf,{client:$0,children:a.jsx(Uy,{children:a.jsx(F0,{})})})}));export{up as _,ee as u}; +`)||"Plan preview ready.")},nudge:async _=>{e&&(await U.nudge(e,_),n("success","Guidance injected."))},abort:async _=>{e&&(await U.abortMission(e,_||"operator abort"),n("info","Abort requested."))},note:async _=>{e&&(await U.note(e,_),n("success","Note appended to timeline."))},done:async _=>{_&&s(_,"done")},skip:async _=>{_&&s(_,"rm")},stop:async _=>{_&&N(_)},new:async()=>d(),daemons:async()=>f(),resume:async _=>{_&&_!=="list"?b(_):f()},attach:async _=>{_&&b(_)},rename:async _=>{!e||!_||await v(_)},doctor:async()=>l(),backend:async _=>{if(!e||!_){i();return}await U.setConfig(e,"runner_backend",_),n("success",`Backend set to ${_}.`)},config:async _=>{if(!e||!_){i();return}const D=_.indexOf("=");D>0?(await U.setConfig(e,_.slice(0,D).trim(),_.slice(D+1).trim()),n("success","Config updated.")):i()},identity:async()=>c(),reset:async()=>{e&&(await U.resetManager(e),n("success","Manager context reset."))},skills:async _=>{if(!e)return;const D=await U.skills(e,_||"ls");n("info",D.slice(0,400))},reconnect:async()=>w(),help:async()=>o(),quit:async()=>n("info","Background work continues; close this browser tab when ready.")}}function g0(e){return e.kind!=="error"?null:(typeof e.reply=="string"?e.reply.trim():"")||"Manager could not handle this message."}function x0(e,t){e.kind==="task"&&t.dispatchTask(e);const n=g0(e);n&&t.notifyError(n),t.refetchTranscript()}const y0={skipFirst:0,reconnectKey:0};function v0(e,t){return t.kind==="clear"?{...e,skipFirst:Math.max(0,t.offset)}:t.kind==="reconnect"?{skipFirst:0,reconnectKey:e.reconnectKey+1}:{...e,skipFirst:0}}const Yr="local_request_id";function k0(e,t,n,r=Date.now()){return{type:"ui.operator",agent_layer:"operator",text:n,ts:r/1e3,event_id:`local-${e}-${t}-operator`,message_id:`local-${t}-operator`,[Yr]:t}}function w0(e,t,n,r,s,i=Date.now(),l="auto"){const o=r.trim();if(!o)return e;const c=e.findIndex(k=>k.type==="ui.argus"&&Number(k[Yr])===n),u=s.endsWith("-argus")?`${s.slice(0,-6)}-operator`:"",d=u?e.map(k=>k.type==="ui.operator"&&Number(k[Yr])===n?{...k,message_id:u}:k):e,g=d.find(k=>k.type==="ui.operator"&&Number(k[Yr])===n),f=g?Math.max(0,i-Number(g.ts??i/1e3)*1e3):0;if(c<0)return[...d,{type:"ui.argus",agent_layer:"manager",text:o,ts:i/1e3,event_id:`local-${t}-${n}-argus`,message_id:s||`local-${n}-argus`,fragment_mode:l,response_latency_ms:f,[Yr]:n}];const w=d[c],v=[...d];return v[c]={...w,text:xp(String(w.text??""),o,l),message_id:s||w.message_id,fragment_mode:l},v}function b0(e,t,n){const r=new Map;e.forEach(d=>{const g=String(d.type??"");if(g!=="ui.operator"&&g!=="ui.argus")return;const f=`${g}\0${String(d.text??"")}`;r.set(f,(r.get(f)??0)+1)});const s=t.map(d=>({type:d.role==="operator"?"ui.operator":"ui.argus",agent_layer:d.role==="operator"?"operator":"manager",text:d.text,ts:d.ts,message_id:`transcript-${d.ts}-${d.role}`})),i=new Array(s.length).fill(!0);for(let d=s.length-1;d>=0;d-=1){const g=s[d],f=`${String(g.type)}\0${String(g.text??"")}`,w=r.get(f)??0;w>0&&(i[d]=!1,r.set(f,w-1))}const l=[...s.filter((d,g)=>i[g]),...e],o=new Array(l.length).fill(!0),c=new Set,u=n.filter(d=>{const g=String(d.message_id??"");let f=g?l.findIndex((v,k)=>!c.has(k)&&String(v.message_id??"")===g):-1;const w=Number(d.ts??0);return f<0&&(f=l.findIndex((v,k)=>{if(c.has(k)||v.type!==d.type||v.text!==d.text)return!1;const b=Number(v.ts??0);return Math.abs(b-w)<=5})),f>=0&&(c.add(f),o[f]=!1),!0});return[...l.filter((d,g)=>o[g]),...u].sort((d,g)=>Number(d.ts??0)-Number(g.ts??0))}function j0(e,t){if(!t.length)return e;const n=new Map(t.map(r=>[r.id,r]));return e.map(r=>{const s=n.get(r.id);return s?{...r,spend_usd:s.spend_usd,known_cost_usd:s.known_cost_usd,spend_status:s.spend_status,usage_calls:s.usage_calls,premium_requests:s.premium_requests,cost_updated_at:s.updated_at}:r})}async function N0(e,t,n,r=""){const s=await e.createDaemon("",t,r),i=n.trim();return{created:s,startCampaign:i?()=>e.setContinuous(s.sid,!0,i):null}}const ed=e=>e instanceof Error?e.message:String(e||"Unknown error");function _0({localCwd:e,notify:t,onFocusComposer:n,queryClient:r,refetchProjects:s,selectProject:i}){const[l,o]=y.useState(!1),c=y.useRef(!1);return{createDaemon:async(d,g,f)=>{if(c.current)return!1;c.current=!0,o(!0);try{const{created:w,startCampaign:v}=await N0(U,d,g,f),k=String(w.workdir||f||"");return r.setQueryData(["projects"],b=>({local_cwd:(b==null?void 0:b.local_cwd)??e,projects:[{id:w.sid,label:d||w.sid,display_name:d,objective:"",launch_cwd:k,workdir:k,last_active:Date.now()/1e3,daemon_alive:!1,daemon_pid:null,uptime_seconds:null},...((b==null?void 0:b.projects)??[]).filter(h=>h.id!==w.sid)]})),i(w.sid),s(),window.setTimeout(n,0),t(v?"info":"success",v?"Session created and selected. Campaign is starting in the background.":"Session created and selected."),v&&v().then(()=>{r.invalidateQueries({queryKey:["snapshot",w.sid]}),s(),t("success","Campaign started.")}).catch(b=>{t("error",`Session was created, but the campaign could not start: ${ed(b)}`)}),!0}catch(w){return t("error",`Could not create session: ${ed(w)}`),!1}finally{c.current=!1,o(!1)}},creatingDaemon:l}}const Cn=e=>e instanceof Error?e.message:String(e||"Unknown error");function S0({actions:e,activeSid:t,clearProjectSelection:n,continuous:r,currentSnapshotSid:s,notify:i,refetchProjects:l,selectProject:o,setDaemonManageOpen:c}){const[u,d]=y.useState(null),g=e.startDaemon.isPending||e.stopDaemon.isPending||e.updateProject.isPending||e.deleteProject.isPending,f=y.useCallback(N=>({onSuccess:()=>i("success",N),onError:S=>i("error",Cn(S))}),[i]),w=y.useCallback(()=>e.startDaemon.mutate(void 0,f("Daemon start requested.")),[f,e.startDaemon]),v=y.useCallback(()=>e.stopDaemon.mutate(!0,f("Daemon is draining and will stop safely.")),[f,e.stopDaemon]),k=y.useCallback(async()=>{try{return await e.startDaemon.mutateAsync(),i("success","Daemon resumed."),!0}catch(N){return i("error",Cn(N)),!1}},[e.startDaemon,i]),b=y.useCallback(async()=>{try{return await e.stopDaemon.mutateAsync(!0),i("success","Daemon paused safely."),!0}catch(N){return i("error",Cn(N)),!1}},[e.stopDaemon,i]),h=y.useCallback(async N=>{if(!t)return!1;try{return await e.updateProject.mutateAsync({sid:t,name:N}),i("success","Session name updated."),!0}catch(S){return i("error",Cn(S)),!1}},[e.updateProject,t,i]),p=y.useCallback(async()=>{var N;if(!t)return!1;try{const S=await e.deleteProject.mutateAsync();c(!1),n("replace");const C=await l(),_=Vo(((N=C.data)==null?void 0:N.projects)??[])[0];return _&&o(_.id,"replace"),i("success",S.workdir_preserved?`Session moved to recoverable trash. Files remain in ${S.workdir}.`:"Session moved to recoverable trash."),!0}catch(S){return i("error",Cn(S)),!1}},[e.deleteProject,t,n,i,l,o,c]),x=y.useCallback(N=>{if(c(!1),N===t&&s===N){d(null),c(!0);return}d(N),o(N)},[t,s,o,c]);y.useEffect(()=>{!u||t!==u||s!==u||(d(null),c(!0))},[t,s,u,c]);const m=y.useCallback((N,S)=>e.disposeBacklog.mutate({id:N,op:S},{onSuccess:()=>i("success",S==="done"?"Work marked done.":"Work removed."),onError:C=>i("error",Cn(C))}),[e.disposeBacklog,i]),j=y.useCallback(N=>e.stopBacklog.mutate(N,{onSuccess:()=>i("success","Iteration stopped."),onError:S=>i("error",Cn(S))}),[e.stopBacklog,i]),T=y.useCallback(()=>{if(!r)return;const N=!r.enabled;e.setContinuous.mutate({enabled:N,objective:r.objective},f(N?"Continuous campaign enabled.":"Continuous campaign stopped."))},[f,e.setContinuous,r]);return{daemonBusy:g,manageDeleteProject:p,managePauseDaemon:b,manageRenameProject:h,manageStartDaemon:k,requestDispose:m,requestManageSession:x,requestStartDaemon:w,requestStopDaemon:v,requestStopIteration:j,toggleContinuous:T}}function E0({focusComposer:e,openHelp:t,toggleKiosk:n,togglePalette:r,toggleReasoning:s,toggleSidebarCollapse:i}){y.useEffect(()=>{const l=o=>{const c=o.target,u=(c==null?void 0:c.tagName)==="INPUT"||(c==null?void 0:c.tagName)==="TEXTAREA",d=o.metaKey||o.ctrlKey;d&&o.key.toLowerCase()==="k"?(o.preventDefault(),r()):d&&o.key.toLowerCase()==="t"?(o.preventDefault(),s()):d&&o.key==="."?(o.preventDefault(),n()):d&&o.key.toLowerCase()==="b"?(o.preventDefault(),i()):d&&o.key.toLowerCase()==="j"?(o.preventDefault(),e()):!u&&o.key==="?"?(o.preventDefault(),t()):!u&&o.key==="/"&&(o.preventDefault(),e())};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[e,t,n,r,s,i])}const C0=e=>e instanceof Error?e.message:String(e||"Unknown error");function T0({activeSid:e,backlog:t,notify:n,pendingQuestions:r,refetchSnapshot:s}){const[i,l]=y.useState(!1),[o,c]=y.useState(!1),u=y.useRef(""),d=y.useMemo(()=>{const f=(t??[]).map(w=>({...w,operator_decision:w.operator_decision}));return fp(r??[],f)[0]??null},[t,r]);return y.useEffect(()=>{if(!d||!e){l(!1);return}const f=`${e}:${d.id}`;u.current!==f&&(u.current=f,l(!0))},[e,d]),{answerPendingReply:async(f,w)=>{if(!(!e||!d||o)){c(!0);try{const v=d.legacy?await U.answerPending(e,d.item_id,w):await U.resolveDecision(e,d.id,f,w);if(v.resolved===!1){n("info",String(v.reply||"Manager needs a more specific answer."));return}l(!1),await s(),v.daemon&&Number(v.daemon.rc??0)!==0?n("error",`Answer queued, but the daemon did not start: ${v.daemon.error||"operator action required"}`):n("success",String(v.reply||"Manager delivered your answer to the team."))}catch(v){await s(),n("error",`Could not send answer: ${C0(v)}`)}finally{c(!1)}}},pendingReply:d,pendingReplyBusy:o,pendingReplyOpen:i,setPendingReplyOpen:l}}const to="argus.browser.project.v1";function P0(){try{return window.sessionStorage.getItem(to)}catch{return null}}function td(e){try{e?window.sessionStorage.setItem(to,e):window.sessionStorage.removeItem(to)}catch{}}function ei(e,t){const n=new URL(window.location.href);e?n.searchParams.set("project",e):n.searchParams.delete("project");const r=t==="push"?"pushState":"replaceState";window.history[r](window.history.state,"",n.toString())}function R0({cancelActiveMessage:e,notify:t,projects:n,projectsError:r,projectsReady:s,queryClient:i,setArtifactPath:l,setSidebarOpen:o,setTaskItemId:c}){const u=new URLSearchParams(window.location.search),[d,g]=y.useState(u.get("project")||P0()),f=y.useRef(d),w=y.useRef(!1);f.current=d;const v=y.useCallback(x=>{x!==f.current&&(e(),l(null),c(null)),f.current=x,g(x),td(x)},[e,l,c]),k=y.useCallback((x,m="push")=>{const j=new URLSearchParams(window.location.search).get("project");v(x),j!==x&&ei(x,m)},[v]),b=y.useCallback((x="replace")=>{const m=new URLSearchParams(window.location.search).get("project");v(null),m!=null&&ei(null,x)},[v]),h=y.useCallback(x=>{i.prefetchQuery({queryKey:["snapshot",x],queryFn:({signal:m})=>U.snapshot(x,m),staleTime:3e3})},[i]);y.useEffect(()=>{if(!s)return;const x=w.current,m=Sx(n,f.current,x);if(x)return;if(w.current=!0,m.id!==f.current?v(m.id):td(m.id),new URLSearchParams(window.location.search).get("project")!==m.id&&ei(m.id,"replace"),m.recovered){const T=n.find(N=>N.id===m.id);t("info",T?`Project “${m.requested}” was not found. Switched to ${T.label||T.id}.`:`Project “${m.requested}” was not found. Create a daemon to continue.`)}},[v,t,n,s]),y.useEffect(()=>{const x=()=>{const m=new URLSearchParams(window.location.search).get("project");if(o(!1),!m){v(null);return}if(!s){v(m);return}const j=kp(n,m);if(v(j.id),j.recovered){ei(j.id,"replace");const T=n.find(N=>N.id===j.id);t("info",T?`Project “${j.requested}” was not found. Switched to ${T.label||T.id}.`:`Project “${j.requested}” was not found. Create a daemon to continue.`)}};return window.addEventListener("popstate",x),()=>window.removeEventListener("popstate",x)},[v,t,n,s,o]);const p=s?d&&n.some(x=>x.id===d)?d:null:r?d:null;return{activateProject:v,activeSid:p,clearProjectSelection:b,prefetchProject:h,selectProject:k,sid:d,sidRef:f}}function Ya(e,t){const n=localStorage.getItem(e);return n==null?t:n==="true"}function L0(){const e=new URLSearchParams(window.location.search),[t,n]=y.useState(e.get("kiosk")==="1"),[r,s]=y.useState(()=>Ya("argus.reasoning.visible.v1",!1)),[i,l]=y.useState(()=>{const O=localStorage.getItem("argus.workspace.view");return O==="mission"||O==="workbench"?O:"activity"}),[o,c]=y.useState("activity"),[u,d]=y.useState(()=>Ya("argus.preview.expanded.v5",!0)),[g,f]=y.useState(()=>{const O=Number(localStorage.getItem("argus.sidebar.width.v2")||256);return Number.isFinite(O)?Math.max(220,Math.min(400,O)):256}),[w,v]=y.useState(()=>{const O=Number(localStorage.getItem("argus.preview.width.v2")||440);return Number.isFinite(O)?Math.max(320,Math.min(600,O)):440}),[k,b]=y.useState(!1),[h,p]=y.useState(()=>Ya("argus.sidebar.expanded.v4",!0)),[x,m]=y.useState(()=>{const O=localStorage.getItem("argus.theme");return O==="light"||O==="dark"?O:null}),[j,T]=y.useState(()=>window.matchMedia("(prefers-color-scheme: dark)").matches),N=x??(j?"dark":"light"),S=y.useRef(null),C=y.useRef(null);y.useEffect(()=>{localStorage.setItem("argus.sidebar.expanded.v4",String(h)),localStorage.setItem("argus.preview.expanded.v5",String(u)),localStorage.setItem("argus.sidebar.width.v2",String(g)),localStorage.setItem("argus.preview.width.v2",String(w))},[h,g,u,w]),y.useEffect(()=>{localStorage.setItem("argus.workspace.view",i)},[i]),y.useEffect(()=>{localStorage.setItem("argus.reasoning.visible.v1",String(r))},[r]),y.useEffect(()=>{const O=window.matchMedia("(prefers-color-scheme: dark)"),V=()=>T(O.matches);return V(),O.addEventListener("change",V),()=>O.removeEventListener("change",V)},[]),y.useEffect(()=>{document.documentElement.dataset.theme=N},[N]),y.useEffect(()=>{const O=()=>{document.documentElement.dataset.pageVisible=String(!document.hidden)};return O(),document.addEventListener("visibilitychange",O),()=>document.removeEventListener("visibilitychange",O)},[]);const _=y.useCallback(()=>{const O=N==="light"?"dark":"light";m(O),localStorage.setItem("argus.theme",O)},[N]),D=y.useCallback((O,V)=>{const q=S.current;if(!q)return;V.preventDefault();const Y=q.getBoundingClientRect();document.body.style.cursor="col-resize",document.body.style.userSelect="none";const H=E=>{C.current!=null&&window.cancelAnimationFrame(C.current),C.current=window.requestAnimationFrame(()=>{if(O==="left"){const I=u?w+8:56,L=Math.max(220,Math.min(400,Y.width-I-360-8));f(Math.max(220,Math.min(L,E.clientX-Y.left)))}else{const I=h?g+8:56,L=Math.max(320,Math.min(600,Y.width-I-360-8));v(Math.max(320,Math.min(L,Y.right-E.clientX)))}})},J=()=>{C.current!=null&&window.cancelAnimationFrame(C.current),C.current=null,document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",H),window.removeEventListener("pointerup",J),window.removeEventListener("pointercancel",J)};window.addEventListener("pointermove",H),window.addEventListener("pointerup",J,{once:!0}),window.addEventListener("pointercancel",J,{once:!0})},[h,g,u,w]);return y.useEffect(()=>{const O=()=>{if(window.innerWidth<1024||!S.current)return;const V=S.current.clientWidth,q=h?g:56,Y=u?w:56,H=(h?8:0)+(u?8:0),J=Math.max(540,V-360-H);if(q+Y<=J)return;let E=u?Math.max(320,Math.min(w,J-q)):Y;const I=h?Math.max(220,Math.min(g,J-E)):q;I+E>J&&u&&(E=Math.max(320,J-I)),h&&f(I),u&&v(E)};return O(),window.addEventListener("resize",O),()=>window.removeEventListener("resize",O)},[h,g,u,w]),{cycleTheme:_,kiosk:t,leftPanelOpen:h,leftWidth:g,mobileView:o,resizeSidebar:D,rightPanelOpen:u,rightWidth:w,setKiosk:n,setLeftPanelOpen:p,setLeftWidth:f,setMobileView:c,setRightPanelOpen:d,setRightWidth:v,setShowReasoning:s,setSidebarOpen:b,setWorkspaceView:l,shellRef:S,showReasoning:r,sidebarOpen:k,themeMode:N,workspaceView:i}}let D0=0;const M0=y.lazy(async()=>({default:(await up(()=>import("./ResearchWorkbenchPanel-BcyzHdZs.js"),__vite__mapDeps([0,1,2,3,4]))).ResearchWorkbenchPanel}));function A0(){var mc,pc,fc,hc;const{locale:e,t}=ee(),n=nd(),r=ky(),s=wy(),i=y.useMemo(()=>{var B,ge;return Vo(j0(((B=r.data)==null?void 0:B.projects)??[],((ge=s.data)==null?void 0:ge.projects)??[]))},[(mc=s.data)==null?void 0:mc.projects,(pc=r.data)==null?void 0:pc.projects]),l=((fc=r.data)==null?void 0:fc.local_cwd)??"",[o,c]=y.useState("none"),{cycleTheme:u,kiosk:d,leftPanelOpen:g,leftWidth:f,mobileView:w,resizeSidebar:v,rightPanelOpen:k,rightWidth:b,setKiosk:h,setLeftPanelOpen:p,setLeftWidth:x,setMobileView:m,setRightPanelOpen:j,setRightWidth:T,setShowReasoning:N,setSidebarOpen:S,setWorkspaceView:C,shellRef:_,showReasoning:D,sidebarOpen:O,themeMode:V,workspaceView:q}=L0(),[Y,H]=y.useState(()=>q==="mission"?"mission":"activity"),[J,E]=y.useState(q==="workbench");y.useEffect(()=>{if(q==="workbench"){E(!0);return}H(q)},[q]),p0();const[I,L]=y.useState(0),[K,te]=y.useState(""),[Ge,Re]=y.useState(!1),[rt,M]=y.useState(0),[ie,he]=y.useState(!1),[Oe,jn]=y.useState([]),[la,Nn]=y.useState(""),[oa,A]=y.useState(!1),[re,Le]=y.useState(0),[de,_n]=y.useState([]),[Qn,qn]=y.useState(0),[Kp,Tr]=y.useState(null),[Vp,Ls]=y.useState(null),[Gp,Pr]=y.useState(!1),[Yp,Ds]=y.useState(!1),Tt=y.useRef(null),ca=y.useRef(0),[Jp,ec]=y.useState(null),[tc,ua]=y.useReducer(v0,y0),[Xp,nc]=y.useState("all"),[Zp,rc]=y.useState(""),ef=y.useCallback(()=>ec(null),[]),we=y.useCallback((B,ge)=>{ec({id:++D0,tone:B,message:ge})},[]),da=y.useCallback(()=>{var ge;const B=!!Tt.current;return ca.current+=1,(ge=Tt.current)==null||ge.controller.abort(),Tt.current=null,he(!1),Nn(""),A(!1),Le(0),_n([]),qn(0),B},[]),Rr=y.useCallback(()=>{da()&&we("info","Stopped waiting for this reply. Server-side work may still finish in the project timeline.")},[da,we]),{activeSid:X,clearProjectSelection:tf,prefetchProject:nf,selectProject:Sn,sidRef:ma}=R0({cancelActiveMessage:da,notify:we,projects:i,projectsError:r.isError,projectsReady:r.isSuccess,queryClient:n,setArtifactPath:Tr,setSidebarOpen:S,setTaskItemId:Ls});y.useEffect(()=>()=>{var B;ca.current+=1,(B=Tt.current)==null||B.controller.abort(),Tt.current=null},[]);const sc=y.useCallback(B=>{const ge=(B||"").trim(),st=ma.current;!ge||!st||Ge||(Re(!0),U.rewritePrompt(st,ge).then($e=>{if(Re(!1),$e.error||!$e.rewritten.trim()){we("error",`Rewrite failed: ${$e.error||"empty rewrite"} — your prompt is unchanged`);return}te($e.rewritten),L(He=>He+1);const ae=$e.questions.length?` Manager asks: ${$e.questions.join(" · ")}`:"";we("success",`Prompt rewritten — review it, then send.${ae}`)},$e=>{Re(!1),we("error",`Rewrite failed: ${er($e)} — your prompt is unchanged`)}))},[we,Ge,ma]),{createDaemon:rf,creatingDaemon:ic}=_0({localCwd:l,notify:we,onFocusComposer:()=>L(B=>B+1),queryClient:n,refetchProjects:r.refetch,selectProject:Sn}),Ye=by(X),W=Ye.data,pt=(W==null?void 0:W.session.id)===X?X:null,Kn=W==null?void 0:W.continuous,Ms=Ey(pt,!0),sf=Cy(pt,Y==="mission"),{events:Xt,connected:pa}=Iy(pt,tc.reconnectKey),ac=y.useMemo(()=>Dy(Xt),[Xt]),lc=y.useMemo(()=>Ay(Xt),[Xt]);y.useEffect(()=>{!pt||!ac||n.invalidateQueries({queryKey:["artifacts",pt],exact:!0})},[ac,pt,n]),y.useEffect(()=>{!pt||!lc||n.invalidateQueries({queryKey:["snapshot",pt],exact:!0})},[pt,n,lc]);const af=y.useMemo(()=>Yx(Xt),[Xt]),fa=_p(pt,Y==="activity",120),lf=jy(X,20,o==="inspector"),{answerPendingReply:of,pendingReply:cf,pendingReplyBusy:uf,pendingReplyOpen:df,setPendingReplyOpen:oc}=T0({activeSid:X,backlog:W==null?void 0:W.backlog,notify:we,pendingQuestions:W==null?void 0:W.pending_questions,refetchSnapshot:Ye.refetch}),Vn=y.useMemo(()=>b0(Xt,fa.data??[],Oe),[Xt,Oe,fa.data]),Ft=y.useMemo(()=>W?Hx(W,Vn,Ms.data??[]):null,[Vn,Ms.data,W]),cc=y.useRef(Vn);cc.current=Vn,y.useEffect(()=>{nc("all"),rc(""),jn([]),ua({kind:"reset"})},[pt]);const En=Py(X,(hc=W==null?void 0:W.daemon_commands)==null?void 0:hc.revision),{daemonBusy:ha,manageDeleteProject:mf,managePauseDaemon:pf,manageRenameProject:ff,manageStartDaemon:hf,requestDispose:Lr,requestManageSession:gf,requestStartDaemon:ga,requestStopDaemon:xa,requestStopIteration:As,toggleContinuous:xf}=S0({actions:En,activeSid:X,clearProjectSelection:tf,continuous:Kn,currentSnapshotSid:W==null?void 0:W.session.id,notify:we,refetchProjects:r.refetch,selectProject:Sn,setDaemonManageOpen:Ds}),uc=y.useCallback(async B=>{if(!X)return;const ge=await En.updateProject.mutateAsync({sid:X,name:B});we("success",`Renamed to "${ge.name}".`)},[En.updateProject,X,we]),yf=y.useMemo(()=>h0({activeSid:X,activityEventsRef:cc,notify:we,onClearEvents:B=>ua({kind:"clear",offset:B}),onDispose:Lr,onOpenConfig:()=>c("config"),onOpenDoctor:()=>c("doctor"),onOpenHelp:()=>c("help"),onOpenIdentity:()=>c("identity"),onOpenInspector:()=>c("inspector"),onOpenNewDaemon:()=>Pr(!0),onOpenOperations:()=>c("operations"),onOpenSidebar:()=>S(!0),onReconnectEvents:()=>ua({kind:"reconnect"}),onRenameProject:uc,onRewriteDraft:sc,onSelectProject:Sn,onSetArtifactPath:Tr,onSetEventFilter:nc,onSetEventQuery:rc,onSetTaskItemId:Ls,onSetWorkspaceView:C,onShowArtifacts:()=>j(!0),onStopIteration:As,onStopWaiting:Rr,refetchSnapshot:Ye.refetch}),[X,we,uc,Lr,As,Sn,Ye.refetch,Rr,C]);E0({focusComposer:()=>L(B=>B+1),openHelp:()=>c("help"),toggleKiosk:()=>h(B=>!B),togglePalette:()=>c(B=>B==="palette"?"none":"palette"),toggleReasoning:()=>N(B=>!B),toggleSidebarCollapse:()=>p(B=>!B)});const ya=async(B,ge=[])=>{const st=X;if(!st||Tt.current)return!1;if(!ge.length){const ne=await f0(B,yf);if(ne.kind==="handled")return!0;if(ne.kind==="error")return we("error",ne.message),!1}const $e=++ca.current,ae=new AbortController;Tt.current={id:$e,sid:st,controller:ae};const He=()=>{const ne=Tt.current;return!!(ne&&ne.id===$e&&ne.sid===st&&ma.current===st&&!ae.signal.aborted)},gc=()=>{var ne;((ne=Tt.current)==null?void 0:ne.id)===$e&&(Tt.current=null,he(!1),Nn(""),A(!1),Le(0),qn(0),_n([]))};he(!0),Nn(ge.length?t("chat.uploadingAttachments"):""),A(!1),Le(0),_n([]),qn(Date.now());let xc=[];if(ge.length)try{const ne=await U.uploadAttachments(st,ge,ae.signal);if(!He())return!1;xc=ne.attachments.map(Ee=>({attachment_id:Ee.attachment_id}))}catch(ne){return He()&&(we("error",t("chat.attachmentUploadFailed",{error:er(ne)})),gc()),!1}jn(ne=>[...ne,k0(st,$e,B)]);const yc=(ne,Ee="",it="auto")=>{!He()||typeof ne!="string"||!ne.trim()||jn(Fe=>w0(Fe,st,$e,ne,Ee,Date.now(),it))},kf=ne=>{var Fe;if(!He())return;const Ee=ne.daemon&&typeof ne.daemon=="object"?ne.daemon:null,it=typeof ne.reply=="string"?ne.reply:null;Ee!=null&&Ee.admission_required?we("error",it||`Task queued, but all daemon slots are busy: ${String(Ee.error||"operator action required")}`):Ee&&Number(Ee.rc??0)!==0?we("error",it||`Task queued, but executor did not start: ${String(Ee.error||"unknown error")}`):it&&we("success",it),(Fe=Ye.refetch)==null||Fe.call(Ye)},wf=ne=>{He()&&x0(ne,{dispatchTask:kf,notifyError:Ee=>we("error",Ee),refetchTranscript:()=>{fa.refetch()}})};return(async()=>{let ne=!1,Ee=null,it=[];try{try{await U.messageStream(st,B,{onPhase:(Fe,va,Pt)=>{He()&&(Nn(Fe),A(Pt.heartbeat),Le(Pt.quietS),it=ry(it,{label:Fe,role:va,kind:Pt.kind,detail:Pt.detail,heartbeat:Pt.heartbeat,quietS:Pt.quietS}),_n(it))},onDelta:(Fe,va,Pt)=>{He()&&(ne=!0,it=sy(it),_n(it),Nn(""),A(!1),Le(0),yc(Fe,va,Pt==="append"||Pt==="snapshot"?Pt:"auto"))},onDone:Fe=>{He()&&(yc(Fe.reply,"","snapshot"),wf(Fe))},onError:Fe=>{He()&&(Ee=Fe)}},{signal:ae.signal,attachments:xc})}catch(Fe){He()&&(Ee=Fe)}if(!He())return;Ee&&we("error",Vy(Ee,ne))}finally{gc()}})(),!0},dc=y.useRef(ya);dc.current=ya;const vf=y.useMemo(()=>{const B=yv(Ts,ae=>{dc.current(ae)},ae=>{te(ae),L(He=>He+1)},e),ge=[...d?[]:[{id:"new",label:t("palette.newDaemon"),hint:"+",group:t("palette.view"),run:()=>Pr(!0)}],{id:"transcript",label:t("palette.openTranscript"),hint:"/transcript",group:t("palette.view"),run:()=>c("transcript")},{id:"inspector",label:t("palette.openProject"),hint:t("palette.projectHint"),group:t("palette.view"),run:()=>c("inspector")},{id:"operations",label:t("palette.openOperations"),hint:t("palette.operationsHint"),group:t("palette.view"),run:()=>c("operations")},{id:"help",label:t("help.title"),hint:"?",group:t("palette.view"),run:()=>c("help")},{id:"reasoning",label:t(D?"palette.hideReasoning":"palette.showReasoning"),hint:"⌘T",group:t("palette.view"),run:()=>N(ae=>!ae)},{id:"kiosk",label:t(d?"palette.exitKiosk":"palette.enterKiosk"),hint:"⌘.",group:t("palette.view"),run:()=>h(ae=>!ae)}],st=d?[]:[{id:"message",label:t("palette.messageArgus"),hint:"/",group:t("palette.action"),run:()=>L(ae=>ae+1)},...ie?[{id:"cancel-message",label:t("palette.stopWaiting"),hint:"Esc",group:t("palette.action"),run:Rr}]:[],...Kn?[{id:"continuous",label:Kn.enabled?t("palette.stopContinuous"):t("palette.startContinuous"),group:t("palette.action"),run:xf}]:[],...(W==null?void 0:W.daemon.control_available)===!1?[]:[W!=null&&W.daemon.alive?{id:"stop",label:t("palette.stopDaemon"),group:t("palette.action"),run:xa}:{id:"start",label:t("palette.startDaemon"),group:t("palette.action"),run:ga}]],$e=i.map(ae=>({id:`p-${ae.id}`,label:ae.label||ae.id,hint:ae.daemon_alive?`● ${t("common.live")}`:"○",keywords:`${ae.id} ${ae.display_name??""} ${ae.objective} ${ae.daemon_alive?"live running":"stopped idle"}`,group:t("palette.project"),run:()=>Sn(ae.id)}));return[...ge,...st,...B,...$e]},[i,W==null?void 0:W.daemon.alive,d,D,Kn==null?void 0:Kn.enabled,ie,Rr,e,t]);return a.jsxs("div",{ref:_,className:"workbench-shell ambient-canvas flex h-screen h-[100dvh] w-screen max-w-full overflow-hidden text-ink",children:[!d&&O?a.jsx("button",{type:"button","aria-label":t("common.closeSessions"),onClick:()=>S(!1),className:"fixed inset-0 z-30 bg-black/40 lg:hidden"}):null,d?null:a.jsx(Gv,{projects:i,activeId:X,localCwd:l,onSelect:B=>{Sn(B),S(!1)},onPrefetch:nf,onManage:gf,onOpenPanel:B=>c(B),onNew:()=>Pr(!0),loading:r.isLoading,creating:ic,error:r.isError?er(r.error):void 0,onRetry:()=>void r.refetch(),mobileOpen:O,collapsed:!g,onToggleCollapse:()=>p(B=>!B),themeMode:V,onCycleTheme:u,expandedWidth:f}),!d&&g?a.jsx(Ju,{label:t("common.resizeSessions"),value:f,min:220,max:400,onPointerDown:B=>v("left",B),onReset:()=>x(256),onNudge:B=>x(ge=>Math.max(220,Math.min(400,ge+B)))}):null,a.jsx("main",{className:"flex min-w-0 flex-1 overflow-x-hidden",children:W?a.jsxs(a.Fragment,{children:[a.jsxs("section",{className:`${w==="activity"?"flex":"hidden"} glass-panel glass-panel--main h-full min-w-0 flex-1 flex-col lg:flex`,children:[a.jsx(Uu,{snap:W,streamOk:pa,onStart:ga,onStop:xa,onManage:()=>Ds(!0),busy:ha,snapshotStale:Ye.isError,readOnly:d,missionView:Ft}),a.jsxs("div",{className:"flex h-10 shrink-0 items-center gap-1 border-b border-line/60 px-3",children:[a.jsxs("div",{className:"workspace-tabs","data-active":q,children:[a.jsx("span",{className:"workspace-tab-indicator","aria-hidden":"true"}),a.jsx("button",{type:"button",onClick:()=>C("mission"),className:"workspace-tab","data-selected":q==="mission",children:t("mobile.mission")}),a.jsx("button",{type:"button",onClick:()=>C("activity"),className:"workspace-tab","data-selected":q==="activity",children:t("mobile.activity")}),a.jsx("button",{type:"button",onClick:()=>C("workbench"),className:"workspace-tab","data-selected":q==="workbench",children:t("mobile.workbench")})]}),q==="mission"?a.jsx("span",{className:"ml-auto hidden max-w-72 truncate text-[10px] text-ink-faint sm:block",children:Ft!=null&&Ft.active_role?t("mission.roleActive",{role:Ft.active_role}):t("mission.overview")}):a.jsx("span",{className:"ml-auto"}),d?null:a.jsx("button",{type:"button",onClick:()=>c("operations"),className:"rounded border border-line/60 px-2 py-1 text-[10px] text-ink-faint hover:border-blue/50 hover:text-blue",children:t("mission.operations")})]}),a.jsxs("div",{className:`${q==="workbench"?"hidden":"flex"} min-h-0 flex-1 flex-col`,children:[a.jsx(Lv,{alert:af}),Y==="mission"&&Ft?a.jsx(l0,{view:Ft,gitDiff:sf.data,onOpenArtifact:Tr}):a.jsx(av,{events:Vn,connected:pa,showReasoning:D,onToggleReasoning:()=>N(B=>!B),embedded:!0,filter:Xp,query:Zp,skipFirst:tc.skipFirst}),d?null:a.jsx("div",{className:"composer-dock shrink-0 px-4 pt-3",children:a.jsxs("div",{className:"mx-auto w-full max-w-full lg:max-w-[61.8vw]",children:[a.jsx(Pv,{questions:W.pending_questions??[],backlog:W.backlog,onAnswer:()=>oc(!0)}),a.jsx(xv,{value:K,onChange:te,onSend:ya,onCancel:Rr,disabled:!X,pending:ie,focusSignal:I,embedded:!0,phase:la,heartbeat:oa,quietS:re,steps:de,startedAt:Qn,onRewrite:sc,rewriting:Ge,slashSelection:rt,onSlashSelectionChange:M},X||"no-session")]})})]}),J&&X?a.jsx("div",{className:`${q==="workbench"?"flex":"hidden"} min-h-0 flex-1`,children:a.jsx(y.Suspense,{fallback:a.jsx("div",{className:"flex min-h-0 flex-1 items-center justify-center text-xs text-ink-faint",children:t("common.loading")}),children:a.jsx(M0,{sid:X,active:q==="workbench"})})}):null]}),k?a.jsx(Ju,{label:t("common.resizePreview"),value:b,min:320,max:600,onPointerDown:B=>v("right",B),onReset:()=>T(440),onNudge:B=>T(ge=>Math.max(320,Math.min(600,ge-B)))}):null,a.jsxs("aside",{style:{"--preview-width":`${b}px`},className:`${w==="preview"?"flex":"hidden"} relative min-w-0 flex-1 flex-col overflow-hidden border-l border-line/60 bg-panel transition-[width] duration-[250ms] ease-panel lg:flex lg:flex-none ${k?"lg:w-[var(--preview-width)]":"lg:w-14"}`,children:[a.jsx("div",{className:"lg:hidden",children:a.jsx(Uu,{snap:W,streamOk:pa,onStart:ga,onStop:xa,onManage:()=>Ds(!0),busy:ha,snapshotStale:Ye.isError,readOnly:d,missionView:Ft})}),a.jsx(Hv,{sid:pt,artifacts:Ms.data,error:Ms.isError,onExpand:Tr,className:`min-h-0 flex-1 mobile-scroll-region ${k?"lg:flex":"lg:hidden"}`,embedded:!0,onCollapse:()=>j(!1),missionView:Ft,activityEvents:Vn}),k?null:a.jsx("div",{className:"hidden h-12 items-center justify-center border-b border-line/50 text-ink-faint lg:flex",children:a.jsx("button",{type:"button",onClick:()=>j(!0),"aria-label":t("common.expandPreview"),title:t("common.expandPreview"),className:"flex h-8 w-8 items-center justify-center rounded-md border border-line/50 bg-bg/40 hover:border-blue/50 hover:text-ink",children:a.jsx(pe,{icon:ld,className:"h-3.5 w-3.5"})})})]})]}):a.jsx(d0,{loading:r.isLoading||!!(X&&Ye.isLoading),hasProjects:i.length>0,error:r.isError&&i.length===0?er(r.error):Ye.isError&&!W?er(Ye.error):void 0,onRetry:()=>{r.refetch(),X&&Ye.refetch()},onNew:()=>Pr(!0),onChoose:()=>S(!0),canCreate:!d})}),a.jsx(kv,{open:o==="palette",onClose:()=>c("none"),items:vf}),a.jsx(bv,{open:o==="help",onClose:()=>c("none")}),X&&a.jsx(Sv,{sid:X,open:o==="doctor",onClose:()=>c("none")}),X&&a.jsx(Ev,{sid:X,open:o==="config",onClose:()=>c("none")}),X&&a.jsx(Cv,{sid:X,open:o==="identity",onClose:()=>c("none")}),X&&a.jsx(Tv,{sid:X,open:o==="transcript",onClose:()=>c("none")}),X&&W?a.jsx(t0,{open:o==="inspector",snap:W,journal:lf.data??[],busy:En.disposeBacklog.isPending||En.stopBacklog.isPending,onClose:()=>c("none"),onDispose:Lr,onStop:As,onInspect:Ls}):null,X&&W?a.jsx(o0,{open:o==="operations",sid:X,snap:W,onClose:()=>c("none"),onChanged:()=>{Ye.refetch(),r.refetch()},onRestored:async B=>{await r.refetch(),Sn(B)}}):null,a.jsx(Av,{sid:X,path:Kp,onClose:()=>Tr(null)}),a.jsx(n0,{sid:X,itemId:Vp,onClose:()=>Ls(null),onDone:B=>Lr(B,"done"),onSkip:B=>Lr(B,"rm"),onStop:As,busy:En.disposeBacklog.isPending||En.stopBacklog.isPending,readOnly:d}),a.jsx(qv,{open:Gp,busy:ic,onClose:()=>Pr(!1),onCreate:rf}),a.jsx(Rv,{reply:cf,open:df,busy:uf,onClose:()=>oc(!1),onSubmit:of}),X&&W?a.jsx(Kv,{open:Yp,sid:X,name:W.session.display_name||"",alive:W.daemon.alive,controlAvailable:W.daemon.control_available!==!1,busy:ha,onClose:()=>Ds(!1),onRename:ff,onStart:hf,onPause:pf,onDelete:mf}):null,a.jsx(Qv,{notice:Jp,onClose:ef}),W&&!d?a.jsx(m0,{active:w==="preview"?"preview":q,onSelect:B=>{if(B==="preview"){m("preview");return}m("activity"),C(B)},onOpenSessions:()=>S(!0)}):null]})}const I0=180;function O0({onDone:e}){const{t}=ee(),n=y.useRef(!1),r=y.useCallback(()=>{n.current||(n.current=!0,e())},[e]);return y.useEffect(()=>{const s=window.setTimeout(r,I0+150),i=()=>r();return window.addEventListener("keydown",i,{once:!0}),()=>{window.clearTimeout(s),window.removeEventListener("keydown",i)}},[r]),a.jsxs("div",{role:"status","aria-label":t("splash.starting"),onClick:r,onAnimationEnd:s=>{s.currentTarget===s.target&&r()},className:"argus-web-splash",children:[a.jsx("div",{className:"argus-web-splash-logo argus-web-splash-logo-full","aria-hidden":"true",children:a.jsx(Fi,{size:72})}),a.jsx("div",{className:"argus-web-splash-logo argus-web-splash-logo-compact","aria-hidden":"true",children:a.jsx(aa,{size:112})})]})}tx();const $0=new bf({defaultOptions:{queries:{staleTime:3e3,retry:1,refetchOnWindowFocus:!1}}});function F0(){const[e,t]=y.useState(!0);return a.jsxs(a.Fragment,{children:[a.jsx(A0,{}),e?a.jsx(O0,{onDone:()=>t(!1)}):null]})}Xa.createRoot(document.getElementById("root")).render(a.jsx(jf.StrictMode,{children:a.jsx(Nf,{client:$0,children:a.jsx(Uy,{children:a.jsx(F0,{})})})}));export{up as _,ee as u}; diff --git a/frontend/web/dist/index.html b/frontend/web/dist/index.html index d406a72c..ad9e7f23 100644 --- a/frontend/web/dist/index.html +++ b/frontend/web/dist/index.html @@ -26,7 +26,7 @@ document.documentElement.dataset.theme = dark ? 'dark' : 'light'; })(); - + diff --git a/tests/life/test_planner_completion_authority.py b/tests/life/test_planner_completion_authority.py index b74771dd..f303be41 100644 --- a/tests/life/test_planner_completion_authority.py +++ b/tests/life/test_planner_completion_authority.py @@ -8,7 +8,8 @@ PlanningCycleCompletionMixin, ) from argus_skill.life.supervisor._planning_cycle_helpers import _PlanCycleState -from argus_skill.planner import PlannerVerdict +from argus_skill.planner import PlannerVerdict, TaskSpec +from argus_skill.skills.vertical_select import persist_vertical class _CompletionHarness(PlanningCycleCompletionMixin): @@ -84,3 +85,84 @@ def _load_manager_planner_feedback(self): assert "`TASK_SCOPE=final_submission`" in note assert "successful Reviewer verdict" in note assert "which bounded tasks" not in note + + +def test_research_target_feedback_requires_final_submission_scope() -> None: + class FeedbackHarness(PlanningContextMixin): + def _load_manager_planner_feedback(self): + return { + "stage": "research", + "diagnostic": "research_target_incomplete", + "attempts": 1, + "reason": "missing_exploratory_reviewer_certification", + } + + note = FeedbackHarness()._manager_planner_feedback_runtime_note() + + assert "`TASK_SCOPE=final_submission`" in note + assert "successful Reviewer verdict" in note + + +def test_finite_research_target_keeps_final_submission_transport(tmp_path) -> None: + persist_vertical( + tmp_path, + "research", + research_target_level="exploratory", + ) + + class ScopeHarness(PlanningContextMixin): + def _artifact_root(self): + return tmp_path + + def _effective_final_certification_gate(self, _root) -> bool: + return False + + def _normalize_planner_scope(self, value: str) -> str: + return value or "bounded" + + tags = ScopeHarness()._planner_task_tags( + TaskSpec( + title="Certify exploratory target", + objective="Independently review the completed research target.", + scope="final_submission", + stage_closing=True, + ) + ) + + assert "scope:final_submission" in tags + assert "scope:bounded" not in tags + assert "review:required" in tags + + +def test_exhausted_research_feedback_gets_one_new_instruction_retry() -> None: + class MigrationHarness(PlanningContextMixin): + def __init__(self) -> None: + self.written = None + self.statuses: list[str] = [] + self.reset = False + + def _write_manager_planner_feedback(self, payload) -> bool: + self.written = payload + return True + + def _reset_idle_backoff(self) -> None: + self.reset = True + + def _emit_status(self, text: str) -> None: + self.statuses.append(text) + + harness = MigrationHarness() + migrated = harness._migrate_manager_planner_feedback_instruction( + { + "version": 1, + "active": True, + "diagnostic": "research_target_incomplete", + "attempts": 3, + } + ) + + assert migrated["instruction_version"] == 2 + assert migrated["attempts"] == 2 + assert harness.written == migrated + assert harness.reset is True + assert "allowing one bounded retry" in harness.statuses[-1] diff --git a/tests/life/test_research_target_completion_gate.py b/tests/life/test_research_target_completion_gate.py new file mode 100644 index 00000000..27b559b2 --- /dev/null +++ b/tests/life/test_research_target_completion_gate.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +from types import SimpleNamespace + +import pytest + +from argus_skill.life.supervisor._planning_cycle_helpers import ( + _research_project_done_issue, +) +from argus_skill.skills.vertical_select import persist_vertical + + +def test_same_target_reclassification_does_not_invalidate_completed_review( + tmp_path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + clock = iter((100.0, 300.0)) + monkeypatch.setattr( + "argus_skill.skills.vertical_select.time.time", + lambda: next(clock), + ) + persist_vertical( + tmp_path, + "research", + research_target_level="exploratory", + ) + certification = SimpleNamespace( + kind="mission_complete", + ts=200.0, + extra={ + "scope": "final_submission", + "final_submission_certified": True, + }, + ) + + # The Manager's normal post-mission reclassification reasserts the same + # target. It must not open a new evidence epoch after the certification. + persist_vertical( + tmp_path, + "research", + research_target_level="exploratory", + ) + + assert _research_project_done_issue(tmp_path, [certification]) == "" diff --git a/tests/manager/test_manager.py b/tests/manager/test_manager.py index 54fdfde5..14ad6a57 100644 --- a/tests/manager/test_manager.py +++ b/tests/manager/test_manager.py @@ -887,14 +887,23 @@ def test_divide_resets_stage_when_new_intent_supersedes_finished_prior_vertical( assert current_stage(tmp_path) == "research" -def test_divide_reopens_finished_pipeline_for_new_same_vertical_task(tmp_path): +def test_divide_reopens_finished_pipeline_for_new_same_vertical_task( + tmp_path, + monkeypatch, +): """Regression: a second research task must not immediately become planner done.""" from argus_skill.skills.vertical_select import vertical_reached_own_terminal_stage + monkeypatch.setattr( + "argus_skill.skills.vertical_select.time.time", + lambda: 200.0, + ) (tmp_path / "research").mkdir(parents=True, exist_ok=True) (tmp_path / "research" / "PIPELINE_STATE.json").write_text( json.dumps({ "vertical": "research", + "research_target_level": "publishable", + "research_target_set_at": 100.0, "current_stage": "submission", "stages": {stage: {"status": "done"} for stage in RESEARCH_STAGES}, }), @@ -909,6 +918,7 @@ def test_divide_reopens_finished_pipeline_for_new_same_vertical_task(tmp_path): state = json.loads((tmp_path / "research" / "PIPELINE_STATE.json").read_text()) assert division.vertical == "research" + assert state["research_target_set_at"] == 200.0 assert state["current_stage"] == "research" assert vertical_reached_own_terminal_stage(tmp_path, "research") is False diff --git a/tests/skills/test_verticals.py b/tests/skills/test_verticals.py index 4e1f1baa..8ba57048 100644 --- a/tests/skills/test_verticals.py +++ b/tests/skills/test_verticals.py @@ -122,6 +122,46 @@ def test_persist_vertical_records_explicit_target_venue(tmp_path: Path) -> None: assert state["target_venue"] == "AAAI 2026" +def test_reasserting_same_research_target_preserves_evidence_epoch( + tmp_path: Path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + clock = iter((100.0, 200.0, 300.0)) + monkeypatch.setattr( + "argus_skill.skills.vertical_select.time.time", + lambda: next(clock), + ) + + persist_vertical( + tmp_path, + "research", + research_target_level="exploratory", + ) + persist_vertical( + tmp_path, + "research", + research_target_level="exploratory", + ) + state = json.loads( + (tmp_path / "research" / "PIPELINE_STATE.json").read_text( + encoding="utf-8" + ) + ) + assert state["research_target_set_at"] == 100.0 + + persist_vertical( + tmp_path, + "research", + research_target_level="publishable", + ) + state = json.loads( + (tmp_path / "research" / "PIPELINE_STATE.json").read_text( + encoding="utf-8" + ) + ) + assert state["research_target_set_at"] == 200.0 + + def test_explicit_staged_mode_overrides_research_vertical_default( tmp_path: Path, ) -> None: